used in [@oh:2015] to build an exact sequence of conforming discrete spaces and projectors such that, for sufficiently regular functions, the following diagram commutes $$\label{eq:cyl_sequence}
\begin{split}
\tikzsetnextfilename{de_rham/de_rham_3d_cyl_cont_discr}
\begin{tikzpicture}[commutative diagrams/every diagram,
arr/.style={commutative diagrams/.cd,
    every arrow,
    every label}]
\def\minW{25mm}
\def\minH{15mm}
\def\hShift{10mm}
\def\vShiftA{20mm}
\def\vShiftB{4mm}
\def\auxA{1mm}
\def\auxB{4mm}
%
% Nodes
\node (X0) [] at (0, 0) {$\CySpT^{m, \, 0}$};
\node (X1) [xshift=1.1*\minW] at (X0) {$\CySpT^{m, \, 1}$};
\node (X2) [xshift=1.1*\minW] at (X1) {$\CySpT^{m, \, 2}$};
\node (X3) [xshift=1.1*\minW] at (X2) {$\CySpT^{m, \, 3}$};
%
\node (X0h) [yshift=-\minH] at (X0) {$\CySpT_h^{m, \, 0}$};
\node (X1h) [yshift=-\minH] at (X1) {$\CySpT_h^{m, \, 1}$};
\node (X2h) [yshift=-\minH] at (X2) {$\CySpT_h^{m, \, 2}$};
\node (X3h) [yshift=-\minH] at (X3) {$\CySpT_h^{m, \, 3}$};
%
\node (R) [xshift=-0.6*\minW] at (X0) {$0$};
\node (Z) [xshift=0.6*\minW] at (X3) {$0$};
\node (Rh) [yshift=-\minH] at (R) {$0$};
\node (Zh) [yshift=-\minH] at (Z) {$0$};
% Arrows
\path[draw, arr] (X0) -- (X1) node [midway] {$\gradtm$};
\path[draw, arr] (X1) -- (X2) node [midway] {$\curltm$};
\path[draw, arr] (X2) -- (X3) node [midway] {$\divergtm$};
\path[draw, arr] (R) -- (X0);
\path[draw, arr] (X3) -- (Z);
%
\path[draw, arr] (X0h) -- (X1h) node [midway] {$\gradtm$};
\path[draw, arr] (X1h) -- (X2h) node [midway] {$\curltm$};
\path[draw, arr] (X2h) -- (X3h) node [midway] {$\divergtm$};
\path[draw, arr] 