Bug ou recurso do mecanismo de flutuadores

Bug ou recurso do mecanismo de flutuadores

Se eu digitar $\section{Second section}$ou

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

Recebo a mensagem de erro ! Missing $ inserted...ou! LaTeX Error: Command \item invalid in math mode.

Mas se eu compilar o código a seguir, obtenho a saída (correta), mas digamos, a saída stringe.

\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}

insira a descrição da imagem aqui

Isso é um inseto?objetos flutuantes podem ir (em qualquer lugar), por exemplo, an \itemvai antes dos itens anteriores ou pior, dentro dos itens de outro enumerate.

É um recurso?a numeração ainda está correta e pode ser necessário isso.

questão principal:por que o latex não impede que os comandos \section, \item, ... entrem em um ambiente flutuante e sabemos que, por outro lado, isso \captionnão funciona fora de ambientes flutuantes. ou seja, por que não há

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

igual a \@inmatherr.

Responder1

Existem muitas entradas incorretas que não geram uma mensagem de erro. ( \section[z]{\section{aa}}por exemplo).

\sectiondentro de um float há um erro, ele simplesmente não foi capturado pelo sistema (seria necessária uma quantidade excessiva de memória para fazer isso no momento em que o látex foi projetado).

A distinção matemática/não matemática está incorporada no tex, é muito mais fácil testar isso do que cada comando testar em todos os lugares onde não faz sentido.

Da mesma forma \captionprecisa saber que tipo de legenda fazer (armazenada internamente no \@captype) para que o teste aí seja muito mais fácil pois a definição padrão é que gera um erro, \captionapenas funciona localmente em contextos que habilitam legendas.

informação relacionada