我有点绝望,因为下面看似简单的宏不能满足我的要求:
\newcommand{\Ma}[1][]{\ensuremath{M_{1}^{#1}}\xspace}
Hello $\Ma{a}$.
我希望这$\Ma{a}$
会导致a
上标,但 id 却没有。这里有什么问题?
答案1
您有\newcommand{\Ma}[1][]{...
。最后一对括号表示宏有一个可选参数,默认情况下为空。#1
指的是这个可选参数。要使用可选参数,您需要\Ma[a]
。因为[
看不到,所以{a}
不会将 读作可选参数,因此只是按正常方式排版。使用\newcommand{\Ma}[1]{...
,或参见下面的示例。
按照 Ulrike 的评论,以下是有关xspace
和 的一些链接\ensuremath
:
还有一个完整的示例,其中包含两种可能的宏定义。
\documentclass{article}
\newcommand{\Ma}[1]{M_{1}^{#1}}
\newcommand{\Mb}[2][1]{M_{#1}^{#2}}
\begin{document}
$\Ma{a}, \Mb{b} \Mb[]{c} \Mb[2]{d}$.
\end{document}