我希望有一个命令可以插入标题中包含文件名的列表。只要文件名中没有“_”等,这个命令就可以正常工作。
我也尝试了上一个主题中的建议(输入文件名作为列表中的标题):
\usepackage{listings}
\newcommand{\mylisting}[2][]{%
\lstinputlisting[caption={\texttt{\detokenize{#2}}},#1]{#2}%}
这很有效,但是如果我想插入listoflistings
并包含包含下划线的文件,就会失败。
\lstlistoflistings
查看该.lol
文件表明该listoflistings
命令包含以下行:
\contentsline {lstlisting}{\numberline {5.1}\texttt {test_file.cpp}}{36}{lstlisting.5.1}
我认为问题在于它不包含命令\detokenize
。
有什么建议么?
答案1
您想\protect
在前面添加\detokenize
\newcommand{\mylisting}[2][]{%
\lstinputlisting[caption={\texttt{\protect\detokenize{#2}}},#1]{#2}}
\protect
当标题在文本中排版时,该命令不会执行任何操作,但会让 LaTeX 将其不加更改地写入.lol
文件中。