2012-02-09 30 views
3

我需要從tex文件生成pdf作爲臨時文件。但是我正面臨一個錯誤。我相信這是因爲功能tools::texi2dvi只是對系統命令的調用具有相同的名稱。由於Rtmp目錄只允許R創建文件,因此我無法在那裏創建PDF文件。在R內使用texi2dvi生成pdf作爲臨時文件

有我想要的,和錯誤,我得到:

> tf <- tempfile() 
> brew("template.brew", tf) 
> tools::texi2dvi(tf) 

Error in tools::texi2dvi(tf) : 
    Running 'texi2dvi' on '/tmp/Rtmp9n4JFU/filea5811e6a32a' failed. 
Messages: 
    /usr/bin/texi2dvi: etex exited with bad status, quitting. 

我相信一個解決方法是使用tempfile()來創建一個新的臨時文件,並要求tools::texi2dvi寫在它的輸出。但是我不知道系統是否被允許編輯文件。而且,我無法找到設置tools::texi2dvi輸出文件的方法。

有誰知道解決方法?

謝謝!

+2

嘗試使用'setwd()'在調用'tex2dvi'之前更改工作目錄。 – Andrie 2012-02-09 12:22:08

回答

2

TeX顯然被缺乏文件擴展名困惑。 以下應該工作。

tf <- tempfile(fileext=".tex") 
cat(
    "\\documentclass{minimal}\\begin{document}test\\end{document}", 
    file=tf 
) 
tools::texi2dvi(tf) 
+0

你是對的!現在我可以生成pdf。但是,pdf文件生成到我的工作目錄(主目錄)中,而不是與tex文件(臨時工作目錄)相同的文件夾中。有沒有辦法設置texi2dvi輸出文件? – 2012-02-09 12:39:34

+0

這顯然是texi2dvi的縮進行爲。您可以在調用texi2dvi之前更改工作目錄,如上面Andrie的註釋中所建議的,然後將其更改回原來的內容:'oldwd < - getwd(); setwd(TEMPDIR()); ...; setwd(oldwd) ' – 2012-02-09 12:51:55