每种输出类型在同一文档中的不同 R Markdown

数据挖掘 r 工作室
2022-02-25 14:39:08

在 R Markdown 中,我希望能够根据我输出的内容有条件地包含某些块。例如,如果我正在编织 PDF,我想包含一点 LaTeX 来进行分页,但如果我正在从同一个文档编织 HTML,我想跳过它,或者可能包含其他内容。那么文档如何“知道”它的去向,并有选择地包含内容呢?

1个回答

我能够使用以下文档获得不同的包含和渲染:

---
output: html_document
---

```{r, results='asis', echo=FALSE}
library(knitr)
pandocto <- opts_knit$get("rmarkdown.pandoc.to")
if (pandocto == "docx") {
  cat("## Word Heading\n\nHello world")
} else if (pandocto == "html") {
  cat("## HTML Heading\n\nHello world-wide-web")
} else if (pandocto == "latex") {
  cat("## LaTeX/PDF Heading\n\nHeLlO wOrLd")
}
```

```{r}
str(opts_knit$get()
```

如果您根据需要改变头部 YAML,可能是以下之一:

output: html_document
output: pdf_document
output: word_document

你可以看到区别。诀窍是知道它rmarkdown告诉您pandoc渲染的格式,以及results='asis'在块头中使用将输出捕获为原始降价(或乳胶,视情况而定)。

我包含了第二个块 ( str(...)),因此您可以在文档编译/渲染期间查看“已知”的其他内容。