潘多克没有';转换为pdf时,请不要使用文本换行代码块

潘多克没有';转换为pdf时,请不要使用文本换行代码块,pdf,pandoc,pdflatex,xelatex,Pdf,Pandoc,Pdflatex,Xelatex,我正在使用pandoc和Xeletex引擎将降价转换为pdf。我是这样管理潘多克的: pandoc -s 'backbone-fundamentals'.md -o 'backbone-fundamentals'.pdf \ --title-prefix 'Developing Backbone.js Applications' \ --normalize \ --smart \ --toc \ --latex-engine=`which xelatex`

我正在使用pandoc和Xeletex引擎将降价转换为pdf。我是这样管理潘多克的:

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使用的LaTeX模板。看看“如何在Beamer presentation中为所有逐字记录设置字体大小?”应该可以让您开始学习。

如果您最近安装了包含该软件包的LaTeX,那么最近有一个简单的解决方案

修改您的文档以包括

\usepackage{fvextra}
\begin{Highlighting}[breaklines,numbers=left]
并使用Xeletex进行编译

比如说,

---
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
给予

如果您有
.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
~~~~~~
然后会产生相同的命令


真的没有办法自动扭曲代码块中太长的行吗?@Pimpanpoum由于渲染是由LaTeX完成的,我想可能有办法做到这一点。但我怀疑这可能需要破解乳胶,我对此一无所知。您可能想在tex.SE上询问是否知道如何使
逐字记录
环境中断行,然后将该代码放入pandoc模板。我使用pandoc for md->html,然后使用wkhtmltopdf for html->pdf,只是因为LaTeX问题太多,无法处理。我发现Pandoc在HTML文件的头部插入
code{white space:pre;}
,因此用CSS覆盖它不起作用。因为我使用脚本来运行所有这些,所以我只需使用sed命令来剥离样式。
pre,code{white space:pre wrap!important;}
对我来说很有效。但是如果您使用的是
.numberLines
,包装后数字将关闭。当您说手动包装代码时,您的意思是只插入一个换行符吗?对我来说,LaTeX将下一行的第一个元素格式化为绿色,因此它看起来不像是包装的…它看起来像是一个新行的开始这也是一个关于包装内联代码的问题,例如长路径或URL,这当然是有意义的。这里回答了这个问题:以积极的方式!很高兴知道,谢谢:)原始行号(如果显示)保留了吗?谢谢!我正在基于此创建一些2pdf脚本。有没有办法在断线前指定线宽?与页面大小相比,它似乎非常保守。我有一个可以处理80个字符的字体大小,但它似乎在60处中断。要回答我自己的问题,请添加
\usepackage[textwidth=6in]{geometry}
谢谢@Clément,您知道允许在任何地方换行的方法吗?我有一个动态标记文档,它往往有很长的字符串,我也希望对其进行包装……@ajendrex应该有一种方法可以使用
fvextra
breakanywhere
选项。尝试在
特征线
之后添加
breakanywhere
,即将“-\defineverbatimenEnvironment{Highlighting}{Verbatim}{breaklines,commandchars=\\{}}”替换为“-\defineverbatimenEnvironment{Highlighting}{Verbatim breaklines,breakanywhere,commandchars=\{}}”,并让我知道进展如何。