r语言 - Make Sweave 或 knitr 将图形后缀放在 'includegraphics{}' 中



我只是遇到了一个(奇怪的)问题,即当向爱思唯尔期刊提交(pdf)LaTeX手稿时,需要完成图表的文件名,以便通过他们的pdf构建和检查系统找到,即:

includegraphics{picture.pdf}

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

编辑:

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

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

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

(这也是为什么我真的很欣赏最近在Sweave中引入的print=TRUE

您可以在

knitr中稍微修改一下plot钩子以添加文件扩展名:

<<>>=
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 文件扩展名。Rnw 是一个完整的示例。要了解幕后发生了什么,请参阅 knitr 中默认 LaTeX 钩子的源代码。

暴力破解解决方案是在 R 代码段中显式创建文件。将图形等的选项设置为 false,但评估代码以创建文件,然后让 latex 使用您显示的非常includegraphics{}调用它们。

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

最新更新