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'.
Best fishes
Sam
--
Sam McClatchie, Research scientist (fisheries acoustics))))))))))
NIWA (National Institute of Water & Atmospheric Research Ltd)
PO Box 14 901, Kilbirnie, Wellington, New Zealand
s.mcclatchie at niwa.cri.nz
Research home page <http://www.smcc.150m.com/>
/\
>><xX(&>
/// \\\
//// \\\\
/// <%)Xx><<
///// \\\\\\
><(((@>
><(((%> ..>><xX(?>O<?)Xx><<
You say that you call R code embedded in your LaTeX document. I tend to
think of it as LaTeX embedded in my R code. I think the answer to your
question is 'no', but there might be ways to work around it.
I use AUCTeX in emacs and can select a region of foo.sw and run latex on
that. This works fine although you won't have access to R objects using
\Sexpr{}. In practice I tend to use <<eval=FALSE>> to "comment
out" R
code chunks that I have run previously if I do not need to update or
recreated their objects. This means that running Sweave on foo.sw then
does not take too long to run the R chunks that do need to be run, i.e.
foo.tex is created pretty quickly. Running latex does not then usually
take long either. I use search and replace or the chunk navigation
hotkeys (e.g. M-n g) when I need to change <<eval=FALSE>> to
<<eval=TRUE>>.
Creating a Makefile to run R with Sweave (as indicated in the FAQ in the
Sweave manual) and then latex the resulting foo.tex should work pretty
well to automate the process.
I am still new to Sweave, but have had a lot of fun with it so far. I
use emacs with ESS, Sweave, RefTex mode, LaTeX mode and Prosper - a
presentation class that creates PDF presentations which (can if you
want) look like MS Powerpoint presentations but with the advantage of
LaTeX formatting. All the tools I need for analysis, writing, and
presentations working together.
My first serious use of this combination was last week. I had a foo.Rnw
file which produced both my presentation and accompanying notes to
handout. I discovered a mistake in my R code shortly before giving my
presentation, fixed it, Sweave'd the file and updated my presentation
and notes painlessly. A nice way to work.
Dave.
On Wed, Jan 29, 2003 at 02:12:15PM +1300, Sam McClatchie
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'.
>
> Best fishes
>
> Sam
> --
> Sam McClatchie, Research scientist (fisheries acoustics))))))))))
> NIWA (National Institute of Water & Atmospheric Research Ltd)
> PO Box 14 901, Kilbirnie, Wellington, New Zealand
> s.mcclatchie at niwa.cri.nz
> Research home page <http://www.smcc.150m.com/>
> /\
> >><xX(&>
> /// \\\
> //// \\\\
> /// <%)Xx><<
> ///// \\\\\\
> ><(((@>
> ><(((%> ..>><xX(?>O<?)Xx><<
>
> ______________________________________________
> R-help at stat.math.ethz.ch mailing list
> http://www.stat.math.ethz.ch/mailman/listinfo/r-help
--
Dave Whiting
Dar es Salaam, Tanzania
Friedrich.Leisch@ci.tuwien.ac.at
2003-Jan-29 11:19 UTC
[R] calling sweave function from latex
>>>>> 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 -------------------------------------------------------------------