【发布时间】:2012-04-04 20:35:43
【问题描述】:
我开始使用包knitr 作为工作流中的一个组件,以从Markdown 输入文件生成HTML 和PDF 报告。
我想设置一些专门针对输出文件格式定制的knitr 包选项。
目前我手动来回切换以下两行:
<!--roptions dev='png', fig.width=300px, fig.height=200px" -->
<!--roptions dev='pdf', fig.width=5, fig.height=4 -->
是否可以让 knitr 根据输出类型自动知道使用哪组选项?
谢谢。
【问题讨论】:
-
您可以使用
pandoc和knitr从同一个markdown文件生成html 和pdf。我将很快发布一个示例。 -
这也是我最近开始做的;您可以使用手册中的第 3.5 节:github.com/downloads/yihui/knitr/knitr-manual.pdf(为您的块选项分配变量而不是固定值),我相信 Ramnath 可以向您展示一个很好的工作流程。顺便说一句,
fig.width=300px无效;它总是必须是数字(以英寸为单位):yihui.name/knitr/options -
谢谢 Ramnath 和@Yihui。我想出了一个相当笨拙的解决方案,让 knitr 以两种格式之一创建图像(比如说 pdf)。然后,在 Makefile 中,将所有图像转换为 png (ImageMagick),搜索 .pdf 出现并在 knitted 文件中将其替换为 .png(通过 sed),最后将其 pandoc 为 html。这是我想出的 Makefile 的相关部分: html:knit convert Rplots/*.pdf Rplots/*.png sed 's/.pdf/.png/g' $(DOCUMENTNAME).md > $(DOCUMENTNAME)- html.md pandoc -s --toc -c report.css $(DOCUMENTNAME)-html.md -o $(DOCUMENTNAME).html rm $(DOCUMENTNAME)-html.md
-
你知道使用最新版本的
knitr,你实际上可以使用设备向量吗?例如dev=c('png','pdf')这样一来就可以创建两种格式;Makefile应该是一个不错的方法,但可能不需要从 pdf 转换为 png;我还有另一种笨拙的方法,我正在等待 Ramnath 在github.com/yihui/knitr-book 中纠正,但你可以看到我如何处理不同的输出格式 -
我创建了一个
github存储库,其中包含一个source.md文件和一个makefile,可用于创建html和pdf输出。如果您知道pandoc和makefiles,那就不言自明了。如果时间允许,我会README.md:-)。这是存储库的链接github.com/ramnathv/knitr-pandoc