我使用的是GNU/Linux发行版(Arch,如果相关的话)、Emacsv23.2.1、ESSv5.9和AucTeX v11.86。
我想设置AucTeX来识别.Rnw文件,这样我就可以使用C-c C-c在.Rnw文件上运行LaTeX,并自动获得.dvi文件。我认为通过编辑.emacs文件是很容易管理的,但我仍然没有对Elisp有一个确切的掌握。
还有一个问题很烦人--不知怎么的,LaTeX没有在序言中识别\usepackage{Sweave},所以我实际上需要将Sweave.sty文件(在我的例子中位于/usr/share/R/texmf/Sweave.sty中)复制到.Rnw文件所在的目录中(这是Windows平台上常见的bug,这让我越来越沮丧!)
我的问题归结为两个问题:
\usepackage{Sweave} (每次不将Sweave.sty复制到"home“文件夹)编辑:成功地做到了这一点;参见Dirk回答后的评论发布于 2010-05-31 00:04:32
这是两个不同的问题。
对于第一个,我的Debian包确保有一个从$RHOME/share/texmf/目录到TeX文件系统树的软链接,例如/usr/share/texmf/tex/latex/R。
关于第二个问题:不知道。我倾向于通过我几年前制作的一个小shell脚本运行Sweave,尽管我在Emacs中做了所有的编辑工作。
编辑,几个月后:使用ESS,而不是AucTeX。然后M-n s (即Alt后面跟着s)运行Sweave步骤,M-n P运行LaTeX编译,并在需要时调用Bibtex。
发布于 2010-05-31 22:03:17
在简单高效的谷歌搜索之后,我找到了此链接,乍一看,一切似乎都还好,但是pdf文件在Sweaving之后被混淆了。因此,我以另一种方式解决了这个问题:当有疑问时,请转到bash!我无耻地从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))))当然,您可以更改键绑定以满足您的需要,并确保将sweave的脚本名称放在/usr/bin/中。
记住,这不是的一个答案,而是一个解决办法。如果您已经找到了处理AucTeX/ESS/Sweave集成的方法,那么发布它,我会给它一个复选标记。
在这个解决方法之前,我必须对Sweave执行M-n s,然后是C-c C-c,这是AucTeX中用于LaTeX文件编译的默认键绑定。生成的文件是错误的,所以我不得不尝试使用bash。这对我有用,如果你有什么建议,请告诉我。
致以亲切的问候,
aL3xa
编辑:
插入cd $FILEPATH
https://stackoverflow.com/questions/2940756
复制相似问题