Более эффективный рабочий процесс R / Sweave / TeXShop? - PullRequest
19 голосов
/ 07 февраля 2011

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

Пожалуйста, дайте мне знать, если есть что-то еще, что я могу сделать, чтобы упростить или улучшить рабочий процесс.

Ответы [ 11 ]

12 голосов
/ 07 февраля 2011

Я использую Makefile следующей формы для моих документов Sweave:

pdf: myfile.tex
    R CMD texi2pdf myfile.tex

myfile.tex: myfile.Rnw
    R CMD Sweave myfile.Rnw

Затем я могу создать документ за один шаг в Mac OS Terminal, выполнив команду make pdf

Я уверен, что есть способ приблизить это к цели в один клик в Mac OS X, но для меня это достаточно хорошо работает.

9 голосов
/ 07 февраля 2011

Sweaving одним щелчком легко выполнить в TeXShop, используя скрипт Sweave.sh Грегора Горджанка. Получите его из http://cran.r -project.org / contrib / extra / scripts / Sweave.sh и поместите в папку ~/Library/TeXShop/bin/.

Затем добавьте следующие файлы в папку ~/Library/TeXShop/engines/:

Как Sweave.engine:

#!/bin/bash
~/Library/TeXShop/bin/Sweave.sh  -ld "$1"

Как SweaveNoClean.engine:

#!/bin/bash
~/Library/TeXShop/bin/Sweave.sh  -nc -ld "$1"

Вам нужно будет установить разрешения для Sweave.sh и двух файлов движка, чтобы разрешить выполнение.

Чтобы выполнить Sweave одним щелчком, перезапустите TeXShop после добавления этих файлов, откройте документ Sweave (с расширением Rnw) и в раскрывающемся меню над окном документа измените его с LaTeX на Sweave или SweaveNoClean.

BEWARE: опция «Sweave» очистит себя, удалив все лишние файлы, созданные LaTeX и Sweave. Если ваш файл называется myfile.Rnw, он будет включать файлы с именами myfile.R и myfile.tex. Итак, слово мудрому: убедитесь, что базовое имя вашего файла Rnw уникально; тогда ничего неожиданного не будет записано и затем удалено.

Опция SweaveNoClean не очищает после себя. Это гарантирует, что вы не удалите ничего неожиданного; хотя он все еще может записывать поверх файла с именем myfile.tex, если вы Sweave myfile.Rnw. Это также не удаляет созданную графику, если вы хотите, чтобы она была отделена от вашего полностью набранного документа.

8 голосов
/ 06 апреля 2011

RStudio имеет кнопку, которая делает это за один раз. Одно предостережение заключается в том, что он запускается в своем собственном сеансе, поэтому любые переменные рабочей области, которые вы могли установить, игнорируются.

the compile button

8 голосов
/ 07 февраля 2011

В командной строке оболочки bash:

R CMD Sweave foo.Rnw && pdflatex foo.tex

Запускает Sweave, и если это удается, он продолжает выполнять pdflatex. Out выскакивает PDF. Если вы получили это в терминале bash, просто нажмите стрелку вверх, чтобы вернуть его, и сделайте это снова. И опять. И снова.

Makefile решение тоже хорошо.

7 голосов
/ 19 ноября 2011

Просто примечание: вы можете вызывать такие вещи, как pdflatex и т. Д. Напрямую из R, используя texi2dvi (в пакете инструментов).Например:

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

texi2pdf("Assign4.tex")

скомпилирует ваш файл Rnw в pdf.Таким образом, не нужно оставлять R для обработки шага tex-> pdf.

2 голосов
/ 05 апреля 2011

Лучшее решение здесь: вы создаете новый * .engine для TeXShop, а затем набираете его с помощью ярлыка или кнопки 1.

http://cameron.bracken.bz/sweave-for-texshop

Кэмерон также очень отзывчив, поэтому я очень рекомендую его решение.

2 голосов
/ 16 марта 2011

Я использую Aquamacs или Eclipse для редактирования файла .Rnw, затем я использую следующую функцию оболочки для компиляции и просмотра:

sweaveCache () {
  Rscript -e "library(cacheSweave); setCacheDir(getwd()); 
    Sweave('$1.Rnw', driver = cacheSweaveDriver)" && 
  pdflatex --shell-escape $1.tex && 
  open $1.pdf
}

Обратите внимание, что я использую *Драйвер 1005 *, который помогает избежать повторного выполнения фрагментов кода, выполнение которых занимает много времени.

Кстати, я также пытаюсь переключиться на Babel вместо Sweave;не уверен, что я буду использовать чаще, но есть определенно аспекты Бабеля, которые мне нравятся.

2 голосов
/ 11 марта 2011

Я использую их (сохраненные как sweave.engine и 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 "$1"
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 "$1"
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)

Не могу сказать, что это лучший способ сделать что-то, но они работают.

1 голос
/ 20 марта 2011

Думаю, я опоздал на вечеринку по этому поводу, но я собрал веб-страницу, которая документирует мой рабочий процесс Sweave на основе Eclipse (с разверткой одним касанием):

http://www.stanford.edu/~messing/ComputationalSocialScienceWorkflow.html

1 голос
/ 12 марта 2011

У меня была такая же проблема (я использую Mac OSX), и я решил загрузить Eclipse Classic 3.6.2.а затем установил плагин StatET.Это немного сложно, но как только вы сделаете это, это хорошо, потому что вы можете одним щелчком мыши скомпилировать ваш документ.в TeXShop.Вы можете сделать это и в TeXShop, но TeXShop паршиво отлаживает файлы .Rnw и не выделяет R-код в файле .Rwn.В Eclipse вы можете настроить подсветку синтаксиса (не самую лучшую из конца Texclipse, но хорошо), чтобы вы могли легко различать код R и LaTeX.Вы также можете запустить консоль R из Eclipse, и она имеет браузер графических объектов.Во всяком случае, я мог бы продолжить.Если вам нужны подробности о том, как все это установить, напишите мне.

...