渲染为 PDF 时 Markdown 中的 kableExtra 错误?

kableExtra error in Markdown when rendering to PDF?

在尝试通过从 R 脚本渲染 Rmd 文件来创建 PDF 时,我在使用 kableExtra 时遇到了问题。我在尝试按照以下说明进行操作时没有成功:

https://github.com/rstudio/bookdown/issues/440 https://community.rstudio.com/t/rendering-both-pdf-and-html-is-only-possible-interactively-not-via-script/19520/3 https://github.com/haozhu233/kableExtra/issues/301

我将从脚本访问包:

library(tidyverse)
library(knitr)
library(rmarkdown)
library(tinytex)

制作 Rmd 文件:

---
output: pdf_document 
---
{r, comment = NA, echo = FALSE, message = FALSE, warning = FALSE}

tibble(x = 1, y = 2, z = 3) %>%
    kable()

使用脚本渲染 Rmd 文件:

render('C:/Users/Rasmus/SO/Test.Rmd',
    output_file = "Test.pdf",
    output_format = 'pdf_document',
    output_dir = 'C:/Users/Rasmus/SO')

这给了我一个带有 table 的 PDF。但是,如果我从 运行 library(kableExtra) 开始,然后应用渲染程序,我会得到一个 PDF:

x
y
z
1
2
3

在运行 library(kableExtra)之后,我尝试了以下Rmd文件的渲染程序:

---
output: pdf_document 
---
{r, comment = NA, echo = FALSE, message = FALSE, warning = FALSE}

tibble(x = 1, y = 2, z = 3) %>%
    kable() %>%
    kable_styling(latex_options = 'scale_down')

这个returns:

output file: Test.knit.md

Error: Functions that produce HTML output found in document targeting latex output.
Please change the output type of this document to HTML. Alternatively, you can allow
HTML output in non-HTML formats by adding this option to the YAML front-matter of
your rmarkdown file:

  always_allow_html: true

Note however that the HTML output will not be visible in non-HTML formats.

是什么阻止我使用 kableExtra

当使用 kableExtra 和 kable 进行 PDF 输出时,您需要在 kable 函数中显式添加 format="latex"(例如,kable(format="latex"))。有关更多信息和示例,请参阅 the kableExtra introduction

kableExtra PDF output Vignette表示0.9.0以上版本不需要设置format="latex",但我发现(目前使用1.1.0版本)还是需要的设置 format="latex" 或者我默认得到 html 输出。

您可以 运行 options(knitr.table.format = "latex") 在任何脚本或 Rmarkdown 文档的开头,使 Latex 成为该 R 会话的默认输出,并避免必须添加 format="latex"每个人 kable table.