我发现在使用pandoc --listings
时,为了使用latex listing package呈现代码块,它将改变字符,正如github所说,这是一个错误。所以pandoc引入了\passthrough
来处理它。
我决定将我的pandoc更新为最新的2.2.1版本。但它会像这样弹出错误,
! Undefined control sequence.
<recently read> \passthrough
我认为可能是因为listings
包太旧而没有\passthrough
。所以我更新到texlive 2018.它仍然有这个问题。我在https://github.com/rstudio/bookdown/issues/591
我搜索了一些结果,
但没有人可以解决。有什么建议吗?谢谢。
我想我应该自己添加这个命令。 texupdate太慢了。
答案 0 :(得分:0)
此问题与您的LaTeX发行版无关,因此无需重新安装或更新LaTeX。
Pandoc 2.x将逐字文本放在\passthrough{}
定义的位置
https://github.com/jgm/pandoc-templates/blob/052428151/default.latex#L169
如果在命令行中使用--listings
标志。
$ echo '`text`' | pandoc -f markdown -t latex --listings
\passthrough{\lstinline!text!}
一些可能的解决方案(从最简单到最难):
在template
中将选项null
设置为bookdown::pdf_book
,即
bookdown::pdf_book:
template: null
这意味着使用Pandoc的内置Pandoc模板,该模板定义了\passthrough
。
安装 rmarkdown 的开发版本:devtools::install_github('rstudio/rmarkdown')
,其中我有added the command。
在自定义Pandoc LaTeX模板(https://bookdown.org/yihui/bookdown/templates.html)中定义命令\passthrough
,并通过template
的{{1}}选项使用自定义模板。