混合“check”和“hat”会导致奇数输出(使用 MnSymbol)

混合“check”和“hat”会导致奇数输出(使用 MnSymbol)

我正在尝试排版一个公式,其中包含宽帽下面的表达式$\check{x} g_1$。但是,当我排版表达式时$\widehat{\check{x} g_1}$,我得到了奇怪的结果——“检查”和g_1在正确的位置,但x向右移动,以至于与重叠g_1(从而使check其余部分位于空白处)。我做错了什么?

编辑:我的一个理论是,这与使用 MnSymbol 包有关。这是存在问题的最小文档。

\documentclass[11 pt]{article}
\usepackage{MnSymbol}

\begin{document}

$$\widehat{\check{x} g_1}$$

\end{document}

如果我省略 MnSymbol 包,问题就消失了。

答案1

\usepackage{accents} MnSymbol 后加载

答案2

Herbert 给了你一个完美的解决方案;我会试着解释一下哪里出了问题。首先我要说的是,使用 很容易重现奇怪的输出amsmath(另请参阅问题的评论)。在 amsmath.sty 中,有以下几行

%%\@tempa\widetilde
%%\@tempa\widehat

并且将它们注释掉确实是件好事。\@tempa是一个命令,它对重音进行特殊处理,以便更好地定位重音,尤其是双重音。 (将 Herbert 的评论与他的回答进行比较。)这​​种处理适用于所有“小”重音,包括\check

现在下面的代码给出与 OP 的代码相同的奇数输出。

\documentclass[11 pt]{article}
\usepackage{amsmath}
\makeatletter
\@tempa\widehat
\makeatother
\begin{document}
\[ \widehat{\check{x} g_1} \]
\end{document}

这也许可以解释为什么\@tempa\widehat在 amsmath.sty 中被注释掉。


现在MnSymbol加载amsmath然后调用

\DeclareMathAccent{\widehat}{\mathord}{largesymbols}{’302}

反过来又调用了\set@mathaccent。但这是修改\set@mathaccent后的amsmath,所以事情又出错了。一个可能的解决方法是\widehat再次给出 LaTeX 类型定义,但为此你必须知道重音数字"3C2

\documentclass[11 pt]{article}
\usepackage{MnSymbol}
\show\widehat
\def\widehat{\mathaccent"3C2\relax}
\begin{document}
\[ \widehat{\check{x} g_1} \]
\end{document}

总结:对我来说,它看起来像是一个错误MnSymbol

相关内容