Neulich habe ich einen Beweis mit einer Liste getippt und dabei versehentlich \item
innerhalb der proof
Umgebung (aus dem amsthm
Paket) geschrieben, aber außerhalb einer Listenumgebung. Zu meiner Überraschung hat LaTeX die Datei ohne Beanstandung gesetzt! Aber sobald ich \item
die proof
Umgebung verließ, beschwerte sich LaTeX über ein „einsames \item
“ .
Dieser Code gibt also einen Fehler aus
\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
Some text
\end{proof}
\item
\end{document}
während dieser Code nicht
\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\item
Some text
\end{proof}
\end{document}
Was ist denn hier los?
Antwort1
Alle theoremähnlichen Umgebungen sowie center
, flushleft
, flushright
, quote
, quotation
(und einige andere) werden als Listen implementiert. Beispielsweise center
ist definiert durch
% latex.ltx, line 3965:
\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}
Und
\begin{center}
something
\item
\end{center}
würde keinen Fehler auslösen, da \item
es zulässig ist trivlist
(das ist die grundlegende Umgebung, auf der allgemeine Listen basieren), aber das Ergebnis wäre komisch.
Dies wird getan, um sicherzustellen, dass Listen in diesen Umgebungen ordnungsgemäß funktionieren. proof
Wird auch mit definiert trivlist
.
Eskönnte\item
in solchen Umgebungen nicht erlaubt sein , indem man trivlist
die korrekte Bedeutung für wiederherstellt \item
. Etwas wie
\def\center{\trivlist \centering\item\relax\let\item\@itemerr}
\def\endcenter{\endtrivlist}
und Hinzufügen von Code zum trivlist
Code wie
\let\item\@defaultitem
wobei die Befehle \@itemerr
und \@defaultitem
hypothetisch sind. Der Kernel tut dies derzeit nicht (und wird es auch nicht tun, da dies bestehende Dokumente beschädigen könnte).