Рекомендации по разработке документов Sweave

Я хочу упростить создание документа Sweave, и я хотел бы услышать о текущих настройки. Я чувствую, что Святой Грааль звучит примерно так:

  • Редактирование кода Rnw на одной половине экрана
  • Привязка одной клавиши компилирует документ Sweave и запускает pdflatex
  • Просмотр PDF на другой половине экрана; после компиляции PDF-файл обновляется и центрируется вокруг той части документа, которую вы редактируете.
  • Если при компиляции есть ошибки, замените PDF-файл результатами компиляции (например, латексными ошибками или ошибками Sweave).

Я предполагаю / надеюсь, что решение является частью Emacs / ESS в сочетании с некоторым кодом для профиля Emacs и / или красивым Makefile. Но мне бы очень хотелось услышать о том, что все предпочитают создавать документы Sweave и / или Latex.


person Christopher DuBois    schedule 04.09.2009    source источник


Ответы (6)


Несколько других пользователей R, с которыми я говорил, используют установку «один каталог для каждого проекта» и простой файл Makefile. Как вы и подозревали, это хорошо работает с Emacs / ESS.

Я обычно называю простой сценарий оболочки sweave, который я написал до того, как был добавлен 'R CMD Sweave' (поскольку я считаю, что воссоздание или копирование Makefile непривлекательно, YMMV). Я также использую Emacs и программу просмотра PDF-файлов с автоматическим обновлением (например, okular или kpdf). Emacs23 также может предварительно просматривать файлы pdf, но я еще не переключил свой рабочий процесс на это.

edd@ron:~$ cat bin/sweave
#!/bin/bash -e

function errorexit () {
    echo "Error: $1"
    exit 1
}

function filetest () {
    if [ ! -f $1 ]; then
       errorexit "File $1 not found"
    fi
    return 0
}


if [ "$#" -lt 1 ]; then
    errorexit "Need to specify argument file"
fi


BASENAME=$(basename $1 .Rnw)

RNWFILE=$BASENAME.Rnw
filetest $RNWFILE
echo "library(tools); Sweave(\"$RNWFILE\")" \
      | R --no-save --no-restore --slave

LATEXFILE=$BASENAME.tex
filetest $LATEXFILE && pdflatex $LATEXFILE
person Dirk Eddelbuettel    schedule 04.09.2009

Вы можете делать все, что вы предлагаете, с помощью плагина StatET для Eclipse. Это то, что я использую для разработки Sweave; он очень хорошо понимает как латекс, так и R, включая подсветку синтаксиса и т. д.

Вы можете получить его здесь: http://www.walware.de/goto/statet.

Лонгау Лам написал хорошее руководство: http://www.splusbook.com/Rintro/R_Eclipse_StatET.pdf.

http://www.statalgo.com/?p=93

person Shane    schedule 04.09.2009
comment
Я согласен. Sweave, StatET и Eclipse хорошо работают вместе. Я написал сообщение, описывающее один из способов настройки Sweave с помощью Eclipse bit.ly/adfhZ1 - person Jeromy Anglim; 23.02.2010
comment
(ссылка splusbook не работает. Однако я погуглил, и у меня сработала следующая, казалось бы, эквивалентная альтернатива: splusbook.com/RIntro/R_Eclipse_StatET.pdf) - person isomorphismes; 09.09.2011

Я использую TeXShop в OS X для создания всех своих отчетов LaTeX и Sweave. Для меня новый конвейер компиляции так же прост, как добавление файла с именем Sweave.engine в ~/Library/TeXShop/Engines/, который содержит следующее:

#!/usr/bin/env Rscript
args <- commandArgs(T)

fname <- strsplit(args[1],'\\.')[[1]][2]

Sweave(paste(fname,'Rnw',sep='.'))

system(paste('pdflatex',paste(fname,'tex',sep='.')))

Sweave теперь является выбираемым методом компиляции документа внутри TeXShop. Я могу установить его по умолчанию для документа, добавив следующий хэш-код TeX в начало файла:

% !TEX TS-program = Sweave

При нажатии Cmd-T документ будет набран - PDF-файл автоматически появится в отдельном окне. TeXShop также включает технологию SyncTeX, поэтому нажатие Cmd-Click в источнике Rnw будет выделять соответствующий вывод в Окно PDF и нажатие Cmd-Click в окне PDF выделит соответствующий вход в источнике Rnw.

TeXShop предназначен только для Mac, но для Linux доступен отличный клон на основе Qt / poppler, TeXworks. , Windows и Mac и поддерживает многие из тех же функций, включая хэш-коды TeX и SyncTeX. TeXworks достиг такого уровня зрелости, когда он включен в версию 2.8 пакета MikTeX для Windows.

person Sharpie    schedule 24.09.2009
comment
Мне нравится прямое использование Rscript! Так много решений вызывают оболочку для вызова R ... Для записи, strsplit и paste для обработки расширений файлов не нужны - и Sweave, и pdflatex автоматически добавляют расширение. - person Dav Clark; 11.02.2011
comment
Я думаю, это было необходимо в то время, когда я писал этот пост, поскольку TeX Shop передал движку все имя файла File.Rnw. Sweave было бы хорошо с этим, но pdflatex подавился бы. - person Sharpie; 11.02.2011
comment
Итак, вы говорите, что у вас есть cmd-щелчок между вашими файлами .Rnw и .pdf. Вам тоже приходилось прыгать через эти обручи: cameron.bracken.bz/ - person Dav Clark; 02.07.2011
comment
Нет, я этого не делал - так что поддержка SyncTeX, вероятно, немного отключена. Но я предпочитаю писать много небольших фрагментов Sweave, а не битов, поэтому SyncTeX ставит меня в точку, где я не замечаю проблем, связанных с неиспользованием согласования. - person Sharpie; 02.07.2011

Попробуйте RStudio.

Я был поклонником Emacs и TeXShop, как упоминалось в предыдущих ответах.

Однако Rstudio начинает меня покорять. Это быстро улучшающаяся специализированная IDE для R. Определенно стоит попробовать.

Мне до сих пор нравится выполнять определенные задачи разработки только для R в стандартной среде R IDE для Mac. Но для документов Sweave и некоторых связанных разработок R в то же время RStudio выигрывает. Он работает практически без дополнительных настроек. Я не уверен в функциях, связанных с PDF, во второй половине исходного вопроса.

person Paul McMurdie    schedule 10.09.2011

Одна вещь, которая сэкономила мне время, - это режим автоматической вставки в emacs. Я настроил его так, что каждый раз, когда я открываю новый файл .rnw, emacs автоматически настраивает базовый шаблон документа, и все, что мне нужно сделать, это начать писать свой отчет.

Обновление: я отказался от автоматической вставки. Теперь я использую подход «template.el».

person Kevin Wright    schedule 03.11.2009

Я также использую подход «один каталог на проект» и Makefile. Я также включаю команды для создания вывода в HTML, который затем можно преобразовать в OOo и MS Word с помощью tth. Это важно для меня, поскольку многие из моих сотрудников являются пользователями MS Office и не хотят использовать вывод PDF. Я многое узнал о том, как это сделать, из рассказов Фрэнка Харрелла в «Вандербильте».

Лично я использую gvim в качестве редактора, и запустить make оттуда довольно просто, как и из Emacs.

person Abhijit    schedule 05.09.2009