2010-06-24 2 views
20

Это сводит меня с ума.Центр Латекс lstlisting

Я хочу центрировать lstlisting в LaTeX.

Через 3 часа пытающегося Вот код:

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

Это ставит lstlisting по центру, но не его подпись, которая идет вправо. Если я вытащил табличку, то заголовок центрируется, но код идет влево! :(

Спасибо.

+4

Просто думал, что я упомянуть [предложение LaTeX StackExchange] (http://area51.stackexchange.com/proposals/2148/tex-latex-and- друзья? referrer = 5z6F4dAmVScN5QfMOt5KEg2), так как однажды это взлетит, это будет лучшее место для таких вопросов. –

ответ

7

Ваш заголовок фактически по центру над листинга. Вы просто сделать линии, которые проходят вдоль верхней и нижней части списка только 0.6\textwidth долго. Это делает вид, как будто подписи была смещена от центра Кроме того, ваш \centering не центрировать список (видно, если вы не укоротить строки ниже и выше)

Это должно работать:..

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

вы не объясняют почему вы хотите делимитировать ng линий 0.6\textwidth длинный. Если вы действительно хотели установить ширину вашего листинга для этого значения, ваш подход не сделает то, что вы хотите. Используйте что-то вроде мини-диска, чтобы установить ширину для всего списка.

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

Несмотря на то, что, как и Аким, я нашел, что он работал с мини-файлом в центральной среде. – luketorjussen

+1

К сожалению, это не работает для меня. Листинг не будет двигаться. – kaoD

+3

Использование '\ begin {center}' не имеет никакого эффекта для централизации списка. –

4

На самом деле, что для меня работало, это обратное: помещение мини-диска внутри центральной среды.

+0

То же самое для меня тоже – Cemre

19

Вместо того, чтобы использовать ширину линии вам следует рассмотреть возможность использования xleftmargin и xrightmargin (см texdoc listings, гл 4,10). Следующий код работает без какого-либо центра или мини-страницы среды:

\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

Удивительно, это именно то, что я искал. В моем случае я использовал отрицательное значение на 'xrightmargin'so, я мог бы перемещать рамку lslisting вокруг ... Спасибо за подсказку! – guipy

Смежные вопросы