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

问题描述 投票:0回答:2

我正在使用 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`

如果代码行比 pdf 文档宽度长,它就会被截断。有没有办法让 pandoc 文本换行长代码行?

pdf pandoc pdflatex xelatex
2个回答
36
投票

如果您最近安装了包含 fvextra 软件包的 LaTeX,那么有一个简单的解决方案,最近由 jannick0 建议。

修改您的

YAML 标头选项以包含

\usepackage{fvextra} \DefineVerbatimEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\\{\}}
并使用 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


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

如果您的行长度有限,但对于 LaTeX 生成的 pdf 来说仍然太长,请考虑减小代码块的字体大小。为此,您需要更改 pandoc 使用的 LaTeX 模板。看一下“如何在 Beamer 演示文稿中设置所有逐字的字体大小?”的

answer。应该可以帮助你开始。

© www.soinside.com 2019 - 2024. All rights reserved.