如何通过bookdown::render_book建立一个latex kable?

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

这里有一个文件 kable.Rmd 在RStudio中正确编织。

---
title: "latex kable"
output: pdf_document
---

```{r table1, echo=FALSE}
library(magrittr)
library(kableExtra)
kable(data.frame(a=c(1,2,3), b=c(4,5,6))) %>%
  kable_styling(latex_options = c("striped", "hold_position", "repeat_header"),
                full_width = F)
```

输出显示了一个表格。

enter image description here

这是一个用来配置bookdown的YAML文件,叫 "YAML"。kable_bookdown.yml:

# See https://bookdown.org/yihui/bookdown/usage.html
rmd_files: ["kable.Rmd"]
delete_merged_file: true

这里是调用渲染。

bookdown::render_book(input='kable.Rmd', config_file='kable_bookdown.yml')

下面是我从渲染中得到的错误。

ApplicationsRStudio.appContentsMacOSpandocpandoc +RTS -K512m -RTS _main.utf8.md --to latex --from markdown+autolink_bare_uris+tex_math_single_backslash --output _main.tex --self-contained --highlight-style tango --pdf-engine pdflatex --variable graphics --lua-filter LibraryFrameworksR. frameworkVersions3.6Resourceslibraryrmarkdownrmdluapebreak.lua-filter LibraryFrameworksR.frameworkVersions3.6Resourceslibraryrmarkdownrmdlualatex-div.lua --变量'geometry:margin=1in'。

! Undefined control sequence.
<recently read> \rowcolor 

rowcolor 可能来自 "striped" 乳胶选项。

為什麼在RStudio中可以使用,但在render call中卻無法使用?

RStudio似乎使用了相同的latex(pdflatex)。

我使用的是RStudio版本1.2.5042,R 3.6.3,bookdown 0.18,kableExtra 1.1.0,knitr 1.28,tinytex 0.20。

EDIT: 我没能得到 header_includes 来工作。 将此添加到 kable.Rmd 为我工作。

header-includes:
- \usepackage{colortbl}
- \usepackage{xcolor}

EDIT 2: 这对我也有效(来自 此处):

output:
  pdf_document:
    # list latex packages:
    extra_dependencies: ["colortbl", "xcolor"]
r bookdown
1个回答
1
投票

出现这种情况是因为 kableExtra 添加额外的包到 .tex 头,而这些都会在 bookdown 做处理。 我相信 \rowcolor 来自 colortbl 包。 所以你需要告诉 bookdown 来包含该包。 如果我把这一行放到YAML中的 kable.Rmd,它的工作原理。

header_includes: "colortbl"

但在一个更复杂的例子中,你可能需要更多的包含。 下面是那些 kableExtra 导致插入。

\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}
© www.soinside.com 2019 - 2024. All rights reserved.