Более эффективный рабочий поток R / Sweave / TeXShop?
теперь у меня есть все, чтобы правильно работать на моей машине Mac OS X 10.6, чтобы я мог создавать приличные документы LaTeX с Sweave, которые включают фрагменты кода R, вывода и форматирования LaTeX вместе. К сожалению, я чувствую, что мой рабочий поток немного неуклюж и неэффективен:
используя TextWrangler, я пишу код LaTeX и R-код (окруженный >= выше и @ ниже R-кода) вместе в одном.Файл Rnw.
-
после сохранение изменений, я называю .Rnw файл из R с помощью команды Sweave
Sweave(file="/Users/mymachine/Documents/Assign4.Rnw", syntax="SweaveSyntaxNoweb")
в ответ R выводит следующее сообщение:
теперь вы можете запустить LaTeX на ' Assign4.tex'
Итак, я нахожу .Tex-файл (Assign4.tex) в каталоге R и скопируйте его в папку в моих документах
~/Documents/
где .Rnw файл сидит (чтобы держать все в одном месте). затем я открываю .файл tex (например Assign4.tex) в TeXShop и скомпилировать его там в формате pdf. Только в этот момент я вижу любые изменения, которые я сделал в документе, и вижу, выглядит ли он "хорошо".
есть ли способ, которым я могу скомпилировать все одним нажатием кнопки? в частности, было бы неплохо либо позвонить Sweave / R непосредственно из TextWrangler или TeXShop. Я подозреваю, что для этого можно закодировать скрипт в терминале, но у меня нет опыта работы с Терминал.
пожалуйста, дайте мне знать, если есть какие-либо другие вещи, которые я могу сделать, чтобы упростить или улучшить работу потока.
11 ответов
One-click Sweaving легко сделать в TeXShop с помощью Sweave.sh сценарий Грегора Горьянца. Получить его отhttp://cran.r-project.org/contrib/extra/scripts/Sweave.sh и положите его в свой .
затем добавьте следующие файлы в свой :
As Sweave.engine
:
#!/bin/bash
~/Library/TeXShop/bin/Sweave.sh -ld ""
As SweaveNoClean.engine
:
#!/bin/bash
~/Library/TeXShop/bin/Sweave.sh -nc -ld ""
вы должны установить разрешения на Sweave.sh и два файла двигателя для выполнения.
чтобы выполнить Sweave одним щелчком мыши, перезапустите TeXShop после добавления этих файлов, откройте документ Sweave (с расширением Rnw) и в раскрывающемся меню над окном документа измените его с LaTeX на Sweave или SweaveNoClean.
остерегайтесь: опция "Sweave" будет очищаться после себя, удаляя все дополнительные файлы, созданные LaTeX и Sweave. Если файл с именем myfile.Rnw, это будет включать файлы под названием myfile.R и myfile.текс. Итак, слово мудрым: убедитесь, что базовое имя ваш файл Rnw уникален, то ничего неожиданного не будет написано, а потом удалено.
параметр SweaveNoClean не очищается после себя. Это гарантирует, что вы не удалите ничего неожиданного; хотя он все еще может записать файл под названием myfile.Текс если вы Sweave в файл myfile.Rnw. Это также не удаляет созданные графики, если вы хотите, чтобы они были отделены от полного документа набора.
Я использую Makefile
следующей формы для Моих документов Sweave:
pdf: myfile.tex
R CMD texi2pdf myfile.tex
myfile.tex: myfile.Rnw
R CMD Sweave myfile.Rnw
затем я могу создать документ за один шаг в терминале Mac OS, выполнив команду make pdf
Я уверен, что есть способ приблизить это к вашей цели в один клик в Mac OS X, но это работает достаточно хорошо для меня.
в командной строке оболочки bash:
R CMD Sweave foo.Rnw && pdflatex foo.tex
запускает Sweave, и если это удастся, он переходит к pdflatex. Появляется pdf. Если у вас есть это в терминале bash, просто нажмите стрелку вверх, чтобы вернуть его и сделать это снова. И еще. И Еще.
Makefile решение также хорошо.
RStudio имеет кнопку, которая делает это за один раз. Одно предостережение заключается в том, что он работает в своем собственном сеансе, поэтому любые переменные рабочей области, которые вы, возможно, установили, игнорируются.
просто Примечание: Вы можете называть такие вещи, как pdflatex и т. д. непосредственно из R с помощью texi2dvi (в упаковке инструмента). Например:
Sweave(file="/Users/mymachine/Documents/Assign4.Rnw")
texi2pdf("Assign4.tex")
скомпилирует ваш файл Rnw в pdf. Таким образом, нет необходимости оставлять R для обработки шага tex->pdf.
Я использую их (сохранено как sweave.двигатель и sweavebibtex.engine) для пользовательских двигателей в texshop. Обычно я создаю фрагмент кода в R, а затем копирую блок в файл rnw, открытый в texshop. Мне бы понравилось решение, которое позволяет мне делать подсветку синтаксиса и коррекцию орфографии R и tex в одном документе (это не emacs).
#!/bin/bash
echo 'SWEAVE | PDFLATEX. Custom engine--Akasurak-16Nov2009'
export PATH=$PATH:/usr/texbin:/usr/local/bin
R CMD Sweave ""
pdflatex "${1%.*}"
и второй, для выполнения bibtex:
#!/bin/bash
date
before="$(date +%s)"
echo 'SWEAVE | PDFLATEX | BIBTEX | PDFLATEX | PDFLATEX. Custom engine--Akasurak-16Nov2009'
#Updated 20Jul2010 for auto including Sweave.sty
export PATH=$PATH:/usr/texbin:/usr/local/bin
R CMD Sweave ""
R CMD pdflatex "${1%.*}"
bibtex "${1%.*}.aux"
R CMD pdflatex "${1%.*}"
R CMD pdflatex "${1%.*}"
after="$(date +%s)"
elapsed_seconds="$(expr $after - $before)"
date
echo Elapsed time '(m:s)': $(date -r $elapsed_seconds +%M:%S)
не могу сказать, что это лучший способ делать вещи, но они делают работа.
Я использую Aquamacs или Eclipse для редактирования .Rnw
файл, Затем я использую следующую функцию оболочки для компиляции и просмотра:
sweaveCache () {
Rscript -e "library(cacheSweave); setCacheDir(getwd());
Sweave('.Rnw', driver = cacheSweaveDriver)" &&
pdflatex --shell-escape .tex &&
open .pdf
}
обратите внимание, что я использую cacheSweave
драйвер, который помогает избежать постоянного повторного выполнения разделов кода, которые занимают много времени.
кстати, я также пытаюсь переключиться на Бабель вместо того, чтобы ругаться; не уверен, что я буду использовать чаще, но есть определенно аспекты Вавилона, которые я как.
лучшее решение здесь: вы создаете новый *.движок для TeXShop для использования, затем наберите с помощью ярлыка или кнопки 1.
http://cameron.bracken.bz/sweave-for-texshop
Кэмерон также очень отзывчив, поэтому я настоятельно рекомендую его решение.
Если вы открыты для перехода на (платное) решение,текст. сообщ имеет плагин Sweave, который берет вас .Rnw в PDF в один шаг:Sweave, набор и просмотр. В сочетании с обезжиренным, который может быть настроен для перезагрузки PDF-файлов, это делает настройку файлов довольно легко.
У меня была такая же проблема (я использую Mac OSX), и я решил загрузить Eclipse Classic 3.6.2. а затем установлен плагин StatET. Это немного волосато, чтобы настроить, но как только вы делаете эту среду приятно, потому что вы можете одним щелчком мыши скомпилировать свой .Rwn Sweave документ с помощью pdflatex и установить параметры для вашего любимого зрителя так .pdf автоматически всплывает при компиляции, как в TeXShop. Вы можете сделать это и в TeXShop, но TeXShop не подходит для отладки .Файлы Rnw и не выделите R-код в поле .Файл списка rwn. В Eclipse вы можете настроить подсветку синтаксиса (не самую большую из конца Texclipse, но ОК), чтобы вы могли легко различать свой код R и LaTeX. Вы также можете запустить консоль R из Eclipse, и она имеет графический браузер объектов. В любом случае, я могу продолжать. Если вам нужны подробности о том, как установить все это, сообщите мне.
думаю, я опоздал на вечеринку, но я собрал веб-страницу, которая документирует мой рабочий процесс Sweave на основе Eclipse (с одним касанием sweave):
http://www.stanford.edu/~messing/ComputationalSocialScienceWorkflow.html