我想定义一个带有两个可选参数的新命令,其中一个位于末尾。这有效:
\newcommand{\matr}[3]{{}_{#1}\textbf{#2}_{#3}}
\matr{b}{M}{e}
但我想这样称呼它:
\matr[b]{M}[e]
如果不需要可选括号,则省略它们。可以吗?
答案1
您想使用\NewDocumentCommand
。o
参数说明符表示没有默认值的可选参数,可以使用它进行测试\IfValueTF
(在这种情况下只需要“true”分支)。
请注意,\textbf
在这种情况下是错误的,而您想要的是\mathbf
。
\documentclass{article}
\usepackage{amsmath}
%\usepackage{xparse} % for LaTeX prior to the 2020-10-01 release
\NewDocumentCommand{\matr}{ o m o }
{%
\IfValueT{#1}{{}_{#1}\kern-\scriptspace}%
\mathbf{#2}%
\IfValueT{#3}{_{#3}}%
}
\begin{document}
$\matr{M}$
$\matr[b]{M}$
$\matr{M}[e]$
$\matr[b]{M}[e]$
\end{document}