2010-06-24 14 views
20

Das macht mich verrückt.Center Latex lstlisting

Ich möchte eine LaTeX in LaTeX zentrieren.

Nach 3 Stunden hier einig Code versuchen:

\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} 

Dies ist den lstlisting auf der Mitte setzt seine Beschriftung aber nicht, dass das nach rechts geht. Wenn ich die Tabelle herausnehme, wird die Beschriftung zentriert, aber der Code geht nach links! :(

Danke.

+4

Ich dachte, ich würde die [LaTeX Stack Vorschlag] erwähnen (http://area51.stackexchange.com/proposals/2148/tex-latex-and- Freunde? Referrer = 5z6F4dAmVScN5QfMOt5KEg2) seit dem Start ist es der beste Ort für Fragen wie diese. –

Antwort

7

Ihre Beschriftung tatsächlich über die Auflistung zentriert ist. Sie sind nur die Linien zu machen, die sich entlang der oberen und unteren Lauf des nur 0.6\textwidth lange auflistet. Dieses es, als ob die Beschriftung erscheinen lässt auch war nicht in der Mitte Ihr \centering nicht an die Listing Center (sichtbar, wenn Sie nicht über die Linien unten und oben verkürzen)

Dies sollte funktionieren:..

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

Sie nicht erklären warum willst du das delimiti ng Zeilen zu sein 0.6\textwidth lang. Wenn Sie eigentlich die Breite Ihres Eintrags auf diesen Wert festlegen möchten, wird Ihr Ansatz nicht tun, was Sie wollen. Verwenden Sie etwas wie eine Minipage, um eine Breite für die gesamte Auflistung festzulegen.

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

Obwohl ich wie Akim fand, funktionierte es mit der Minipage innerhalb der zentralen Umgebung. – luketorjussen

+1

Leider funktioniert das nicht für mich. Die Auflistung wird nicht verschoben. – kaoD

+3

Die Verwendung von '\ begin {center}' hat für mich keine Auswirkung auf die Auflistung. –

4

Eigentlich, was für mich funktioniert hat, ist das Gegenteil: die Minipage in die Center-Umgebung zu setzen.

+0

Das gleiche gilt für mich auch – Cemre

19

Statt Linienbreite Sie verwenden sollten prüfen xleftmargin zu verwenden und xrightmargin (vgl texdoc listings, Kapitel 4.10). Der folgende Code funktioniert ohne Zentrum oder mini Umgebung:

\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

Erstaunlich, das ist genau das, was ich gesucht habe. In meinem Fall benutzte ich einen negativen Wert auf 'xrightmargin'so, dass ich den lslisting Rahmen umher bewegen könnte ... Danke für den Hinweis! – guipy