30 l3 的 key 如何识别不用逗号分隔的

发布于 2022-11-10 14:33:48

我有这样一个命令, 代码在后面. mytest{A,B} 这样表明答案是 A,B, 但是我希望实现的功能是
1, 可以不区分大小写, 即 mytest{a, B} 也能看懂答案是 a,B
2, 可以省略都好, 即 mytest{bCa}, 也能看懂答案是 ABC
前者似乎可以多写几个 a.bool_set:N 这样的来做, 有更好的办法吗? 后者我不知道如何实现, 请教大佬, 非常感谢.

\documentclass{article}
\ExplSyntaxOn
\keys_define:nn {mytest}{
    A.bool_set:N = \l_choice_A_bool,
    A.initial:n = false,
    B.bool_set:N = \l_choice_B_bool,
    B.initial:n = false,
    C.bool_set:N = \l_choice_C_bool,
    C.initial:n = false,

    unknown .code:n =,
}
\NewDocumentCommand{\mytest}{m}{
    \group_begin:
    \keys_set:nn {mytest}{#1}
    \bool_if:NTF \l_choice_A_bool 
    {A}
    {}
    \bool_if:NTF \l_choice_B_bool 
    {B}
    {}
    \bool_if:NTF \l_choice_C_bool 
    {C}
    {}
    \group_end:
}
\ExplSyntaxOff
\begin{document}
\mytest{A}
\mytest{B,C}
\mytest{C,A}
\end{document}

查看更多

关注者
0
被浏览
626
芒果不盲
芒果不盲 2022-11-10
学好TiKZ和tcolorbox!
  • 为了 l3keysl3keys 是不必要的
\documentclass{article}
\ExplSyntaxOn
  \NewDocumentCommand\mytest{m}{
    \clist_map_inline:nn{A,B,C,D}{
      \exp_args:Nx\tl_if_in:nnT{\text_uppercase:n{#1}}{##1}{##1}
    }
  }
\ExplSyntaxOff
\begin{document}
\mytest{A}\par 
\mytest{B}\par 
\mytest{C,A}\par
\mytest{abc}\par 
\mytest{cABd}
\end{document}

QQ截图20221110151900.png

1 个回答

撰写答案

请登录后再发布答案,点击登录

发布
问题

分享
好友

手机
浏览

扫码手机浏览