Newcommand 带有两个可选参数,一个位于末尾

Newcommand 带有两个可选参数,一个位于末尾

我想定义一个带有两个可选参数的新命令,其中一个位于末尾。这有效:

\newcommand{\matr}[3]{{}_{#1}\textbf{#2}_{#3}}
\matr{b}{M}{e}

但我想这样称呼它:

\matr[b]{M}[e]

如果不需要可选括号,则省略它们。可以吗?

答案1

您想使用\NewDocumentCommando参数说明符表示没有默认值的可选参数,可以使用它进行测试\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}

在此处输入图片描述

相关内容