Центр латексного листинга - PullRequest
22 голосов
/ 24 июня 2010

Это сводит меня с ума.

Я хочу разместить листинг в 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}

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

Спасибо.

Ответы [ 3 ]

25 голосов
/ 11 октября 2013

Вместо использования ширины линии вы должны использовать 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}
7 голосов
/ 24 июня 2010

Ваш заголовок фактически сосредоточен над списком.Вы просто делаете линии, идущие вдоль верхней и нижней части вашего списка, длиной всего 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}

Вы не делаетеобъясните, почему вы хотите, чтобы разделительные линии были длиной 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}
4 голосов
/ 22 января 2011

На самом деле, у меня сработало обратное: поместить министраницу в центр среды.

...