amsmath
/ 的可扩展箭头mathtools
与 一起使用时没有提供适当的间距或符号kpfonts
。以下是 Computer Modern 的正确行为。
\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{align*}
X &\rightarrow Y & X &\hookrightarrow Y & X &\mapsto Y \\
X &\xrightarrow{} Y & X &\xhookrightarrow{} Y & X &\xmapsto{} Y
\end{align*}
\end{document}
正如预期的那样,没有标签的可扩展箭头的间距和符号与不可扩展箭头的间距和符号相同。
kpfonts
加载时,间距和符号会发生变化。
\documentclass{article}
\usepackage{mathtools,kpfonts}
\begin{document}
\begin{align*}
X &\rightarrow Y & X &\hookrightarrow Y & X &\mapsto Y \\
X &\xrightarrow{} Y & X &\xhookrightarrow{} Y & X &\xmapsto{} Y
\end{align*}
\end{document}
所有三个箭头似乎都向左移动,这导致钩子\xhookrightarrow
和垂直条都\xmapsto
处于错误的位置。
还要注意,\hookrightarrow
一开始看起来就很糟糕。不确定这是新的,还是这个问题从未修复过。
mathtools
为什么会发生这种情况?我应该向或报告这个问题吗kpfonts
?
答案1
存在两个问题:
amsmath
对数学符号做出了一些假设,但这些假设并不成立kpfonts
;\lhook
中的符号设计kpfonts
很糟糕。
对于问题 1,我们可以通过 patch\arrow@fill
来减少两端的负核密度。对于问题 2,我们可以借用\lhook
中的符号libertinust1math
。
\documentclass[twocolumn]{article}
\usepackage{mathtools,kpfonts}
\makeatletter % change \mkern-7mu into \mkern-4mu
\def\arrowfill@#1#2#3#4{%
$\m@th\thickmuskip0mu\medmuskip\thickmuskip\thinmuskip\thickmuskip
\relax#4#1\mkern-4mu%
\cleaders\hbox{$#4\mkern-2mu#2\mkern-2mu$}\hfill
\mkern-4mu#3$%
}
\makeatother
%%% borrow \lhook and \rhook from libertinust1math
\makeatletter
\DeclareFontEncoding{LS2}{}{\noaccents@}
\makeatother
\DeclareFontSubstitution{LS2}{libertinust1mathex}{m}{n}
\DeclareSymbolFont{libsymbols}{LS2}{libertinust1mathsym}{m}{n}
\DeclareMathSymbol{\lhook}{\mathrel}{libsymbols}{"41}
\DeclareMathSymbol{\rhook}{\mathrel}{libsymbols}{"42}
\begin{document}
\begin{align*}
X &\rightarrow Y &\quad X &\hookrightarrow Y & X &\mapsto Y \\
X &\xrightarrow{} Y & X &\xhookrightarrow{} Y & X &\xmapsto{} Y
\end{align*}
\begin{equation*}
X\xrightarrow{abcde}
X\xhookrightarrow{abcde}
X\xmapsto{abcde} X
\end{equation*}
\end{document}
当然,其他箭头不会像不可扩展的同伴那样宽。我认为除了只在需要时\xrightarrow{}
使用箭头外,对此无能为力。x