我正在寻找一种\DeclareMathOperator{\Operator}{Operator}
类似于 的方法来替换它\MathOperator{Operator}
。我尝试定义一个新命令\newcommand\MathOperator[1]{\DeclareMathOperator{\#1}{#1}}
,然后调用它\MathOperator{MyOperator}
,但这似乎不起作用,"Undefined control sequence."
调用时出现以下错误: $\MyOperator$
。知道我应该怎么做吗?
多谢。
答案1
我认为重新定义不是一个好主意,\DeclareMathOperator
而是应该自己制作宏来创建操作符名称。一种方法是使用etoolbox
并使用
\newcommand\myDeclareMathOperator[1]{\csdef{#1}{\operatorname{#1}}}
请注意,有些名称并不适合用作宏,例如,这个名称会让你自食恶果:\myDeclareMathOperator{span}
这个比较安全
\newcommand\myDeclareMathOperator[1]{
\ifcsundef{#1}{
\csdef{#1}{\operatorname{#1}}
}{
\PackageError{MyMacros}{#1 is already used as a macro name}{}
}
}
如果我们另外使用,xparse
我们可以支持以下*
符号:
\NewDocumentCommand\myDeclareMathOperator{ s m }{
\ifcsundef{#2}{
\csdef{#2}{
\IfBooleanTF{#1}{\operatorname*}{\operatorname}{#2}
}
}{
\PackageError{MyMacros}{#2 is already used as a macro name}{}
}
}