为什么我会收到双重下标错误?

为什么我会收到双重下标错误?

下面的代码可以正常编译:${a_b}_c$。但是当我尝试在“a”上添加重音符号时,如${\hat a_b}_c$,我收到一条错误消息:

? ! Double subscript. l.1187 ${\hat a_b}_ c$

出现此错误有什么原因吗?我该如何修复它?还是我的 tex 发行版中存在错误?我尝试添加更多括号,如${{\hat a}_b}_c$,但这显然没有帮助。

答案1

这是 TeX 的一个特性。子公式\left在数学模式下是一组用括号或-包围的符号\right。例如$a+{b+c}$有一个子公式。1

如果您输入${(a+b)}^{2}$,指数将高于$(a+b)^{2}$,因为在前一种情况下,您将指数设置为整​​个子公式,在后一种情况下,您将指数设置为括号。顺便说一句,后者是正确的代码。

根据 TeX 的创建者 Donald Knuth 的选择,当子公式恰好仅有的包含一个“重音原子”,也就是\hat{x}包括可能的上标和下标之类的东西,这个原子周围的括号会被剥离,TeX 的行为就像它们从来没有存在过一样。

因此打字与打字${\hat a_b}_c$完全相同$\hat a_b_c$。2

但是,即使这种情况没有发生,我建议你避免这样的构造:解决方法

${{}\hat{a}_b}_c$

生产

在此处输入图片描述

你的读者会很难理解。也许更好的是

$(\hat{a}_b)_c$

给出

在此处输入图片描述

1这只是一个例子,我不建议输入这样的内容,但是子公式有其用途。

2我更喜欢\hat{a}而不是\hat a,但没有区别,因为\hat是一个接受一个参数的宏。

答案2

当 TeX 看到附加到主框的第二个下标时,就会发生双下标错误,而且由于 TeX 的重音机制非常低级,因此您在这里看到了一个有趣的副作用。最好的解决方法是加载包accents,它会重新实现重音并修复一些错误,例如:

\documentclass{article}
\usepackage{accents}
\begin{document}
\[{\hat a_b}_c\]
\end{document}

不过,在我记起这个包之前,这里有一些解决这个问题的低级方法:

\documentclass[twocolumn]{article}
\begin{document}
\noindent The original:
\[{a_b}_c\]
Hat misplaced:
\[\hat {{a}_b}_c\]
One (ugly) possibility to separate the 2nd subscript:
\[{\hat a_b}{\vphantom{a_b}}_c\]
A better way:
\newcommand\mathbox[1]{\mbox{$#1$}}
\[\mathbox{\hat a_b}_c\]
Perhaps a different subscript regime is better?
\[\hat a_{b_c}\]
\end{document}

在此处输入图片描述

答案3

我不知道这是否是你需要的,但试试这个

\documentclass[10pt,a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\begin{document}
${a_b}_c$\\
$\hat {{a}_b}_c$\\
\end{document}

相关内容