上标根本不愿意被上标

上标根本不愿意被上标

我有点绝望,因为下面看似简单的宏不能满足我的要求:

\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}

相关内容