开发Sweave文件的建议 [英] Recommendations for developing Sweave documents

查看:138
本文介绍了开发Sweave文件的建议的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望简化我的 Sweave 文档创建,我想听听关于人们目前的设置。我觉得圣杯是这样的:

I'm looking to streamline my Sweave document creation, and I'd like to hear about people's current setups. I feel like the holy grail goes something like this:



  • 屏幕的一半上编辑Rnw代码

  • 单键绑定编译
    Sweave文档并运行pdflatex

  • 在屏幕的另一半上查看PDF
    ;一旦
    编译,PDF将被刷新并围绕您正在编辑的文档的一部分。

  • 如果编译有错误,请将PDF替换为编译结果(例如胶乳错误或Sweave错误)

  • Editing Rnw code on one half of the screen
  • Single keybinding compiles Sweave document and runs pdflatex
  • View PDF on the other half of the screen; once compiled, PDF is refreshed and centered around the portion of the document you're editing
  • If compilation has errors, replace the PDF with the results of the compilation (e.g. latex errors or Sweave errors)

我猜想/希望解决方案是Emacs / ESS的一部分与Emacs配置文件的一些代码, /或一个不错的Makefile。但是我真的很想听听大家首选的创建Sweave和/或Latex文档的方式。

I am guessing/hoping that the solution is part Emacs/ESS combined with some code for the Emacs profile and/or a nice Makefile. But I would really like to hear about everybody's preferred way of creating Sweave and/or Latex documents.

推荐答案

其他一些R用户我谈到使用一个项目的每个项目设置和一个简单的Makefile。如您所料,这与Emacs / ESS的效果良好。

A few other R users I talked to use a 'one-directory-per-project' setup, and a simple Makefile. As you suspected, that works well with Emacs/ESS.

我倾向于调用一个简单的shell脚本 sweave ,之前我写过R CMD Sweave (因为我发现重新创建或复制Makefile没有吸引力,YMMV)。我还使用Emacs和自动刷新pdf查看器(如 okular kpdf )。 Emacs23可以直接预览pdf文件,但是我还没有把工作流转换到这个。

I tend to just call a simple shell script sweave which I wrote before before 'R CMD Sweave' was added (as I find re-creating or copying the Makefile unappealing, YMMV). I also use Emacs and an auto-refreshing pdf viewer (like okular or kpdf). Emacs23 can preview pdf files directly too but I have yet to switch my work flow to that.

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

这篇关于开发Sweave文件的建议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆