在 LaTeX2e 中有 \newcommand{\...}[num]{...}
,这种用法,\cs_generate_from_arg_count:NNnn
是对它的一个扩展。
这个函数是有用的,例如,\cs_set:Nn
可以这样定义:
先得到要定义的函数的 signature(比如:\cs_set:Npn
中的 Npn
),然后计算 signature 中的字符数,再由 \cs_generate_from_arg_count:NNnn
生成。
另一个例子是 \NewDocumentCommand
的定义。例如 \NewDocumentCommand \cs { mm } {...}
,可以看出 \cs
接受 2 个参数,直接使用 \cs_generate_from_arg_count:NNnn \cs \cs_new_protected_nopar:Npn { 2 } {...}
定义即可(当然,实际上更加复杂)。
问 LaTeX3中对 \cs_generate_from_arg_count:NNnn函数的疑惑