自动创建标签的分段命令

自动创建标签的分段命令

我正在尝试定义一个自定义部分命令,该命令在经过一些预解析后还将定义相应的标签。具体来说,我希望该命令定义具有给定名称的部分,然后定义一个名称小写且空格替换为破折号的标签。

到目前为止,我已经想到了以下方法:

\NewDocumentCommand\startSection{m}
{
  \section{#1}\label{\lowercase{\StrSubstitute{#1}{ }{-}}}
}

它使用xstringxparse包,但这会产生错误:

! Argument of \@sect has an extra }.

经过一番尝试后,我得到:

! Missing \endcsname inserted

围绕\lowercase命令。

我似乎缺少一些关于标签如何工作的基本知识,所以有人有什么好的建议吗?

答案1

\usepackage{xstring}
\newcommand{\startSection}[1]{%
  \lowercase{\def\templabel{#1}}%
  \StrSubstitute{\templabel}{ }{-}[\templabel]
  \section{#1}\label{\templabel}}

\StrSubstitute和命令\lowercase不可扩展,因此您\label找不到任何适合它的东西。您必须\lowercase先将 ,然后将\StrSubstitute,最后将字符串输入\label

然而,这只是一个练习:如果章节标题中有重音字母或命令,这个命令可能会中断。

相关内容