尝试更新我大学的 LaTeX 论文课程(在等待实际学位时,为了好玩)。几年来一直没动过。
无论如何,它的其中一个命令如下:
% TODO: See if the new LaTeX3 can handle this without "xstring" package
\usepackage{xstring} % Needed for "checkboxYesNo" command
\newcommand{\checkboxYesNo}[2]{
%% #1--Find This; #2--Search This List
%% Outputs a Checked or Unchecked box
\lowercase{\def\myList{#2}}%
\lowercase{\def\findMe{#1}}%
\IfSubStr{\myList}{\findMe}{\checkYes}{\checkNo}%
% \IfSubStr{\myList}{\findMe}{Yes \findMe - \myList}{No \findMe - \myList}%
}
正如您所看到的,该TODO
说明中有一条关于消除对包的依赖的评论xstring
,我不确定新的 LaTeX3 项目是否可以做到这一点。
和\checkYes
只是\checkNo
调用绘制清单中选中或未选中框的 TikZ 图片的函数。
编辑:正如 egreg 指出的那样,我忘记了例子(对不起!咖啡还没有开始……)
\checkboxYesNo{t}{iar}
或\checkboxYesNo{a}{#6}
其中是任意顺序或大写#6
的字母组合。tair
基本上,该函数会检查 #2 参数是否包含 #1 参数中的字母。如果包含,它会启动命令,\checkYes
否则它会进入导致问题的命令\checkNo
。
\IfSubStr{\myList}{\findMe}{\checkYes}{\checkNo}
编辑:添加半 MWE
\ExplSyntaxOn
\NewDocumentCommand{\checkboxYesNo}{vv}
{
\prg_generate_conditional_variant:Nnn \str_if_in:nn {ee} { TF, T, F }
\str_if_in:eeTF { \str_foldcase:n { #2 } } { \str_foldcase:n { #1 } } {Yes} {No}
}
\ExplSyntaxOff
\checkboxYesNo{a}{abc}
生产Yes
同时\checkboxYesNo{q}{abc}
返回No
答案1
类似物是expl3
\IfSubStr
\str_if_in:nnTF
但你想要不区分大小写的比较,所以你需要插入\str_foldcase:n
。因此你首先需要ee
的变体\str_if_in:nnTF
:
\prg_generate_conditional_variant:Nnn \str_if_in:nn {ee} { TF, T, F }
你可以用以下方法进行测试
\str_if_in:eeTF { \str_foldcase:n { #2 } } { \str_foldcase:n { #1 } } { \checkYes } { \checkNo }
(测试第二个参数是否是第一个参数的子字符串)。