答案1
我不同意 Aditya 关于 ConTeXt 中数学运算符定义方式的观点。正确的方法是定义一个数学标签文本并设置运算符来使用它。例如符号函数(非内置):
\setupmathlabeltext[sgn=sgn]
\definemathcommand[sgn][nolop]{\mfunctionlabeltext{sgn}}
该方法甚至允许使用依赖于语言的运算符标签(例如,在西班牙语中,正弦函数写为“sín”,但它已经是内置的)。
在这里,为了保留文本模式,您必须将标签文本包装到 中\text
。当然,将其定义为数学运算符没有任何意义。
\setupmathlabeltext[en][isprime=\text{is prime}]
\setupmathlabeltext[de][isprime=\text{ist prim}]
\definemathcommand[PRIME][nolop]{\mfunctionlabeltext{isprime}}
\starttext
$\{ x \in \naturalnumbers : x \PRIME \}$
\mainlanguage[de]
$\{ x \in \naturalnumbers : x \PRIME \}$
\stoptext
答案2
如果您确实想将其声明为运算符,则可以使用:
\unexpanded\def\defineNLoperator#1#2%
{\def#1{\mathop{\text{#2}}}}
然后你可以定义一个自然语言运算符
\defineNLoperator\PRIME{is prime}
完整示例:
\unexpanded\def\defineNLoperator#1#2%
{\def#1{\mathop{\text{#2}}}}
\defineNLoperator\PRIME{is prime}
\starttext
$\{ x \in \naturalnumbers : x \PRIME \}$
$a_{\{ x \in \naturalnumbers : x \PRIME \}}$
\stoptext