先读 interface3.pdf,就算不全读也要读个大概,然后再用 LaTeX3。
定义和设置键值分别用 \keys_define:nn 和 \keys_set:nn。如果你用 TeXLive2023,可以用 LaTeX2e 提供的接口:\DeclareKeys 和 \SetKeys。
一般情况下,LaTeX3 的键值接口不使用空格作为单词之间的分隔符,除非需要与 pgf (tikz、tcolorbox、pgfplots 等)交互,而且空格是 ~ 不是 。如 siunitx 宏包使用 -。
% 为了避免多次加载,先使用 tl 保存起来,然后用 \AtBeginDocument 来实际加载它
\keys_define:nn { Beautybook / coverstyle }
{
cover-choose .choice: ,
cover-choose .value_required:n = true ,
cover-choose / cn .code:n =
{ \tl_gset:Nn \l__Beautybook_cover_choose_tl { \RequirePackage{...} } } ,
cover-choose / en .code:n =
{ \tl_gset:Nn \l__Beautybook_cover_choose_tl { \RequirePackage{...} } } ,
其它键
cover-choose .initial:n = cn , % 设置 cn 为初始值
}
\NewDocumentCommand \coverstyle { +m }
{
\keys_set:nn { Beautybook / coverstyle } { #1 }
}
\AtBeginDocument { \l__Beautybook_cover_choose_tl }







问 请问如何用latex3定义一个键值列表来使用不同的封面 (引入不同的宏包命令)?