conTeXt Mkiv:参数数量不能超过 9 个?

conTeXt Mkiv:参数数量不能超过 9 个?

对于测试,我有一个定义:

\define[9]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9}

context test可以正常工作,当我将上述内容修改为:

\define[10]\DEFINETEST{#1,#2,#3,#4,#5,#6,#7,#8,#9,#10}

我收到一个错误:

test.tex: ! Illegal parameter number in definition of \DEFINETEST

有什么问题?谢谢!

答案1

使用键值接口。

\startluacode
userdata = userdata or { }

function userdata.define_test(args, idx) 
    args = utilities.parsers.settings_to_array(args)
    context(args[idx])
end
\stopluacode

\unprotect
\define\definetest{\dosingleempty\do_define_test}

\def\do_define_test[#1]{%
  \iffirstargument
    \def\getarg##1{\ctxlua{userdata.define_test([==[#1]==],##1)}}%
    \getarg{1}
    \getarg{5}
    \getarg{11}
  \fi
}
\protect

\starttext
\definetest[one,two,three,four,five,six,seven,eight,nine,ten,eleven,twelve]
\stoptext

enter image description here

相关内容