R Markdown中的多组共享选项

时间:2017-07-29 04:04:38

标签: r knitr pandoc reveal.js

是否可以为R Markdown设置多组共享选项?

这是我的问题:我有一个带有一堆markdown文件的文件夹。这些文件可以分为两组:

  • html_document
  • revealjs::revealjs_presentation

我想从每个组中分解出常见的YAML代码。现在我知道我可以创建一个_output.yaml文件来捕获常见的YAML,但我基本上需要两个这些文件,每个输出格式一个。

我看到使用了pandoc_args建议的here,我尝试了如下:

---
title: Document Type 1
output:
  html_document:
    pandoc_args: './common-html.yaml'
---

---
title: Document Type 2
output:
  revealjs::revealjs_presentation:
    pandoc_args: './common-reveal.yaml'
---

但是,使用此设置,包含的YAML文件中的选项无法处理。

任何其他建议将不胜感激!

1 个答案:

答案 0 :(得分:1)

您可以在同一_output.yaml文件中指定多种输出格式,如下所示(只是一些示例选项):

html_document:
  self_contained: false
revealjs::revealjs_presentation:
  incremental: true

然后,您必须render all output formats,不能直接使用RStudio GUI来完成。相反,您必须在R控制台中输入以下内容:

rmarkdown::render(input = "your.Rmd",
                  output_format = "all")

理想情况下,请确保output文档本身的YAML前端没有.Rmd键。否则,_output.yaml文件中的输出选项可能会被覆盖。不幸的是,我找不到确切行为的详尽文档。到目前为止,我的一些观察结果:

  • .Rmd文档本身的YAML前端中定义的输出选项始终为override those specified in the shared options file _output.yaml
  • pdf_document: default文档本身的YAML优先事项中使用默认选项集(例如.Rmd)指定输出格式会完全覆盖_output.yaml中指定的所有选项。但是,如果您未明确指定默认选项(例如output: pdf_document;这一次只能用于一种输出格式),则将充分考虑_output.yaml的内容。
  • 如果您已在_output.yaml中为多种输出格式指定了选项,则在按RStudio中的“编织”按钮时,仅第一个会被渲染(即使您明确按knit to HTML/PDF/Word )。您还必须使用rmarkdown::render(output_format = "all")来呈现其他格式。