我想定义一个带有可选参数的宏,该宏将在数学模式下与上标和下标一起使用。例如\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 参数被标记为已弃用。