【发布时间】:2015-07-03 21:45:20
【问题描述】:
我使用 knitr 和 rmarkdown 为 R 包编写小插图。多亏了 pandoc 的魔力,可以轻松地将这些文档转换为各种格式。我想通过提供 HTML 和 PDF 的小插图来利用这一点。 rmarkdown 支持在文档元数据块中指定多种输出格式的参数。例如,我可能有这样的事情:
output:
html_document:
standalone: true
smart: true
normalize: true
toc: true
highlight: tango
self-contained: true
theme: cerulean
pdf_document:
toc: true
highlight: tango
geometry: margin=2cm
documentclass: article
classoption: a4paper
在 R 命令行中,我可以使用 rmarkdown::render 轻松构建一个或两个输出文档。但是,在构建包时,仅使用首先列出的输出格式。我试图包含一个 Makefile,它通过包含类似于
all: %.Rmd
$(R_HOME)/bin/Rscript -e "rmarkdown::render('$*.Rmd', 'all')"
这是成功的,因为生成了所有输出文件,但其中只有一个被 R 识别为小插图。要获得包含在 docs/ 中的其他输出,必须将它们添加到 .install_extras时间>。虽然这确保了它们可以通过 HTML 索引访问,但它们与小插图分开列出,而且我认为它们不能从 R 中访问(通过vignette())。
有没有更好的方法(或任何自动化的方法)来做到这一点?
【问题讨论】:
-
仅供参考,这与github.com/yihui/knitr/issues/1051是同一个问题
-
感谢@Yihui。很高兴知道您正在调查它。你有机会调查吗?特别是它与 R CMD 检查的兼容性如何似乎是关于其可行性的一个重要问题。
-
您可以尝试在您的 make 中包含行以从 html 切换到 pdf。生成小插图,使用
sed从html切换到pdf,重新生成,再切换回来。 -
@Josh,问题在于 R 坚持每个小插图源文件都应该只生成一个输出文件。可以通过在 .install_extras 中列出它们来生成额外的输出,甚至将它们复制到
docs/,但它们不会被识别为这样的小插曲。 -
你可以复制你的小插图。拥有您的原始输出 html,并创建一个 *.pdf.Rmd 版本。 Makefile 将是一个很好的地方。
标签: r knitr r-markdown pandoc