[R] Adding LaTeX cross-references into Sweave plots
Duncan Murdoch
murdoch at stats.uwo.ca
Wed Feb 27 02:44:13 CET 2008
Peter Dunn wrote:
> Hi all
>
> I'm using Sweave and LaTeX, and love how they interact.
>
> But here's a different interaction I'm not sure how to achieve; I
> hope someone can help. I use a simple example, of course, to
> demonstrate.
>
> Suppose in my LaTeX document I have this:
>
> Here is a linear equation:
> \begin{equation}
> y = -1 + 3 x
> \label{EQ:example}
> \end{equation}
>
> This appears in the final product with an Equation number, say (1).
>
> Now suppose I wish to produce a graphic in R:
>
> <<fig=TRUE>>=
> plot( c(-1,1), c(-1,1), type="n",
> main="Graph of Eq (1)")
> abline(-1, 3)
> @
>
> All easy.
>
> But... how to I ensure the correct LaTeX label appears in the plot?
> You see, if I run LaTeX again, and my equation is no longer
> labelled (1) and changes to (say) label (3), I have to manually fix
> the Sweave code to read
>
> <<fig=TRUE>>=
> plot( c(-1,1), c(-1,1), type="n",
> main="Graph of Eq (3)")
> abline(-1, 3)
> @
>
> Any ideas of how that can be automated? I guess something like this
> (though this obviously will fail):
>
>
> <<fig=TRUE>>=
> plot( c(-1,1), c(-1,1), type="n",
> main="Graph of Eq (\label{EQ:equation})")
> abline(-1, 3)
> @
>
> Thanks as always.
>
I don't think there's a reasonable way to do this. If you want to be
unreasonable, you could execute R code to read the .aux file produced
from a previous LaTeX run (which is how LaTeX handles references). I'd
say a better approach is just not to use a main title, use the figure
caption to include the equation number.
Duncan Murdoch
More information about the R-help
mailing list