TikZ-CD – Unusual Diagram of Snake Lemma

commutative-diagramstikz-cdxy-picxymatrix

I want to draw the following diagram in LaTeX.
This is essentially a diagram of the snake lemma, but a bit different from the usual one.

enter image description here

By rotating the diagram of the snake lemma ninety degrees and inverting it, this diagram can be obtained. But, to write this directly may be more comfortable.

Thank you for your help.

The following is the code for the usual snake lemma.

\begin{document}

\documentclass{article}
\thispagestyle{empty}
\usepackage{amsmath}
\usepackage{tikz}
\usepackage{tikz-cd}
\usetikzlibrary{%
  matrix,%
  calc,%
  arrows%
}

\begin{tikzpicture}[>=triangle 60]

\matrix[matrix of math nodes,column sep={60pt,between origins},row
sep={60pt,between origins},nodes={asymmetrical rectangle}] (s)
{
&|[name=ka]| \ker f &|[name=kb]| \ker g &|[name=kc]| \ker h \\
%
&|[name=A]| A' &|[name=B]| B' &|[name=C]| C' &|[name=01]| 0 \\
%
|[name=02]| 0 &|[name=A']| A &|[name=B']| B &|[name=C']| C \\
%
&|[name=ca]| \coker f &|[name=cb]| \coker g &|[name=cc]| \coker h \\
};
\draw[->] (ka) edge (A)
          (kb) edge (B)
          (kc) edge (C)
          (A) edge (B)
          (B) edge node[auto] {\(p\)} (C)
          (C) edge (01)
          (A) edge node[auto] {\(f\)} (A')
          (B) edge node[auto] {\(g\)} (B')
          (C) edge node[auto] {\(h\)} (C')
          (02) edge (A')
          (A') edge node[auto] {\(i\)} (B')
          (B') edge (C')
          (A') edge (ca)
          (B') edge (cb)
          (C') edge (cc)
;
\draw[->,gray] (ka) edge (kb)
               (kb) edge (kc)
               (ca) edge (cb)
               (cb) edge (cc)
;
\draw[->,gray,rounded corners] (kc) -| node[auto,text=black,pos=.7]
{\(\partial\)} ($(01.east)+(.5,0)$) |- ($(B)!.35!(B')$) -|
($(02.west)+(-.5,0)$) |- (ca);
\end{tikzpicture}

The output is
snake lemma

The code for this usual snake lemma diagram can be also seen in
How do you draw the "snake" arrow for the connecting homomorphism in the snake lemma?

Best Answer

You can bend the arrow:

\documentclass{article}
\usepackage{amsmath}
\usepackage{tikz}
\usetikzlibrary{cd,bbox}

\DeclareMathOperator{\Coker}{Coker}

\begin{document}

Some text before the diagram, we make it long enough to split across
lines so we see better what happens.
\[
\begin{tikzcd}[
  column sep={5em,between origins},
  row sep=5ex,
  bezier bounding box, % <-- https://tex.stackexchange.com/a/619994/
]
0 \arrow[r] &
A \arrow[r] \arrow[d] &
B \arrow[r,"i"] \arrow[d] &
C \arrow[r] \arrow[d] &
\Coker i \arrow[r] \arrow[d,"g"] &
0
\\
0 \arrow[r] &
D \arrow[r] \arrow[d] &
E \arrow[r,"i"] \arrow[d] &
F \arrow[r] \arrow[d] &
J
\\
&
G \arrow[r] \arrow[rrruu,in=150,out=170,looseness=2.6,"\delta"] &
H \arrow[r] &
I
\end{tikzcd}
\]
Some text after the diagram, we make it long enough to split across
lines so we see better what happens.

\end{document}

enter image description here

Related Question