这是一个用于生成向量长度符号的宏。强制参数m
接收向量符号,可选参数o
接收应添加为下标的任何内容(如果需要)。但是,下标符号似乎不起作用,因为下面的 MWE 将下标打印为等式中的普通字符。下划线字符是否被识别为其自己的字符而不是xparse
命令中的运算符?
\documentclass[10pt]{article}
\usepackage{amsmath,xparse}
\newcommand{\abs}[1]{\ensuremath{\lvert #1 \rvert}}
\ExplSyntaxOn
\NewDocumentCommand \len { m o } {
\IfNoValueTF{#2} {
\ensuremath{\abs{\vec{#1}}}
} {
\ensuremath{\abs{\vec{#1}_{#2}}}
}
}
\ExplSyntaxOff
\begin{document}
\[ \len{f}[\text{s.max}]=\mu_s\len{F}[N] \]
\end{document}
我宁愿不使用该t_
参数。无论如何,除了下标之外,我不会将可选参数用于任何其他用途,而且_
每次编写下标时添加都是不必要的_
。
答案1
正如上面的注释所述,expl3
语法对下划线符号具有特殊含义,因此需要_
使用宏。\sb{...}