我在R标记文档中使用针织品来创建pdf报告中的表。一栏包含冗长的产品描述,我通常会对其进行包装。由于某种原因,latex编译开始返回一个错误。
更新渲染成功一次,但是第二次呈现笔记本会导致错误。我真正的用例是一个循环,在这个循环中,我为不同的产品组多次呈现相同的笔记本。类似于bookdown中描述的用例,其中报告“针对一个国家的每个州”。
无法呈现pdf文档的可复制示例
文件/tmp/notebook.Rmd
---
title: "Test document"
output: pdf_document
---
```{r setup}
图书馆(Dplyr)
```{r}
虹膜%>%
knitr::kable(format="latex") %>%
kableExtra::column_spec(2, width = "10em")
使用R命令将文件编译为pdf文档:
rmarkdown::render("notebook.Rmd")
Update:第二次运行render命令以查看错误。
返回错误
/usr/bin/pandoc +RTS -K512m -RTS notebook.knit.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output notebook.tex --lua-filter /home/paul/R/x86_64-pc-linux-gnu-library/4.2/rmarkdown/rmarkdown/lua/pagebreak.lua --lua-filter /home/paul/R/x86_64-pc-linux-gnu-library/4.2/rmarkdown/rmarkdown/lua/latex-div.lua --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --variable 'geometry:margin=1in'
[WARNING] Deprecated: --self-contained. use --embed-resources --standalone
! Undefined control sequence.
<argument> r|>{\raggedleft \arraybackslash
s }p{10em}|r|r|l
l.117 ...\raggedleft\arraybackslash}p{10em}|r|r|l}
Error: LaTeX failed to compile notebook.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See notebook.log for more info.
呈现到html很好。
---
title: "Test document"
output: html_document
---
```{r setup}
图书馆(Dplyr)
```{r}
虹膜%>%
knitr::kable(format="html") %>%
kableExtra::column_spec(2, width = "10em")
这没有错误地呈现。
发布于 2022-09-05 17:44:44
在RStudio中,当我单击Knit
时,它对我有效,但当我像您一样运行rmarkdown::render("notebook.Rmd")
时,它就不起作用了。在一些人玩了一遍,看看区别是什么(特别是我要求一个latex_document
而不是pdf_document
,这样我就可以看到tex代码)之后,我发现Knit
按钮添加了大量在rmarkdown::render()
调用中不存在的额外依赖项。
我想我明白为什么有时候这对你有用。kableExtra
在加载时设置所有额外的依赖项,但前提是在knitr
LaTeX运行期间加载它。所以,当您第一次运行它时,它会工作,但是第二次,它已经被加载,所以它没有设置那些依赖项。它们需要在运行期间进行设置,不会从上一次运行中继续运行。
因此,解决方法是在调用kableExtra
之前卸载rmarkdown::render()
。这样,它将在处理文档的过程中加载,并且一切都应该是好的。通过这样做
unloadNamespace("kableExtra")
rmarkdown::render("notebook.Rmd")
unloadNamespace("kableExtra")
行也可以在第一次使用kableExtra
之前放入文档本身。
---
title: "Test document"
output: pdf_document
---
```{r setup}
图书馆(Dplyr)
unloadNamespace("kableExtra")
```{r}
虹膜%>%
knitr::kable(format="latex") %>%
kableExtra::column_spec(2, width = "10em")
https://stackoverflow.com/questions/73611678
复制相似问题