经过简短而有效的谷歌搜索,我找到了这个链接,乍一看,一切似乎都很好,但是在 Sweaving 之后 pdf 文件变得乱码......所以我用另一种方式解决了这个问题:当有疑问时,去bash!我从这里提供的 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 s
Sweave,然后C-c C-c
是 AucTeX 中用于 LaTeX 文件编译的默认键绑定。生成的文件是错误的,所以我不得不尝试使用 bash。它对我有用,如果您有任何建议,请告诉我。
亲切的问候,
aL3xa
编辑:
插入cd $FILEPATH