После недолгого и эффективного поиска в Google, я нашел эту ссылку , и на первый взгляд все кажется в порядке, но pdf-файл искажается после Sweaving ... Поэтому я решил эту проблему по-другому: если сомневаешься, иди bash ! Я бесстыдно похитил функцию проверки ошибок из сценария Дирка Sweash 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, опубликуйте его, и я поставлю галочку.
До этого обхода я должен был сделать M-n s
для Sweave, а затем C-c C-c
, который является привязкой по умолчанию в AucTeX для компиляции файла LaTeX. Произведенный файл ошибочен, поэтому мне пришлось попробовать его с bash. Это работает для меня, если у вас есть какие-либо предложения, пожалуйста, дайте мне знать.
С уважением,
aL3xa
EDIT:
Вставлено cd $FILEPATH