【问题标题】:Is there a way to override LaTeX's errors about double subscripts and superscripts?有没有办法覆盖 LaTeX 关于双下标和上标的错误?
【发布时间】:2011-02-24 15:19:49
【问题描述】:

关于 LaTeX 的小问题让我很困扰。当一个人写

a^b^c, a_b_c  

a'^b  

在数学模式下,LaTeX 会给出一条错误消息,抱怨多个上标/下标。在替换包含上标/下标的字符串或使用撇号' 时,这尤其令人讨厌。

有没有办法覆盖错误并让 LaTeX 简单地输出

a^{bc} a_{bc} {a'}^b  

等等?

【问题讨论】:

    标签: latex tex mathematical-expressions


    【解决方案1】:

    以下是你想要的

    \catcode`\^ = 13 \def^#1{\sp{#1}{}}
    \catcode`\_ = 13 \def_#1{\sb{#1}{}}
    

    【讨论】:

      【解决方案2】:

      这是你真正应该被警告的情况之一,并且必须按照你想要的方式放置大括号 - 或者写一些没有双下标/上标的东西,如果你的意思是这样的话。通常,当您使用上标来表示求幂而不是索引时,a^b^c = a^{b^c},因此您描述的输出在某些情况下肯定是不正确的。当然,如果它们是上标索引,您可能指的是a^{bc},但是 LaTeX 怎么知道呢?对于下标,如果你真的是指a_{n_k},而不是a_{nk},该怎么办? (即双索引与索引序列)

      (当然,如果这作为替换的一部分出现,您可能会想办法将其作为替换的一部分进行修复。)

      【讨论】:

      • 好点 - 确实,在公式中求幂在运算顺序上有有趣的规则。但是在 LaTeX 中,约定是只有 ^ 符号之后的第一个字符被读取为上标(除非有反斜杠或 {},)所以解释 a^b^c 的逻辑方法是将 ^c 独立于^b 作为一阶上标。因此,虽然错误消息背后的警告是可以理解的,但有没有办法让 LaTeX 忽略这些特定的“错误”并以这种方式解释它们?
      • @Dmitry:不,我不这么认为。而且你的推理并不完整。只使用一条规则更准确:只有^ 之后的第一个 放在上标中。这意味着真正的问题是^ 的关联性;您可以先轻松绑定b^c。我在回答中试图传达的是,有太多的歧义,以至于语言以一种或另一种方式强迫它是不好的。虽然抑制警告是一回事,但这是一条错误消息。 LaTeX 只是要求语法是明确的,无论好坏。
      • @Dmitry:我同意 Dmity 在这里的推理。 Latex 没有表达的概念,取而代之的是它的眼-口-胃隐喻来处理输入,而 Dmitry 的建议很适合。
      • @charles Stewart:我不太同意——能够定义自己的符号来执行此操作是有意义的,甚至将 ^_ 替换为正如 Alexey Malistov 的回答所暗示的那样(尽管人们必须考虑这是否会使源代码更难阅读)。但是,覆盖错误没有意义。
      【解决方案3】:

      虽然Alexeys answer 应该是被接受的——它完全符合作者的要求——让我注意也有可用的乳胶包可以做到这一点,最值得注意的是Tensor package 可以做到这一点:

      第一个例子你写\Gamma\indices{^\mu_{\nu\rho}}。相比之下,Alexeys answer 你可以写\Gamma^\mu_{\nu\rho},这显然更短。但是,^_ 字符的 catcode 重新定义会破坏这些字符在常规文本中的出现,这在数学模式之外尤其令人讨厌。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-03-31
        • 1970-01-01
        • 2018-10-05
        • 1970-01-01
        相关资源
        最近更新 更多