下面显示了 的用法\IfStrEqCase{#1}{
。但我还发现\str_case:nn
。在大小写切换中,哪种方式最合适?
虽然我熟悉,但expl3
我对使用适当的 expl3 感到困惑
\str_case:nn
\str_case:nnTF
\str_case:Nn
\str_case:NnTF
这TF
意味着该命令包含真和假分支(我可能不会使用)。
\str_case:Nn
似乎表明将使用包含文本的局部变量。会#1
构成局部变量吗?
这是一个实现
\documentclass{article}
\usepackage{xstring}
\NewDocumentCommand{\Product}{O{direct} m m}{%
\IfStrEqCase{#1}{%
{direct}{#2 \times #3}%
{tensor}{#2 \otimes #3}%
}[%
Unsupported: #1.
]%
}
\begin{document}
$\Product{a}{b}$
$\Product[direct]{a}{b}$
$\Product[tensor]{a}{b}$
$\Product[wacky]{a}{b}$
\end{document}
答案1
您想要使用\str_case:nnF
,它很像是的直接替代品\IfStrEqCase
。
在的文档中expl3
,你会发现
\str_eq:nn特遣队
(和TF
下划线部分表示“T
或” F
(或两者)可以省略。
当然你还需要进入环境expl3
,所以
\ExplSyntaxOn
\NewDocumentCommand{\Product}{O{direct} m m}
{
\str_case:nnF {#1}
{% allowed strings and actions
{direct}{#2 \times #3}
{tensor}{#2 \otimes #3}
}
{% string not recognized
Unsupported:~#1
}
}
\ExplSyntaxOff