bookdown!未定义的控制序列。 <最近阅读=“”> \ passthrough

时间:2018-06-14 09:45:02

标签: r r-markdown pandoc bookdown listings

我发现在使用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太慢了。

1 个答案:

答案 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}}选项使用自定义模板。