Estoy intentando escribir matemáticas en una lista de códigos, así:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin[mathescape]{lstlisting}
$\infty$
\end{lstlisting}
\end{document}
Obtuve el siguiente error :
! Display math should end with $$.
<to be read again>
\infty
l.10 $\infty
$
?
Respuesta1
Es un argumento para listings
no\begin
%%%%%%%%%%%%
\begin{lstlisting}[mathescape]
$\infty$
\end{lstlisting}
La razón por la que recibe ese error es que TeX le permite omitir las llaves alrededor de los argumentos obligatorios y, de ser así, toma el primer token. entonces
\begin[mathescape]{lstlisting}$\infty$
es
\begin{[}mathescape]{lstlisting}$\infty$
Ahora \begin
esencialmente \begingroup\csname[\endcsname
lo hace, esto es
\begingroup\[mathescape]{lstlisting}$\infty$
entonces \[
comienza a mostrar matemáticas y mathescape]{lstlisting}
se escribe como caracteres en el modo de visualización matemática, luego $
se cumple el sencillo pero TeX quiere un doble $$
para finalizar la visualización matemática, por lo que emite un error primitivo.
Básicamente, la detección de errores en un lenguaje de procesamiento de macros suele ser más una cuestión de suerte que de diseño.