Подтвердить что ты не робот

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

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

  • Используя TextWrangler, я пишу код LaTeX и R-код (окруженный < < lt; → = выше и @ниже фрагмента кода 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. Я подозреваю, что возможно сделать код script в терминале для этого, но у меня нет опыта работы с терминалом.

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

4b9b3361

Ответ 1

One-click Sweaving легко сделать в TeXShop, используя Sweave.sh script от Gregor Gorjanc. Получите его из 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. Это также не удаляет любую графику, которая была создана, если вы хотите, чтобы они были отделены от вашего полного набора документов.

Ответ 2

Я использую 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, но это работает для меня достаточно хорошо.

Ответ 3

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

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

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

Решение Makefile также хорошо.

Ответ 4

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

the compile button

Ответ 5

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

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

texi2pdf("Assign4.tex")

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

Ответ 6

Я использую эти (сохраненные как 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%.*}"

а второй - для выполнения бибтекса:

#!/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)

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

Ответ 7

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

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

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

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

Ответ 8

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

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

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

Ответ 9

Если вы открыты для перехода на (оплаченное) решение, TextMate имеет плагин Sweave, который переносит вас из .Rnw в PDF в одном step: Sweave, typeset и view. В сочетании с Skim, который можно настроить для перезагрузки PDF файлов, он упрощает настройку файлов.

Ответ 10

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

Ответ 11

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

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