2011-06-18 10 views
6

Una forma de obtener Sweave para centrar cifras es incluir algo como lo siguientecómo conseguir Sweave para centrar cifras sin centrador código

\begin{figure} 
\begin{center} 
[sweave chunk] 
\end{center} 
\end{figure} 

Sin embargo, si desea mostrar el código para producir la visualización, la el código sale centrado ¿Alguien sabe de una forma ingeniosa de hacer que el código se muestre justificado a la izquierda mientras se asegura que la figura esté centrada? Esto es problemático si se establece el tamaño de la figura decirlo 3x3:

<<myplot, fig=TRUE, width=3, height=3>>= 
    plot(rnorm(20), rnorm(20))   
@ 

que necesito hacer esto más de 100 veces para un proyecto que estoy trabajando y prefiere no crear trozos separados de la trama y el código.

+0

que se quedan texto justificado por defecto. –

+0

¿Está utilizando quizás pgfSweave? Esto era un problema con las versiones anteriores. –

Respuesta

6

Tal vez no es exactamente lo que está después, pero me gusta mantener el código que utilizo para hacer que la imagen fuera de la región figura, ya que quiero el código en el texto:

Blablabla if we run: 
R CODE 
We get the figure in Figure 1 

Usted puede hacer esto usando include=false en los argumentos Sweave y usando el hecho de que si haces una imagen en Sweave llama al pdf DOCUMENTNAME-PICTURENAME.pdf. Por ejemplo, en el documento foo.Rnw:

Blablabla if we run: 
<<myplot,fig=true,include=false>>= 
plot(1) 
@ 
We get the plot in Figure \ref{myplot} 

\begin{figure} 
\begin{center} 
\includegraphics{foo-myplot} 
\end{center} 
\label{myplot} 
\caption{This is my plot!} 
\end{figure} 

Esto debe obtener su código justificado a la izquierda en el texto consecutivo y la cifra donde LaTeX lo coloca (si quieres allí mismo).


Editar:

El funcionamiento de su ejemplo no obtener el código justificada me dejó en el mismo margen que el texto normal sin embargo:

\documentclass{article} 
\usepackage{Sweave} 
\begin{document} 
\begin{figure} 
\centering 
<<myplot, fig=TRUE, width=3, height=3>>= 
    plot(rnorm(20), rnorm(20))   
@ 
\end{figure} 
\end{document} 
+0

'include = false' es bueno; te da mucha más flexibilidad. – Aaron

+0

Sin embargo, un punto: asegúrese de que su '\ label' esté detrás de' \ caption'; de lo contrario, la etiqueta tendrá algo incorrecto. – Aaron

+0

En realidad, podría usar un fragmento de código que contenga '<>' dentro de la definición de su figura. Creo que podría ser más robusto –