懒惰的乳胶:如何在没有括号中映射参数的情况下使用'^'和'_'

懒惰的乳胶:如何在没有括号中映射参数的情况下使用'^'和'_'

例如

$G^\times$

这里我们不需要写花括号,就像

$G^{\times}$

必须向新声明的命令添加什么内容,例如

\newcommand{\foo}{\ensuremath \times\ast 2}

以便

$G^\foo$

结果是相同的

$G^{\foo}$

谢谢

答案1

您可以通过加倍外括号来“保护”要在下标或上标中使用的字符串;当定义被“内化”时,只有最外面的一对括号会被剥离。因此

\newcommand{\foo}{{\ensuremath \times\ast 2}}

就会达到预期的效果。

然而:

  • \ensuremath如果您总是要在下标/上标中使用它,那么您真的不需要它。

  • 从输入来看,它并不那么“信息丰富”,因为它不明显是\foo一个复合对象。在使用时省略括号会使人摆脱使用括号的习惯,这可能会使人陷入先前存在的“未受保护”的复合定义的麻烦,例如\neq,定义为\def\neq{\not=}fontmath.lts从中继承plain.tex)。

编辑:<0op 的评论指出,这在“将或 设置为上标时”不起作用。这是真的,并且没有办法解决这个问题,除非做出定义,例如\newcommand{\lszero}{{<0}},并使用它。(这就是原始问题所要求的。)

相关内容