I would like to have several single arrow nodes all with the same dimensions (independent of the node text). I tried to achieve this by setting minimum width, minimum height, inner sep, and single arrow head extend.
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\tikzset{MyArrow/.style={single arrow, draw, minimum width=6ex, minimum height=10ex,
inner sep=0ex, single arrow head extend=1ex}
}
\begin{document}
\begin{tikzpicture}
\draw[step=1ex,gray,ultra thin] (-1ex,-4ex) grid (45ex,4ex);
\path (0,0) node[anchor=west,MyArrow] (a1) {};
\path (a1.east) ++(1ex,0) node[anchor=west,MyArrow] (a2) {a};
\path (a2.east) ++(1ex,0) node[anchor=west,MyArrow] (a3) {b};
\path (a3.east) ++(1ex,0) node[anchor=west,MyArrow] (a4) {bg};
\end{tikzpicture}
\end{document}
Here, the arrow dimensions depend on the text.

One can indirectly make the arrow dimensions independent of the node text by using \rule as the node text and adding the text with a subsequent command:
\documentclass{minimal}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\tikzset{MyArrow/.style={single arrow, draw, minimum width=6ex, minimum height=10ex,
inner sep=0ex, single arrow head extend=1ex}
}
\begin{document}
\begin{tikzpicture}
\draw[step=1ex,gray,ultra thin] (-1ex,-4ex) grid (45ex,4ex);
\path (0,0) node[anchor=west,MyArrow] (a1) {\rule{0ex}{4ex}};
\path (a1.east) ++(1ex,0) node[anchor=west,MyArrow] (a2) {\rule{0ex}{4ex}};
\path (a2) node {a};
\path (a2.east) ++(1ex,0) node[anchor=west,MyArrow] (a3) {\rule{0ex}{4ex}};
\path (a3) node {b};
\path (a3.east) ++(1ex,0) node[anchor=west,MyArrow] (a4) {\rule{0ex}{4ex}};
\path (a4) node {bg};
\end{tikzpicture}
\end{document}

I was wondering whether there is an easier way to directly determine the dimensions of the single arrow node shape and make it independent of the node text.



minimaleven if it's in the OP's question. – egreg Nov 03 '14 at 15:18\documentclass{minimal}is not a good choice for code examples? – Robert Nov 03 '14 at 16:28