R Markdown 文档中 YAML 列表的处理不一致(与 LaTeX 包的加载相关)

use*_*473 5 latex yaml r-markdown

我想使用 R Markdown 生成一个利用某些 LaTeX 包的文档。有时,我想将 Rmd 文档渲染为 PDF。有时,我想将其呈现为 HTML。

我想通过extra_dependencies选项加载包,而不是通过includesheader-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.
Run Code Online (Sandbox Code Playgroud)

渲染该文档会rmarkdown::render生成dependency_resolver -> <Anonymous> -> sapply -> lapply错误。array如果我在和之前添加破折号numprint,则会出现错误Error: invalid version specification 'NULL'。但如果我直接改成html_documentpdf_document就没有问题了。

通过选项加载包时如何生成 HTML 文档extra_dependencies?为什么这个示例在我生成 PDF 文档时有效,但在生成 HTML 文档时却无效?

Mic*_*per 3

请注意,该extra_dependencies参数可用于多种不同的输出格式(PDF、HTML),但这些设置是特定于输出格式的。

如果您想指定LaTeX 包,这些包只能作为PDF 输出的extra_dependency 。这导致了错误,因为它无法识别额外依赖项的语法。为了让您的代码正常工作,您需要为 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.
Run Code Online (Sandbox Code Playgroud)

您可以为HTML 文档指定额外的依赖项,但这些依赖项必须是HTML 依赖项,而不是 LaTeX 包。似乎没有很多很好的例子来展示这一点,因为此功能主要由模板使用,很少向最终用户公开,但它允许您加载额外的 JavaScript 依赖项。此示例在这里给出:https ://github.com/rstudio/rmarkdown/issues/1654