
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}
Isso é um inseto?objetos flutuantes podem ir (em qualquer lugar), por exemplo, an \item
vai 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 \caption
nã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).
\section
dentro 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 \caption
precisa 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, \caption
apenas funciona localmente em contextos que habilitam legendas.