更新的答案(2013年2月10日)
rmarkdown软件包:rmarkdown
github上现在有一个与Pandoc交互的软件包。它包括一个render
功能。该文档非常清楚地说明了如何将rmarkdown转换为其他格式。这包括在rmarkdown文件中包括输出格式,或者正在为rend函数提供输出格式。例如,
render("input.Rmd", "pdf_document")
命令行:
从命令行运行时render
(例如,使用makefile),有时会遇到找不到pandoc的问题。大概它不在搜索路径上。以下答案说明了如何将pandoc添加到R环境。
因此,例如,在运行OSX的计算机上,我通过RStudio获得了pandoc的副本,可以使用以下命令:
Rscript -e "Sys.setenv(RSTUDIO_PANDOC='/Applications/RStudio.app/Contents/MacOS/pandoc');library(rmarkdown); library(utils); render('input.Rmd', 'pdf_document')"
旧答案(大约2012年)
因此,许多人都建议Pandoc是必经之路。请参阅以下注释,了解拥有最新版本的Pandoc的重要性。
使用Pandoc
我使用以下命令将R Markdown转换为HTML(即此makefile的变体),其中RMDFILE
R Markdown文件的名称不包含.rmd
组件(它也假定扩展名为.rmd
而不是.Rmd
)。
RMDFILE=example-r-markdown
Rscript -e "require(knitr); require(markdown); knit('$RMDFILE.rmd', '$RMDFILE.md'); markdownToHTML('$RMDFILE.md', '$RMDFILE.html', options=c('use_xhml'))"
然后将此命令转换为pdf
Pandoc -s example-r-markdown.html -o example-r-markdown.pdf
关于此的一些注意事项:
- 我删除了示例文件中的引用,该示例文件将图导出到imgur中以托管图像。
- 我删除了对imgur上托管的图像的引用。数字似乎需要是局部的。
markdownToHTML
函数中的选项意味着图像引用是针对文件的,而不是针对HTML文件中存储的数据的(即,我已从'base64_images'
选项列表中删除)。
- 结果输出如下所示。与从浏览器将HTML文件打印为pdf时所得到的相反,它显然是非常LaTeX风格的文档。
取得最新版本的Pandoc
正如@daroczig所提到的,拥有最新版本的Pandoc以输出pdf至关重要。自2012年6月15日起在Ubuntu上,我在软件包管理器中停留在Pandoc的1.8.1版本,但是从更改日志看来,要获得pdf支持,您至少需要1.9+的Pandoc版本。
因此,我安装了caball-install
。然后运行:
cabal update
cabal install pandoc
Pandoc已安装在。~/.cabal/bin/pandoc
因此,当我运行pandoc
它时,它仍然看到旧版本。请参阅此处以添加到路径。
knit
和mdconvert.sh
)。由于LaTeX太灵活,可能很难提出通用方法。您可以为pandoc使用各种模板。