TeXの記憶(25) — itemize環境のデフォルトインデントを変更する

itemize環境の左側のインデントはデフォルトで値が決まってしまいますが、その場ごとにで調整したい、というための修正です。

LaTeXのオプション引数を使って、何も指定しなければデフォルトのインデントを特別に指定したいときは、オプションで指定する、というように設定しました。

デフォルト

\begin{itemize}
\item ...

インデントを指定するとき

\begin{itemize}[1zw]
\item ...

0826

\renewenvironment{itemize}[1][\z@]
  {\ifnum \@itemdepth >\thr@@\@toodeep\else
   \advance\@itemdepth\@ne
   \edef\@itemitem{labelitem\romannumeral\the\@itemdepth}%
   \expandafter
   \list{\csname \@itemitem\endcsname}{%
     \ifnum \@itemdepth=1 \topsep.5\baselineskip \else \topsep\z@ \fi
%
     \leftmargin #1 \advance\leftmargin 1zw
     \labelwidth1zw
     \labelsep\z@
%
     \parskip\z@
     \itemsep\z@
     \parsep\z@
     \listparindent=1zw
     \def\makelabel##1{\hss\leavevmode\hbox to 1zw{\hss ##1\hss}\hss}}%
   \fi}{\endlist}

itemizeはlist環境を使ってできています。list環境のインデントは\leftmarginの値で変化するので、この値を引数で変更できるようにすればいいでしょう。

このitemize環境では先頭の「・」を全角文字文になるようにしました。「・」の幅が\labelwidthでラベルである「・」に続くテキストとの間隔はゼロ(\labelsep)になっています。

list環境のパラメーラではこのままだと左に突き出してしまうので

\advance\leftmargin 1zw

でテキスト領域の左端に戻しています。

ちなみに、最後のほうの\listparindentは、1つの\itemの項目の中で新しい段落が始まるときのインデントです。

次回は、enumerate環境も同じ方法でやってみたいと思います。

コメント

  1. […] 以前、(25) — itemize環境のデフォルトインデントを変更する、(26) — enumerate環境のデフォルトインデントを変更するで紹介した環境のインデントのdescriptionとquote版です。 […]