【发布时间】:2023-03-03 07:39:21
【问题描述】:
在我们的大学里,我们经常使用bookdown 来编写课程材料。我们在“_bookdown.yaml”中使用rmd_files: 来指定要包含在书中的rmd 文件。我们的预订项目往往变得相当冗长和复杂,_bookdown.yaml最终看起来像这样:
rmd_files:
- index.Rmd
- folder1/subfolder1/file1.Rmd
- folder1/subfolder1/file2.Rmd
- folder1/subfolder2/file3.Rmd
- folder2/subfolder3/file4.Rmd
...
使用_bookdown.yaml指定文件有以下限制:
- 这会导致大量重复(例如,
folder1会为每个子元素重复) - 复杂的结构是隐含的和晦涩的
- 仅选择要渲染的文件子集涉及人工(比如我只想使用文件夹 1 中的所有文件)
所以我们已经转移到在一个单独的 yaml 文件中描述我们的文件结构,并根据我们的需要使用帮助函数来更新 _bookdown.yaml。这种方法看起来有点笨拙,如果我们可以将文件向量传递给render_book(),而不是在_bookdown.yaml 中指定rmd 文件,它会更加优雅。 这可能吗?
注意:使用render_book(..., preview = TRUE) 不是解决方案,我们希望使用一组特定的 rmd 文件重新渲染图书。
【问题讨论】:
-
你见过RMarkdown Cookbook 格式吗?他们将所有主要章节放在父文件夹中,只有 css/js/images 存储在子文件夹中。这是将您的目录呈现为
bookdown_site -
是的,许多 bookdown 书籍都遵循这种结构。我们想保留我们的嵌套层次结构。你知道 rmd-files 是否可以显式传递给
bookdown::render_book?
标签: r r-markdown knitr bookdown