请考虑以下内容:
背景
我使用bookdown
程序包,并将整个项目写在了几个.Rmd文件中。所有表都是用knitr::kable()
和kableExtra::kable_styling()
制作的,以使它们看起来可读。
为了轻松地将相同的样式应用于所有表,我编写了一个函数来应用所需的kableExtra::kable_styling()
自变量(KableStyleFun
)。
用“ M-K”方法合并gitbook
没问题。但是,现在我需要生成一些更“可共享”和“可打印”的文件,例如PDF文档。
关于如何执行此操作而无需重写整个代码的信息很少。
郝Zhu解释了一种可能性here。但是,由于(我认为)它将“ M-K”误认为是“ K-M”方法,因此该来源非常令人困惑。据说:
要在多格式书本项目中使用
kableExtra
生成跨格式表,您必须通过在new_session: true
中设置_bookdown.yml
来使用“ MK”方法。
new_session: true
实际上会启动“ K-M”方法。参见here。
尽管如此,“ K-M”方法对我来说是不可行的,因为我将对象从一个章节“传递”到另一章。
问题
在下面的示例中,如何以最小的代码适应性来创建带有pdf_book
的{{1}}?
“ 01-render.Rmd”文件的内容
bookdown
“ _ bookdown.yml”文件的内容
# First part
```{r echo = FALSE, warning=FALSE, message=FALSE}
knitr::opts_chunk$set(echo = FALSE, warning=FALSE, message=FALSE)
library(dplyr)
library(knitr)
library(kableExtra)
# Define function for all tables
KabelStyleFun <- function(dat){
dat %>% kableExtra::kable_styling(full_width = F,
latex_options = "striped",
bootstrap_options = c("striped",
"hover"))
}
```
Table \@ref(tab:test-tab1) in the `gitbook` renders well. But how can I make
this work in a `pdf_book`?
```{r test-tab1}
head(mtcars) %>%
knitr::kable(caption = "testtab") %>%
KabelStyleFun
```
渲染为
book_filename: "test_book"
delete_merged_file: true
language:
ui:
chapter_name: "Section "
rmd_files: ["01-render.Rmd"]
=没问题
bookdown::render_book("01-render.Rmd", output_format = "bookdown::gitbook")
=
错误:产生HTML输出的函数可在针对乳胶输出的文档中找到。 请将此文档的输出类型更改为HTML。或者,您可以允许 通过将此选项添加到以下项目的YAML前端,可以以非HTML格式输出HTML: 您的rmarkdown文件: always_allow_html:是 但是请注意,HTML输出在非HTML格式中将不可见。
非常感谢!