Ошибка «Отображение математических выражений должно заканчиваться на $$»

Ошибка «Отображение математических выражений должно заканчиваться на $$»

Я пытаюсь записать математику в листинге кода, вот так:

\documentclass{article}
\usepackage{listings}
\begin{document}

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

\end{document}

Я получаю следующую ошибку:

! Display math should end with $$.
<to be read again> 
                   \infty 
l.10 $\infty
            $
? 

решение1

Это аргумент listingsпротив того, чтобы\begin

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

Причина, по которой вы получаете эту ошибку, заключается в том, что TeX позволяет вам опускать скобки вокруг обязательных аргументов, и в этом случае берет первый токен. поэтому

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

является

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

Теперь \beginпо сути \begingroup\csname[\endcsnameтак и есть

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

поэтому \[начинает отображать математику и mathescape]{lstlisting}получает набор символов в режиме отображения математики, затем $встречается одинарная цифра, но TeX хочет, чтобы двойная цифра $$завершила отображение математики, поэтому выдает примитивную ошибку.

По сути, обнаружение ошибок в языке обработки макросов — это скорее удача, чем задумка.

Связанный контент