首页 > 解决方案 > 在独立模式下编织子文档

问题描述

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

我试过了:

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

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

标签: rrstudior-markdownknitr

解决方案


这是一个函数,可用于将任意 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.

推荐阅读