longmapsto
我如何调整以下箭头,使得 和 的箭头longmapsfrom
与 的箭头一致longleftrightarrow
?
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\begin{document}
\begin{align*}
A &\longleftrightarrow B\\
a &\longmapsto b \\
a &\longmapsfrom b
\end{align*}
\end{document}
我只想将它\longmapsto
稍微向右放置。第三个箭头与第一个箭头一致,但第二个箭头不一致。我想尝试一种不改变箭头长度的解决方案。我只希望输出与我的示例几乎相同,唯一的区别是第二个箭头的位置应该稍微向右放置,以便箭头正好位于上方箭头的下方。
或者我可以定义
\begin{align*}
A \longleftrightarrow{}& B\\
a \longmapsto{}& b \\
a \longmapsfrom{}& b
\end{align*}
但后来我把角色互换了。现在第二支箭与第一支箭一致,但第三支箭却不一致。
我怎么解决这个问题?
答案1
箭头相同,但箭头长度不同。
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\let\longleftrightarrow\relax % undefine the command to avoid a warning
\DeclareRobustCommand{\longleftrightarrow}{\leftarrow\bigjoinrel\rightarrow}
\newcommand\bigjoinrel{\mathrel{\mkern-7mu}}
\begin{document}
\begin{align*}
A &\longleftrightarrow B\\
a &\longmapsto b \\
a &\longmapsfrom b
\end{align*}
\end{document}
更精细的定义,使得下标/上标的长度差异也可以忽略不计
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\let\longleftrightarrow\relax
\DeclareRobustCommand{\longleftrightarrow}{\leftarrow\bigjoinrel\rightarrow}
\newcommand\bigjoinrel{\mathrel{\mkern-6.78mu\nonscript\mkern-0.22mu}}
\begin{document}
\begin{align*}
A &\longleftrightarrow B\\
a &\longmapsto b \\
a &\longmapsfrom b
\end{align*}
\end{document}
或者,使用一些填充:
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\newcommand{\bijpad}{\mathrel{\mkern4mu}}
\begin{document}
\begin{align*}
A &\longleftrightarrow B\\
a &\longmapsto\bijpad b \\
a &\bijpad\longmapsfrom b
\end{align*}
\end{document}
答案2
这是对齐右侧箭头的简单方法。不过,我建议使用另一种解决方案,即以 为中心\longmapsto/from
,\longleftrightarrow
从我的角度来看,这种方式看起来更美观:
\documentclass{article}
\usepackage{mathtools}
\usepackage{stmaryrd}
\usepackage{old-arrows}
\usepackage{makebox}
\newcommand{\centredlmapsto}{ \mathrel{\makebox*{$\longleftrightarrow$}{$\longmapsto$}}}
\newcommand{\centredlmapsfrom}{ \mathrel{\makebox*{$\longleftrightarrow$}{$\longmapsfrom$}}}
\begin{document}
\begin{alignat*}{2}
A & \longleftrightarrow B & \qquad A & \longleftrightarrow B \\
a & \:\longmapsto b & a & \centredlmapsto b \\
a & \longmapsfrom\: b & a & \centredlmapsfrom b
\end{alignat*}
\end{document} [![enter image description here][1]][1]
答案3
感谢@egreg,我找到了解决方案。
\documentclass{article}
\usepackage{amsmath}
\usepackage{stmaryrd}
\newcommand{\bijpad}{\mathrel{\mkern4mu}} % probably not necessary
\begin{document}
\begin{alignat*}{2}
A &\longleftrightarrow{}&& B\\
a &\bijpad\longmapsto&& b \\
% a &\:\longmapsto&& b \\ % alternatively
a &\longmapsfrom&& b
\end{alignat*}
\end{document}
似乎\newcommand{\bijpad}{\mathrel{\mkern4mu}}
没有必要。相反,只需\:
在 之前添加 即可\longmapsto
。
可能是最简单的方法:
\begin{align*}
A & \longleftrightarrow B \\
a & \:\longmapsto b \\
a & \longmapsfrom\: b
\end{align*}