R Bookdown _bookdown.yml



bookdown有许多配置选项,我发现很难了解如何知道是否存在选项,以及这些选项的含义背后的逻辑。

具体而言,我发现很难描述 _bookdown.yml中选项的类型,因为至少还有两个其他陈述选项的地方:

  • _output.yml中,
  • 函数调用的参数,例如bookdown::render_book

在我看来,_bookdown.yml与诸如bookdown::render_book之类的函数之间有任何1到1映射,因此_bookdown.yml似乎并不是录制功能调用选项的另一种方法。

我们可以在" _ bookdown.yml"的源代码中看到一些配置选项,但不是全部。

so-要重塑问题 - 为什么 _bookdown.yml单独的配置文件以及什么应包含的定义?

是什么?

以代表性的示例,有一个chapter_name选项可以在_bookdown.yml中使用。我有以下问题:

  1. 我们应该如何知道这是一种选择,因为此处甚至在此处的文档中都没有引用它。
  2. 一旦我们知道它存在,我如何找到它的影响?所有这些选项是否都传递给其他软件包(例如pandoc,rmarkDown)?我唯一可以找到对chapter_name的参考的地方是BookDown的Cran源代码,即使在那里我也无法真正弄清楚它是如何使用的。

请注意,作者对_bookdown.yml的讨论在这里,但我仍然不完全理解。

这是对代码库的一些调查结果:

我们可以看到,bookdown::render_book中的"配置"变量是从_bookdown.yml填充的,通过称为load_config的函数,可以在utils.R中找到。

load_config似乎有两件事 - 它将config的内容存储在称为opts的主选项列表中,其中config只是一个元素,然后返回config元素。

请注意,opts最初是在此处定义的。它是由可以在此处找到的knitr:::new_defaults创建的。

config变量然后出现在代码库的多个部分中。

以下代码代表:

  if (is.na(new_session)) {
    new_session = FALSE
    if (is.logical(config[['new_session']])) new_session = config[['new_session']]
  }

因此,我们可以看到,如果将new_session直接传递给bookdown::render_book作为函数参数,则使用它。否则尝试从_bookdown.yml文件加载它。

configbookdown::render_book中的参数中经常传递。因此,例如,我们可以看到它在utils.R中的source_files函数中使用。

我们总结什么?_bookdown.yml允许您填充bookdown软件包的全局选项列表。每当您看到config(这是一个列表)正在使用代码库时,您可以通过填充_bookdown.yml

来设置此列表的元素

我尚未设法找到可以在_bookdown.yml中指定的选项的综合列表,但是一种轻松找出可能的方法是在GitHub上搜索示例。

最新更新