While preparing a commutative diagram to be used in a MathJax environment I discovered the little gem that is already given away in the title. Basically I needed to draw a relatively complex commutative diagram (see below) without using extra packages like xypic or (my favourite) PGF/TikZ. Only stuff from amsmath (and its extended family) is allowed. That means hacking something together using array.

You know variable-sized delimiters: they are either the \left(, \right) combo or variations on \big) making all your delimiters look good in LaTeX. But \uparrow and its related arrows \downarrow, \Downarrow, \Uparrow, \updownarrow and \Updownarrow are variable-sized delimiters too! Which means they can be used to spice up your commutative diagram a little.

Compare $$ \begin{array}{ccccc} & & \mathrm{Nr}(\mathbb{Z}) & & \\ & & \phantom{\textrm{itp}}\downarrow\textrm{itp} & & \\ \mathrm{W}(\mathbb{Z}) & \overset{\tau}{\longrightarrow} & \hat{\Omega}(\mathrm{C}_\infty) & \overset{\mathrm{s}_t}{\longrightarrow} & \Lambda(\mathbb{Z}) \\ \phantom{\Phi}\downarrow\Phi & & \phantom{\hat{\varphi}}\downarrow\hat{\varphi} & & \phantom{\mathrm{L}_{\mathbb{Z}}}\downarrow\mathrm{L}_{\mathbb{Z}} \\ \prod_{n=1}^{+\infty}\mathbb{Z} & \longleftrightarrow & \mathrm{gh}(\mathrm{C}_\infty)=\mathbb{Z}^{\mathbb{N}^\times} & \longleftrightarrow & t\mathbb{Z}[\![t]\!] \end{array} $$ to $$ \begin{array}{ccccc} & & \mathrm{Nr}(\mathbb{Z}) & & \\ & & \phantom{\textrm{itp}}\Big\downarrow\textrm{itp} & & \\ \mathrm{W}(\mathbb{Z}) & \overset{\tau}{\longrightarrow} & \hat{\Omega}(\mathrm{C}_\infty) & \overset{\mathrm{s}_t}{\longrightarrow} & \Lambda(\mathbb{Z}) \\ \phantom{\Phi}\Big\downarrow\Phi & & \phantom{\hat{\varphi}}\Big\downarrow\hat{\varphi} & & \phantom{\mathrm{L}_{\mathbb{Z}}}\Big\downarrow\mathrm{L}_{\mathbb{Z}} \\ \prod_{n=1}^{+\infty}\mathbb{Z} & \longleftrightarrow & \mathrm{gh}(\mathrm{C}_\infty)=\mathbb{Z}^{\mathbb{N}^\times} & \longleftrightarrow & t\mathbb{Z}[\![t]\!] \end{array}.$$

The difference isn't shocking but it does like a little nicer. Another useful tricks when typesetting commutative diagrams in an array environment: use \phantom to center your labels next to a vertical arrow. In case you're wondering what the complete code for this example looks like:

\begin{array}{ccccc}
  & & \mathrm{Nr}(\mathbb{Z}) & & \\
  & & \phantom{\textrm{itp}}\Big\downarrow\textrm{itp} & & \\
  \mathrm{W}(\mathbb{Z}) & \overset{\tau}{\longrightarrow} & \hat{\Omega}(\mathrm{C}_\infty) & \overset{\mathrm{s}_t}{\longrightarrow} & \Lambda(\mathbb{Z}) \\
  \phantom{\Phi}\Big\downarrow\Phi & & \phantom{\hat{\varphi}}\Big\downarrow\hat{\varphi} & & \phantom{\mathrm{L}_{\mathbb{Z}}}\Big\downarrow\mathrm{L}_{\mathbb{Z}} \\
  \prod_{n=1}^{+\infty}\mathbb{Z} & \longleftrightarrow & \mathrm{gh}(\mathrm{C}_\infty)=\mathbb{Z}^{\mathbb{N}^\times} & \longleftrightarrow & t\mathbb{Z}[\![t]\!]
\end{array}

And in case you're wondering about what the diagram actually means: it is the key diagram in explaining the relations between structures related to the ring of big Witt vectors and is taking from the paper The Burnside ring of the infinite cyclic group and its relations to the necklace algebra, $\lambda$-rings, and the universal ring of Witt vectors.

I have found out about XyJax, which allows you to use xypic code in MathJax, but I wasn't aware at the time of writing the diagram and it's still an alpha release. Yet, it looks promising and complete obsoletes the reason for this post!