双射,箭头位置

双射,箭头位置

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*}

相关内容