开发Sweave文档的建议

时间:2009-09-04 14:17:07

标签: emacs r latex sweave ess

我希望简化我的Sweave文档创建,并且我想了解人们当前的设置。我觉得圣杯会像这样:

  • 在一半上编辑Rnw代码 屏幕
  • 单个键绑定编译 Sweave文档并运行pdflatex
  • 查看PDF 在屏幕的另一半;一旦 编译后,PDF将刷新并以您正在编辑的文档部分为中心
  • 如果编译有错误,请将PDF替换为编译结果(例如乳胶错误或Sweave错误)

我猜/希望解决方案是Emacs / ESS的一部分,结合Emacs配置文件的一些代码和/或一个漂亮的Makefile。但我真的很想知道每个人创建Sweave和/或Latex文档的首选方法。

6 个答案:

答案 0 :(得分:9)

我谈过的其他一些R用户使用“每个项目一个目录”设置和一个简单的Makefile。如您所料,这适用于Emacs / ESS。

我倾向于调用一个简单的shell脚本sweave,这是我在添加'R CMD Sweave'之前写的(因为我发现重新创建或复制Makefile没有吸引力,YMMV)。我还使用Emacs和自动刷新的pdf查看器(如okularkpdf)。 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

答案 1 :(得分:6)

您可以使用Eclipse的StatET插件执行您建议的所有操作。这就是我用于Sweave开发的东西;它非常了解latex和R,包括语法高亮等等。

您可以在此处获取:http://www.walware.de/goto/statet

Longhow Lam撰写了一篇很好的指南:http://www.splusbook.com/Rintro/R_Eclipse_StatET.pdf

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

答案 2 :(得分:6)

我在OS X上使用TeXShop来生成我的所有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 hash-bang添加到文件顶部来将其设置为文档的默认值:

% !TEX TS-program = Sweave

点击Cmd-T将排版文档 - pdf会自动弹出一个单独的窗口。 TeXShop还采用了SyncTeX技术,因此Rnw源中的Cmd-Click将突出显示PDF窗口中的相应输出,而PDF窗口中的Cmd-Click将突出显示Rnw源中的相应输入。

TeXShop仅限mac,但基于Qt / poppler的克隆TeXworks可用于Linux,Windows和Mac,并支持许多相同的功能 - 包括TeX hash-bangs和SyncTeX。 TeXworks已经达到了成熟度,它已包含在适用于Windows的MikTeX软件包的2.8版本中。

答案 3 :(得分:3)

尝试RStudio

我一直是EmacsTeXShop的粉丝,如前面的答案所述。

然而,Rstudio开始赢得我的支持。它是一个快速改进的R专用IDE。绝对值得一试。

我仍然喜欢在standard R IDE for mac中执行某些仅限R的开发任务。但对于Sweave文档和一些相关的R devel同时,RStudio获胜。它几乎零调整。我不确定原问题后半部分与PDF相关的功能。

答案 4 :(得分:2)

为我节省一些时间的一件事是emacs中的“自动插入”模式。我设置它,以便每次打开一个新的.rnw文件时,emacs会自动设置一个基本文档模板,我需要做的就是开始编写我的报告。

更新:我已经离开了自动插入。现在我使用“template.el”方法。

答案 5 :(得分:1)

我也使用“每个项目一个目录”和Makefile方法。我还包括用HTML创建输出的命令,然后可以使用tth将其转换为OOo和MS Word。这对我很重要,因为我的很多合作者都是MS Office用户,并且不能使用PDF输出。我从Vanderbilt的Frank Harrell的twiki那里学到了很多关于如何做到这一点。

我个人使用gvim作为我的首选编辑器,从那里运行 make 非常简单,因为它来自Emacs。