2

I would like to draw a globular cell for higher dimensional categories and cannot find how to bend arrows between arrows between arrows...etc. I know how to bend arrows between nodes, but cannot find how to do it between arrows. Thanks for your help.

Sorry! Here is the type of diagram I have in mind. enter image description here

I think I have an excellent answer from Gonzalo. I simply have to edit some of the arrows. Thanks!

  • 2
    What is a globular cell? Which arrows are you talking about? What does etc. mean in this context? – percusse Sep 25 '15 at 18:06
  • 2
    If you uploaded a mock-up picture (even done with a pen on paper), it'd help understand what you want to do. :) Welcome to Tex SE! – Alenanno Sep 25 '15 at 18:08
5

I'd suggest you to use the tikz-cd package (built upon TikZ) which makes the creation of diagrams an easy job; using empty labels you can assign names that can then be used to draw the "inner" arrows; a little example with bent arrows inside bent arrows inside bent arrows:

\documentclass{article}
\usepackage{tikz-cd}

\begin{document}

\begin{tikzcd}[column sep=1.5cm]
A
  \arrow[r, out=90,in=90,looseness=2.4,"f",""{name=p, below,}] 
  \arrow[r, bend left=40, ""{name=q, above,}]
  \arrow[r, bend left=40, ""{name=v, below,}]  
  \arrow[r, bend right=40,""{name=s, above,}] 
  \arrow[r, bend right=40,""{name=w, below,}] 
  \arrow[r, out=-90,in=-90,looseness=2.4,swap,"g",""{name=t, above,}] 
  \arrow[from=p, to=q]
  \arrow[from=v,to=s]
  \arrow[from=w,to=t]
& B
  \arrow[r,"h"]  
& C 
  \arrow[r, out=90,in=90,looseness=1.4,"j", ""{name=L, below,}]  
  \arrow[r, out=-90,in=-90,looseness=1.4,swap,"k",""{name=M, above}] 
  \arrow[from=L,to=M,bend right=60,""{name=N, right}]
  \arrow[from=L,to=M,bend left=60,""{name=P, left}]
  \arrow[from=N,to=P,bend left=40]
  \arrow[from=N,to=P,bend right=40]
& D
\end{tikzcd}

\end{document}

The result:

enter image description here

And to reproduce the diagram uploaded after the edit to the question:

\documentclass{article}
\usepackage{xargs}
\usepackage{tikz-cd}
\usetikzlibrary{arrows.meta}

\newlength{\myline}% line thickness
\setlength{\myline}{1pt}
\newcommandx*{\triplearrow}[4][1=0, 2=1]{% #1 = shorten left (optional), #2 = shorten right (optionsl),
% #3 = draw options (must contain arrow type), #4 = path
  \draw[line width=\myline,double distance=3\myline,#3] #4;
  \draw[line width=\myline,shorten <=#1\myline,shorten >=#2\myline,#3] #4;
}

\begin{document}

\begin{tikzcd}[
  column sep=1.5cm,
  execute at end picture={\triplearrow{arrows={-Implies}}{(N) -- (P)}},
  every node/.append style={draw,fill}
  ]
\bullet
  \arrow[r, out=90,in=90,looseness=1.4, ""{name=L, below,}]  
  \arrow[r, out=-90,in=-90,looseness=1.4,swap,""{name=M, above}] 
  \arrow[Rightarrow,from=L,to=M,bend right=60,""{name=N, right}]
  \arrow[Rightarrow,from=L,to=M,bend left=60,""{name=P, left}]
&
\bullet
\end{tikzcd}

\end{document}

The result:

enter image description here

For the triple implies arrow I used John Kormylo's code in his answer to Custom arrow shaft in tikz.

  • Hi Gonzalo, I have pasted your code in my document, but I get the following message: Package tikz-cd error: Arrow direction argument must contain only the characters u, d, l, r. (...) \arrow[r, out=-90,looseness=1.4,swap,""{name=M, above}]? – Jean-Pierre Sep 29 '15 at 1:51
  • @Jean-Pierre Hi. The error message indicates that your tikz-cd package is outdated. Please update it; since it depends on TikZ, you might also need to update PGF/TikZ, – Gonzalo Medina Sep 29 '15 at 5:26
  • Thank you again for your help! As far as I can tell, my tikz-cd package is up to date. I have tried this code, without success: [\begin{tikzcd} \bullet \arrow[bend left=60]{r}[name=U,below]{} \arrow[bend right=60]{r}[name=D]{} \arrow[Rightarrow,to path=(U) -- (D),bend right=60]{}[name=L, right]{} \arrow[Rightarrow,to path=(U) -- (D),bend left=60]{}[name=R, left]{} & \bullet \end{tikzcd}] – Jean-Pierre Oct 1 '15 at 19:00
  • @Jean-Pierre You're welcome. No, your package is not updated. The error message from your first comment and the syntax from your previous comment show that your package is outdated. Feel free to open a fresh new question with the problematic code. – Gonzalo Medina Oct 1 '15 at 19:16
  • Will do! It is a mystery to me! – Jean-Pierre Oct 2 '15 at 1:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.