On Aug 21, 2012, at 2:03 PM, Alexander Shenkin <ashen...@ufl.edu> wrote:
> Hi Folks, > > I'm surprised, but I didn't find this question addressed anywhere. I'd > like to generate a LaTeX caption with R code. I've tried the code > below, but I get the following TeX error: > > ! Argument of \@caption has an extra }. > <inserted text> > \par > l.21 } > > Any thoughts? Perhaps I'll have to write the "\caption{}" text with R? > > thanks! > > > Sweave document: > > \documentclass{article} > \title {test} > \author {me} > \usepackage{Sweave} > \begin {document} > \maketitle > \DeclareGraphicsExtensions{.pdf,.png} > > \begin {figure} > <<label=fig1, echo=FALSE, fig=TRUE, pdf=false, png=true>>= > plot(runif(100), runif(100)) > @ > \caption { > This is the caption with some r-code > <<>>= > 2*2 > @ > } > \label {fig:1} > \end {figure} > > \end{document} > > > TeX document: > > \documentclass{article} > \title {test} > \author {me} > \usepackage{Sweave} > \begin {document} > \maketitle > \DeclareGraphicsExtensions{.pdf,.png} > \begin {figure} > \includegraphics{test-fig1} > \caption { > This is the caption with some r-code > \begin{Schunk} > \begin{Sinput} >> 2*2 > \end{Sinput} > \begin{Soutput} > [1] 4 > \end{Soutput} > \end{Schunk} > } > \label {fig:1} > \end {figure} > \end{document} You can use \Sexpr{} to include R code within the LaTeX, but the code needs to return a scalar. For example: \documentclass{article} \usepackage{Sweave} \begin{document} \begin{figure}[tbp] \centering <<fig=TRUE,width=6,height=6>>= plot(1:10) @ \caption{This is the caption \Sexpr{round(sqrt(2), 2)} with an R scalar included} \end{figure} \end{document} will return: \documentclass{article} \usepackage{Sweave} \begin{document} \begin{figure}[tbp] \centering \begin{Schunk} \begin{Sinput} > plot(1:10) \end{Sinput} \end{Schunk} \includegraphics{caption-001} \caption{This is the caption 1.41 with an R scalar included} \end{figure} \end{document} In general, if the R code is not very simple (eg. it is multiple lines/function calls, etc.), I will generally have the R code in an R chunk, assign the result to a scalar and then include that scalar in the \Sexpr{}: This is referenced in the Sweave manual and FAQ: http://www.statistik.lmu.de/~leisch/Sweave/ Regards, Marc Schwartz ______________________________________________ R-help@r-project.org 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.