如何将 xrightarrow(顶部带有文字)与 xleftarrow(底部带有文字)配对?

如何将 xrightarrow(顶部带有文字)与 xleftarrow(底部带有文字)配对?

我想要展示 A 和 B 之间的双向关系,其中从 A 到 B 的箭头顶部应该有一些文本,而从 B 回到 A 的关系(箭头)底部应该有一些文本。

有哪些符号可用于此目的?

答案1

一些低级编程:

\documentclass{article}
\usepackage{amsmath}

\makeatletter
\newcommand{\rightleftarrows}[2]{%
  \mathrel{\mathop{%
    \vcenter{\offinterlineskip\m@th
      \ialign{\hfil##\hfil\cr
        \hphantom{$\scriptstyle\mspace{8mu}{#1}\mspace{8mu}$}\cr
        \rightarrowfill\cr
        \vrule height0pt width 2em\cr
        \leftarrowfill\cr
        \hphantom{$\scriptstyle\mspace{8mu}{#2}\mspace{8mu}$}\cr
        \noalign{\kern-0.3ex}
      }%
    }%
  }\limits^{#1}_{#2}}%
}
\makeatother

\begin{document}

\begin{gather*}
A\rightleftarrows{}{}B \\
A\rightleftarrows{f}{g}B \\
A\rightleftarrows{\text{top}}{\text{bottom}}B
\end{gather*}

\end{document}

最小宽度为 2em,使用\vrule对齐中间的 进行设置。这不会缩放下标或上标,但如此复杂的结构不应出现在那里。

在此处输入图片描述

答案2

如果有人喜欢使用整支箭而不是鱼叉,那么\xrightleftarrows可以根据\xrightleftharpoons中的命令定义一个新的命令mathtools

\documentclass{article}
\usepackage{mathtools}

\makeatletter
\MHInternalSyntaxOn
\def\MT_leftarrow_fill:{%
  \arrowfill@\leftarrow\relbar\relbar}
\def\MT_rightarrow_fill:{%
  \arrowfill@\relbar\relbar\rightarrow}
\newcommand{\xrightleftarrows}[2][]{\mathrel{%
  \raise.55ex\hbox{%
    $\ext@arrow 0359\MT_rightarrow_fill:{\phantom{#1}}{#2}$}%
  \setbox0=\hbox{%
    $\ext@arrow 3095\MT_leftarrow_fill:{#1}{\phantom{#2}}$}%
  \kern-\wd0 \lower.55ex\box0}}
\MHInternalSyntaxOff
\makeatother

\begin{document}

\[
A \xrightleftarrows[\text{bottom}]{\text{top}} B
\]

\end{document}

答案3

我建议使用可扩展的鱼叉:

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}

\begin{document}

\[
  A \xleftrightharpoons[\text{bottom}]{\text{top}} B \qquad
  A \xrightleftharpoons[\text{bottom}]{\text{top}} B
\]

\end{document}

答案4

另一个建议是使用tikz-cd与您的问题相关的其他用户的图像。您可以在此处查看我之前的回答:范畴论中的一一对应关系

在此处输入图片描述

\documentclass[a4paper,12pt]{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A \arrow[r,leftharpoonup, yshift=0.2ex, "\mathrm{up}"] \arrow[r,rightharpoondown, yshift=-0.2ex, "\mathrm{down}"']
& B ,\quad C \arrow[r, rightharpoonup, yshift=0.2ex, "\mathrm{up}"] \arrow[r,leftharpoondown, yshift=-0.2ex, "\mathrm{down}"']
& D 
\end{tikzcd}

\begin{tikzcd}
A \arrow[r,rightarrow, yshift=0.3ex, "\mathrm{up}"] \arrow[r,leftarrow, yshift=-0.3ex, "\mathrm{down}"']
& B ,\quad C \arrow[r, leftarrow, yshift=0.3ex, "\mathrm{up}"] \arrow[r,rightarrow, yshift=-0.3ex, "\mathrm{down}"']
& D 
\end{tikzcd}
\end{document}

相关内容