下面的代码可以正常编译:${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}