web-dev-qa-db-ja.com

センターラテックスリスト

これは私を夢中にさせています。

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}

これにより、リストが中央に表示されますが、キャプションは表示されず、右に移動します。表形式を取り出すと、キャプションは中央に配置されますが、コードは左に移動します。 :(

ありがとうございました。

23
BrunoB

線幅を使用する代わりに、xleftmarginおよびxrightmarginを使用することを検討する必要があります(cf. 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}
28
user1460856

キャプションは実際にはリストの中央に配置されます。リストの上部と下部に沿った行を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}
8

実際、私にとってうまくいったのは逆です。ミニページをセンター環境の中に置くことです。

5
Akim Demaille