我想定义一个命令,在引用标题时删除 .m generate_simdata.m
(我有很多这样的 matlab 函数文件,并且想正常地引用它们\nameref
(作为文件),并且在将它们作为函数而不是文件来讨论时,也引用它们而不使用文件扩展名)。我在序言中的尝试:
\usepackage{hyperref}
\usepackage{xstring}
\newcommand{\baseref}[1]{
\hyperref[#1]{\texttt{\StrBetween{\detokenize{#1}}{lst:}{.m}}}
}
在主文件中:
\baseref{lst:generate_simdata.m}
我希望它被替换为指向列表的链接,其中链接名为generate_simdata
,而generate_simdata.m
不是\nameref
。我尝试不使用\detokenize
--- 它有效,但下划线未正确解析。
在主文件的底部:
\lstinputlisting[caption=\texttt{generate\_simdata.m}, label={lst:generate_simdata.m}]{MatLab/generate_simdata.m}