我之前问过 用于将 R Markdown 转换为 HTML 的命令。
什么是将 R Markdown 文件转换为 PDF 文档的好方法?
一个好的解决方案应该尽可能地保留内容(例如,图像、方程式、 html 表格等等)。解决方案需要能够从命令行运行。一个好的解决方案也应该是跨平台的,理想情况下应该尽量减少依赖性,以便更容易地共享 makefile 等等。
具体来说,有很多选择:
markdown
pandoc
下面是一个 Rmd 文件示例,它大概提供了对任何提议的解决方案的合理测试。它被用作 这篇博文的基础。
我认为你真的需要 潘多克,这个伟大的软件就是为了这个任务而设计和构建的:)除了 Pdf,你还可以把你的 医学博士文件转换成如 Docx或者 奇怪等等。
好吧,安装最新版本的 Pandoc在 Linux 上可能是有挑战性的(因为您需要从源代码构建整个 haskell-platform) ,但是在 Windows/Mac 上只需要几兆字节的下载就非常容易。
haskell-platform
如果你有煮好的/针织的标记文件,你可以在 bash 中调用 pandoc,或者在 R 中使用 system函数。后者的 POC 演示在 我的小程序包的 Ṗandoc.convert功能(你一定觉得很无聊,因为我一有机会就想引起你的注意)中实现。
system
Ṗandoc.convert
降价套餐 : 现在有一个与 Pandoc 接口的 可在 github 上使用 rmarkdown软件包。 它包含一个 render函数。文档清楚地说明了如何将 rmarkdown 转换为 pdf 格式。这包括在 rmarkdown 文件中包含输出格式,或者向 rend 函数提供输出格式。例如:
rmarkdown
render
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')"
因此,许多人认为潘多克是一条出路。请参阅下面关于拥有最新版本的 Pandoc 的重要性的说明。
我使用以下命令将 R Markdown 转换为 HTML (即 这个 makefile 的变体) ,其中 RMDFILE是没有 .rmd组件的 R Markdown 文件的名称(它还假设扩展名是 .rmd而不是 .Rmd)。
RMDFILE
.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
markdownToHTML
'base64_images'
正如@daroczig 所提到的,为了输出 pdf,拥有一个最新版本的 Pandoc 是很重要的。在2012年6月15日的 Ubuntu 上,我在软件包管理器中使用的是 Pandoc 的1.8.1版本,但是从 更改日志来看,对于 pdf 的支持,你至少需要 Pandoc 的1.9 + 版本。
因此,我安装了 caball-install。 然后跑了:
caball-install
cabal update cabal install pandoc
在 ~/.cabal/bin/pandoc中安装了 Pandoc 因此,当我运行 pandoc时,仍然看到旧版本。 看这里的 增加路径。
~/.cabal/bin/pandoc
对于一个看起来更像从浏览器打印时所得到的选项,wkhtmltopdf提供了一个选项。
wkhtmltopdf
在 Ubuntu 上
sudo apt-get install wkhtmltopdf
然后使用与 pandoc 示例相同的命令访问 HTML:
然后
wkhtmltopdf example-r-markdown.html example-r-markdown.pdf
生成的文件看起来像 这个。它似乎不能处理 MathJax (这个问题在这里讨论) ,而且分页很难看。但是,在某些情况下,这种样式可能优于更具 LaTeX 样式的演示文稿。
只有两步:
从这里安装最新版本的“ pandoc”:
Https://github.com/jgm/pandoc/releases
在 library(knitr)中调用函数 pandoc
library(knitr)
library(knitr) pandoc('input.md', format = 'latex')
Thus, you can convert your "input.md" into "input.pdf".
现在(2014年8月)您可以使用 工作室将 R Markdown 转换为 PDF。 基本上,RStudio 使用 潘多克将 Rmd 转换为 PDF。
您可以将元数据更改为:
欲了解更多细节,请访问以下网址: http://rmarkdown.rstudio.com/pdf _ document _ format.html rel = “ norefrer”> http://rmarkdown.rstudio.com/pdf_document_format.html
我发现使用 R Studio 是最简单的方法,但是如果想要从命令行进行控制,那么一个简单的 R 脚本可以使用 降价呈现命令(如上所述)完成这个任务。完整的脚本细节 给你
#!/usr/bin/env R # Render R markdown to PDF. # Invoke with: # > R -q -f make.R --args my_report.Rmd # load packages require(rmarkdown) # require a parameter naming file to render if (length(args) == 0) { stop("Error: missing file operand", call. = TRUE) } else { # read report to render from command line for (rmd in commandArgs(trailingOnly = TRUE)) { # render Rmd to PDF if ( grepl("\\.Rmd$", rmd) && file.exists(rmd)) { render(rmd, pdf_document()) } else { print(paste("Ignoring: ", rmd)) } } }
如果不想安装任何东西,可以输出 html。然后打开 html 文件-它应该在浏览器窗口中打开,然后右击打印。在打印窗口,选择“另存为 pdf”在右下角,如果你是在 Mac 上。瞧!
遵循以下简单步骤:
1: 在 Rmarkdown 脚本中运行 Knit (Ctrl + Shift + K) 2: 然后在 html 标记打开后,单击 Open in Browser (左上角)和 在你的浏览器中打开 html 3: 然后使用 Ctrl + P 并保存为 PDF。