2010-06-24 35 views
20

Esto me está volviendo loco.Center Latex lstlisting

Quiero centrar un lstlisting en LaTeX.

después de 3 horas que intentan Aquí hay algo de código:

\lstset{ % 
    caption=Descriptive Caption Text, 
    label=lst:descr_capti_text, 
    basicstyle=\ttfamily\footnotesize\bfseries, 
    frame=tb, 
    linewidth=0.6\textwidth 
} 
\centering\begin{tabular}{c} 
\begin{lstlisting} 
printf("this should be centered!"); 
\end{lstlisting} 
\end{tabular} 

Se trata de poner el lstlisting en el centro, pero no su título, que va hacia la derecha. Si saco la tabla, el título se centra pero el código va a la izquierda. :(

Gracias.

+4

Simplemente pensé que había mencionado la [propuesta de látex StackExchange] (http://area51.stackexchange.com/proposals/2148/tex-latex-and- friends? referrer = 5z6F4dAmVScN5QfMOt5KEg2) ya que una vez que despega, será el mejor lugar para preguntas como esta. –

Respuesta

7

Su subtítulo es en realidad centrada sobre el anuncio. Usted se acaba de hacer las líneas que corren a lo largo de la parte superior e inferior de su única 0.6\textwidth larga lista. Esto hace que parezca como si el título estaba fuera del centro Además, su \centering no centrar la lista (visible si no acortar las líneas de abajo y arriba)

Esto debería funcionar:..

\begin{center} 
    \lstset{% 
    caption=Descriptive Caption Text, 
    basicstyle=\ttfamily\footnotesize\bfseries, 
    frame=tb 
    } 
    \begin{lstlisting} 
    printf("this should be centered!"); 
    \end{lstlisting} 
\end{center} 

no explicas por qué quieres la delimitación ng líneas para ser 0.6\textwidth de largo. Si realmente deseaba establecer el ancho de su listado como ese valor, su enfoque no hace lo que desea. Use algo parecido a una minipapa para establecer un ancho de para toda la lista.

begin{minipage}{0.6\textwidth} 
    \begin{center} 
    \lstset{% 
     caption=Descriptive Caption Text, 
     basicstyle=\ttfamily\footnotesize\bfseries, 
     frame=tb, 
    } 
    \begin{lstlisting} 
     printf("this should be centered!"); 
    \end{lstlisting} 
    \end{center} 
\end{minipage} 
+0

Aunque como Akim, encontré que funcionaba con la minipapa dentro del entorno del centro. – luketorjussen

+1

Desafortunadamente esto no funciona para mí. La lista no se moverá. – kaoD

+3

Usar '\ begin {center}' no tiene ningún efecto para mí al centrar el listado. –

4

En realidad, lo que funcionó para mí es lo contrario: poner la minipágina en el centro del entorno.

+0

Lo mismo para mí también – Cemre

19

En lugar de utilizar ancho de línea que usted debe considerar utilizar xleftmargin y xrightmargin (cf. texdoc listings, Capítulo 4.10). El código siguiente funciona sin ningún tipo de centro o minipágina medio ambiente:

\lstset{ 
    caption=Descriptive Caption Text, 
    basicstyle=\footnotesize, frame=tb, 
    xleftmargin=.2\textwidth, xrightmargin=.2\textwidth 
} 
\begin{lstlisting} 
    printf("this should be centered!"); 
\end{lstlisting} 
+0

Increíble, esto es exactamente lo que estaba buscando. En mi caso, utilicé un valor negativo en 'xrightmargin', así pude mover el cuadro lslisting alrededor ... ¡Gracias por la pista! – guipy