일전에 목록이 포함된 증명을 입력하다가 실수로 (패키지의) 환경 \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
명령은 가상입니다. 커널은 현재 이 작업을 수행하지 않습니다(기존 문서가 손상될 수 있으므로 앞으로도 수행하지 않습니다).