\newcommand 中的带下标和上标的可选参数

\newcommand 中的带下标和上标的可选参数

我想定义一个带有可选参数的宏,该宏将在数学模式下与上标和下标一起使用。例如\binaryB{\alpha}将导致\mathbb{B}^{\alpha})并且\binaryB将导致简单\mathbb{B})。

我已经定义我的宏如下: \newcommand*{\binaryB}[1][]{\mathbb{B}^{#1}}

但不幸的是,上标不起作用。它显示为:

这里我遗漏了什么吗?

答案1

  • {实际上,由和分隔的可选参数}破坏了(la)tex 约定,因此强烈不推荐。
  • 从技术上讲,所需的语法可以实现为:
\documentclass{article}
\usepackage{amsfonts}

\makeatletter
\newcommand{\binaryB}{
  \mathbb{B}
  \@ifnextchar\bgroup{\sp}{}
}
\makeatother

\begin{document}
\[
  \binaryB \qquad \binaryB{\alpha}
\]
\end{document}

使用xparse包,可以将相同的命令定义为

\NewDocumentCommand \binaryB {g}
  {
    \mathbb{B}\IfValueT{#1}{\sp{#1}}
  }

请注意,g-type 参数被标记为已弃用。

相关内容