我正在嘗試在程式碼清單中編寫數學,如下所示:
\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 想要以雙精度結束顯示數學,因此會發出原始錯誤。$
$$
基本上,宏處理語言中的錯誤檢測通常更多的是靠運氣而不是設計。