我使用此命令添加代码
\newcommand*{\addcode}[2]{
\lstinputlisting[caption={#1, (\detokenize{#2}.ml)}]{code/#2.ml}
}
我的一些.ml
文件包含下划线,例如Two_Opt.ml
。
因此,当我调用时,\lstlistoflistings
我收到一些错误,因为 Latex 理解我的_
索引,并且我得到了这个结果:
我怎样才能使它工作?
分数维:
\usepackage{listings}
\newcommand*{\addcode}[2]{
\lstinputlisting[caption={#1, (\detokenize{#2}.ml)}]{code/#2.ml}
}
\begin{document}
\lstlistoflistings
\addcode{2-opt}{Two_Opt}
\end{document}
答案1
您需要\protect
在脆弱的命令中使用宏。
\begin{filecontents}{Two_Opt.ml}
some code...
\end{filecontents}
\documentclass{article}
\usepackage{listings}
\newcommand*{\addcode}[2]{
\lstinputlisting[caption={#1, (\protect\detokenize{#2}.ml)}]{#2.ml}
}
\begin{document}
\lstlistoflistings
\addcode{2-opt}{Two_Opt}
\end{document}