2015-07-03 17 views
17

我使用knitrrmarkdown來編寫R包的短片。感謝pandoc的魔力,很容易將這些文檔轉換爲各種格式。我想通過提供HTML和PDF兩種格式來利用這一點。 rmarkdown支持在文檔元數據塊中指定多種輸出格式的參數。例如,我可能有這樣的事情:如何製作多種格式的R包短片?

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())。

有沒有更好的方法(或任何自動化的方式)來做到這一點?

+2

僅供參考,這與https://github.com/yihui/knitr/issues/1051 –

+0

相同問題謝謝@Yihui。很高興知道你正在研究它。你有沒有機會去調查呢?特別是與R CMD檢查的兼容性似乎是關於這種可行性的一個重要問題。 –

+0

您可以嘗試在製作中包含行從html切換到pdf。生成小插曲,使用'sed'從html切換到pdf,重新生成並切回。 – Josh

回答

1

兩件事情:

  1. 你可以「包括」共同的內容,並與不同的頭兩個源文件,或者

  2. 如果額外的小插曲確實沒有在顯示索引,寫你自己的。 From Writing R extensions:「在安裝時,除非在目錄inst/doc中存在文件index.html,否則將自動從\ VignetteIndexEntry語句創建包中所有短片的HTML索引。此索引從HTML幫助索引包。」小插曲索引條目也可能是讓你的可能同名的小插曲被識別爲不同的線索。