我使用这个宏将 Matlab 代码包含在我的文档中:
\newrobustcmd{\inputmatlabcode}[1]{\lstinputlisting[basicstyle={\scriptsize \ttfamily}, caption=#1, language = matlab]{#1}}
当我尝试包含名称中带有下划线的代码文件时,它会失败。我看到这个问题但由于我在标题和列表参数中都引用了文件名,因此只需要在标题中转义下划线。
我认为该underscore
包会破坏我的其余文档,所以我尽量避免使用它。
答案1
也许你不需要underscore
包。你可以使用\detokenize
它来正确处理下划线:
如果你hello_world.m
在工作目录中创建了一个包含几行内容的文件,那么这里就是一个 MWE(同时我想提醒你在提问时附上一个 MWE):
\documentclass{article}
\usepackage{listings}
\newcommand\inputmatlabcode[1]{
\lstinputlisting[
basicstyle={\scriptsize\ttfamily},
caption=\detokenize{#1},
language=matlab
]{#1}
}
\begin{document}
\inputmatlabcode{hello_world.m}
\end{document}