증명 환경에서 \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, 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명령은 가상입니다. 커널은 현재 이 작업을 수행하지 않습니다(기존 문서가 손상될 수 있으므로 앞으로도 수행하지 않습니다).

관련 정보