【问题标题】:knitr: how to set package options depending on output typeknitr:如何根据输出类型设置包选项
【发布时间】:2012-04-04 20:35:43
【问题描述】:

我开始使用包knitr 作为工作流中的一个组件,以从Markdown 输入文件生成HTMLPDF 报告。
我想设置一些专门针对输出文件格式定制的knitr 包选项。 目前我手动来回切换以下两行:

<!--roptions dev='png', fig.width=300px, fig.height=200px" -->
<!--roptions dev='pdf', fig.width=5, fig.height=4 -->

是否可以让 knitr 根据输出类型自动知道使用哪组选项?

谢谢。

【问题讨论】:

  • 您可以使用pandocknitr 从同一个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,可用于创建htmlpdf 输出。如果您知道pandocmakefiles,那就不言自明了。如果时间允许,我会README.md :-)。这是存储库的链接github.com/ramnathv/knitr-pandoc

标签: r knitr


【解决方案1】:

@Ramnath 评论建议 solution 通过在 Makefile 中将特定选项设置为 knitr 来从唯一的 Markdown 文件中生成 pdfhtml 输出:

$(PDF): $(SRC) Makefile
Rscript \
  -e "library(knitr)" \
  -e "opts_chunk[['set']](dev = 'pdf')" \
  -e "pat_gfm()" \
  -e "knit('$<', 'temp.md')"
$(PANDOC) temp.md -o $@
rm temp.md

这里的图片格式设置为pdf。请注意,pat_gfm() 功能仅在 5 天前在 GitHub 的 master 分支中添加,并且尚未作为稳定版本发布。

详细说明一下以完全回答问题,可以通过在 Makefile 中添加几行来轻松设置图像尺寸:

-e "opts_chunk[['set']](fig.width = 5)"\
-e "opts_chunk[['set']](fig.height = 5)"\

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-01-24
    • 1970-01-01
    • 1970-01-01
    • 2013-04-09
    • 2017-02-28
    • 1970-01-01
    • 2020-10-23
    相关资源
    最近更新 更多