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}
\labelwidthの値がゼロなのは\makelabelで幅ゼロの\llapを使って左にはみ出しいるから。itemizeと一貫性がありませんが。
リスト環境は考え出すと頭が混乱するので(私だけか)、各パラメータを再確認しながら値を調整しないと、無駄な時間が流れてしまいます。
コメント