我正在尝试创建一个命令来写入
\declaremathoperator{ABC}
要得到
\def\ABC{\operatorname{ABC}}
我尝试实现它
\def\declaremathoperator#1
{ \def\csname #1\endcsname{\operatorname{#1}} }
但它不起作用:Use of \csname doesn't match its definition.
在我看来,如果存在解决方案,则应该基于书写\#1
,但同时让 TeX 首先进行替换#1
,然后才开始将其视为\
命令名称的开头。
答案1
您的收益
\DeclareMathOperator{\ABC}{ABC}
非常少。建议的定义是非常危险。如果它有效,你可以说
\declaremathoperator{span}
并销毁您的文件。您可以这样做
\newcommand{\newmathoperator}[1]{%
\expandafter\DeclareMathOperator\csname #1\endcsname{#1}%
}
\newmathoperator{ABC}
\newmathoperator{span}% <--- would give error
如果建议的命令已有定义,它将发出警告。\expandafter
是必需的,因此\DeclareMathOperator
会看到您要定义的控制序列,而不是\csname
。