“Display math should end with $$” error I'm trying to write math in a code listing, like so : \documentclass{article} \usepackage{listings} \begin{document} \begin[mathescape]{lstlisting} \infty \end{lstlisting} \end{document}  I get the following error : ! Display math should end with$$.
\infty
l.10 $\infty$
?

-

It is an argument to listings not to \begin

                  %%%%%%%%%%%%
\begin{lstlisting}[mathescape]
$\infty$
\end{lstlisting}


The reason that you get that error is that TeX allows you to omit the braces around mandatory arguments, and if so takes the first token. so

\begin[mathescape]{lstlisting}$\infty$


is

\begin{[}mathescape]{lstlisting}$\infty$


Now \begin essentially does \begingroup\csname[\endcsname so this is

\begingroup\[mathescape]{lstlisting}$\infty$


so \[ starts display math and mathescape]{lstlisting} gets typeset as characters in display math mode, then the single $ is met but TeX wants a double $\$ to end display math so issues a primitive error.

Basically error detection in a macro processing language is usually more by luck than design.

-
Thanks ! You must admit the error message wasn't really helpful... –  otibom Apr 9 '13 at 8:48
@otibom actually the reason you get that error is quite funny (if it is not your document:-) I'll put a breakdown in the answer. –  David Carlisle Apr 9 '13 at 8:50