これは私を夢中にさせています。
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}
これにより、リストが中央に表示されますが、キャプションは表示されず、右に移動します。表形式を取り出すと、キャプションは中央に配置されますが、コードは左に移動します。 :(
ありがとうございました。
線幅を使用する代わりに、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}
キャプションは実際にはリストの中央に配置されます。リストの上部と下部に沿った行を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}
実際、私にとってうまくいったのは逆です。ミニページをセンター環境の中に置くことです。