我想要展示 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
答案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}