2017-06-04 18 views
4

我正在使用knitr::rmarkdown(但knitr::knitr也是如此)与我的VignetteEngine。然后我使用devtools::build_vignettes()构建我的包装小插图。使用开发工具生成.md小插图

这可以工作,但只能在inst/doc中创建HTML和R输出文件。我想是一个Markdown输出文件,因为只有它可以直接显示在Github项目页面中(对于HTML文件,Github显示源文件和Rmd文件,它显示渲染输出,但显然不执行R块)。

我试着找出如何指定自定义VignetteEngine s的输出,我认为它应该是可能的(毕竟,其他包至少使用它来构建PDF短片),但我找不到方法通过devtools::build_vignettes做到这一点。是否无法手动构建小插图(即通过knitr::knit或忽略VignetteBuilder指令的类似机制)?

我无法在文档/源中找到相关信息。

+0

我想知道是否将'clean = FALSE'添加到[this line](https://github.com/hadley/devtools/blob/master/R/vignettes.r#L25)将有助于保留中间文件... –

+0

@罗曼不幸的是,它似乎并没有,至少我不能让它工作。 –

回答

2

短片的唯一输出格式是HTML和PDF(和LaTeX,但它被转换为PDF,不显示)。 Markdown不受支持。

你可以在你的包中包含任意的文档文件(按照惯例你将它们放在inst/doc中),但它们不被认为是短片,所以它们不会被自动构建,像browseVignettes()这样的函数将忽略它们等

要将Rmd文件转换为md,只需在其上运行knitr::knit即可。

+0

这是一个耻辱,但有点可以理解。谢谢。 –

+0

我不明白你的评论。它可能不是一个小插曲,但生成.md文件很容易。 (实际上,它也可能是一个小插曲,只是R不会自动生成.md文件。) – user2554330

+0

对于较大的插图,这是一个不可忽视的且完全不必要的开销,它只处理'.rmd'源码两次在Markdown中间(在我的例子中,小插曲显示了如何用Rcpp编译一些东西,使它成为* slooooow *)。事实上,即使添加一个指定输出('html_document')的Yaml frontmatter和'keep_md'选项,也不会保留中间Markdown文件。这很奇怪。 –