先日、リストを含む証明を入力していたとき、誤って環境 (パッケージから)\item
内で、リスト環境の外で記述してしまいました。驚いたことに、LaTeX は何も文句を言わずにファイルをタイプセットしました。しかし、環境の外に出るとすぐに、LaTeX は「孤独な ''」について文句を言いました。proof
amsthm
\item
proof
\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
定理に似た環境はすべて、、、、、(およびその他)とともにリストとして実装されます。たとえば、は次flushleft
のflushright
ように定義されます。quote
quotation
center
% 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
コマンドは仮定のものです。カーネルは現在これを実行しません (既存のドキュメントが壊れる可能性があるため、実行しません)。