减少 \xrightarrow 的垂直空间

减少 \xrightarrow 的垂直空间

我发现 的垂直间距对于下划线来说amsmath太大\xrightarrow了。有没有简单的方法可以减少它(例如,将“下方”放在箭头附近)?

\documentclass{minimal}
\usepackage{amsmath}
\begin{document}
\fbox{$\xrightarrow[\fbox{below}]{\fbox{above}}$}
\end{document}

我查看了箭头定义(ext@arrow例如在理解 ext@arrows) 并且在那里\limits^{}_{}被使用。

PS:我对一个简短而简单的解决方案感兴趣。我知道如何从头开始构建一个新的可扩展箭头,但想知道是否有更简单的解决方案。

答案1

修正了 mh256 的有效注释,创建了\xxrightarrow[]{}减少下划线空间但允许下划线长度的宏。

已编辑以制作它\mathrel并使用 temp\box2代替\box0,似乎也被使用\xrightarrow

\documentclass{minimal}
\usepackage{amsmath,stackengine}
\stackMath
\newcommand\xxrightarrow[2][]{\mathrel{%
  \setbox2=\hbox{\stackon{\scriptstyle#1}{\scriptstyle#2}}%
  \stackunder[0pt]{%
    \xrightarrow{\makebox[\dimexpr\wd2\relax]{$\scriptstyle#2$}}%
  }{%
   \scriptstyle#1\,%
  }%
}}
\parskip 3pt
\begin{document}
\fbox{$\xxrightarrow[\fbox{below}]{\fbox{above}}$}

\fbox{$\xxrightarrow[\fbox{below is a long text}]{\fbox{above}}$}

$ x \xxrightarrow[bottom]{top} y$

$x \xxrightarrow[a]{a} y$

$x \xrightarrow[a]{a} y$

\end{document}

在此处输入图片描述

答案2

这是我的解决方案。

\documentclass{minimal}
\usepackage{amsmath}
\usepackage{calc}
\begin{document}
\newcommand\myxrightarrow[2][]{
    \xrightarrow[{\raisebox{1.25ex-\heightof{$\scriptstyle#1$}}[0pt]{$\scriptstyle#1$}}]{#2}%
}
\noindent
\fbox{$\xrightarrow[\fbox{below}]{\fbox{above}}$}
\fbox{$\myxrightarrow[\fbox{below}]{\fbox{above}}$}\\
\fbox{$\xrightarrow[below]{above}$}
\fbox{$\myxrightarrow[below]{above}$}\\
\fbox{$\xrightarrow[aaa]{above}$}
\fbox{$\myxrightarrow[aaa]{above}$}\\
\fbox{$\xrightarrow[\int^2]{above}$}
\fbox{$\myxrightarrow[\int^2]{above}$}
\end{document}

优点:仅一行命令

缺点:行高不够小(参见 aaa 示例)。

在此处输入图片描述

相关内容