“显示数学符号应以 $$ 结尾”错误

“显示数学符号应以 $$ 结尾”错误

我正在尝试在代码列表中写入数学运算,如下所示:

\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 想要双数$$来结束显示数学因此发出原始错误。

基本上,宏处理语言中的错误检测通常更多是靠运气而不是设计。

相关内容