我正在尝试创建一个命令来显示规范:
\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]