为什么带有output_format = pdf_book的bookdown::render_book会生成错误,而output_format = "all"不会生成错误?

问题描述 投票:0回答:0

我对预订很陌生,并试图了解发生以下问题时幕后发生的情况。 我已经为我的问题创建了一个可重现的示例。 首先,我克隆了bookdown-demo。 运行以下命令 (

command A
) 按预期工作:

bookdown::render_book(
    input = "index.Rmd",
    output_format = "bookdown::pdf_book", 
    output_dir = "_pdf")

如果我将

01-intro.Rmd
中第二个块的内容更改为

library(kableExtra)
knitr::kable(
  head(iris, 20), caption = 'Here is a nice table!',
  booktabs = TRUE
) %>% 
  kableExtra::add_header_above( c(" ", "Group 1" = 1, "Group 2" = 3)) %>% 
  kableExtra::kable_styling(
      font_size = 10
    ) 
  kbl(mtcars[, 1:6], booktabs = T) %>%
kable_styling(latex_options = "striped") %>%
add_header_above(c(" ", "Group 1" = 2, "Group 2" = 2, "Group 3" = 2)) %>%
add_header_above(c(" ", "Group 4" = 4, "Group 5" = 2)) %>%
add_header_above(c(" ", "Group 6" = 6), bold = T, italic = T)

并发出相同的命令,我收到以下错误消息:

! Undefined control sequence.
<recently read> \cellcolor 

Error: LaTeX failed to compile bookdown-demo.tex. See https://yihui.org/tinytex/r/#debugging for debugging tips. See bookdown-demo.log for more info.

如果我改为发出此命令(

command B
):

bookdown::render_book(
    input = "index.Rmd",
    output_format = "all")

它有效。 看起来

command A
未能在 .tex 文件中包含(至少)以下几行,因此 Latex 无法识别某些命令,但这只是我的猜测:

\usepackage{booktabs}
\usepackage{longtable}
\usepackage{array}
\usepackage{multirow}
\usepackage{wrapfig}
\usepackage{float}
\usepackage{colortbl}
\usepackage{pdflscape}
\usepackage{tabu}
\usepackage{threeparttable}
\usepackage{threeparttablex}
\usepackage[normalem]{ulem}
\usepackage{makecell}
\usepackage{xcolor}

进一步看来

command A
在重新启动 Rstudio 后可以工作,但在第二次运行时失败。 谁能解释为什么我以如此任意的方式收到这些错误消息以及幕后发生了什么?

r r-markdown knitr bookdown kable
© www.soinside.com 2019 - 2024. All rights reserved.