3

I am trying to label crossing arrows in my tikz-matrix diagram. By default, the label is placed half-way of the path. Since the arrows cross half-way too, the labelling becomes ambiguous:

enter image description here

How can I 'move' the label downwards or upwards? Or is there a better environment for drawing this diagram?

Here is the tikz code:

\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{matrix}

\begin{document}

 \begin{tikzpicture}
  \matrix (m) [matrix of math nodes, row sep=4em,
    column sep=0.2em]{
    V& \quad \hookrightarrow \quad & H & \cong& H'& \quad \hookrightarrow &V' \\
    Q_+& \quad \hookrightarrow \quad & Q & \cong& Q '& \quad \hookrightarrow &Q_+' \\
    };
  \path[-stealth]
    (m-1-1) edge [densely dotted] node [left] {$J_1'$} (m-2-5) 
    (m-1-3) edge (m-2-7) 
    (m-2-1) edge  (m-1-5)
    (m-2-3) edge [densely dotted] (m-1-7);
\end{tikzpicture}

\end{document}
7
  • 1
    Please make your code compilable, starting with \documentclass{...} and ending with \end{document}. You're missing a semi-colon at the end of your \path. I suggest using [xshift=-1.5em,yshift=.5em,left] or something like that.
    – jub0bs
    May 6, 2013 at 8:15
  • You can add the option anchor=south or anchor=north to the node options, so that it reads e.g. [left, anchor=south]
    – yori
    May 6, 2013 at 8:15
  • 2
    Oh, and maybe also add e.g. pos=0.3, which instructs TikZ to put the label at around 30% of the edge (instead of 50%, i.e., the midpoint). anchor=north, pos=0.1 seems good to me. Add e.g. xshift=2pt or yshift=2pt for better positioning.
    – yori
    May 6, 2013 at 8:24
  • 1
    There are also two (generally) useful keys: near start and near end.
    – kan
    May 6, 2013 at 8:28
  • 2
    I also want to drop some useful keys: auto and swap (instead of left, top, etc.). May 6, 2013 at 8:30

1 Answer 1

5

I'd like to present an answer using the beautiful package tikz-cd.

Update

Here is a solution based on the version v.0.3c, the most recent.

\documentclass{amsart}
\usepackage{tikz-cd} %some features in this code require v.0.3c 
\begin{document} 
\begin{tikzcd}
V \arrow[densely dotted, end anchor={[xshift=-3ex]north east}]{rd}[swap, pos=0.4, description]{J_1'} \arrow[hookrightarrow]{r} 
& H \cong H' \arrow[start anchor={[xshift=1.5ex]south west}, densely dotted]{rd}\arrow[hookrightarrow]{r} 
& V' \\

Q_+\arrow[densely dotted, end anchor={[xshift=-3ex]south east}]{ru}\arrow[hookrightarrow]{r}
& Q \cong Q' \arrow[hookrightarrow]{r}
& Q_+
\end{tikzcd}
\end{document}

The Output

communewversion.png

Some Useful Anchors available (the following image is a screenshot from this tutorial that influenced the package tikz-cd):

anchorsareworthlearning.png

Some preliminary remarks: the newest version has a very clean interface to anchors (and I exploit anchors quite heavily in this solution). However, the old answer based on the version v.0.3a is here, in case you don't have access to the new version just like I did not have.

I highly recommend the following solution, which leaves no room for ambiguity about which arrow is being called J1'.

\documentclass{amsart}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
V \arrow[densely dotted, end anchor=40]{rd}[swap, pos=0.77, description]{J_1'} \arrow[hookrightarrow]{r} 
& H \cong H' \arrow[start anchor=210, densely dotted]{rd}\arrow[hookrightarrow]{r} 
& V' \\

Q_+\arrow[densely dotted, end anchor=-60]{ru}\arrow[hookrightarrow]{r}
& Q \cong Q' \arrow[hookrightarrow]{r}
& Q_+
\end{tikzcd}
\end{document}

The output:

commudes.png

Confusing-to-the-reader solution:

\documentclass{amsart}
\usepackage{tikz-cd}
\begin{document}
\begin{tikzcd}
V \arrow[densely dotted, end anchor=40]{rd}[swap, pos=0.65]{J_1'} \arrow[hookrightarrow]{r} 
& H \cong H' \arrow[start anchor=210, densely dotted]{rd}\arrow[hookrightarrow]{r} 
& V' \\

Q_+\arrow[densely dotted, end anchor=-60]{ru}\arrow[hookrightarrow]{r}
& Q \cong Q' \arrow[hookrightarrow]{r}
& Q_+
\end{tikzcd}
\end{document}

The Output

commu.png

2
  • Thank you for this thorough introduction into tikz-cd... I will just shrink the hooked arrows, as they are mathematical relations rather than arrows.
    – Jan
    May 6, 2013 at 11:29
  • @Jan Glad to have been of help. Sure, do as you please! :)
    – kan
    May 6, 2013 at 11:34

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.