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 -------------------------------------------------------------------