# Big vertices on my cube kill parallelism

I have coded the following diagram in xypic:

\xymatrix{
& B \ar[rr] \ar'[d][dd]^(.45)\simeq && B\cup_A C \ar@{.>}[dd]^-\simeq \\
A \ar@{>->}[ru] \ar[rr] \ar[dd]_-\simeq && C \ar@{>->}[ru] \ar[dd]^(.68)\simeq & \\
& B' \ar'[r][rr] && B'\cup_{A'}C' \\ A' \ar@{>->}[ru] \ar[rr] && C' \ar@{>->}[ru] &
}


It renders like this:

If you are subconsciously symmetry-obsessed like many human beings are (including myself), you will have noticed that the diagonal arrows which are supposed to be parallel, aren't really. This is a side effect of having vertices with different lengths.

Is there an automatic fix to this, some command that prioritizes parallelism over placing the arrows tip/end most centered on the objects? If not, how can I fix this manually for this particular diagram?

• As I don't use xypic, I can't turn this into an answer - besides you already have a good one. It strikes me though that you'd be better off considering the text as labels relating to vertices rather than as vertices - look at how the primes on A' and C' collide with the tails on the arrows - and setting then "outside" the vertices. – Chris H Apr 3 '14 at 8:53
• @ChrisH: thanks for the suggestion. The problem of the primes overlapping with the arrows is solved by passing the cmtip command to xypic. I just rendered the diagram for posting it here in presheaf.com, which apparently doesn't use cmtip. – Bruno Stonek Apr 3 '14 at 9:06

With help of calc package, make a box of width B with left alignment and put B\cup_A C inside. Do the same for B'\cup_{A'}C'. Here these two quantities protrude to the right, but I hope that is OK.

\documentclass{article}
\usepackage{xypic,calc}
\begin{document}
$\xymatrix{ & B \ar[rr] \ar'[d][dd]^(.45)\simeq && \makebox[\widthof{B}][l]{B\cup_A C} \ar@{.>}[dd]^-\simeq \\ A \ar@{>->}[ru] \ar[rr] \ar[dd]_-\simeq && C \ar@{>->}[ru] \ar[dd]^(.68)\simeq & \\ & B' \ar'[r][rr] && \makebox[\widthof{B}][l]{B'\cup_{A'}C'} \\ A' \ar@{>->}[ru] \ar[rr] && C' \ar@{>->}[ru] & }$
\end{document}


Similar picture using tikz-cd for commutative diagrams. This code is generated with Mathcha using a bit of patient.

\documentclass[a4paper,12pt]{article}

\usepackage{tikz-cd}

\begin{document}
\tikzset{every picture/.style={line width=0.75pt}} %set default line width to 0.75pt
\begin{tikzpicture}[x=0.75pt,y=0.75pt,yscale=-1,xscale=1]
%uncomment if require: \path (0,353); %set diagram left start at 0, and has height of 353

\draw  [dash pattern={on 0.84pt off 2.51pt}]  (238.33,33) -- (238.33,98) ;
\draw [shift={(238.33,98)}, rotate = 270] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (212.67,154.5) -- (230,123.17) ;
\draw [shift={(230,123.17)}, rotate = 478.95] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (151.33,110.5) -- (226,109.83) ;
\draw [shift={(226,109.83)}, rotate = 539.49] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (206,59.67) -- (224,40.5) ;
\draw [shift={(224,40.5)}, rotate = 493.2] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (203.33,80.33) -- (204,152.5) ;
\draw [shift={(204,152.5)}, rotate = 269.47] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw (86.96,71) node   {$A$};
\draw (132.82,21) node   {$C$};
\draw (86.96,171) node   {$A'$};
\draw (262,21) node   {$B\cup_A C$};
\draw (215.84,72) node   {$B$};
\draw (132.82,111) node   {$B'$};
\draw (262,111.67) node   {$B'\cup_{A'}C'$};
\draw (212.51,170) node   {$C'$};
\draw (74,122.67) node  [align=left] {$\simeq$};
\draw (191.33,123.33) node  [align=left] {$\simeq$};
\draw (252.67,56.33) node  [align=left] {$\simeq$};
\draw (121.33,57.67) node  [align=left] {$\simeq$};
\draw    (147.18,21) -- (227.37,21) ;
\draw [shift={(227.37,21)}, rotate = 180] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (101.32,55.34) -- (118.45,36.67) ;
\draw [shift={(118.45,36.67)}, rotate = 492.53] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (101.32,71.11) -- (202.66,71.9) ;
\draw [shift={(202.66,71.9)}, rotate = 180.44] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (86.96,86.74) -- (86.96,155.26) ;
\draw [shift={(86.96,155.26)}, rotate = 270] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (101.55,170.88) -- (199.1,170.11) ;
\draw [shift={(199.1,170.11)}, rotate = 539.54] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (98.99,155.26) -- (120.79,126.74) ;
\draw [shift={(120.79,126.74)}, rotate = 487.39] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\draw    (132.82,36.74) -- (132.82,65.51)(132.82,73.51) -- (132.82,95.26) ;
\draw [shift={(132.82,95.26)}, rotate = 270] [color=black]   (0,0) .. controls (3.31,-0.3) and (6.95,-1.4) .. (10.93,-3.29)(0,0) .. controls (3.31,0.3) and (6.95,1.4) .. (10.93,3.29)   ;

\end{tikzpicture}

\end{document}