![在列表标题中插入文件名的命令](https://linux22.com/image/263497/%E5%9C%A8%E5%88%97%E8%A1%A8%E6%A0%87%E9%A2%98%E4%B8%AD%E6%8F%92%E5%85%A5%E6%96%87%E4%BB%B6%E5%90%8D%E7%9A%84%E5%91%BD%E4%BB%A4.png)
我希望有一个命令可以插入标题中包含文件名的列表。只要文件名中没有“_”等,这个命令就可以正常工作。
我也尝试了上一个主题中的建议(输入文件名作为列表中的标题):
\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
文件中。