[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