R markdown YAML 动态变量

5
在RMarkdown中,我似乎能够在YAML头部创建“一些”动态变量,但对于其他变量则不行:
例如,这个是有效的:
---
title: 
  "Some Title, `r format(Sys.time(), '%d %B, %Y')`"
...
---

但这并不包括此内容。
---
...
pdf_document:
    keep_tex: `r 'true'`
---

但是这个并不是动态的(即非动态)。
---
...
pdf_document:
    keep_tex: true
---

那么我如何“动态”地将keep_tex分配给true或false?我的意图是这样的:

---
...
pdf_document:
    keep_tex: `r getOption('mypackage.keep_tex')`
---

参见:https://dev59.com/lVgR5IYBdhLWcg3wLq5n - dreftymac
1个回答

5

我不知道是否可以在.Rmd文件的YAML标头中以程序方式设置模板选项。

作为替代方案,如果您使用 rmarkdown::render 渲染文档,则可以指定输出模板(pdf_document),然后以编程方式设置模板选项(例如 keep_tex)。

例如,如果您有一个名为"test.Rmd"的.Rmd文件如下:

---
title: 
  "Some Title, `r format(Sys.time(), '%d %B, %Y')`"
---

...以及一些逻辑对象,用于确定是否保留中间的TeX文件,例如

my_keep <- TRUE

你可以将输入文件渲染为PDF格式,同时保留像这样的TeX文件:

render(input = "test.Rmd",
       output_format = pdf_document(keep_tex = my_keep))

完美,正是我所需要的。我还应该说,在尝试过后,如果优先使用pdf_document(...)而不是'pdf_document'(即优先使用函数而不是字符串),那么函数版本将覆盖在YAML头中指定的任何内容。 - Nicholas Hamilton

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接