先读 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定义一个键值列表来使用不同的封面 (引入不同的宏包命令)?