Центральный Латекс lstlisting

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

Я хочу центрировать lstlisting в ЛАТЕКСЕ.

После 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 на центр, но не его подпись, которая идет направо. Если я вынимаю табличное, то подпись центрируется, но код идет налево!:(

Спасибо.

22
задан BrunoB 24 June 2010 в 00:05
поделиться

1 ответ

Ваша надпись фактически центрирована над листингом. Вы просто делаете линии, идущие вдоль верхней и нижней части объявления, длиной всего 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}
7
ответ дан 29 November 2019 в 04:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: