Commutative diagrams can become complicated. They can have many columns, many rows, and a lot of arrow and labels. In such cases, for loops and calculation options can be a relief.
Here, we position the elements in a matrix, and use a loop for drawing the arrows.
The code is fully explained in the LaTeX Cookbook, Chapter 10, Advanced Mathematics, Drawing commutative diagrams.
Edit and compile if you like:% Commutative diagram
% Author: Stefan Kottwitz
% https://www.packtpub.com/hardware-and-creative/latex-cookbook
\documentclass[border = 10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix,calc}
\begin{document}
\begin{tikzpicture}[-stealth,
label/.style = { font=\footnotesize }]
\matrix (m)
[
matrix of math nodes,
row sep = 4em,
column sep = 4em
]
{
A_0 & A_1 & A_2 & A_3 & A_4 \\
B_0 & B_1 & B_2 & B_3 & B_4 \\
};
\foreach \i in {1,...,4} {
\path
let \n1 = { int(\i+1) } in
(m-1-\i) edge node [above, label] {$f_\i$} (m-1-\n1)
(m-2-\i) edge node [below, label] {$f^\prime_\i$} (m-2-\n1)
(m-1-\i) edge node [left, label] {$g_\i$} (m-2-\i);
}
\path (m-1-5) edge node [left, label] {$g_5$} (m-2-5);
\end{tikzpicture}
\end{document}
Open in Overleaf: five-lemma.tex
