中心乳胶lstlisting

时间:2010-06-24 00:05:37

标签: latex listings

这让我发疯了。

我想把一个名单集中在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放在中心,而不是它的标题,这是右边的。如果我取出表格,那么标题会居中,但代码会向左移动! :(

谢谢。

3 个答案:

答案 0 :(得分:24)

您应该考虑使用 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}

答案 1 :(得分: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}

您没有解释为什么您希望分隔线的长度为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}

答案 2 :(得分:4)

实际上,对我有用的是反过来的:将小型产品放在中心环境中。