私は次の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出力の次の要件を考慮してください。
- 空白があっても、コードスニペットを正しく選択できます。
- 結果はレイアウトに似ています
rst2pdf
。readthedocs
.rst
ファイルまたは他のマークアップ形式から始めてPDFファイルを生成するためのコマンドラインツールはありますか?
答え1
次のパイプラインを使用できます。
txttopdf.sh:
enscript -B -p- | ps2pdf -dCompressPages=false - -
ソースファイルの先行スペースを保持するPDFを生成します。特別なps2pdf
オプションを使用すると、中間のPostScriptコンテンツ部分をそのまま使用してPDFにインデントされたテキストオブジェクトを残すことができます。プレーンテキストエディタで開き、コンテンツセクションがほぼ終了することを確認できます。
ただし、これらの先行スペースを削除することはまだPDFビューアによって異なります。たとえば、evince
以前と同様に、acroread
ビューアで先行スペースを選択することはできません。スペースを切り捨て防止スペース(ISO-8859-1)に置き換える場合も同様です。
したがって、パイプラインはPDFファイルに対して必要なだけの操作を実行でき、間隔をサポートするビューアを見つける必要があります。