2017-06-04 17 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文件。這很奇怪。 –