TeX/list

Last-modified: 2014-06-14 (土) 00:17:47
\def\list#1#2{%
  \ifnum \@listdepth >5\relax
    \@toodeep
  \else
    \global\advance\@listdepth\@ne
  \fi

\list environment を繰り返すと \@toodeep によりエラー.

\gdef\@toodeep{%
  \@latex@error{Too deeply nested}\@ehd}

以下は、あとで左に空白一つ追加

 \rightmargin\z@
 \listparindent\z@
 \itemindent\z@
 \csname @list\romannumeral\the\@listdepth\endcsname
 \def\@itemlabel{#1}%
 \let\makelabel\@mklab
 \@nmbrlistfalse
 #2\relax
 \@trivlist
 \parskip\parsep
 \parindent\listparindent
 \advance\linewidth -\rightmargin
 \advance\linewidth -\leftmargin
 \advance\@totalleftmargin \leftmargin
 \parshape \@ne \@totalleftmargin \linewidth
 \ignorespaces}

\newcount\par@deathcycles
\def\@trivlist{%

 \if@noskipsec \leavevmode \fi
 \@topsepadd \topsep
 \ifvmode
   \advance\@topsepadd \partopsep
 \else
   \unskip \par
 \fi
 \if@inlabel
   \@noparitemtrue
   \@noparlisttrue
 \else
   \if@newlist \@noitemerr \fi
   \@noparlistfalse
   \@topsep \@topsepadd
 \fi
 \advance\@topsep \parskip
 \leftskip \z@skip
 \rightskip \@rightskip
 \parfillskip \@flushglue
 \par@deathcycles \z@
 \@setpar{\if@newlist
            \advance\par@deathcycles \@ne
            \ifnum \par@deathcycles >\@m
              \@noitemerr
              {\@@par}%
            \fi
          \else
            {\@@par}%
          \fi}%
 \global \@newlisttrue
 \@outerparskip \parskip}

\def\trivlist{%

 \parsep\parskip
 \@nmbrlistfalse
 \@trivlist
 \labelwidth\z@
 \leftmargin\z@
 \itemindent\z@
 \let\@itemlabel\@empty
 \def\makelabel##1{##1}}

\def\endlist{%

 \global\advance\@listdepth\m@ne
 \endtrivlist}

\def\endtrivlist{%

 \if@inlabel
   \leavevmode
   \global \@inlabelfalse
 \fi
 \if@newlist
   \@noitemerr
   \global \@newlistfalse
 \fi
 \ifhmode\unskip \par\fi
 \if@noparlist \else
   \ifdim\lastskip >\z@
     \@tempskipa\lastskip \vskip -\lastskip
     \advance\@tempskipa\parskip \advance\@tempskipa -\@outerparskip
     \vskip\@tempskipa
   \fi
   \@endparenv
 \fi

}