# Drawing a "spider" web of arrows in tikz-cd [for Halloween]

For Halloween or not, I am trying to make the following-like "spider" web diagram through tikzcd, roughly like this (of course I am just drawing the more ugly version of it, the arrow should be thin) but I have failed embarrassingly so far: I failed because I wanted to aim for the following criteria:

1. ai and aii align in the same vertical axis,

2. b itself is on its vertical axis

3. ci, ciii and cii align in the same vertical axis,

4. d itself is on its vertical axis

5. edi and eiii align in the same vertical axis,

6. f itself is on its vertical axis

7. The horizontal distance between the neighbor vertical axes of the same initial alphabets are the same (namely, the distance between the vertical a axis, the vertical b axis, the vertical c axis, the vertical d axis, the vertical e axis, the vertical f axis are the same).

Here is my minimal work template and my trial:

\begin{document}

\usepackage[all,cmtip]{xy}
\usepackage{tikz-cd}

\begin{center}
\begin{tikzcd}
BPin^-\ar[d]\\
BO\ar[r,"w_1^2+w_2"] &K(\Z/2,2)
\end{tikzcd}
\end{center}
\end{document}


Could you please kindly provide me a guideline and a possible sample to it?

I am happy to use \usepackage{tikz-cd} or \usepackage[all,cmtip]{xy}. You are also allowed to use bend (e.g \ar[uur,bend left= ...,""] if you wish)

Thank you in advance to the Halloween superhero experts here!! :-)

I would use a matrix of math nodes (section 57.1, page 646 of the current tikz manual). This gives you an easy way of laying out b, d, f, etc. in a grid so that you automatically get your vertical alignment. Once you have all of the vertices in place then you can draw the many edges using a \foreach statement to produce:

Here is the full code:

\documentclass[tikz, border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{matrix}
\begin{document}

\begin{tikzpicture}[>=stealth,->,shorten >=2pt,looseness=.5,auto]
\matrix (M)[matrix of math nodes,row sep=1cm,column sep=16mm]{
& b &    & d &    & f\\
ai&   & ci &   &cdi &\\
&   &ciii&   &eiii\\
aii&   &cii\\
};
\foreach \a/\b in {1-2/1-4, 1-4/1-6, 2-1/2-3, 2-3/2-5,
3-3/3-5, 4-1/4-3, 2-1/1-2, 2-3/1-4,
2-5/1-6, 3-3/2-5, 3-5/1-6, 4-1/3-3,
4-3/3-5, 2-1/3-3, 3-3/1-4, 4-3/1-4} {
\draw[thick,->](M-\a)--(M-\b);
}
\end{tikzpicture}

\end{document}


The (M) after \matrix means that the nodes have labels (M-1-2), (M-1-4) etc. in the non-empty cells (with the option nodes in empty cells you can have nodes in the empty cells too). You can change (M) to anything you like.

You can adjust the spacing by changing row sep=1cm,column sep=16mm to suit your tastes.

• You forgot the arrow between aii and b :) Oct 31, 2017 at 6:45
• @CarLaTeX Oops, sorry! Exercise for the reader:)
– user30471
Oct 31, 2017 at 7:04
• You wanted to see if s/he is attentive :) Oct 31, 2017 at 7:06
• thanks +1, this looks nice. I think it will be compatible to minipage for each symbol, yes or no? :-) Oct 31, 2017 at 13:49
• @wonderich My understanding is that each element in the matrix is a tikz node. To some extend these function like mini-pages, perhaps, but they are not the same.
– user30471
Oct 31, 2017 at 14:18

It's very simple to do it with tikz-cd.

You can also choose the arrow tip you like with:

\tikzcdset{arrow style=tikz, diagrams={>=...}}


and fine tune the arrow position, with:

end anchor={[shift={(...,...)}]}


Here is my MWE:

\documentclass{article}
\usepackage{amsmath,amssymb}
\usepackage{tikz-cd}
\tikzcdset{arrow style=tikz, diagrams={>=Latex}}% arrow tip

\begin{document}
\begin{tikzcd}
& b\ar[rr] &  & d\ar[rr] &  & f\\
ai \ar[ur]\ar[rr]\ar[drr] &  & ci\ar[ur]\ar[rr] &  & edi\ar[ur]\\
&  & ciii\ar[rru]\ar[rr]\ar[ruu] &  & eiii\ar[uur]\\
aii\ar[uuur]\ar[urr]\ar[rr] &  & cii\ar[rru]\ar[uuur,end anchor={[shift={(2pt,-1pt)}]} % fine tuning of the arrow position
]
\end{tikzcd}
\end{document}


• +1 I didn't know that the syntax for arrows was so flexible.
– user30471
Oct 31, 2017 at 7:05
• @Andrew Of course it is! ;) Oct 31, 2017 at 7:07
• thanks +1, this looks nice. I think it will be compatible to replace each symbol for minipage, yes or no? :-) Oct 31, 2017 at 13:49
• @wonderich Do you intend to put a minipage instead of the letters? Oct 31, 2017 at 14:25