答案1
这几乎是手动的。
\documentclass{article}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
A \arrow[r, bend left, "f", ""{name=U,inner sep=1pt,below}]
\arrow[r, bend right, "g"{below}, ""{name=D,inner sep=1pt}]
& B
\arrow[Rightarrow, from=U, to=D, "\alpha"]
\end{tikzcd}
\end{document}
答案2
我也想试试——尽管和@egreg
都有@HenriMenke
很好的答案,但我认为普通的旧TikZ
方法是一个不错的选择,因为代码更容易解析。我们声明每个节点,给它一个名字(在括号中()
,标签在花括号中{}
),然后在节点之间画箭头。代码如下:
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{tikzpicture}
\node (a) at (0,0) {$A$};
\node (b) at (1.5,0) {$B$};
\draw[->] (a) to [bend left] node[scale=.7] (f) [above] {$f$} (b);
\draw[->] (a) to [bend right] node[scale=.7] (g) [below] {$g$} (b);
\draw[-{Implies},double distance=1.5pt,shorten >=2pt,shorten <=2pt] (f) to node[scale=.7] [right] {$\alpha$} (g);
\end{tikzpicture}
\end{document}
一个明显的缺点是尝试使用 进行复制\Rightarrow
,double
但我认为这不是什么大问题,而且代码相当容易调整。我们还必须缩短中间箭头的两端,使其不与其他箭头重叠(shorten >
一端使用完成shorten <
,另一端使用 完成)。结果如下:
答案3
答案4
另一种可能性是pst-node
及其环境。如果您使用开关 (MiKTeX) 或(TeX Live、MacTeX)加载和编译,psmatrix
则可以编译它:pdflatex
auto-pst-pdf
--enable-write18
-shell-escape
\documentclass[border=3pt]{standalone}
\usepackage{pst-node,amsmath, latexsym}
\usepackage{auto-pst-pdf}
\begin{document}
$ \begin{psmatrix}[colsep = 1.5em,nodesepA=2pt, nodesepB=1pt, shortput=nab, labelsep=2pt, arrowinset=0.2]
[name=A] A & \Downarrow & [name=B] B
\ncarc[arcangle=35]{->}{A}{B}^{f}
\ncarc[arcangle=-35]{->}{A}{B}_{g}
\end{psmatrix} $
\end{document}