6

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}
\]

1 Answer 1

8

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}
1
  • 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
    Commented Nov 1, 2014 at 3:22

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .