我使用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: output1.pdf output2.html
output1.pdf output2.html : input.Rmd
rmarkdown::render("$<", output_format = c("pdf_document", "html_document"))
all: %.Rmd
$(R_HOME)/bin/Rscript -e "rmarkdown::render('$*.Rmd', 'all')"
在这种情况下,所有输出文件都已生成,但只有一个被R视为vignette,即成功。要将其他输出包含在docs/
中,它们必须添加到.install_extras中。虽然这确保它们可以通过HTML索引访问,但它们被单独列出,不与vignettes一起列出,我认为无法通过vignette()
从R中访问。
是否有更好的方法(或任何自动化的方法)来做到这一点?
sed
命令将html切换为pdf,重新生成文件,然后再切换回来。 - Joshdocs/
,但它们并不被视为小品文。 - Peter Humburg