Claim:不是很懂展开,做了一个(不一定合适)的尝试:
使用\exp_args:Nne 对参数进行e-type展开
\documentclass{exam-zh}
\newcommand{\foo}{a3paper}
% \def\foo{a3paper}
\ExplSyntaxOn
\RenewDocumentCommand \examsetup { m }{
\exp_args:Nne \keys_set:nn {exam-zh} {#1}
}
\ExplSyntaxOff
\examsetup{
page/size={\foo},%可展的key-value
sealline/show=true,%不可展的key-value
}
\begin{document}
花有重开日,人无再少年。花有重开日,人无再少年。
\end{document}
在ctex-kit中,today这一key也是由.choice定义的:

下面的mwe也有类似的问题:
\documentclass[fontset=ubuntu]{ctexart}
\def\mytodaystyle{big}
\ctexset{
today=\mytodaystyle,
}
\begin{document}
日期: \today
\end{document}! Class ctexart Error: Today format `big' is undefined.
For immediate help type H <return>.
...
l.8 }「似乎」也可以做类似的「展开」,但是l3keys默认是不进行展开的,这样做是否会造成其他的问题,我不清楚...
\documentclass[fontset=ubuntu]{ctexart}
\def\mytodaystyle{big}
\ExplSyntaxOn
\exp_args:Ne
\ctexset{
% today=big,
today=\mytodaystyle,
}
\ExplSyntaxOff
\begin{document}
日期: \today
\end{document}



















问 exam-zh文档类中如何让一个「值域固定」的键接受一个宏/命令作为值?