Inserting text inside an arrow in Tikz
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:
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.
\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}