为什么 `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.75
,texreg
需要使用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)
我最近更新了我的 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.75
,texreg
需要使用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
:
output:
pdf_document:
extra_dependencies: siunitx
然后代码块将更改为
texreg(model,
scalebox = .75, siunitx = TRUE, use.packages = FALSE)