
Si escribo $\section{Second section}$
o
\begin{enumerate}
\item first bla bla
\item second bla bla
$\item last bla bla$
\end{enumerate}
Recibo el mensaje de error ! Missing $ inserted...
o! LaTeX Error: Command \item invalid in math mode.
Pero si compilo el siguiente código, obtengo el resultado (correcto), pero digamos, un resultado de cadena.
\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}
¿Es esto un error?Los objetos flotantes pueden ir (a cualquier lugar), por ejemplo, \item
antes de los elementos anteriores o, peor aún, dentro de los elementos de otro enumerate
.
¿Es una característica?La numeración sigue siendo correcta y es posible que se necesite.
pregunta principal:por qué el látex no evita \section
que \item
los comandos entren en un entorno flotante y, a la inversa, sabemos que eso \caption
no funciona fuera de entornos flotantes. es decir, por qué no hay
\gdef\@infloaterr#1{%
\relax
\ifx\@captype\@undefined
\else
\@latex@error{Command \protect#1 inside float}
\fi}
Similar a \@inmatherr
.
Respuesta1
Hay muchas entradas incorrectas que no generan un mensaje de error. ( \section[z]{\section{aa}}
Por ejemplo).
\section
dentro de un flotador hay un error, simplemente no está atrapado por el sistema (se habría necesitado una cantidad excesiva de memoria para hacerlo en el momento en que se diseñó el látex).
La distinción entre matemáticas y no matemáticas está integrada en tex; es mucho más fácil probar eso que probar cada comando en cada lugar donde no tiene sentido.
De manera similar, \caption
necesita saber qué tipo de subtítulo crear (almacenado internamente en \@captype
) para que la prueba sea mucho más fácil ya que la definición predeterminada es que genera un error, \caption
solo funciona localmente en contextos que habilitan subtítulos.