关于 LaTeX 的小问题困扰着我。当一个人写
a^b^c, a_b_c
或者
a'^b
在数学模式下,LaTeX 会给出一条错误消息,抱怨多个上标/下标。在替换包含上标/下标的字符串或使用撇号时,这尤其令人讨厌,'
.
有没有办法覆盖错误并让 LaTeX 简单地输出
a^{bc} a_{bc} {a'}^b
等等?
关于 LaTeX 的小问题困扰着我。当一个人写
a^b^c, a_b_c
或者
a'^b
在数学模式下,LaTeX 会给出一条错误消息,抱怨多个上标/下标。在替换包含上标/下标的字符串或使用撇号时,这尤其令人讨厌,'
.
有没有办法覆盖错误并让 LaTeX 简单地输出
a^{bc} a_{bc} {a'}^b
等等?
以下是你想要的
\catcode`\^ = 13 \def^#1{\sp{#1}{}}
\catcode`\_ = 13 \def_#1{\sb{#1}{}}
这是您真正应该被警告的情况之一,并且必须按照您想要的方式放置大括号 - 或者写一些没有双子/上标的东西,如果这就是您的意思。通常,当您使用上标来表示幂而不是索引时,a^b^c = a^{b^c}
您描述的输出在某些情况下肯定是不正确的。当然,如果它们是上标索引,你可能是说a^{bc}
,但是 LaTeX 怎么知道呢?对于下标,如果你真的是指a_{n_k}
,不是a_{nk}
?(即双索引与索引序列)
(当然,如果这作为替换的一部分出现,您可能会想办法将其作为替换的一部分进行修复。)
虽然Alexeys 的回答应该是公认的——它完全符合作者的要求——但我要注意,也有可用的 Latex 包可以做到这一点,最值得注意的是Tensor 包可以做到这一点:
\Gamma\indices{^\mu_{\nu\rho}}
您为第一个示例编写。相比之下,使用Alexeys 的答案,您就可以写出\Gamma^\mu_{\nu\rho}
明显更短的答案。^
但是,和_
字符的 catcode 重新定义将破坏这些字符在常规文本中的任何出现,这很烦人,尤其是在数学模式之外。