我发现 的垂直间距对于下划线来说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 示例)。