Estou tentando escrever matemática em uma listagem de código, assim:
\documentclass{article}
\usepackage{listings}
\begin{document}
\begin[mathescape]{lstlisting}
$\infty$
\end{lstlisting}
\end{document}
Estou tendo o erro a seguir :
! Display math should end with $$.
<to be read again>
\infty
l.10 $\infty
$
?
Responder1
É um argumento para listings
não\begin
%%%%%%%%%%%%
\begin{lstlisting}[mathescape]
$\infty$
\end{lstlisting}
A razão pela qual você recebe esse erro é que o TeX permite que você omita as chaves em torno dos argumentos obrigatórios e, nesse caso, pegue o primeiro token. então
\begin[mathescape]{lstlisting}$\infty$
é
\begin{[}mathescape]{lstlisting}$\infty$
Agora, \begin
essencialmente \begingroup\csname[\endcsname
, isso é
\begingroup\[mathescape]{lstlisting}$\infty$
então \[
inicia a matemática de exibição e mathescape]{lstlisting}
é digitado como caracteres no modo de exibição matemática, então o single $
é atendido, mas o TeX deseja um duplo $$
para terminar a matemática de exibição, então emite um erro primitivo.
Basicamente, a detecção de erros em uma linguagem de processamento de macro geralmente ocorre mais por sorte do que por design.