次のようにコードリストに数学を記述しようとしています:
\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 は数式表示を終了するために倍精度浮動小数点数を必要とする$$
ため、プリミティブ エラーが発生します。
基本的に、マクロ処理言語でのエラー検出は、設計よりも運によるところが大きいです。