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

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

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

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

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

Вы можете делать все, что вы предлагаете, с помощью плагина 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

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

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

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

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

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

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

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

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

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

Другие вопросы по тегам