[R] calling sweave function from latex

Friedrich.Leisch@ci.tuwien.ac.at
Wed, 29 Jan 2003 11:19:02 -0000

>>>>> On Wed, 29 Jan 2003 14:12:15 +1300,
>>>>> Sam McClatchie (SM) wrote:

  > System info:
  > Mandrake 9.0
  > R Version 1.6.1
  > ESS 5.1.21
  > Emacs 21.2.1
  > -------------------

  > Colleagues

  > I've been calling R-code embedded in my LaTex document using Sweave,
but
  > would like to make things more convenient. At present as I understand it
  >   you first process the R chunks of code using the Sweave function
  > called from within R to process a "precursor file" e.g. foo.sw
to get a
  > LaTex file (foo.sw.tex) that you then process with latex foo.sw.tex.
  > ------------------------
  > example code segment

  > %\item {\bf Matched trawl and acoustic data} \label{real data}

  > \item {\bf Results}

  > %%%% sweave code

  > <<echo=false,results=hide>>  >
average.trawl.spp.composition()
  > @

  > %%%% insert figure generated from sweave code
  > \begin{figure}
  > \includegraphics[scale=0.6]{../figures/bycatch_by_weight}
  > \caption{\label{catch by weight} Proportions of selected species (from
  >      Table \ref{ts length regressions}) in the fish assemblage using
  >      catch rate ($kg\ km{-1}$) as an approximation for fish density
  >      (neglecting variable capture efficiencies). Note: there were no
  >      oblique banded rattails in this dataset, although we have a
  >      \textit{<TS>-length} regression for them (see Table \ref{ts
length
  >      regressions}). Box plot centre line = meadian, box limits are
  >      $25^{th}$ and $75^{th}$ quartiles, whiskers represent 1.5 times the
  >      interquartile range from the median, and points outside the whiskers
  >      are the tails of the distributions.}
  > \end{figure}
  > -----------------------

  > This works fine, but it is cumbersome for someone who likes to write a
  > bit and then latex that additional bit. Of course I can just add the new
  > LaTex code chunks to the foo.sw.tex and latex that, but I have to
  > remember to copy the foo.sw.tex back to foo.sw or the versions get mixed
  > up. Trivial, but annoying.

  > The question is: can I call the Sweave function from within LaTex so I
  > just latex the foo.sw.tex and the Sweave chunks will also get processed.
  > This would be much tidier.

  > One suspects that the short answer is 'no'.



One way to deal with this is to write several Sweave filew and collect
them into the main latex document using \input{} statements. Then you
can Sweave() only those files which have some changes, makefiles can
automate that easily.

I have some ideas on conditional processing of chunks and re-using
previously saved results in case nothing has changed, but that has not
been implemented yet.

Best,
Fritz

--
-------------------------------------------------------------------
                        Friedrich Leisch
Institut f?r Statistik                     Tel: (+43 1) 58801 10715
Technische Universit?t Wien                Fax: (+43 1) 58801 10798
Wiedner Hauptstra?e 8-10/1071      Friedrich.Leisch at ci.tuwien.ac.at
A-1040 Wien, Austria             http://www.ci.tuwien.ac.at/~leisch
-------------------------------------------------------------------