15

I want to draw an arrow between two nodes (a) and (b), and write text inside the arrow. How can I modify this command to control the size of the arrow head and insert the text?

\draw[->, >=latex, blue!20!white, line width=15pt]   (a) to (b) ; 
Tarek
  • 3,933
  • 3
  • 15
  • 6

2 Answers2

18

You can perfectly use the shapes library for this. Use \usetikzlibrary{shapes.arrows}. Based on an example from the TikZ manual, page 441:

\documentclass{article}

\usepackage{tikz}
    \usetikzlibrary{shapes.arrows}

\begin{document}
    \begin{tikzpicture}[every node/.style={single arrow, draw=none, rotate=60}]
        \node [fill=red!50] {arrow 1};
        \node [fill=blue!50, single arrow head indent=1ex] at (1.5,0) {arrow 2};
    \end{tikzpicture}
\end{document}

This gives:

enter image description here

Ingo
  • 20,035
12

Those are two quite different questions, answering the one in the title:

If you simply add a node along the line, it will be printed on top of the line (unless otherwise specified). You have to change the color though, as the color specification of the \draw command also applies to the node.

For non-horizontal arrows add sloped to the node options.

enter image description here

\documentclass[border=5mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\coordinate (a) at (0,0);
\coordinate (b) at (6,0);
\coordinate (c) at (45:6);

\draw[->, >=latex, blue!20!white, line width=15pt] (a) to node[black]{text} (b);
\draw[->, >=latex, blue!20!white, line width=15pt] (a) to node[black,sloped]{text} (c);
\end{tikzpicture}
\end{document}
Torbjørn T.
  • 206,688