[英]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.