\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\clist_map_inline:nn { aaa, bbb, ccc }
{ \exp_args:Nco \DeclareMathOperator { #1 } { #1 } }
\ExplSyntaxOff
\begin{document}
$\aaa$
$\bbb$
$\ccc$
\end{document}
我可以扩展 的参数,\DeclareMathOperator
但不能\DeclareMathOperator*
。如何扩展 的参数\DeclareMathOperator*
?
答案1
尽管人们通常说 是\DeclareMathOperator*
的变体\DeclareMathOperator
(所有此类命令都一样),但该命令只是\DeclareMathOperator
,它会提前查看是否*
跟在后面。无论您写成
\DeclareMathOperator*{\aaa}{aaa}
或者
\DeclareMathOperator *{\aaa}{aaa}
完全不重要:在 之前有两个标记{
。
因此,就您而言,您必须跳过两个令牌,而不只是一个。
\documentclass{article}
\usepackage{amsmath}
\ExplSyntaxOn
\clist_map_inline:nn { aaa, bbb, ccc }
{
\exp_args:NNc \DeclareMathOperator * { #1 } { #1 }
}
\ExplSyntaxOff
\begin{document}
\[
\aaa_{1\le i\le n} \bbb_{1\le j\le n} \ccc_{1\le k\le n}
\]
\end{document}
你只需要\exp_args:Nc
“没有星星”的部分。而且o
没用,除非您想使用宏扩展名称,但这很奇怪。