Commutative diagram with rounded arrows
In Xy-pic
:
\documentclass{article}
\usepackage[all,2cell]{xy}
\UseAllTwocells
\begin{document}
\xymatrixcolsep{3cm}
\xymatrix{
A \ruppertwocell^f{\alpha}
\rlowertwocell_h{\beta}
\ar[r]|{g}
&B\\
}
\end{document}
In TikZ:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{positioning,arrows}
\begin{document}
\begin{tikzpicture}
\node (a) {$A$};
\node[right=4cm of a] (b) {$B$};
\draw[->]
(a) edge node[fill=white] (g) {$g$} (b)
(a) edge[bend left] node (f) [above]{$f$} (b)
(a) edge[bend right] node (h) [below]{$h$} (b);
\draw[shorten <=2pt,shorten >=2pt,-implies]
(f) edge[double] (g)
(g) edge[double] (h);
\end{tikzpicture}
\end{document}
Another solution with pgf/tikZ.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{automata,positioning}
\begin{document}
\begin{tikzpicture}[%
>=stealth,
shorten >=2pt,
shorten <=2pt,
auto,
node distance=5cm
]
\node (a) {A};
\node (b) [right of=a] {B};
\path[->] (a) edge node (psi) {$\Psi$} (b)
(a) edge [bend left=45] node (phi) {$\Phi$} (b)
(a) edge [bend right] node [swap] (omega) {$\Omega$} (b)
(phi) edge (psi)
(psi) edge (omega);
\end{tikzpicture}
\end{document}
Here's a first stab at a tikz solution. It is crude and I'm sure there are libraries that would tidy this up no end! The standalone document class and the scale
are just to get the picture looking big enough...
\documentclass[border=5em]{standalone}
\usepackage{tikz}
\usetikzlibrary{positioning,calc}
\begin{document}
\begin{tikzpicture}[scale=3]
\node (a) {$A$};
\node (b) [right=of a] {$B$};
\node (midpoint) at ($(a)!.5!(b)$) {};
\node (psi) [above=.5cm of midpoint] {$\psi$};
\draw[->] (a) -- (b);
\draw[->] (a.north east) parabola bend (psi.south) (b.north west);
\draw[->,shorten <=3pt] (psi.south) -- (midpoint.north);
\end{tikzpicture}
\end{document}
I'm using the positioning
library to be able to use constructions like \node (b) [right=of a] {$B};
which allows me to position a node (b)
relative to the position of (a)
.
I'm using the calc
library to allow to easily work out the midpoint of the line from a
to b
with the $(a)!.5!(b)$
construction. Other numbers put in the middle there will identify points nearer to a
or b
... This answer contains some good examples of using the calc
library.
I draw a parabola
that starts at a
and then bend
s south
of the psi
node, which is above
the midpoint
before coming to an end at b
.
Then I draw another line that starts just south
of psi
(and then some: I shorten
the begining of the path because otherwise it actually overlaps with where the previous line bended...). The line continues to just north
of midpoint
.
It should be obvious how to make the other half: make a node below
the midpoint
and then do roughly the same thing...