I want all the vertical lines parallel in this example. How can I manage that? Thanks a lot. Here is a picture.

\documentclass{scrartcl}
\usepackage{tikz}
\usepackage{amsmath}
\usepackage{amsfonts}
\usetikzlibrary{matrix,arrows,calc}
\begin{document}
\begin{center}
\begin{tikzpicture}[]
\matrix (m) [matrix of math nodes, row sep=1.5em,
column sep=1.5em, text height=1.5ex, text depth=0.25ex, text centered]
{
& 0 & & A & & A\amalg_AB & & C & & 0\\
0 & & A & & B & & C & & 0\\
& 0 & & A & & A\amalg_AB & & C & & 0\\
0 & & A & & B & & C & & 0\\
};
\path[->,font=\scriptsize]
(m-2-1) edge node[auto] {} (m-2-3)
(m-2-3) edge node[auto] {$f$} (m-2-5)
(m-2-5) edge node[auto] {$g$} (m-2-7)
(m-2-7) edge node[auto] {} (m-2-9)
(m-4-1) edge node[auto] {} (m-4-3)
(m-4-3) edge node[auto] {$f$} (m-4-5)
(m-4-5) edge node[auto] {$g$} (m-4-7)
(m-4-7) edge node[auto] {} (m-4-9)
(m-1-2) edge node[auto] {} (m-1-4)
(m-1-4) edge node[auto] {$$} (m-1-6)
(m-1-6) edge node[auto] {$$} (m-1-8)
(m-1-8) edge node[auto] {} (m-1-10)
(m-3-2) edge node[auto] {} (m-3-4)
(m-3-4) edge node[auto] {$$} (m-3-6)
(m-3-6) edge node[auto] {$$} (m-3-8)
(m-3-8) edge node[auto] {} (m-3-10)
(m-2-3) edge node[auto] {} (m-1-4)
(m-2-5) edge node[auto] {} (m-1-6)
(m-2-7) edge node[auto] {} (m-1-8)
(m-4-3) edge node[auto] {} (m-3-4)
(m-4-5) edge node[auto] {} (m-3-6)
(m-4-7) edge node[auto] {} (m-3-8)
;
\end{tikzpicture}
\end{center}
\end{document}

text width=1cmcounts? – percusse Jun 28 '13 at 17:52tikz-cdpackage uses a\matrixinternally. For example, you could usecolumn sep={between origins,3.5em}and get parallel arrows, although you have to make sure that the nodes are not overlapping or too narrow. – Qrrbrbirlbel Jun 28 '13 at 17:54A'instead ofA^\primeorA^\prdefining a new command. The result is precisely the same. – egreg Jun 28 '13 at 18:03column sep={3.5em,between origins}worked intikz-cd; unfortunately it appears it doesn't. – egreg Jun 28 '13 at 18:11\tikzcd@sep(and the… sepkeys) mainly so that it works with the pre-defined stylesnormal,smalletc. But the fix also provides a better interface to usebetween origins. Without the fix, you can usecolumn sep={{{{3.5em,between origins}}}}; the key value gets handed down three times and is not protected properly. – Qrrbrbirlbel Jun 28 '13 at 18:38\end occurred when \ifx on line XY was incompletemessages – egreg Jun 28 '13 at 19:13