【问题标题】:Knit child documents in standalone mode在独立模式下编织子文档
【发布时间】:2020-05-12 20:24:08
【问题描述】:

根据https://yihui.org/knitr/demo/child/,可以通过在块中使用 set_parent() 自行编织子文档。

我试过了:

knitr::set_parent("<PATH TO MAIN FILE>")

但这似乎不起作用。编织子代不会考虑父代的 YAML 部分中的信息。我在这里做错了什么?

【问题讨论】:

  • 目前此功能仅适用于 Rnw 文档。您可以向github.com/yihui/knitr 提交功能请求,以获得对 Rmd 文档的支持。谢谢!
  • 刚刚做到了!非常感谢您在 rmarkdown(和相关软件包)方面所做的出色工作,它对我来说是一个非常有价值的工具!

标签: r rstudio r-markdown knitr


【解决方案1】:

这里有一个函数可以用来将任意 Rmd 文件的 YAML frontmatter 输入到另一个 Rmd 文件中:

input_yaml = function(file) {
  lines = xfun::read_utf8(file)
  meta = rmarkdown:::partition_yaml_front_matter(lines)$front_matter
  knitr::asis_output(paste(meta, collapse = '\n'))
}

如果你不喜欢:::,你也可以使用:

input_yaml = function(file) {
  meta = rmarkdown::yaml_front_matter(file)
  meta = c('---', yaml::as.yaml(meta), '---')
  knitr::asis_output(paste(meta, collapse = '\n'))
}

那么在子文档中,你可以这样做:

```{r, echo=FALSE}
input_yaml('parent.Rmd')
```

This is a child document without YAML.

【讨论】:

  • 看起来是一个很好的解决方法,但这对我不起作用,在放入函数后,我的文档仍然作为标准 html 文档编织
  • @maxpe 你能提供一个最小的可重现的例子吗?我无法仅通过知道某些东西“不起作用”来提供帮助。谢谢!
  • 抱歉,我不清楚,我在 rstudio 中创建标准 rmd 文档作为父级,将 pdf_document 设置为输出,如果我采用上面的示例子文档(定义了函数)并将其链接到父母,它仍然编织一个html文档而不是pdf
  • 顺便说一句,我的另一个问题也与 yaml 相关,这可能是我这边设置的问题吗? stackoverflow.com/questions/59987994/…
  • @maxpe 我明白了。那会很难。我的意思是很难通知 rmarkdown 或 RStudio IDE 使用父文档的输出格式。你必须显式调用rmarkdown::render('child.Rmd', output_format = 'pdf_document')
猜你喜欢
  • 2014-06-07
  • 1970-01-01
  • 2017-02-01
  • 2016-11-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多