5

I am new in Tikz and have searched but not found what I am looking for (which should be a particularly simple).

I have a commutative diagram in which I am illustrating diagram chasing. I would like a curved arrow from B to C' but I need it to go around the outside of the diagram, curving around B'. Similarly, I need a curved arrow from B to C' but curving around C. I have been unable to move the arrows outside of inside of the diagram. What is the simple way of specifying this?

Moreover, is there a general way of telling Tikz how to add curves to your arrows, i.e. if I wanted to do the same thing as above but then make the arrow 'wavy' the whole way from B to C' or specify an arbitrary path of curved and loops from one node to the next?

\[
\begin{tikzpicture}
\matrix (m) [matrix of math nodes, row sep=3em,
column sep=3em, text height=1.5ex, text depth=0.25ex]
{ B & C  \\
B' & C' \\ };
\path[->]
(m-1-1) edge node[above] {$g$} (m-1-2)
         edge node[left] {$\beta$} (m-2-1)
         edge [bend left=30] (m-2-2)
         edge [bend right=15] (m-2-2);
\path[->]
(m-1-2) edge node[right] {$\gamma$} (m-2-2);
\path[->]
(m-2-1)  edge node[below] {$g'$} (m-2-2);
\end{tikzpicture}
\]
7

This is a possible solution, use of looseness=xx and bend left=xx, For the wavy line and arrow, here a style called snake it is defined,

enter image description here

Code

\usepackage[margin=1in]{geometry}
\usepackage{amsmath}% http://ctan.org/pkg/stackrel
\usepackage{tikz,siunitx}
\usetikzlibrary{matrix,positioning,calc}
\usetikzlibrary{decorations.pathmorphing}
\tikzset{snake it/.style={-stealth,
decoration={snake, 
    amplitude = .4mm,
    segment length = 2mm,
    post length=0.9mm},decorate}}
\begin{document}

\[
\begin{tikzpicture}
\matrix (m) [matrix of nodes, row sep=3em,
column sep=3em, text height=1.5ex, text depth=0.25ex]
{ B & C  \\
$B'$ & $C'$ \\ };
\path[->]
(m-1-1) edge node[above] {$g$} (m-1-2)
         edge node[left] {$\beta$} (m-2-1)
         edge [bend left=90,looseness=2,snake it] (m-2-2)
         edge [bend right=90,looseness=2] (m-2-2);
\path[->]
(m-1-2) edge node[right] {$\gamma$} (m-2-2);
\path[->]
(m-2-1)  edge node[below] {$g'$} (m-2-2);
\end{tikzpicture}
\]
\end{document}
  • Thank you! This is exactly what I was looking for but never stumbled across anything like this. An elegant and importantly - for me - simple solution! (+1) – Kyle L Nov 1 '14 at 3:22

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.