15 Oct 01:04
Re: Sweave, R and complex latex projects
From: Deepayan Sarkar <deepayan.sarkar <at> gmail.com>
Subject: Re: Sweave, R and complex latex projects
Newsgroups: gmane.comp.lang.r.general
Date: 2006-10-14 23:04:50 GMT
Subject: Re: Sweave, R and complex latex projects
Newsgroups: gmane.comp.lang.r.general
Date: 2006-10-14 23:04:50 GMT
On 10/14/06, Mark Wardle <mark <at> wardle.org> wrote:
> Hello all,
>
> I've been able to use R very successfully to run simple statistics and
> generate the plots I require.
>
> I've been evaluating Sweave, and have hit upon a small problem that I
> don't seem to be able to workaround. Sweave runs very well for single
> file latex documents, but I have a complex thesis made up of several
> parts and chapters. These are arranged with a master latex file and
> subdirectories with "\include"-ed latex fragments representing those
> parts/chapters, and I don't seem to be able to get Sweave to work properly.
>
> I've tried a number of approaches, including converting the master
> document into a Snw file itself, or even generating chapters manually
> chapter by chapter using Sweave and then "\include"ing the result into
> the master tex file. Unfortunately for the latter attempt, the the latex
> generated doesn't prepend the required path to the filename, and so
> latex looks for the pdfs and tex files in the wrong place - it looks in
> the "root" directory (where the master tex file is located) rather than
> the chapter subdirectory where all the files have been generated.
>
> I hope I'm not missing something obviously documented, but I can't see
> it in the Sweave docs. Is there an option to prepend a pathname to the
> filename of Sweave generated TeX and PDF documents?
>
> Do people use Sweave for complex multi-file latex projects, and what is
> the best approach? I'm almost tempted to keep R and Latex separate, and
> continue to run a R script to generate all of the dynamic tables/charts
> which are then "\input"ed, but I was rather attracted to the whole
> Sweave approach.
You haven't told us what platform you are using, but makefiles are the
solution I would recommend if that's feasible. For example, the
Makefile in one of my presentations might look like
-----------------
R_PROG = R-2.4
R_HOME = `${R_PROG} RHOME`
TPUTS = ${TEXINPUTS}:${R_HOME}/share/texmf/:tex/
TEX_COMPS = tex/defs tex/main
RNW_COMPS = faithful barley qqaspect
all: statgraphics.pdf
statgraphics.tex: $(TEX_COMPS:=.tex) $(RNW_COMPS:=.tex) tex/statgraphics.tex
cp tex/statgraphics.tex .
clean:
rm -f *.Rnw *.tex *.log *.dvi *.ps *.pdf *.R figs/* *~ */*~
%.Rnw: rnw/%.Rnw
ln -s $< .
%.tex: %.Rnw
echo "library(tools); Sweave('$<')" | ${R_PROG} --vanilla --silent
%.R: %.Rnw
echo "library(tools); Stangle('$<')" | ${R_PROG} --vanilla --silent
%.dvi : %.tex
TEXINPUTS=${TPUTS} texi2dvi -q -c $<
%.ps : %.dvi
TEXINPUTS=${TPUTS} dvips -o -q $<
%.pdf : %.tex
TEXINPUTS=${TPUTS} texi2dvi -c -q --pdf $<
--------------
Things are slightly complicated because I tend to keep .tex and .Rnw
files in separate directories (but make a copy/link before running
Sweave or latex on them). After a make clean, the top-level directory
looks like:
deepayan <at> kanika:statgraphics$ ls -R
.:
data figs Makefile rnw tex
./data:
./figs:
./rnw:
barley.Rnw faithful.Rnw qqaspect.Rnw
./tex:
defs.tex main.tex statgraphics.tex
and
deepayan <at> kanika:statgraphics$ grep input tex/*.tex
tex/main.tex:\input{faithful1}
tex/main.tex:\input{barley1}
tex/main.tex:\input{qqaspect}
tex/statgraphics.tex:\input{tex/defs}
tex/statgraphics.tex:\input{tex/main}
HTH,
-Deepayan
______________________________________________
R-help <at> stat.math.ethz.ch mailing list
https://stat.ethz.ch/mailman/listinfo/r-help
PLEASE do read the posting guide http://www.R-project.org/posting-guide.html
and provide commented, minimal, self-contained, reproducible code.
RSS Feed