![](/img/trans.png)
[英]ESS & Knitr/Sweave: How to source the Rnw file into an interactive session?
[英]ESS/AucTeX/Sweave integration
我正在使用GNU / Linux發行版(Arch,如果相關的話),Emacs v23.2.1,ESS v5.9和AucTeX v11.86。
我想設置AucTeX以識別.Rnw文件,因此我可以使用Cc Cc
在.Rnw文件上運行LaTeX並自動獲取.dvi文件。 我認為編輯.emacs文件非常易於管理,但我仍然沒有牢牢掌握Elisp 。
還有一個問題很煩人 - 不知何故, LaTeX在Sweave.sty
沒有識別\\usepackage{Sweave}
,所以我實際上需要復制Sweave.sty
文件(在我的案例中位於/usr/share/R/texmf/Sweave.sty
)到.Rnw文件所在的目錄(由於這是Windows平台上的常見錯誤,我變得更加沮喪!)
我的問題歸結為兩個問題:
\\usepackage{Sweave}
( Sweave.sty
將Sweave.sty
復制到“home”文件夾)[ 編輯:設法做到這一點; 在Dirk回答后看評論] 這是兩個不同的問題。
對於第一個,我的Debian R軟件包確保從$RHOME/share/texmf/
目錄到TeX文件系統樹的軟鏈接,例如/usr/share/texmf/tex/latex/R
對於第二個問題:不知道。 我傾向於通過我多年前制作的一個小shell腳本運行Sweave,即使我在Emacs中進行了所有編輯。
編輯,幾個月后:使用ESS,而不是AucTeX。 然后Mn s
(即Alt-n后跟s)運行Sweave步驟, Mn P
運行LaTeX編譯,如果需要調用Bibtex。
簡短而高效的谷歌搜索后,我發現這個鏈接 ,乍看之下,似乎一切都OK,但PDF文件被Sweaving后出現亂碼......所以,我的另一種方式解決圍繞這個問題: 有疑問時,去舞會 ! 我從這里可用的Dirk的Sweave bash腳本中無恥地竊取了錯誤檢查功能。 基本上,這是一個解決方法: R CMD Sweave
在.Rnw文件上執行,因此latex進來了,之后是pdflatex ...
我將發布一個bash腳本,為我完成這項工作。 我必須聲明我不是一個高級的bash程序員,而且我甚至不是職業的程序員,所以很有可能這個腳本可以正確優化/編寫。 開始:
#!/bin/bash
FILEBASE=${1%.*}
FILEXT=${1##*.}
FILEPATH=${1%/*}
TEXFILE=$FILEBASE.tex
PDFFILE=$FILEBASE.pdf
# errorexit
function errorexit () {
echo "Error: $1"
exit 1
}
# check if file exists
if [ ! -f $1 ]; then
errorexit "File $1 not found!"
else
# check for filename length
if [ ${#1} -lt 1 ]; then
errorexit "Need to specify argument file!"
else
# if filelength OK, check extension
if [ $FILEXT != "Rnw" ]; then
errorexit "You must pass Sweave (.Rnw) file!"
# finally, run Sweave
else
cd $FILEPATH && R CMD Sweave $1
# latex $TEXFILE
pdflatex $TEXFILE
# xdg-open $PDFFILE
fi
fi
fi
然后在任何echo $PATH
文件夾中保存/復制/移動此腳本(我將其保存在/usr/bin/
),並確保它名為sweave ,或選擇您喜歡的任何名稱,然后將這些行放在.emacs中文件:
(global-set-key (kbd "C-c s")
(lambda ()
(interactive)
(shell-command (concat "sweave " buffer-file-name))))
當然,您可以更改鍵綁定以滿足您的需求,並確保使用/usr/bin/
腳本名稱更改sweave 。
請記住,這不是一個答案,而是一個解決方法。 如果你找到了處理AucTeX / ESS / Sweave集成的方法,請發布它,我會給它一個復選標記。
在此解決方法之前,我不得不將Mn s
用於Sweave,然后是Cc Cc
,它是AucTeX中用於LaTeX文件編譯的默認鍵綁定。 生成的文件是錯誤的,所以我不得不嘗試使用bash。 這對我有用,如果您有任何建議,請告訴我。
親切的問候,
aL3xa
編輯:
插入了cd $FILEPATH
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.