2016-11-26 5 views
5

Bookdown имеет множество опций конфигурации, и мне трудно понять, как узнать, существует ли опция, и логика, где указаны эти параметры.R Bookdown _bookdown.yml

В частности, я нахожу, что это трудно описать то, что вид вариантов идти в _bookdown.yml, учитывая, что есть по крайней мере два других места для постановки вариантов:

  • В _output.yml,
  • аргументы функции вызовов например bookdown::render_book.

Это не кажется мне, что есть какой-либо 1 к 1 отображение между _bookdown.yml и аргументы функций, таких как bookdown::render_book, так _bookdown.yml не кажется, просто другой способ параметры записи на вызовы функций.

В исходном коде мы видим, что `_bookdown.yml 'контролирует некоторые из config options, но не все из них.

Так что, чтобы перефразировать вопрос - почему _bookdown.yml отдельный файл конфигурации и где/что такое определение того, что он должен содержать?

Чтобы воспользоваться представительным примером, существует опция chapter_name, которая может использоваться в _bookdown.yml. У меня есть следующие вопросы:

  1. Как мы должны знать, что это вариант, учитывая, что она не упоминается в документации here или даже в примере here.
  2. Как только мы знаем, что существует, как я узнаю, какой эффект он имеет? Все ли эти параметры передаются другим пакетам (например, pandoc, rmarkdown)? Единственное место, где я могу найти ссылку на chapter_name, находится в исходном коде CRAN для bookdown, и даже там я не могу понять, как он используется.

Примечание: обсуждение _bookdown.yml автором является here, но я до сих пор не совсем понимаю.

ответ

7

Вот некоторые результаты исследований в кодовую:

Мы можем видеть, что «конфигурации» переменная bookdown::render_book заполняется из _bookdown.ymlhere, с помощью функции, называемой load_config, которую можно найти в utils.R.

load_config, кажется, сделать две вещи - он хранит содержимое config в списке мастер-опций под названием opts, из которых config является только один элемент, а затем возвращает этот элемент config.

Отметьте, что opts изначально определено here. Он создан с knitr:::new_defaults, который можно найти here.

Затем переменная config отображается в нескольких частях кодовой базы.

following code репрезентативна:

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.

config много передается в качестве аргумента в пределах bookdown::render_book. Так, например, мы видим, что он используется в функции source_files в utils.R.

Что мы делаем? _bookdown.yml позволяет вам заполнить список глобальных опций пакета bookdown. Всякий раз, когда вы видите config (который является список) быть с помощью кодовой базы, вы можете установить элементы этого список заселения _bookdown.yml

мне не удалось найти полный список опций, которые могут быть указаны в _bookdown.yml, но один способ легко узнать, что возможно, это search for examples on Github.

+0

Последнее соединение не работает. В нем говорится: «Мы не смогли выполнить этот поиск. Должен включать хотя бы одного пользователя, организацию или репозиторий» – Jfly

+0

Возможно, вам необходимо пройти авторизацию? Это работает на моем конце .... – RobinL

+0

Я вошел и получил те же сообщения. Странный.. – Jfly