我正在用多种编程语言编写报告。目前,我正在尝试包含一个 Makefile。
当我做:
\lstinputlisting[language=make]{./Kodeeksempler/makefile}
在 texmaker 中使用 texlive 进行编译时出现以下错误:
! Missing $ inserted.
<inserted text>
$
l.22 ]{./Kodeeksempler/makefile}
有问题的 makefile 的第 22 行包含以下内容:
BUILD_DIR=build/host
.. 所以我知道错误消息是错误的,因为应该能够正常显示。任何帮助都将不胜感激。当我尝试定期在 makefile 周围进行 lstlisting 时,也会发生同样的情况,如下所示:
\begin{lstlisting}
clean:
$(RM) ./build
$(RM) ./bin
@echo "Static libraries persist in ./lib"
${BUILD_DIR}/%.d: %.cpp
$(CXX) -MT ${BUILD_DIR}/$(@:.d=.o) -MM $(CXXFLAGS) $^ > $@
-include $(DEPS)
\end{lstlisting}
编辑:
我似乎已经缩小了错误发生的范围:
-include $(DEPS)
当我删除它时,lstlisting 将它很好地包含在内。
编辑2:这是我在序言中使用的 lstset:
\lstset{language=make, % Sprog
basicstyle=\ttfamily\scriptsize, % Opsaetning af teksten
keywords={for,if,while,else,elseif, % Noegleord at fremhaeve
end,break,return,case,
switch,function},
keywordstyle=\color{blue}, % Opsaetning af noegleord
commentstyle=\color{commentGreen}, % Opsaetning af kommentarer
stringstyle=\color{stringPurple}, % Opsaetning af strenge
showstringspaces=false, % Mellemrum i strenge enten vist eller blanke
numbers=left, numberstyle=\tiny, % Linjenumre
extendedchars=true, % Tillader specielle karakterer
columns=flexible, % Kolonnejustering
breaklines, breakatwhitespace=true, % Bryd lange linjer
}
我注意到,即使我省略了 makefile 的最后一部分,它似乎仍然有效。
编辑3:
所以我找到了问题!显然 @ 键被用作 C 代码的旧 lstset 的转义字符,并且由于合并冲突而重新出现。序言中的第 199 行包含以下内容:
\lstset{escapechar=@,style=customc}
我删除了它,现在它正常工作了。感谢大家的耐心。