I'm drawing some diagramas and I want to write down some 2-cells. I'm not sure of how to write them down in a good way. This is what I have done with xy:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[spanish,shorthands=off]{babel}
\usepackage[T1]{fontenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}
\usepackage{amsthm}
\usepackage[all]{xy}
\begin{document}
\begin{displaymath}
\begin{xy}
(0,0) *+{\mathcal{E}} = "e1",
(15,0) *+{\mathcal{E}} = "e2",
(30,0) *+{\mathcal{S}} = "s1",
(7.5,-10) *+{\mathcal{F}} = "f1",
(40,10) *+{\mathcal{E}} = "e3",
(70,0) *+{\mathcal{S}} = "s2",
(50,15) *+{\mathcal{F}} = "f2",
(65,10) *+{\mathcal{E}} = "e4",
(80,20) *+{\mathcal{F}} = "f3",
\POS "e1" \ar^{1_{\mathcal{E}}} "e2",
\POS "e1" \ar_{g^*} "f1",
\POS "f1" \ar_{g_*} "e2",
\POS "e2" \ar^{p_*} "s1",
\POS "f1" \ar@/_/_{f_*} "s1",
\POS "s1" \ar^{p^!} "e3",
\POS "e3" \ar_{p_*} "s2",
\POS "s1" \ar@/_/_{1_{\mathcal{S}}} "s2",
\POS "e3" \ar^{g^*} "f2",
\POS "f2" \ar^{g_*} "e4",
\POS "e4" \ar_{p_*} "s2",
\POS "f2" \ar@/^25pt/^{f_*} "s2",
\POS "f2" \ar@/^/^{1_{\mathcal{F}}} "f3",
\POS "s2" \ar@/_/_{f^!} "f3",
\POS "e2" \ar@/^10pt/^{1_{\mathcal{E}}} "e3",
%names of natural transformations
\POS (7.5,-2) \ar@{=>}_{\nu} (7.5,-6),
\POS (42,6) \ar@{=>}_{\varepsilon} (45,1),
\POS (57,11) \ar@{=>}_{(p_*\nu)^{-1}} (55,7),
\POS (73,16) \ar@{=>}^{\overline{\eta}} (73,10),
\POS (27,6) \ar@{=>}_{\eta} (29,2),
\end{xy}
\end{displaymath}
\end{document}
which gives the following diagram
As you can see I have drawn the 2-cell "manually". So I would like to know if there is a better way to draw "complicated" diagrams in xy or if is better to use something like tikz-cd.
Thanks in advance
tikz-cd
draw stuff like this?