将输入解析为 \newcommand

将输入解析为 \newcommand

我想定义一个命令,在引用标题时删除 .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}

相关内容