「表示数式は $$ で終わる必要があります」エラー

「表示数式は $$ で終わる必要があります」エラー

次のようにコードリストに数学を記述しようとしています:

\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 は数式表示を終了するために倍精度浮動小数点数を必要とする$$ため、プリミティブ エラーが発生します。

基本的に、マクロ処理言語でのエラー検出は、設計よりも運によるところが大きいです。

関連情報