我有这样一个命令, 代码在后面. 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}
l3keys
而 l3keys
是不必要的\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}
谢谢回答. 蹩脚的 l3key 是因为我把显示选项的功能放到了同一个命令, 通过 key 来控制是否把正确答案的序号显示为红色粗体, 水平有限, 所以比较蹩脚, 慢慢学习改进.
贴一下我那完整的蹩脚 sty, 见笑了.