从 rmarkdown::render 捕获 'output_format' 作为变量
Capture 'output_format' from rmarkdown::render as variable
我将 RStudio 与 knitr
等一起使用,以制作可重现的报告,并希望为 Word 文档和 PDF 提供最好的版本 - 我更喜欢使用 LaTeX,但最终用户倾向于更喜欢可编辑 Word 文档的灵活性。
我写了一个 ifelse
声明,本质上说 'if this is render
ed as a word document, create a kable
table in markdown, else create the kable
table in LaTeX and then manipulate to make the table look better (shaded rows, etc)'。
我不明白 rmarkdown::render
ing 过程如何捕获 output_format
,但是有没有办法将其存储为变量并在 ifelse
语句中使用?
一个最小的例子是将此代码保存为 test.Rmd
:
format <- output_format #(somehow captured as a variable)
printTable <- function(data = df, format = format){
if (format %in% 'pdf_document') {
# create nice latex table
} else {
# create markdown table
}
}
然后,当运行这个代码:
rmarkdown::render(input = "test.Rmd", output_format = c("word_document", "pdf_document"))
不同版本的报告会包含正确的表格。
您可以通过knitr::opts_knit$get("rmarkdown.pandoc.to")
访问输出格式。这将 return 一个具有目标输出格式的字符串。这是一个例子:
---
title: "Untitled"
output: html_document
---
```{r}
library(knitr)
opts_knit$get("rmarkdown.pandoc.to")
```
此 returns "html" 用于 html_document,"docx" 用于 word_document,"latex" 用于 pdf_document。
我将 RStudio 与 knitr
等一起使用,以制作可重现的报告,并希望为 Word 文档和 PDF 提供最好的版本 - 我更喜欢使用 LaTeX,但最终用户倾向于更喜欢可编辑 Word 文档的灵活性。
我写了一个 ifelse
声明,本质上说 'if this is render
ed as a word document, create a kable
table in markdown, else create the kable
table in LaTeX and then manipulate to make the table look better (shaded rows, etc)'。
我不明白 rmarkdown::render
ing 过程如何捕获 output_format
,但是有没有办法将其存储为变量并在 ifelse
语句中使用?
一个最小的例子是将此代码保存为 test.Rmd
:
format <- output_format #(somehow captured as a variable)
printTable <- function(data = df, format = format){
if (format %in% 'pdf_document') {
# create nice latex table
} else {
# create markdown table
}
}
然后,当运行这个代码:
rmarkdown::render(input = "test.Rmd", output_format = c("word_document", "pdf_document"))
不同版本的报告会包含正确的表格。
您可以通过knitr::opts_knit$get("rmarkdown.pandoc.to")
访问输出格式。这将 return 一个具有目标输出格式的字符串。这是一个例子:
---
title: "Untitled"
output: html_document
---
```{r}
library(knitr)
opts_knit$get("rmarkdown.pandoc.to")
```
此 returns "html" 用于 html_document,"docx" 用于 word_document,"latex" 用于 pdf_document。