问题描述
我希望简化我的文档创建,我想听听关于人们目前的设置。我觉得圣杯是这样的:
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 thescreen
- Single keybinding compilesSweave document and runs pdflatex
- View PDFon the other half of the screen; oncecompiled, 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文件的建议的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!