10

我只是遇到了一个(奇怪的)问题,当向一些 Elsevier 期刊提交(pdf)LaTeX 手稿时,需要完整的数字文件名才能通过他们的 pdf 构建和检查系统找到,即:

\includegraphics{picture.pdf}

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

编辑:

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

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

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

(这也是我非常欣赏最近print=TRUE在 Sweave 中引入的原因)

4

2 回答 2

3

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

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

于 2012-08-11T14:48:16.010 回答
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.

于 2012-08-12T04:35:45.760 回答