web-dev-qa-db-ja.com

pandocは、PDFに変換するときにコードブロックをテキストで折り返しません

Xelatexエンジンでpandocを使用して、マークダウンをpdfに変換しています。私は次のようにpandocを実行しています:

pandoc -s 'backbone-fundamentals'.md -o 'backbone-fundamentals'.pdf \
    --title-prefix 'Developing Backbone.js Applications' \
    --normalize \
    --smart \
    --toc \
    --latex-engine=`which xelatex`

コード行がPDFドキュメントの幅よりも長い場合は、カットオフされます。とにかく、pandocテキストで長いコード行を折り返すことはできますか?

24
skud

テキストをラップしないことは、コードブロックのポイント(の一部)です。私の知る限り、コードをラップする唯一の方法は手動です。ほとんどの言語では、特定の行の長さを超えないことは、とにかく良いスタイルと見なされます。

行の長さが制限されていても、LaTeXで生成されたPDFには長すぎる場合は、コードブロックのフォントサイズを小さくすることを検討してください。このためには、pandocで使用されるLaTeXテンプレートを変更する必要があります。これを見てください answer to "Beamerプレゼンテーションですべての逐語的なフォントサイズを設定する方法は?"始める必要があります。

4
A. Donda

fvextra パッケージを含むLaTeXを最近インストールした場合は、最近 jannick0が提案 という簡単な解決策があります。

YAMLヘッダーオプション を変更して含める

\usepackage{fvextra}
\begin{Highlighting}[breaklines,numbers=left]

xelatexでコンパイルします。

例えば、

---
header-includes:
 - \usepackage{fvextra}
 - \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
---

~~~~~{.Java}
this is a very long long long long long long long long long long long long long line which is broken
~~~~~~

でコンパイルした場合

pandoc input.md --pdf-engine=xelatex -o output.pdf

与える enter image description here

.numberLinesオプションがある場合、つまり、

---
header-includes:
 - \usepackage{fvextra}
 - \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
---


~~~~~{.Java .numberLines}
this is a very long long long long long long long long long long long long long line which is broken
~~~~~~

次に、同じコマンドが生成されます

enter image description here

10
Clément