Ich versuche, mathematische Formeln in eine Codeliste zu schreiben, und zwar etwa so:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin[mathescape]{lstlisting}
$\infty$
\end{lstlisting}
\end{document}
Ich erhalte die folgende Fehlermeldung:
! Display math should end with $$.
<to be read again>
\infty
l.10 $\infty
$
?
Antwort1
Es ist ein Argument, listings
nicht zu\begin
%%%%%%%%%%%%
\begin{lstlisting}[mathescape]
$\infty$
\end{lstlisting}
Der Grund für diesen Fehler ist, dass TeX das Weglassen der Klammern um obligatorische Argumente erlaubt und in diesem Fall das erste Token verwendet.
\begin[mathescape]{lstlisting}$\infty$
Ist
\begin{[}mathescape]{lstlisting}$\infty$
Nun \begin
im Wesentlichen tut \begingroup\csname[\endcsname
dies also
\begingroup\[mathescape]{lstlisting}$\infty$
also \[
startet die Anzeigemathematik und mathescape]{lstlisting}
wird als Zeichen im Anzeigemathematikmodus gesetzt, dann $
wird die einfache Bedingung erfüllt, aber TeX verlangt eine doppelte Bedingung, $$
um die Anzeigemathematik zu beenden und gibt daher einen primitiven Fehler aus.
Grundsätzlich ist die Fehlererkennung in einer Makroverarbeitungssprache meist eher Glückssache als Planungssache.