2012-08-11 19 views
10

中製作Sweave或knitr圖形後綴我只是遇到了一個(好奇的)問題,即在向某些Elsevier日誌提交(pdf)LaTeX手稿時,需要完成數字的文件名才能完成在` includegraphics {}

\includegraphics{picture.pdf} 

有沒有簡單又方便的方式告訴Sweave或knitr做到這一點:通過他們的PDF建設和檢查SYSTE,即發現了什麼?

編輯:

  • 我熟悉sweave的include=FALSE選項
  • 我也覺得完全有能力修補utils:::RweaveLatexRuncode

然而,此刻我希望有更多的東西方便,優雅。

這也是關於發佈.Rnw文件作爲補充材料或短片。從教學角度來看,我不喜歡這些調整,使得我希望他們閱讀的新用戶的源代碼變得更加複雜。

(這也是爲什麼我很欣賞最近推出的print=TRUE在Sweave)

+0

你的意思是'print = TRUE'或'split = TRUE'? – 2012-08-12 04:19:14

+1

@Yihui:我的意思是'print = TRUE',因爲那麼Vignette中的網格(lattice,ggplot2)圖形命令看起來像你輸入的那樣。只留下陷阱「爲什麼它不能在for循環中工作」..但人們並不想知道爲什麼這個小插圖有'print(xyplot(...))'。 – cbeleites 2012-08-12 18:10:40

+1

我明白了。你可能已經知道'knitr'不需要'print(xyplot(...))'。 – 2012-08-12 18:32:10

回答

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

+0

這對我來說將是一個重要的鉤子......直到現在,我仍然與普通的'Sweave'呆在一起,我可以與他人分享'編織'的東西,我不會分享.Rnw),但我想我會盡快完全切換到knitr :-)。非常感謝Yihui包! – cbeleites 2012-08-12 18:13:16

3

蠻力解決方案是自己在R片斷明確創建的文件。將圖形等選項設置爲false,但需要對代碼進行評估,以便創建文件,然後讓latex使用您要顯示的\includegraphics{}調用它們。

我對簡單緩存使用了類似的方案:如果目標文件存在,則跳過創建代碼。

+0

謝謝德克,我詳細闡述了爲什麼我想找到一個「更好的」解決方案。 '<< include = FALSE >> ='就是我所做的...... – cbeleites 2012-08-11 15:54:56

相關問題