在命令中切换大小写

在命令中切换大小写

下面显示了 的用法\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

相关内容