Ich empfehle schlicht den dokumentierten Quelltext zu \list in source2e. Tatsächlich ist von den LaTeX-Entwicklern nicht wirklich vorgesehen, dass man list direkt als Umgebung verwendet. Stattdessen definiert man sich eine abgeleitete Umgebung. Wie das geht, ist wiederum seht schön am dokumentierten Quelltext zur enumerate-Umgebung zu sehen.
Das erste Argument von \list (oder \begin{list}) ist übrigens dafür vorgesehen, die Art und Weise festzulegen, in der Einträge mit einem Label versehen werden sollen. Das zweite Argument ist für eine Reihe von Befehlen zur Änderung der horizontalen und vertikalen Ausrichtung vorgesehen. Die beiden Argumente werden zu Unterschiedlichen Zeitpunkten in der Listendefinition ausgeführt.
Beispiel enumerate:
\def\enumerate{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
So weit dient das erst einmal dazu zu klären, dass die maximale Schachtelungstiefe noch nicht überschriftten ist und der Zähler welcher Schachtelungstiefe zu verwenden ist.
\expandafter
\list
\csname label\@enumctr\endcsname
Jetzt wurde es interessant, denn das ganze bedeutet schlicht, dass \list mit einem ersten Argument aufgerufen wird. Als Argument wird dabei eine der Anweisungen \labelenumi, \labelenumii, \labelenumiii, \labelenumiv verwendet.
{\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
Hier haben wir jetzt das zweite Argument. In diesem wird gesagt, dass der Zähler \@enumctr, also \enumi, \enumii, \enumiii oder \enumiv, verwendet werden soll und wie das Label zu setzen ist. Das war schon der ganze Aufruf von \list. Der Rest
nur der Vollständigkeit halber.
Natürlich muss auch noch das Ende der Umgebung definiert werden:
\let\endenumerate =\endlist
Man hätte das auch einfach so machen können:
\newenvironment{enumerate}{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\expandafter
\list
\csname label\@enumctr\endcsname
{\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
\fi
}{\endlist}
Falls Du jetzt noch wissen willst, warum die LaTeX-Entwickler hier \list und \endlist und nicht einfach \begin{list] und \end{list} verwenden, kannst Du einmal folgendes ausprobieren:
% ACHTUNG: Dieses Beispiel _soll_ zwei Fehler produzieren!
\documentclass{minimal}
\newenvironment{BASISUMGEBUNG}{}{}
\newenvironment{UMUMGEBUNG}{%
\begin{BASISUMGEBUNG}%
}{%
\end{BASISUMGEBUNG}%
}
\newenvironment{BESSERUMGEBUNG}{%
\BASISUMGEBUNG
}{%
\ENDBASISUMGEBUNG
}
\begin{document}
\begin{UMUMGEBUNG}
Warum bekomme ich gleich eine falsche Fehlermeldung:
\end{umumgebung}
\begin{BESSERUMGEBUNG}
Warum ist hier die Fehlermeldung korrekt:
\end{besserumgebung}
\end{document}
Für alles weitere zu \list sei nun wirklich auf source2e und auf weiterführende Literatur wie den Begleiter verwiesen.
Ich empfehle schlicht den dokumentierten Quelltext zu \list in source2e. Tatsächlich ist von den LaTeX-Entwicklern nicht wirklich vorgesehen, dass man list direkt als Umgebung verwendet. Stattdessen definiert man sich eine abgeleitete Umgebung. Wie das geht, ist wiederum seht schön am dokumentierten Quelltext zur enumerate-Umgebung zu sehen.
Das erste Argument von \list (oder \begin{list}) ist übrigens dafür vorgesehen, die Art und Weise festzulegen, in der Einträge mit einem Label versehen werden sollen. Das zweite Argument ist für eine Reihe von Befehlen zur Änderung der horizontalen und vertikalen Ausrichtung vorgesehen. Die beiden Argumente werden zu Unterschiedlichen Zeitpunkten in der Listendefinition ausgeführt.
[b]Beispiel enumerate:[/b]
[code]\def\enumerate{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%[/code]
So weit dient das erst einmal dazu zu klären, dass die maximale Schachtelungstiefe noch nicht überschriftten ist und der Zähler welcher Schachtelungstiefe zu verwenden ist.
[code] \expandafter
\list
\csname label\@enumctr\endcsname[/code]
Jetzt wurde es interessant, denn das ganze bedeutet schlicht, dass \list mit einem ersten Argument aufgerufen wird. Als Argument wird dabei eine der Anweisungen \labelenumi, \labelenumii, \labelenumiii, \labelenumiv verwendet.
[code] {\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%[/code]
Hier haben wir jetzt das zweite Argument. In diesem wird gesagt, dass der Zähler \@enumctr, also \enumi, \enumii, \enumiii oder \enumiv, verwendet werden soll und wie das Label zu setzen ist. Das war schon der ganze Aufruf von \list. Der Rest
[code] \fi}[/code]
nur der Vollständigkeit halber.
Natürlich muss auch noch das Ende der Umgebung definiert werden:
[code]\let\endenumerate =\endlist[/code]
Man hätte das auch einfach so machen können:
[code]\newenvironment{enumerate}{%
\ifnum \@enumdepth >\thr@@\@toodeep\else
\advance\@enumdepth\@ne
\edef\@enumctr{enum\romannumeral\the\@enumdepth}%
\expandafter
\list
\csname label\@enumctr\endcsname
{\usecounter\@enumctr\def\makelabel##1{\hss\llap{##1}}}%
\fi
}{\endlist}[/code]
Falls Du jetzt noch wissen willst, warum die LaTeX-Entwickler hier \list und \endlist und nicht einfach \begin{list] und \end{list} verwenden, kannst Du einmal folgendes ausprobieren:
[code]% ACHTUNG: Dieses Beispiel _soll_ zwei Fehler produzieren!
\documentclass{minimal}
\newenvironment{BASISUMGEBUNG}{}{}
\newenvironment{UMUMGEBUNG}{%
\begin{BASISUMGEBUNG}%
}{%
\end{BASISUMGEBUNG}%
}
\newenvironment{BESSERUMGEBUNG}{%
\BASISUMGEBUNG
}{%
\ENDBASISUMGEBUNG
}
\begin{document}
\begin{UMUMGEBUNG}
Warum bekomme ich gleich eine falsche Fehlermeldung:
\end{umumgebung}
\begin{BESSERUMGEBUNG}
Warum ist hier die Fehlermeldung korrekt:
\end{besserumgebung}
\end{document}[/code]
Für alles weitere zu \list sei nun wirklich auf source2e und auf weiterführende Literatur wie den Begleiter verwiesen.