TeXの記憶(90) — center環境と\centerline

LaTeXでcenter環境を使うと上下にアキができます。このアキをゼロにしたいので定義を調べたら

texmf-dist/source/latex/base/ltmisen.dtxの中にありました。

\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}

\trivlist〜\endtrivlistで囲んで中を\centeringしているようです。trivlistの上下のアキは\topsepで調整できるので、アキゼロにするには

\def\center{\topsep=\z@\trivlist \centering\item\relax}

とするだけでした。

わざわざ再定義しなくても、\centeringコマンドを使ってもできるのですが、こっちは複数行を表示することができません。

定義の入っているltboxes.dtxを見ると

\def\@@line{\hb@xt@\hsize}
\def\leftline#1{\@@line{#1\hss}}
\def\rightline#1{\@@line{\hss#1}}
\def\centerline#1{\@@line{\hss#1\hss}}

となって\hboxとして作られているためでした。\leftline, \rightlineというコマンドもいっしょに定義されていますが一度も使ったことがありません。自分で\hboxを作ってしまうからかもしれません。

ちなみに \hb@xt@ はltdefns.dtxの中で

\def\hb@xt@{\hbox to}

と定義されています。

1103

コメント