如何在命令中重新定义标签?

如何在命令中重新定义标签?

我想\label用给定的命令替换每次出现的\mylabel但仅限于给定的命令内\mycommand

\documentclass{article}

\newcommand\mylabel[1]{Test}
\newcommand\mycommand[1]{#1}

\begin{document}
\mycommand{This is a \label{tag1}.}\label{tag2}
\end{document}

因此在这个例子中输出应该是This is a Test.

答案1

可以限制内的某些命令group,因此重新定义不会在组结束后“存活”,\let\label\mylabel在此处进行修复。

\label对于具有可选参数的命令的特定重新定义,请谨慎使用,例如,\label提供的 -version cleveref

之外\mycommand\label表现符合预期。

\documentclass{article}

\newcommand\mylabel[1]{Test}
\newcommand\mycommand[1]{%
  \begingroup
  \let\label\mylabel
  #1%
  \endgroup
}

\begin{document}
\mycommand{This is a \label{tag1}.}\label{tag2}
\end{document}

在此处输入图片描述

相关内容