2011-02-07 71 views
19

我現在已經在我的Mac OS X 10.6機器上正常工作,以便使用Sweave創建出色的LaTeX文檔,其中包括R代碼片段,輸出和LaTeX格式。不幸的是,我覺得我的工作流程是有點笨重,效率低下:更高效的R/Sweave/TeXShop工作流程?

  1. 使用的TextWrangler,我寫(以下R代碼裏面塊由< <包圍>> =上面和@)膠乳碼和R代碼放在一起在一個.Rnw文件中。

  2. 保存更改後,我用Sweave命令

    Sweave(file="/Users/mymachine/Documents/Assign4.Rnw", 
         syntax="SweaveSyntaxNoweb") 
    

    在響應調用來自R的.Rnw文件,R輸出以下消息:

    現在您可以在「運行的LaTeX Assign4.tex」

    所以後來我發現在R目錄.tex文件(Assign4.tex)和它複製到文件夾中的我的文檔~/Documents/ .Rnw文件所在的位置(將所有內容保存在一個位置)。

  3. 然後我在TeXShop中打開.tex文件(例如Assign4.tex)並將其編譯成pdf格式。只有在這個時候,我才能看到我對文檔所做的任何更改,看看它是否「看起來不錯」。

有沒有一種方法可以用一個按鈕單擊來編譯所有東西?具體來說,如果直接從TextWrangler或TeXShop調用Sweave/R將會很好。我懷疑可能在終端中編寫腳本來完成它,但我對終端沒有經驗。

請讓我知道是否有任何其他的事情我可以做,以簡化或改進自己的工作流程。

回答

9

使用Gregor Gorjanc的Sweave.sh腳本,在TeXShop中一鍵式刷新很容易。 從http://cran.r-project.org/contrib/extra/scripts/Sweave.sh得到它,並將其放入您的~/Library/TeXShop/bin/文件夾中。

然後將以下文件添加到您的~/Library/TeXShop/engines/文件夾:

由於Sweave.engine

#!/bin/bash 
~/Library/TeXShop/bin/Sweave.sh -ld "$1" 

由於SweaveNoClean.engine

#!/bin/bash 
~/Library/TeXShop/bin/Sweave.sh -nc -ld "$1" 

你必須設置Sweave.sh權限和兩個引擎文件允許執行。

要添加這些文件後重新啓動TeXShop,打開Sweave文檔(使用Rnw擴展名),並在文檔窗口上方的下拉菜單中將LaTeX更改爲Sweave或SweaveNoClean。

請注意:「Sweave」選項將自行清理,刪除LaTeX和Sweave創建的所有額外文件。如果你的文件被稱爲myfile.Rnw,這將包括名爲myfile.R和myfile.tex的文件。所以對智者來說一句話:確保你的Rnw文件的基名是唯一的;那麼沒有任何意外的事情會被寫下來然後被刪除。

SweaveNoClean選項不會自行清理。這可以確保你不會刪除任何意想不到的事情;儘管它仍然可以寫入一個名爲myfile.tex的文件,前提是你要掃描myfile.Rnw。這也不會刪除已創建的任何圖形,以防您希望將它們與完整的排版文檔分開。

12

我用以下形式的Makefile我Sweave文件:

pdf: myfile.tex 
    R CMD texi2pdf myfile.tex 

myfile.tex: myfile.Rnw 
    R CMD Sweave myfile.Rnw 

然後我可以在Mac OS的終端一步構建文檔通過運行命令make pdf

我肯定有一種方法可以讓它更接近Mac OS X中的一鍵式目標,但這對我來說已經足夠了。

+0

我也爲sweave使用makefile;我發佈了Sweave編譯makefiles的幾個示例:請參閱本文底部的鏈接:http://jeromyanglim.blogspot.com/2010/12/r-workflow-slides-from-talk-at.html – 2011-02-08 05:41:55

8

在bash shell中的命令行:

R CMD Sweave foo.Rnw && pdflatex foo.tex 

運行Sweave,並且如果成功的話繼續做pdflatex。 Out彈出pdf。如果你在bash Terminal裏有這個,那麼只需點擊箭頭把它取回來,然後重新執行。然後再次。然後再次。

Makefile的解決方案也不錯。

+3

我使用這也過了一段時間(也可以刪除文件擴展名)。基本上,它只是在鏈中添加bibtex,並在完成時打開pdf:R CMD Sweave foo && R CMD pdflatex foo && R CMD bibtex foo && foo.pdf – 2011-02-07 17:48:24

+0

是不是可以說R CMD Sweave --pdf foo。 Rnw直接獲得pdf? – 2011-11-19 07:36:27

1

如果您願意切換到(支付)解決方案,TextMate有一個Sweave插件,可以將您從.Rnw一步轉換爲PDF:Sweave,排版和查看。結合Skim,它可以配置爲重新加載PDF,它使調整文件變得非常簡單。

2

我使用這些(保存爲sweave.engine和sweavebibtex.engine)texshop中的自定義引擎。我通常在R中編寫代碼塊,然後將該塊複製到我在texshop中打開的rnw文件中。我很喜歡這個解決方案,它可以讓我在同一文檔(即emacs)中進行語法突出顯示和拼寫糾正R和tex。

#!/bin/bash 
echo 'SWEAVE | PDFLATEX. Custom engine--Akasurak-16Nov2009' 
export PATH=$PATH:/usr/texbin:/usr/local/bin 
R CMD Sweave "$1" 
pdflatex "${1%.*}" 

;第二,做中文提供,以及:

#!/bin/bash 
date 
before="$(date +%s)" 
echo 'SWEAVE | PDFLATEX | BIBTEX | PDFLATEX | PDFLATEX. Custom engine--Akasurak-16Nov2009' 
#Updated 20Jul2010 for auto including Sweave.sty 


export PATH=$PATH:/usr/texbin:/usr/local/bin 

R CMD Sweave "$1" 
R CMD pdflatex "${1%.*}" 
bibtex "${1%.*}.aux" 
R CMD pdflatex "${1%.*}" 
R CMD pdflatex "${1%.*}" 


after="$(date +%s)" 
elapsed_seconds="$(expr $after - $before)" 
date 
echo Elapsed time '(m:s)': $(date -r $elapsed_seconds +%M:%S) 

不能說他們正在做的事情的最好方法,但他們做的工作。

1

我有同樣的問題(我使用Mac OSX),我選擇下載Eclipse Classic 3.6.2。然後安裝StatET插件。設置起來有點多毛,但是一旦你做這個環境很好,因爲你可以使用pdflatex一鍵編譯你的.Rwn Sweave文檔,併爲你最喜歡的瀏覽器設置選項,這樣當你編譯時,.pdf會自動彈出在TeXShop。你也可以在TeXShop中做到這一點,但是TeXShop對於調試很不方便.Rnw文件並且它不會突出顯示.Rwn文件中的R代碼。在Eclipse中,您可以自定義語法突出顯示(不是Texclipse末端最好的,但確定),以便您可以輕鬆區分R和LaTeX代碼。您也可以從Eclipse中啓動R控制檯,並且它有一個圖形對象瀏覽器。無論如何,我可以繼續。如果您想了解如何安裝它的詳細信息,請通知我。

2

我請使用Aquamacs或Eclipse的做.Rnw文件的編輯,然後我用下面的shell函數編譯&觀點是:

sweaveCache() { 
    Rscript -e "library(cacheSweave); setCacheDir(getwd()); 
    Sweave('$1.Rnw', driver = cacheSweaveDriver)" && 
    pdflatex --shell-escape $1.tex && 
    open $1.pdf 
} 

請注意,我用的cacheSweave驅動程序,有助於避免不斷重新執行需要很長時間才能運行的代碼段。

順便說一句,我也試圖切換到Babel而不是Sweave;不知道我最終會使用哪一種,但是我確實喜歡Babel的一些方面。

2

最好的解決方法是在這裏:爲TeXShop創建一個新的* .engine,然後使用快捷鍵或1按鈕進行排版。

http://cameron.bracken.bz/sweave-for-texshop

卡梅倫也非常敏感,所以我極力推薦他的解決方案。

8

RStudio有一個按鈕,可以一氣呵成。有一點需要注意的是,它在自己的會話中運行,因此您可能已設置的任何工作空間變量都將被忽略。

the compile button

7

只是注意:您可以居然直接來自R使用TEXI2DVI(在工具包)調用之類的東西pdflatex等。例如:

Sweave(file="/Users/mymachine/Documents/Assign4.Rnw") 

texi2pdf("Assign4.tex") 

會將您的Rnw文件編譯爲pdf。因此,不需要離開R來處理tex-> pdf步驟。