Я использую 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()
).
Есть ли лучший способ (или любой автоматизированный способ) для этого?