Fehler oder Funktion des Float-Mechanismus

Fehler oder Funktion des Float-Mechanismus

Wenn ich tippe $\section{Second section}$oder

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

Ich erhalte die Fehlermeldung ! Missing $ inserted...oder! LaTeX Error: Command \item invalid in math mode.

Aber wenn ich den folgenden Code kompiliere, erhalte ich die (korrekte) Ausgabe, sagen wir aber eine String-Ausgabe.

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

Bildbeschreibung hier eingeben

Ist das ein Fehler?Schwebende Objekte können (überall hin) gehen, z. B. \itemsteht ein vor vorhergehenden Elementen oder, schlimmer noch, innerhalb der Elemente eines anderen enumerate.

Ist es ein Feature?Nummerierung noch korrekt, und das kann man brauchen.

Hauptfrage:warum Latex nicht verhindert , dass \section, \item, ...-Befehle in eine Float-Umgebung gelangen, und wir wissen, dass dies umgekehrt \captionaußerhalb von Float-Umgebungen nicht funktioniert. d. h. warum gibt es keine

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

ähnlich zu \@inmatherr.

Antwort1

Es gibt viele falsche Eingaben, die keine Fehlermeldung erzeugen ( \section[z]{\section{aa}}zum Beispiel).

\sectioninnerhalb eines Floats liegt ein Fehler vor, er wird vom System lediglich nicht abgefangen (zum Zeitpunkt der Entwicklung von Latex hätte dies unverhältnismäßig viel Speicher in Anspruch genommen).

Die Unterscheidung zwischen mathematischen und nicht-mathematischen Werten ist in Tex integriert; es ist viel einfacher, dies zu testen, als bei jedem Befehl jede Stelle zu testen, an der es keinen Sinn ergibt.

Ebenso \captionmuss bekannt sein, welche Art von Untertitel erstellt werden soll (intern in gespeichert \@captype), sodass der Test dort viel einfacher ist, da die Standarddefinition vorsieht, dass ein Fehler generiert wird. \captionFunktioniert nur lokal in Kontexten, die Untertitel aktivieren.

verwandte Informationen