수레 메커니즘의 버그 또는 기능

수레 메커니즘의 버그 또는 기능

내가 입력 $\section{Second section}$하거나

\begin{enumerate}
\item first bla bla 
\item second bla bla
$\item last bla bla$
\end{enumerate}

오류 메시지가 나타납니다 ! Missing $ inserted....! LaTeX Error: Command \item invalid in math mode.

그러나 다음 코드를 컴파일하면 (올바른) 출력을 얻지만 문자열 출력을 얻습니다.

\documentclass{article}
\usepackage{lipsum}

\begin{document}
\section{First section}
\lipsum[1]
\begin{table}
\section{Second section}
\caption{Just a table}
\end{table}
\begin{enumerate}
\item first bla bla
\item second bla bla
\begin{table}
\item last bla bla
\caption{Just a table}
\end{table}
\end{enumerate}
\section{Last section}
\lipsum[1]

\end{document}

여기에 이미지 설명을 입력하세요

이것은 버그인가요?떠다니는 객체는 (어느 곳이든) 갈 수 있습니다. 예를 들어 \item이전 항목보다 먼저 가거나 다른 항목 내에서 더 나쁘게 갈 수 있습니다 enumerate.

기능인가요?번호 매기기는 여전히 정확하며 이것이 필요할 수 있습니다.

주요 질문:\section라텍스가 ,, ... 명령이 부동 환경 내부로 들어가는 것을 방지하지 못하는 이유는 무엇 이며, 반대로 부동 환경 외부에서는 작동하지 않는다는 \item것을 알고 있습니다 . \caption즉 왜 없지?

\gdef\@infloaterr#1{%
   \relax
   \ifx\@captype\@undefined
   \else
 \@latex@error{Command \protect#1  inside float}
   \fi}

비슷하다 \@inmatherr.

답변1

오류 메시지를 생성하지 않는 잘못된 입력이 많이 있습니다. ( \section[z]{\section{aa}}예를 들어).

\sectionfloat 내부의 오류는 시스템에 의해 트랩되지 않은 오류입니다(라텍스가 설계된 시점에서 그렇게 하려면 불합리한 양의 메모리가 필요했을 것입니다).

수학/비수학 구분은 tex에 내장되어 있습니다. 모든 명령이 말이 안되는 모든 위치를 테스트하는 것보다 이를 테스트하는 것이 훨씬 쉽습니다.

마찬가지로 \caption만들 캡션 유형( 내부적으로 저장됨)을 알아야 하므로 기본 정의에서는 오류를 생성하고 캡션을 활성화하는 컨텍스트에서 로컬로 작동하므로 \@captype테스트가 훨씬 쉽습니다 .\caption

관련 정보