Warum ist \item in Proofumgebungen zulässig?

Warum ist \item in Proofumgebungen zulässig?

Neulich habe ich einen Beweis mit einer Liste getippt und dabei versehentlich \iteminnerhalb der proofUmgebung (aus dem amsthmPaket) geschrieben, aber außerhalb einer Listenumgebung. Zu meiner Überraschung hat LaTeX die Datei ohne Beanstandung gesetzt! Aber sobald ich \itemdie proofUmgebung 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 centerist 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 \itemes 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. proofWird auch mit definiert trivlist.

Eskönnte\itemin solchen Umgebungen nicht erlaubt sein , indem man trivlistdie 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 trivlistCode wie

\let\item\@defaultitem

wobei die Befehle \@itemerrund \@defaultitemhypothetisch sind. Der Kernel tut dies derzeit nicht (und wird es auch nicht tun, da dies bestehende Dokumente beschädigen könnte).

verwandte Informationen