格式化 \label 参数

格式化 \label 参数

我想在将参数传递给之前自动格式化它\label;我试过弄乱扩展等,但我没有弄清楚。如果能快速提示我将不胜感激,谢谢!

平均能量损失(抛出Missing \endcsname insertedExtra \endcsname错误):

\documentclass{article}

\begin{document}

\section{Section}\label{\MakeLowercase{Some Text}}

See \ref{some text}.

\end{document}

答案1

你可以使用

\newcommand{\mycmd}[1]{\section{#1}\lowercase{\label{#1}}} 

然而,这会将内部标签与排版部分标题绑定。

从技术层面上讲,如果章节标题包含任何不允许的内容(\csname例如数学或换行符\lowercase),它将失败。可以使用比 expl3 文本函数更复杂的函数来避免这些问题,但更概念性的问题是,这失去了它\label应该是作者选择的内部 ID 的意义,即使文档被编辑并且章节顺序改变或标题被编辑,它也能实现稳定的交叉引用。

答案2

这里,\speclabel{}将采用其参数,删除所有命令序列、空格和组,并对剩余部分的小写版本进行标签。

\documentclass{article}
\usepackage{tokcycle}
\newcommand\speclabel[1]{\protect\speclabelaux{#1}}%
\newcommand\speclabelaux[1]{%
  \tokcycle{\addcytoks{##1}}{}{}{}{#1}%
  \expandafter\lowercase\expandafter{\expandafter\label\expandafter{\the\cytoks}}%
}
\begin{document}
\section{My Section\speclabel{My Section}}

\subsection{My $\beta$ Subsection for \today%
 \speclabel{My $\beta$ Subsection for \today}}

In section \ref{mysection} and subsection \ref{my$$subsectionfor}
\end{document}

在此处输入图片描述

相关内容