2011-02-07 6 views
19

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

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

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

ответ

9

One-click Sweaving легко сделать в TeXShop, используя скрипт Sweave.sh от 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.

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

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

+0

Спасибо Аарон; Я следовал твоей инструкции; однако все равно не повезло. Консоль TeXShop выплевывает две строки (после компиляции с опцией Sweave в раскрывающемся списке): /Users/kg/Library/TeXShop/Engines/Sweave.engine: строка 2:/Пользователи/kg/Library/TeXShop/bin/Sweave: Нет такой файл или каталог –

+0

@ user594795: попробуйте изменить два файла движка, чтобы сказать «Sweave.sh» вместо «Sweave»; Я отредактировал свой ответ соответственно. – Aaron

+0

Вы упомянули выше, мне нужно установить разрешения. Я воспринял это как означающее изменение всех файлов на «чтение и запись» после нажатия «Получить информацию» в файлах. Причина, по которой я спрашиваю, заключается в том, что теперь я получаю следующее сообщение (все еще в консоли TeXShop): /Users/kg/Library/TeXShop/Engines/Sweave.engine: строка 2:/Пользователи/kg/Library/TeXShop/bin/Sweave.sh: Запрещено разрешение –

12

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

+0

Я также использую makefile для Sweave; Я опубликовал несколько примеров make-файлов для компиляции Sweave: см. Ссылки внизу этого сообщения: http://jeromyanglim.blogspot.com/2010/12/r-workflow-slides-from-talk-at.html –

8

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

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

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

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

+3

Я использую это слишком, но немного дольше (также вы можете отменить расширения файлов). В основном это просто добавляет bibtex в цепочку и открывает PDF-файл при его выполнении: R CMD Sweave foo && R CMD pdflatex foo && R CMD bibtex foo && foo.pdf –

+0

Нельзя ли сказать R CMD Sweave --pdf foo. Rnw получить pdf напрямую? –

1

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

2

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

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

2

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

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

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

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

2

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

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

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

8

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

the compile button

7

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

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

texi2pdf("Assign4.tex") 

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

 Смежные вопросы

  • Нет связанных вопросов^_^