Dear List,
I am trying to become more familiar with Sweave at the moment, beacuse
I am convinced that it will eventually make my life easier. However,
I have not found anything relevant in the mail archives about the
following problem.
Both the article in R-News and the Sweave FAQ suggest that Emacs would
be a great development environment for working with Sweave. So far, it
doesn't seem to fit that description... Maybe I'm doing something
wrong. I am going to describe the way I do things, and hope that
people on this list can suggest something more comfortable.
I edit the file in one buffer and keep one open for the R prompt.
Every time I need to recompile the whole document (Sweave to, say,
DVI) I go through the following:
1. call sweave manually via the R prompt
2. open the resulting LaTeX file (I have not found a way to refresh
this, maybe there's some magical XEmacs keystroke that rereads the
file from the disk?, so I keep opening/closing it)
3. compile the LaTeX file
This is a bit tedious as I like to compile often, because I like to
see the way my document looks (I know that TeX is WYSIWYM, but I
prefer to check my formulas instantly).
I would appreciate if people told me how they solve these problems or
have found any other way to make Xemacs more comfortable. A
"call sweave and then latex on this file in one go" and "show the
DVI
that was produced from this Rnw file" command would be very
useful. Emacs init.el files and similar would help a lot, too.
Or maybe I am just trying to use things the wrong way, if so, please
enlighten me ;-) If this is not how people use Sweave+Emacs, then tell
me how I should do it.
Thanks in advance,
Tamas Papp
--
Tam?s K. Papp
E-mail: tpapp at axelero.hu (preferred, especially for large messages)
tpapp at westel900.net
Please try to send only (latin-2) plain text, not HTML or other garbage.
On Wed, Apr 30, 2003 at 07:11:01PM +0200, Tamas Papp wrote:> I would appreciate if people told me how they solve these problems or > have found any other way to make Xemacs more comfortable. A > "call sweave and then latex on this file in one go" and "show the DVI > that was produced from this Rnw file" command would be very > useful. Emacs init.el files and similar would help a lot, too.Excellent question. Below is my pedestrian answer. I edit in XEmacs, and then call this shellscript. You could also bind it to what gets called from latex/auctex when you 'compile' the input file. Dirk #!/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\")" \ | Rterm --no-save --no-restore --slave LATEXFILE=$BASENAME.tex filetest $LATEXFILE && pdflatex $LATEXFILE PDFFILE=$BASENAME.pdf filetest $PDFFILE && acroread -- Don't drink and derive. Alcohol and algebra don't mix.
Assuming that you work on GNU/Linux, here's my setup (mostly borrowed from
Doug Bates):
My .emacs has (apart from the usual ESS and auc-tex stuff):
(defun Rnw-mode ()
(require 'ess-noweb)
(noweb-mode)
(if (fboundp 'R-mode)
(setq noweb-default-code-mode 'R-mode)))
(add-to-list 'auto-mode-alist '("\\.Rnw\\'" . Rnw-mode))
(add-to-list 'auto-mode-alist '("\\.Snw\\'" . Rnw-mode))
(setq reftex-file-extensions
'(("Snw" "Rnw" "nw" "tex"
".tex" ".ltx") ("bib" ".bib")))
(setq TeX-file-extensions
'("Snw" "Rnw" "nw" "tex"
"sty" "cls" "ltx" "texi"
"texinfo"))
I have the following script installed:
deepayan 12:59:03 $ cat /usr/local/bin/Sweave.sh
#!/bin/sh
echo "library(tools);Sweave('"$1"')" | /usr/bin/R
--vanilla --silent
In the working directory, I have a Makefile similar to:
deepayan 13:01:15 $ cat Makefile
DEFAULT_PDF = filename
DEFAULT_PS = filename
all : $(DEFAULT_PDF:=.pdf) $(DEFAULT_PS:=.ps)
%.tex : %.Rnw
Sweave.sh $<
%.pdf : %.tex
texi2dvi --pdf $<
%.dvi : %.tex
texi2dvi $<
%.ps : %.dvi
dvips -o -q $<
With all this (customized according to your tastes), just edit the
filename.Rnw file, and invoke make (I tend to keep a gv open in 'watch
file'
mode).
Hope that helps.
Deepayan
On Wednesday 30 April 2003 12:11 pm, Tamas Papp wrote:> Dear List,
>
> I am trying to become more familiar with Sweave at the moment, beacuse
> I am convinced that it will eventually make my life easier. However,
> I have not found anything relevant in the mail archives about the
> following problem.
>
> Both the article in R-News and the Sweave FAQ suggest that Emacs would
> be a great development environment for working with Sweave. So far, it
> doesn't seem to fit that description... Maybe I'm doing something
> wrong. I am going to describe the way I do things, and hope that
> people on this list can suggest something more comfortable.
>
> I edit the file in one buffer and keep one open for the R prompt.
> Every time I need to recompile the whole document (Sweave to, say,
> DVI) I go through the following:
>
> 1. call sweave manually via the R prompt
> 2. open the resulting LaTeX file (I have not found a way to refresh
> this, maybe there's some magical XEmacs keystroke that rereads the
> file from the disk?, so I keep opening/closing it)
> 3. compile the LaTeX file
>
> This is a bit tedious as I like to compile often, because I like to
> see the way my document looks (I know that TeX is WYSIWYM, but I
> prefer to check my formulas instantly).
>
> I would appreciate if people told me how they solve these problems or
> have found any other way to make Xemacs more comfortable. A
> "call sweave and then latex on this file in one go" and
"show the DVI
> that was produced from this Rnw file" command would be very
> useful. Emacs init.el files and similar would help a lot, too.
>
> Or maybe I am just trying to use things the wrong way, if so, please
> enlighten me ;-) If this is not how people use Sweave+Emacs, then tell
> me how I should do it.
>
> Thanks in advance,
>
> Tamas Papp