PDF出力のコード例に正しい間隔があります。

PDF出力のコード例に正しい間隔があります。

私は次のreStructuredTextを使ってPDFに変換しrst2pdfました。pandoc

This is a python example::

  def main():
      print("Hello World!")

  if __name__ == '__main__':
      main()

And one for YAML::

   server:
      name: ts0
      location: paris

両方のプログラムは異なるエンジンを使用してPDFを生成します(pandocこれにはTeXをインストールする必要があります)、その結果、コード例を正しく切り取り、貼り付けることができないPDFファイルになります。

ここに画像の説明を入力してください。

強調表示されたコード(緑色の背景)は、これらのPDFファイルからオフセットを使用して生成されたため、空白がありません。

多くの言語では、コピーして貼り付けると見苦しいコードが生成されますが、OccamやPythonなどのプログラミング言語やYAMLの設定ファイルでは実際には意味が変わります。運が良ければ、実際に何かが壊れて気づくでしょうが、例えばYAMLの例も正確です。先行スペースがなければ意味が異なるだけです。

コードサンプルのこれらの空白の破損は、readthedocsサイトで生成されたPDF文書でも発生します。


以下から出力を得る場合:

pandoc example.rst -o example.epub

結果のページ文書を見ると、コードを正しくコピーして貼り付けることができます。ユーザーインターフェイスを介して口径(バージョン2.55.0)を使用して変換すると、example.epub次のことができるPDFファイルが表示されます。できるコードは正しくコピーされましたが(スペースを含む)、結果のPDFは3ページで構成されています。

コマンドラインから変換してみてください。

ebook-convert example.epub example.pdf 

レンダリング例外が発生し、--old-pdf-engine変換オプションを追加すると機能しますが、まだ単一ページではない3ページのPDFがあります。

HTMLによる変換:

rst2html example.rst > example.html; ebook-convert example.html example.pdf
pandoc example.rst -o example.html; ebook-convert example.html example.pdf

正しい選択コードを提供します。

ここに画像の説明を入力してください。

、ところで貼り付けるとインデントするスペースがなく、Helloとの間の空白もWorld消える。さらに、大きなファイルの場合は、不要な場所に改ページが発生し、スタイルシートを介してレイアウトを大幅に調整する必要があります。

変換に合格しようとしましたが、.odt結果としてPDFファイルのテキストを完全に選択できなくなりました。


PDF出力の次の要件を考慮してください。

  • 空白があっても、コードスニペットを正しく選択できます。
  • 結果はレイアウトに似ていますrst2pdfreadthedocs

.rstファイルまたは他のマークアップ形式から始めてPDFファイルを生成するためのコマンドラインツールはありますか?

答え1

次のパイプラインを使用できます。

txttopdf.sh:

enscript -B -p- | ps2pdf -dCompressPages=false - -

ソースファイルの先行スペースを保持するPDFを生成します。特別なps2pdfオプションを使用すると、中間のPostScriptコンテンツ部分をそのまま使用してPDFにインデントされたテキストオブジェクトを残すことができます。プレーンテキストエディタで開き、コンテンツセクションがほぼ終了することを確認できます。

ただし、これらの先行スペースを削除することはまだPDFビューアによって異なります。たとえば、evince以前と同様に、acroreadビューアで先行スペースを選択することはできません。スペースを切り捨て防止スペース(ISO-8859-1)に置き換える場合も同様です。

したがって、パイプラインはPDFファイルに対して必要なだけの操作を実行でき、間隔をサポートするビューアを見つける必要があります。

関連情報