转换为pdf时,pandoc不会对代码块进行文本换行

sku*_*kud 23 pdf pdflatex xelatex pandoc

我正在使用pandoc和xelatex引擎将markdown转换为pdf.我正在运行像这样的pandoc:

pandoc -s 'backbone-fundamentals'.md -o 'backbone-fundamentals'.pdf \
    --title-prefix 'Developing Backbone.js Applications' \
    --normalize \
    --smart \
    --toc \
    --latex-engine=`which xelatex`
Run Code Online (Sandbox Code Playgroud)

如果代码行长于pdf文档宽度,它就会被截止.反正有没有pandoc文本换长代码行?

Clé*_*ent 8

如果您最近安装了包含fvextra软件包的LaTeX,那么jannick0最近提出了一个简单的解决方案.

修改您的YAML标题选项以包含

\usepackage{fvextra}
\begin{Highlighting}[breaklines,numbers=left]
Run Code Online (Sandbox Code Playgroud)

并使用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
~~~~~~
Run Code Online (Sandbox Code Playgroud)

编译时

pandoc input.md --pdf-engine=xelatex -o output.pdf
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

如果你有.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
~~~~~~
Run Code Online (Sandbox Code Playgroud)

那么同样的命令就会产生

在此输入图像描述


A. *_*nda 3

不将文本换行是代码块的(一部分)要点。据我所知,包装代码的唯一方法是手动。对于大多数语言来说,不超过一定的行长度无论如何都被认为是好的风格。

如果您的行有长度限制,但对于 LaTeX 生成的 pdf 来说仍然太长,请考虑减小代码块的字体大小。为此,您需要更改 pandoc 使用的 LaTeX 模板。看看这个答案“如何设置 Beamer 演示文稿中所有逐字的字体大小?” 应该可以帮助你开始。

  • `pre, code { 空白:预换行!重要;}`为我工作。但如果您使用“.numberLines”,则换行后数字将消失。 (5认同)
  • @pimpampoum 由于渲染是由 LaTeX 完成的,我想可能有某种方法可以做到这一点。但我怀疑这可能需要破解 LaTeX,而我对此一无所知。您可能想在 tex.SE 上询问是否知道如何使 `verbatim` 环境断行,然后将该代码放入 pandoc 模板中。 (2认同)