为什么 `texreg` 参数 `scalebox` 现在在尝试呈现 Rmarkdown pdf 文档时抛出错误?

Why does `texreg` argument `scalebox` now throw an error when trying to render Rmarkdown pdf document?

我最近更新了我的 OS、包、RStudio 和 R,我尝试 运行 一个 .Rmd 文件,该文件在所有更新之前都运行良好。当我 运行 .Rmd 时,我在尝试呈现 PDF 文档时(在它达到 100% 之后)最后收到一个错误(如下所示)。在分解并 运行 逐个修改我的 Rmarkdown 文件后,我发现问题出在 scalebox = 参数上,我用 texreg 生成了 table。我很高兴我发现了这个问题,但我很好奇为什么 scalebox 不再在 Rmarkdown 文档中工作。下面的 Reprex(如果你删除 scalebox = .75,它会呈现得很好)。有什么想法吗?

title: "Reprex"
author: "Author"
date: ""
output: pdf_document
---

```{r setup, include=FALSE}
knitr::opts_chunk$set(echo = TRUE)

library(texreg)

df <- data.frame(y = rnorm(100),
                 x = rnorm(100))

model <- lm(y ~ x, data = df)


```{r, results='asis'}
texreg(model,
       scalebox = .75)
output file: Reprex.knit.md

! LaTeX Error: Can be used only in preamble.

Error: LaTeX failed to compile Reprex.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See Reprex.log for more info.
Execution halted

要使用scalebox = 0.75texreg需要使用graphicx包。它未设置为与 knitr 一起使用,因此它只是在 table 之前输出 \usepackage{graphicx} 命令,这是非法的。我想您应该将输出剪切并粘贴到您的文档中,该行进入序言而不是正文。

要解决此设计,只需在对 texreg() 的调用中设置 use.packages = FALSE。由于 knitr 已经使用 graphicx,这就足够了。

如果您在 knitr 不包含的某些包中遇到相同的错误(也许您使用了 siunitx = TRUE,它需要 siunitx 包),那么您将需要显示结果以确定它需要哪个包,然后将其添加到文档的 YAML 中,例如

texreg(model,
       scalebox = .75, siunitx = TRUE)

\usepackage{graphicx}
\usepackage{siunitx}
...

告诉你在 运行 use.packages = FALSE:

之前将它添加到你的 YAML
output: 
  pdf_document:
    extra_dependencies: siunitx

然后代码块将更改为

texreg(model,
       scalebox = .75, siunitx = TRUE, use.packages = FALSE)