The solution given here has a problem. Let re-write a minimum example
\documentclass{standalone}
\usepackage{tikz}
\makeatletter
\tikzset{arrow length/.initial = 6pt,
arrow angle/.initial = 45}
\pgfarrowsdeclare{adj}{adj}{
\pgfarrowsleftextend{0pt}
\pgfarrowsrightextend{.5\pgflinewidth}
}
{
\pgfkeys{/tikz/arrow length/.get=\arrow@length}
\pgfkeys{/tikz/arrow angle/.get=\arrow@angle}
\pgfmathsetlengthmacro{\arrow@angle}{\arrow@length*tan(\arrow@angle)}
\pgfsetdash{}{0pt} % do not dash
\pgfsetroundcap % fix cap
\pgfpathmoveto{\pgfpointorigin}%{\pgfpoint{-4\arrowsize}{4\arrowsize}}
\pgfpathlineto{\pgfpoint{-\arrow@length}{\arrow@angle}}
\pgfpathmoveto{\pgfpointorigin}%{\pgfpoint{-4\arrowsize}{4\arrowsize}}
\pgfpathlineto{\pgfpoint{-\arrow@length}{-\arrow@angle}}
\pgfusepathqstroke
}
\makeatother
\begin{document}
\begin{tikzpicture}
\draw[help lines] (-3,0)grid(3,4);
% Arrow 1
\draw[arrow length = 24pt,
arrow angle = 15,
adj-adj,line width=1.5pt](-2.5,1)--(2.5,1)node[right]{1}
node[above,midway]{First arrow};
% Arrow 2 - Doesn't change anything (same line width then before)
\draw[arrow length = 400cm, %<- Big value to show you it doesn't work
arrow angle = 720, %<- Big value to show you it doesn't work
adj-adj,line width=1.5pt](-2.5,2)--(2.5,2)node[right]{2}
node[above,midway]{Arrows not changed};
% Arrow 3 - Change arrow because the line width is changed
\draw[adj-adj,line width=1.501pt](-2.5,3)--(2.5,3)node[right]{3}%<- Line width little changed
node[above,midway]{Arrows changed};
\end{tikzpicture}
\end{document}
which gives the following result
The problem is that the arrow length and arrow angle style effect the arrow on line of different line width. In the Arrow 2(see the above listing) I apply very big values of them but there is no effects because the line width is the same of the previous line. The following one, instead, I apply a line width of 0.001pt more than before and the options changes the arrow tips.
Did I use wrong the pgfkeys? How can I solve it?