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

itemize環境と同じようにenumerate環境もオプション引数でインデントを変更できるようにしました。itemize環境のラベルは「・」(\bullet)だけでほとんど足りるのですが、enumerate環境のラベルは、好みによって「1.」や「(1)」が使われています。「1)」なんてのもあるかな。

どれでもいいのですが、それぞれ幅が異なるので中で混在して、さらに細かく位置を指定されると面倒ですね。とりあえず今は考えないで、インデントのみを考えることにします。

ラベルを「(1)」の形だとして作ったのが以下のマクロです。

\renewcommand{\labelenumi}{(\theenumi)}
\renewenvironment{enumerate}[1][\z@]
{\ifnum \@enumdepth >3\relax\@toodeep\else
  \advance\@enumdepth\@ne
  \edef\@enumctr{enum\romannumeral\the\@enumdepth}%
  \list{\csname label\@enumctr\endcsname}{%
    \topsep\z@
    \parskip\z@
    \itemsep\z@
    \parsep\z@
    \leftmargin#1 \advance\leftmargin 1.5zw
    \labelwidth0zw
    \labelsep1zw
    \itemindent1zw
    \listparindent1zw
    \usecounter{\@enumctr}%
    \def\makelabel##1{\hss\llap{##1}}}%
  \fi}{\endlist}
\begin{enumerate}
\item □□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□□\par
□□□□□□□□□□□□□□□□□□□□
\item □□□□□□□□□□□□□□□□□□□□
\end{enumerate}

\begin{enumerate}[1zw]
\item □□□□□□□□□□□□□□□□□□□□
...

\end{enumerate}

0827

\labelwidthの値がゼロなのは\makelabelで幅ゼロの\llapを使って左にはみ出しいるから。itemizeと一貫性がありませんが。

リスト環境は考え出すと頭が混乱するので(私だけか)、各パラメータを再確認しながら値を調整しないと、無駄な時間が流れてしまいます。

0827tex-list-env

コメント