R Markdown可在RStudio渲染PDF,R控制台执行报错求解决
R控制台批量渲染R Markdown为PDF失败的解决方案
问题背景
我有一系列R Markdown文档,通过RStudio的「Knit」按钮可正常渲染为PDF,但编写批量渲染脚本在R控制台运行时持续报错。调用render()的代码如下:
render(input="path/markdown_file.Rmd",output_format="pdf_document")
环境信息
- RStudio与R控制台均运行R 4.2.2版本
- 均使用pandoc 2.19.2版本
- 均安装了最新版rmarkdown包
- 均采用pdflatex渲染PDF
- 两者渲染HTML文件(使用
html_document格式)均无问题
报错内容
R控制台执行时出现LaTeX编译错误:
! Undefined control sequence. ...r}[t]{llrrrrrrrrrrrrrrrrl} \toprule \textbf {metric} & \textbf... l.693 \end{tabular}}
随后R抛出错误:
Error: LaTeX failed to compile markdown_file.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See markdown_file.log for more info.
Pandoc调用差异
对比发现RStudio「Knit」按钮与R控制台调用pandoc的命令存在一处差异:
"C:/Program Files/RStudio/bin/quarto/bin/tools/pandoc" +RTS -K512m -RTS markdown_file.knit.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output markdown_file.tex --lua-filter "C:\Users\XXXXXXX\AppData\Local\R\win-library\4.2\rmarkdown\rmarkdown\lua\pagebreak.lua" --lua-filter "C:\Users\XXXXXXX\AppData\Local\R\win-library\4.2\rmarkdown\rmarkdown\lua\latex-div.lua" --embed-resources --standalone --highlight-style tango --pdf-engine pdflatex --variable graphics *--include-in-header "C:\Users\XXXXXXX\AppData\Local\Temp\RtmpoJICVK\rmarkdown-str196079161973.html"*
上述命令中,RStudio的调用包含末尾*标记的--include-in-header参数(指向临时文件),但R控制台的调用命令无此部分。
解决方法
经过多次尝试,找到有效解决方案:在每次调用render()函数之间卸载KableExtra包,即可在R控制台成功批量渲染所有PDF文档。
内容的提问来源于stack exchange,提问作者bentwells
相关产品推荐
相关产品推荐

