背景
我正在尝试制作一个使用render()
. 该render
调用有两个参数化的元素:
- 我希望用户能够指定 pdf 或 html。直接使用
output_format()
. - 我还想将参数传递给文档以指定表(使用
kableExtra
包)是乳胶还是 html。
这是名为 test.Rmd 的 rmarkdown 文件
---
title: "Title"
author: "Zzz Zzzzzz"
params:
table_format:
value
---
```{r setup}
knitr::opts_chunk$set(echo = FALSE)
library(knitr)
library(kableExtra)
options(knitr.table.format = params$table_format)
```
## Test table
```{r cars}
if (params$table_format == "latex"){
kable(iris[1:100,], booktabs = T) %>%
kable_styling(latex_options = c("scale_down"))
}
if (params$table_format == "html"){
kable(iris[1:100,]) %>%
kable_styling(bootstrap_options = c("striped", "hover")) %>%
scroll_box(width = "500px", height = "600px")
}
params$table_format
```
现在这里是渲染文件的两个调用:
rmarkdown::render("test.Rmd", output_format = "pdf_document", params = list(
table_format = "latex"
))
rmarkdown::render("test.Rmd", output_format = "html_document", params = list(
table_format = "html"
))
问题
现在,如果我打开一个新的 rstudio 会话,我可以运行两个render
调用都没有问题。创建 .pdf 或 .html 文件。但是,如果我再次尝试运行 .pdf 渲染,我会收到以下错误:
"C:/Program Files/RStudio/bin/pandoc/pandoc" +RTS -K512m -RTS test.utf8.md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test.pdf --template " C:\Users\salbers\R\win-library\3.4\rmarkdown\rmd\latex\default-1.17.0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable “几何:边距=1英寸”!未定义的控制序列。\begin {tabular}{rrrrl} \toprule Sepal.Length & Sepal.Width & Pet... l.267 \end{tabular}}
pandoc.exe:错误生成 PDF 错误:pandoc 文档转换失败,错误 43 另外:警告消息:运行命令“C:/Program Files/RStudio/bin/pandoc/pandoc”+RTS -K512m -RTS test.utf8。 md --to latex --from markdown+autolink_bare_uris+ascii_identifiers+tex_math_single_backslash --output test.pdf --template "C:\Users\salbers\R\win-library\3.4\rmarkdown\rmd\latex\default-1.17. 0.2.tex" --highlight-style tango --latex-engine pdflatex --variable graphics=yes --variable "geometry:margin=1in"' 状态为 43
html 渲染一次又一次地正常工作。如果我关闭 rstudio,然后关闭项目,pdf 的渲染也可以正常工作。
问题
- 谁能告诉我为什么我的 pdf 渲染的 rmarkdown 文档不能在一次 rstudio 会话中渲染两次?
- 同样,为什么 rstudio 必须在渲染之间关闭?