証明環境で \item が許可されるのはなぜですか?

証明環境で \item が許可されるのはなぜですか?

先日、リストを含む証明を入力していたとき、誤って環境 (パッケージから)\item内で、リスト環境の外で記述してしまいました。驚いたことに、LaTeX は何も文句を言わずにファイルをタイプセットしました。しかし、環境の外に出るとすぐに、LaTeX は「孤独な ''」について文句を言いました。proofamsthm\itemproof\item

このコードはエラーになります

\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
Some text
\end{proof}
\item
\end{document}

このコードは

\documentclass{article}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\item
Some text
\end{proof}
\end{document}

何が起きてる?

答え1

center定理に似た環境はすべて、、、、、(およびその他)とともにリストとして実装されます。たとえば、は次flushleftflushrightように定義されます。quotequotationcenter

% latex.ltx, line 3965:
\def\center{\trivlist \centering\item\relax}
\def\endcenter{\endtrivlist}

そして

\begin{center}
something
\item
\end{center}

は (一般的なリストが基づく基本環境である)\itemで許可されているため、エラーは発生しませんが、結果はおかしくなります。trivlist

これは、これらの環境内のリストが適切に機能することを保証するために行われます。 も でproof定義されますtrivlist

それかもしれない\itemこのような環境では、 trivlistの正しい意味を復元することで、 を許可しないようにすることができます\item

\def\center{\trivlist \centering\item\relax\let\item\@itemerr}
\def\endcenter{\endtrivlist}

trivlist次のようなコードをコードに追加する

\let\item\@defaultitem

ここで、\@itemerrおよび\@defaultitemコマンドは仮定のものです。カーネルは現在これを実行しません (既存のドキュメントが壊れる可能性があるため、実行しません)。

関連情報