Make Sweave或knitr将图形后缀放在`\ includegraphics {}`中

时间:2012-08-11 14:04:23

标签: r latex sweave knitr

我遇到(好奇)问题,在向一些Elsevier期刊提交(pdf)LaTeX手稿时,需要完成数字的文件名,以便通过他们的pdf构建和检查系统找到,即:

\includegraphics{picture.pdf}

有没有简单方便的方法告诉Sweave或knitr这样做?

编辑:

  • 我熟悉sweave的include=FALSE选项
  • 我也觉得能够修补utils:::RweaveLatexRuncode

但是,目前我希望有更方便和优雅的东西。

它也是关于发布.Rnw文件作为补充材料或小插曲。从教学的角度来看,我不喜欢这些调整,这些调整使源代码对于我希望他们阅读它的新用户来说更加复杂。

(这也是我真正感谢最近在Sweave中引入的print=TRUE

的原因

2 个答案:

答案 0 :(得分:3)

强力解决方案是在R片段中自己显式创建文件。将图形等选项设置为false,但是评估代码以便创建文件,然后使用您显示的\includegraphics{}调用来调用它们。

我使用类似的方案进行简单缓存:如果目标文件存在,请跳过代码创建。

答案 1 :(得分:3)

您可以在plot中稍微修改knitr挂钩以添加文件扩展名:

<<>>=
knit_hooks$set(plot = function(x, options) {
  x = paste(x, collapse = '.') # x is file.ext now instead of c(file, ext)
  paste0('\\end{kframe}', hook_plot_tex(x, options), '\\begin{kframe}')
})
@

有关完整示例,请参阅033-file-extension.Rnw。要了解幕后发生的情况,请参阅knitr中的source code of the default LaTeX hooks