自动箭长

自动箭长

我正在寻找一种自动方法来固定对齐排列中的箭头长度。有两种方法,例如https://tex.stackexchange.com/a/413486/195378,其中第二个箭头的长度使用方法设置\phantom,只需插入上箭头的附加部分。

这是(初始的)2 级系统:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}

\begin{document}
\begin{alignat*} {2}
&{f:\ } &   \mathbb{R}  &\xrightarrow{\text{some text}} \mathbb{R}\\
&   &   x   &\xmapsto{} x^2
\end{alignat*}
\end{document}

为了使箭头保持等长,只需插入\phantom版本的来some text拉伸下方的箭头,即:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}

\begin{document}
\begin{alignat*} {2}
&{f:\ } &   \mathbb{R}  &\xrightarrow{\text{some text}} \mathbb{R}\\
&   &   x   &\xmapsto{\phantom{\text{some text}}}   x^2
\end{alignat*}
\end{document}

但是如果第二行的箭头已经有(短)内容怎么办?添加上一行的内容会使第二行比上箭头更长。让我们添加第三行以使其更通用:

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}

\begin{document}
\begin{alignat*} {2}
&{f:\ } &   \mathbb{R}  &\xrightarrow{\text{some text}} \mathbb{R}\\
&   &   x   &\xmapsto{abc\text{some text}}  x^2\\
&   &   a   &\xhookrightarrow{} b
\end{alignat*}
\end{document}

重点是:如何(自动)使长度均衡?

答案1

您可以使用\eqmakebox中的命令轻松获得它。它用标签eqparbox替换的长度参数,并且所有具有相同标签的 eqparbox 都具有其中最宽的长度。基于此,我定义了 n 以适应(mathmode 和) 参数的格式(可能需要两次编译):\makebox\areqbox\xrightarrow\scriptstyle

\documentclass{article}

\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{eqparbox}
\newcommand{\areqbox}[2][A]{\eqmakebox[#1]{$\scriptstyle#2$}}

\begin{document}

\begin{alignat*} {2}
&{f\colon} & \mathbb{R} &\xrightarrow{\areqbox{\text{some text}}} \mathbb{R}\\
& & x &\xmapsto{\areqbox{abc\text{ some text}}} x^2\\
& & a &\xhookrightarrow{\areqbox{}} b
\end{alignat*}

\end{document} 

在此处输入图片描述

相关内容