knitr:如何根据输出类型设置包选项

knitr:如何根据输出类型设置包选项,r,knitr,R,Knitr,我开始使用packageknitr作为工作流中的一个组件,从Markdown输入文件生成HTML和PDF报告。 我想设置一些专门针对输出文件格式定制的knitr包选项。 目前我手动来回切换以下两行: <!--roptions dev='png', fig.width=300px, fig.height=200px" --> <!--roptions dev='pdf', fig.width=5, fig.height=4 --> 是否可以根据输出类型自动让knitr

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

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

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


谢谢。

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

$(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

您可以使用
pandoc
knitr
从同一
markdown
文件生成html和pdf。我将很快发布一个示例。这也是我最近开始做的事情;您可以使用手册中的第3.5节:(为区块选项指定变量而不是固定值),我相信Ramnath可以向您展示一个好的工作流。顺便说一句,
fig.width=300px
无效;它必须是数字(单位为英寸):谢谢Ramnath和@Yihui。我想出了一个相当笨拙的解决方案,让knitr以两种格式之一(比如pdf)创建图像。然后,在Makefile中,将所有图像转换为png(ImageMagick),搜索.pdf引用并在编织文件中替换为.png(通过sed),最后将其转换为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
,你真的可以使用设备向量吗?e、 g.
dev=c('png','pdf')
因此一次创建两种格式
Makefile
应该是一个很好的方法,但是从pdf到png的转换可能不是必需的;我还有另一个笨拙的方法,我正在等待Ramnath纠正,但是你可以看到我是如何处理不同的输出格式的。我创建了一个
github
存储库,它有一个
source.md
文件和一个
makefile
,可以用来创建
html
pdf
输出。如果您知道
pandoc
makefiles
,这是不言自明的。如果时间允许,我将创建一个
README.md
:)。这是指向存储库的链接
-e "opts_chunk[['set']](fig.width = 5)"\
-e "opts_chunk[['set']](fig.height = 5)"\