我想使用R Markdown生成利用某些LaTeX软件包的文档。有时,我想将Rmd文档渲染为PDF。在其他时候,我想将其呈现为HTML。
我想通过extra_dependencies
选项而不是通过includes
或header-includes
选项加载软件包。一些LaTeX软件包应装有选件。其他人不应该。
当我将Rmd文档渲染为PDF时,没有问题。但是,当我尝试将同一文档呈现为HTML时,rmarkdown::render
自变量的处理变得很困难。 (我正在使用rmarkdown 2.1。)以下是一个最小的示例,遵循R Markdown Cookbook的样式:
extra_dependencies
使用---
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文档?为什么在生成PDF文档时此示例有效,但在生成HTML文档时为何无效?
答案 0 :(得分:2)
请注意,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.
您可以为 HTML文档指定额外的依赖性,但是这些必须是 HTML依赖性,而不是LaTeX软件包。似乎没有很多很好的例子可以说明这一点,因为此功能主要由模板使用,很少暴露给最终用户,但它可以让您加载其他JavaScript依赖项。此示例在此处给出:https://github.com/rstudio/rmarkdown/issues/1654
答案 1 :(得分:0)
我不知道为什么会发生此错误,但是我有一种解决方法。可以使用extra_dependencies
来代替header_includes
。
---
title: "Test Processing of YAML Header in R Markdown Document"
output:
html_document
header-includes:
- \usepackage{array}
- \usepackage{numprint}["autolanguage"]
---