我想\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}