我在使用 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}