непоследовательная обработка списков YAML в документах R Markdown (связанных с загрузкой пакетов LaTeX) - PullRequest
3 голосов
/ 17 марта 2020

Я хотел бы использовать R Markdown для создания документа, который использует преимущества определенных пакетов LaTeX. Иногда я хочу сделать документ Rmd в PDF. В других случаях я хочу отобразить его как HTML.

. Я бы хотел загружать пакеты с помощью параметра extra_dependencies, а не параметров includes или header-includes. Некоторые из пакетов LaTeX должны быть загружены с опциями. Других не должно быть.

Когда я рендерим Rmd-документ в PDF, проблем не возникает. Но когда я пытаюсь отобразить тот же документ в HTML, rmarkdown::render останавливается при обработке аргумента extra_dependencies. (Я использую rmarkdown 2.1.) Вот минимальный пример, следуя стилю R Markdown Cookbook :

---
title: "Test Processing of YAML Header in R Markdown Document"
output: 
  html_document:
    extra_dependencies:
      array: null
      numprint: ["autolanguage"]
---

Hello.

При рендеринге этого документа с rmarkdown::render генерируется dependency_resolver -> <Anonymous> -> sapply -> lapply ошибка. Если я добавлю дефисы перед array и numprint, ошибка будет Error: invalid version specification 'NULL'. Но если я просто изменю html_document на pdf_document, проблем не будет.

Как я могу сгенерировать документ HTML при загрузке пакетов с помощью опции extra_dependencies? И почему этот пример работает, когда я генерирую документы PDF, а не когда я генерирую HTML документы?

Ответы [ 2 ]

2 голосов
/ 17 марта 2020

Обратите внимание, что аргумент extra_dependencies доступен для нескольких различных форматов вывода (PDF, HTML), но эти настройки задаются форматом вывода, например c.

Если вы хотите назначить Пакеты LaTeX , они будут работать только как extra_dependency для PDF-выводов . Это вызывает ошибку, так как не распознает синтаксис дополнительной зависимости. Чтобы ваш код работал, вам нужно предоставить отдельные опции для HTML и PDF:

---
title: "Test Processing of YAML Header in R Markdown Document"
output: 
  html_document: default
  pdf_document:
    extra_dependencies:
      array: null
      numprint: ["autolanguage"]
---

Hello.

Вы можете указать дополнительные зависимости для HTML документа , но они будут иметь быть HTML зависимостями , а не пакетами LaTeX. Кажется, не так много хороших примеров, демонстрирующих это, так как эта функциональность в основном используется шаблонами и редко предоставляется конечным пользователям, но она позволит вам загрузить дополнительные JavaScript зависимости. Этот пример приведен здесь: https://github.com/rstudio/rmarkdown/issues/1654

0 голосов
/ 17 марта 2020

Я не знаю, почему возникает эта ошибка, но у меня есть обходной путь. Вместо использования extra_dependencies вы можете использовать header_includes.

---
title: "Test Processing of YAML Header in R Markdown Document"
output: 
  html_document
header-includes:
  - \usepackage{array}
  - \usepackage{numprint}["autolanguage"]
---
...