經過簡短而有效的谷歌搜索,我發現this link,乍一看,一切似乎都行,但pdf文件在清理後出現亂碼......所以我用另一種方式解決了這個問題:bash!我無恥地從Dirk的Sweave bash腳本here竊取了錯誤檢查功能。基本上,這是一個解決辦法:R CMD Sweave
大幹快上.Rnw文件,因此乳膠進來,之後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))))
當然,你可以改變鍵綁定,以適合您的需求,並且一定要改變sweave與腳本名稱放在/usr/bin/
。
不要忘記,這是不是的答案,而是一種解決方法。如果您已經找到了處理AucTeX/ESS/Sweave集成的方法,請發佈它,然後我會給它一個複選標記。
在此解決方法之前,我必須對Sweave執行M-n s
,然後執行C-c C-c
這是AucTeX中用於LaTeX文件編譯的默認keybind。生成的文件是錯誤的,所以我不得不用bash嘗試一下。它適用於我,如果您有任何建議,請讓我知道。
親切的問候,
aL3xa
編輯:
插入cd $FILEPATH
感謝您的第一個信息。我設法通過將'Sweave.sty'文件放在'/ usr/share/texmf-dist/tex/latex/Sweave'中,從而更新'texconfig'數據庫。因此,我留下了#2。順便說一句,我看到你的腳本是這樣的,我正在考慮綁定一個bash命令來運行.Rnw作爲一個解決方法'直到我找出如何做AucTeX部分。 – aL3xa 2010-05-31 00:46:35