Более эффективный рабочий поток R / Sweave / TeXShop?

теперь у меня есть все, чтобы правильно работать на моей машине Mac OS X 10.6, чтобы я мог создавать приличные документы LaTeX с Sweave, которые включают фрагменты кода R, вывода и форматирования LaTeX вместе. К сожалению, я чувствую, что мой рабочий поток немного неуклюж и неэффективен:

  1. используя TextWrangler, я пишу код LaTeX и R-код (окруженный >= выше и @ ниже R-кода) вместе в одном.Файл Rnw.

  2. после сохранение изменений, я называю .Rnw файл из R с помощью команды Sweave

    Sweave(file="/Users/mymachine/Documents/Assign4.Rnw", 
            syntax="SweaveSyntaxNoweb")
    

    в ответ R выводит следующее сообщение:

    теперь вы можете запустить LaTeX на ' Assign4.tex'

    Итак, я нахожу .Tex-файл (Assign4.tex) в каталоге R и скопируйте его в папку в моих документах ~/Documents/ где .Rnw файл сидит (чтобы держать все в одном месте).

  3. затем я открываю .файл 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 имеет кнопку, которая делает это за один раз. Одно предостережение заключается в том, что он работает в своем собственном сеансе, поэтому любые переменные рабочей области, которые вы, возможно, установили, игнорируются.

the compile button


просто Примечание: Вы можете называть такие вещи, как 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