mathtools 和 MnSymbol 之间的冲突

mathtools 和 MnSymbol 之间的冲突

当我运行latex以下文件时,它成功终止并产生预期的结果:

\documentclass[12pt]{article}
\usepackage{amsmath}
\usepackage[fleqn,tbtags]{mathtools}
%% \usepackage{MnSymbol}
\begin{document}
$$ x \xhookrightarrow{\gamma} y $$
\end{document}

但是,如果我取消注释掉注释掉的行,就会出现此错误:

! Undefined control sequence.
<argument> \lhook
                  \joinrel \relbar
l.6 $$ x \xhookrightarrow{\gamma}
                                  y $$
? 

有什么办法可以解决这个问题?(当然,上面的例子不需要 MnSymbol,但对于我正在做的工作来说,我确实需要它和 mathtools。)

仅供参考,以下是我所拥有的示例中提到的软件包的版本:

Package: amsmath 2000/07/18 v2.13 AMS math features
Package: mathtools 2011/02/12 v1.10 mathematical typesetting tools
Package: MnSymbol 2007/01/21 v1.4 support for the MnSymbol font

谢谢!

PS:讽刺的是,我使用 MnSymbol 的唯一原因是使用它的箭头定义,如

$$
\begin{matrix}
X & & \xrightarrow{h} & & Y \\
  & {\scriptstyle f} \lhooksearrow & & \rhookswarrow {\scriptstyle g} & \\
  & & Z & & \\
\end{matrix}
$$

生成如下交换图:

上述 Latex 代码的结果

...我发现它的布局只是勉强可以接受(箭头太短,不一定正好位于连接源符号和目标符号的线上或与连接源符号和目标符号的线平行;这些符号之间的间距并不总是最好的;等等)。换句话说,如果有更好的方法来生成这样的图表,可能不需要 MnSymbol,请告诉我。谢谢!

答案1

据我所知,Mn符号未定义,\lhook因为它提供了现成的“钩箭头”,而\lhook用于从默认数学字体中的“普通箭头”构建它们。

加载后只需写入Mn符号

\let\originallhook\lhook
\usepackage{MnSymbol}
\let\lhook\originallhook

但得到的结果\xhookrightarrow不会是完美的。更好的是

\let\originallhook\lhook
\usepackage{MnSymbol}
\newcommand{\lhook}{\mathrel{\raise.018ex\hbox{$\originallhook$}}}

另一方面,您应该查看专门的包 Xy-pic 或用于构建图表的更通用的 TikZ。

相关内容