[R] Sweave: R chunk inside caption?
Yihui Xie
xie at yihui.name
Tue Aug 21 21:48:03 CEST 2012
This is a LaTeX question. I'll be surprised if \caption{} allows
arbitrary LaTeX environments inside it.
Perhaps it is irrelevant, but you can make it more compact with the
fig.cap option in knitr; see an example at
https://github.com/yihui/knitr-examples/blob/master/019-fig-caption.Rnw
\documentclass{article}
\begin{document}
Knitr can automatically generate a figure environment if fig.cap is specified.
<<test, fig.cap=paste('$2 \\times 2$ is', 2*2), fig.height=3>>=
par(mar=c(4, 4, .1, .1)); plot(runif(4))
@
When fig.cap needs to use objects in the current chunk, we need to set
the eval.after options so the objects are available when fig.cap is
used.
<<setup>>=
# evaluate fig.cap after a chunk is evaluated
opts_knit$set(eval.after = 'fig.cap')
@
Dynamically generate a figure caption:
<<t-test, fig.cap=paste('The P-value is', format.pval(t.test(x)$p.value))>>=
x = rnorm(30)
hist(x)
@
\end{document}
Regards,
Yihui
--
Yihui Xie <xieyihui at gmail.com>
Phone: 515-294-2465 Web: http://yihui.name
Department of Statistics, Iowa State University
2215 Snedecor Hall, Ames, IA
On Tue, Aug 21, 2012 at 2:03 PM, Alexander Shenkin <ashenkin at 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}
More information about the R-help
mailing list