在 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函数的疑惑