如果我尝试编译以下文档
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator{\Op}{Op}
\begin{document}
\[ 1 + \mathring \Op(4) = 2 \]
\[ \overline{ 1 + \mathring \Op(4) } = 2 \]
\[ \mathring{\overline{ 1 + \mathring \Op(4) }} = 2 \]
\end{document}
前两个方程式显示正确,正如我所希望的那样。在最后一个方程式中,文本“Op”错误地放置在右侧,叠加在“(4)”上。符号\mathring
放置正确,但其下方有白色,因为文本已被移动。公式的其余部分似乎格式化,就像“Op”文本在正确的位置一样。
我的第一印象是这是一个宏集的错误,但我对这种复杂性不是很有信心,所以我在这里问这是否是我的错误(适当的解决方法也值得赞赏!)。
如果它有帮助(我正在使用或多或少最新的 Debian sid):
$ pdflatex --version
pdfTeX 3.1415926-2.5-1.40.14 (TeX Live 2013/Debian)
kpathsea version 6.1.1
Copyright 2013 Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
There is NO warranty. Redistribution of this software is
covered by the terms of both the pdfTeX copyright and
the Lesser GNU General Public License.
For more information about these matters, see the file
named COPYING and the pdfTeX source.
Primary author of pdfTeX: Peter Breitenlohner (eTeX)/Han The Thanh (pdfTeX).
Compiled with libpng 1.2.49; using libpng 1.2.49
Compiled with zlib 1.2.8; using zlib 1.2.8
Compiled with poppler version 0.18.4
谢谢。
答案1
这是amsmath
处理嵌套重音符号错误的一个例子为什么使用 amsmath 时嵌套 \tilde 或 \breve 命令的参数会重新出现?当内重音位于多个符号上时,这一点就会显现出来。
我的建议是定义一个\Opring
运算符,而不是使用\mathring\Op
不使用数学重音的低级技巧。
\documentclass{article}
\usepackage{mathtools}
\DeclareMathOperator{\Op}{Op}
\DeclareMathOperator{\Opring}{%
\text{\vbox{\offinterlineskip
\halign{##\cr
\hidewidth\r{}\hidewidth\cr
\noalign{\kern-1ex}
$\Op$\cr
}%
}}%
}
\begin{document}
\[ 1 + \mathring\Op(4) = 2 \] % just for comparison
\[ \overline{ 1 + \Opring(4) } = 2 \]
\[ \mathring{\overline{ 1 + \Opring(4) }} = 2 \]
\end{document}
答案2
在使用之前将盒子里的物品保存起来通常是一种简单的解决方法:
\documentclass{article}
\usepackage{mathtools}% http://ctan.org/pkg/mathtools
\newsavebox{\mathbox}
\DeclareMathOperator{\Op}{Op}
\begin{document}
\[ 1 + \mathring \Op(4) = 2 \]
\[ \overline{ 1 + \mathring \Op(4) } = 2 \]
\[ \mathring{\overline{ 1 + \mathring \Op(4) }} = 2 \]
\[ \savebox{\mathbox}{$1 + \mathring \Op(4)$}\mathring{\overline{ \usebox{\mathbox} }} = 2 \]
\end{document}