LateX 错误:“缺少 } 插入”/“缺少 $ 插入”

LateX 错误:“缺少 } 插入”/“缺少 $ 插入”

我在使用 LateX 时遇到了问题。我使用命令\lstinputlisting将 C 源代码插入 LateX 文档中,并使用 LateX 语法注释了我的代码以插入谓词(我需要在整个代码中指定霍尔三元组)。

这是有问题的代码部分:

for(i=0; i<fact(n); i++){ //INV: $ 0 \leq i < n! $
        for(j=0; j<n; j++){ //INV2: $ 0 \leq j < n $

第二行出现错误 a"Missing } inserted"和 a "Missing $ inserted",但第一行没有出现错误(所以我猜第一行是正确的)。我真的不明白为什么,因为它们几乎完全相同,所以如果第一行有效,那么第二行也应该有效,对吗?

我尝试了几件事:

//$ INV2: 0 \leq j < n $
//$ Inv_{2}: 0 \leq j < n $
//$Inv_{2}$ : $ 0 \leq j < n $

似乎什么都没起作用。

答案1

这是我编写的 LateX 代码:

\documentclass[a4paper,10pt]{article}

\usepackage{listings}

\begin{document}

\lstset{ %
  texcl=true,
  escapeinside={//}{\^^M},
}


\lstinputlisting{src.c}

\end{document}

源码

for(i=0; i<fact(n); i++){ //INV: $ 0 \leq i < n! $  
        for(j=0; j<n; j++){ //INV2: $ 0 \leq j < n $ 

请注意,我已经使用转义字符以及选项来格式化源中的 LateX escapeinside

代码的内联版本:

\documentclass[a4paper,10pt]{article}

\usepackage{listings}

\begin{document}

 \lstset{ %
   texcl=true,
   escapeinside={//}{\^^M},
}

\begin{lstlisting}
  for(i=0; i<fact(n); i++){ //INV: $ 0 \leq i < n! $  
        for(j=0; j<n; j++){ //INV2: $ 0 \leq j < n $   
\end{lstlisting}


\end{document}

相关内容