声明数学运算符

声明数学运算符

我正在尝试创建一个命令来写入

\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

相关内容