xstring 开关默认参数错误

xstring 开关默认参数错误

我正在尝试创建一个命令来显示规范:

\documentclass{article}
\usepackage{amsmath}
\usepackage{xparse}
\usepackage{xstring}

\NewDocumentCommand \norm {d<> g} {
    \left\lVert
    \IfNoValueTF{#2} {
        \cdot
    }{
        #2
    }
    \right\rVert
    \IfValueT{#1} {
        _{
        \IfStrEqCase{#1} {
            {u}{\mathrm u}
        }[#1]
        }
    }
}

% Test code
\begin{document}
\[ \norm{f},\norm<u>{g},\norm<2>{F\cdot}
\]
\end{document}

结果应该是:||f||, ||g||_u, ||F.||_2

第三种情况,\norm<2>{...}调用用作下标的默认参数2,但是出现错误:

@xs@testcase has an extra }

答案1

解决方案:

在一份IfStrEqCase声明中:

\IfStrEqCase{Val}{{k1}{v1}...{kn}{vn}}[default]

{vn}最后一个值和括起来的花括号之间不应该有空格/换行符}[default]

相关内容