aL3*_*3xa 7 emacs latex r ess sweave
我正在使用GNU/Linux发行版(Arch,如果相关的话),Emacs v23.2.1,ESS v5.9和AucTeX v11.86.
我想设置AucTeX来识别.Rnw文件,这样我就可以在.Rnw文件上运行LaTeX并自动获取.dvi文件.我认为编辑.emacs文件非常容易管理,但我仍然没有牢牢掌握Elisp.C-c C-c
还有一个问题很烦人 - 不知怎的,LaTeX没有在prembule中识别\usepackage{Sweave},所以我实际上需要将Sweave.sty文件(在我的情况下位于/usr/share/R/texmf/Sweave.sty)复制到.Rnw文件所在的目录(而且我变得更加沮丧的事实是这是Windows平台上的常见错误!)
我的问题归结为两个问题:
\usepackage{Sweave}(Sweave.sty每次都不复制到"home"文件夹)[ 编辑:设法做到这一点; 在Dirk回答后看评论]这是两个不同的问题.
对于第一个,我的Debian R软件包确保存在从$RHOME/share/texmf/目录到TeX文件系统树的软链接,例如/usr/share/texmf/tex/latex/R.  
对于第二个问题:不知道.我倾向于通过我多年前制作的一个小shell脚本运行Sweave,即使我在Emacs中进行了所有编辑.
编辑,几个月后:使用ESS,而不是AucTeX.然后M-n s(即Alt-n后跟s)运行Sweave步骤并M-n P运行LaTeX编译,如果需要调用Bibtex.
简短而高效的谷歌搜索后,我发现这个链接,乍看之下,似乎一切都OK,但PDF文件被Sweaving后出现乱码......所以,我的另一种方式解决围绕这个问题:如果有疑问,请庆典!我从这里可用的Dirk的Sweave bash脚本中无耻地窃取了错误检查功能.基本上,这是一个解决方法: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集成的方法,请发布它,我会给它一个复选标记.
在此解决方法之前,我必须执行M-n sSweave,然后C-c C-c是AucTeX中用于LaTeX文件编译的默认键绑定.生成的文件是错误的,所以我不得不尝试使用bash.这对我有用,如果您有任何建议,请告诉我.
亲切的问候,
aL3xa
编辑:
 
已插入cd $FILEPATH
| 归档时间: | 
 | 
| 查看次数: | 2959 次 | 
| 最近记录: |