我正在寻找一种自动方法来固定对齐排列中的箭头长度。有两种方法,例如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}