I found two more or less appropriate ways to change the arrow size (which is not a solution of the actual problem at hand, namely that at position 1 is not calculated correct):
- less appropriate:
- New arrow head:
_latex
- New style:
arrow line width that takes a length (the new \pgflinewidth)
- and
arrow ultra thin, arrow very thin, …, arrow ultra thick that set arrow line width
- more appropriate:
- Re-defining a macro that locally (!) sets a new line width for the arrows.
- New style:
arrow line width that takes a factor
- and
arrow ultra thin, arrow very thin, …, arrow ultra thick that set arrow line width
(They could even be combined.)
less appropriate: New Arrow Head
I chose to define a new arrow _latex that is the same as latex only that \pgflinewidth is replaced by \pgflinewidth@arrow.
The length \pgflinewidth@arrow is per default \pgflinewidth so the arrow acts as usual unless the key arrow line width is used explicitly with an arbitrary length. (Sadly, thick and so on cannot be used, but arrow thick.)
Improvements could be made that one could use the already existing arrows without any change by finding a good hook to set \pgflinewidth locally.
For many other way to change the arrow size: Is it possible to change the size of an arrowhead in TikZ/PGF?
Code
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\makeatletter
\tikzset{nomorepostaction/.code = \let\tikz@postactions\pgfutil@empty}
\newdimen\pgflinewidth@arrow
\pgfarrowsdeclare{_latex}{_latex}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth@arrow%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth@arrow-.4\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfarrowsleftextend{+-1\pgfutil@tempdima}
\pgfarrowsrightextend{+9\pgfutil@tempdima}
}
{
\pgfutil@tempdima=0.28pt%
\pgfutil@tempdimb=\pgflinewidth@arrow%
\ifdim\pgfinnerlinewidth>0pt%
\pgfmathsetlength\pgfutil@tempdimb{.6\pgflinewidth@arrow-.4\pgfinnerlinewidth}%
\fi%
\advance\pgfutil@tempdima by.3\pgfutil@tempdimb%
\pgfpathmoveto{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
\pgfpathcurveto
{\pgfqpoint{6.3333\pgfutil@tempdima}{.5\pgfutil@tempdima}}
{\pgfqpoint{2\pgfutil@tempdima}{2\pgfutil@tempdima}}
{\pgfqpoint{-1\pgfutil@tempdima}{3.75\pgfutil@tempdima}}
\pgfpathlineto{\pgfqpoint{-1\pgfutil@tempdima}{-3.75\pgfutil@tempdima}}
\pgfpathcurveto
{\pgfqpoint{2\pgfutil@tempdima}{-2\pgfutil@tempdima}}
{\pgfqpoint{6.3333\pgfutil@tempdima}{-.5\pgfutil@tempdima}}
{\pgfqpoint{9\pgfutil@tempdima}{0pt}}
\pgfusepathqfill
}
\tikzset{
bigdiagramarrow/.style = {
-_latex,
arrow thick
},
arrow line width/.code={
\pgfmathsetlength\pgflinewidth@arrow{#1}
},
arrow line width/.initial=\pgflinewidth,
arrow ultra thin/.style={arrow line width=0.1pt},
arrow very thin/.style={arrow line width=0.2pt},
arrow thin/.style={arrow line width=0.4pt},
arrow semithick/.style={arrow line width=0.6pt},
arrow thick/.style={arrow line width=0.8pt},
arrow very thick/.style={arrow line width=1.2pt},
arrow ultra thick/.style={arrow line width=1.6pt},
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [draw] (A) at (0, 0) {$A$};
\node [draw] (B) at (0, 1) {$B$};
\node [draw] (C) at (2, 1) {$C$};
\draw [bigdiagramarrow] (A) to (B);
\draw [out = 0, in = 180][bigdiagramarrow] (A) to (C);
\end{tikzpicture}
\end{document}
Output

more appropriate:
Code
\documentclass[tikz,border=2pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\makeatletter
\tikzset{nomorepostaction/.code = \let\tikz@postactions\pgfutil@empty}
\def\pgf@arrowset#1#2{%
\pgfutil@ifundefined{pgf@arrow@code@#2}
{\PackageError{pgf}{Arrow #1 type ``#2'' unknown}{}}
{%
\edef\pgf@arrow@temp{#2}%
\ifx\pgf@arrow@temp\pgfutil@empty% ah. clear!
\expandafter\let\csname pgf@#1arrow\endcsname=\pgfutil@empty%
\expandafter\let\csname pgf@shorten@#1\endcsname=\pgfutil@empty%
\else%
%\pgf@arrow@prepare{#2}%
\expandafter\def\csname pgf@#1arrow\endcsname{\multiply\pgflinewidth by \pgflinewidth@arrow\relax\pgf@arrow@call{#2}}%
\expandafter\edef\csname pgf@shorten@#1\endcsname{\multiply\pgflinewidth by \noexpand\pgflinewidth@arrow\relax\expandafter\noexpand\csname pgf@arrow@right@#2\endcsname}%
\fi%
}%
}
\tikzset{
bigdiagramarrow/.style = {
-latex,
arrow thick
},
arrow line width/.code={
\pgfmathsetmacro\pgflinewidth@arrow{#1}
},
arrow line width=1,
arrow ultra thin/.style={arrow line width=0.25},
arrow very thin/.style={arrow line width=0.5},
arrow thin/.style={arrow line width=1},
arrow semithick/.style={arrow line width=1.5},
arrow thick/.style={arrow line width=2},
arrow very thick/.style={arrow line width=3},
arrow ultra thick/.style={arrow line width=4},
}
\makeatother
\begin{document}
\begin{tikzpicture}
\node [draw] (A) at (0, 0) {$A$};
\node [draw] (B) at (0, 1) {$B$};
\node [draw] (C) at (2, 1) {$C$};
\draw [bigdiagramarrow] (A) to (B);
\draw [out = 0, in = 180][bigdiagramarrow] (A) to (C);
\end{tikzpicture}
\end{document}
Output

at position .9999. – Qrrbrbirlbel Jan 04 '13 at 03:53\draw (A)and(A) to (C)are two distinct paths. So you are not doing anything to thetopath as it is. – percusse Jan 04 '13 at 04:02\draw [bigdiagramarrow] (A) to (B);? – Qrrbrbirlbel Jan 04 '13 at 04:09(A) to (B). Or\draw [out = 0, in = 206, bigdiagramarrow] (A) to + (0:2);(but not without=207). I do not see any relation to two to paths. – Qrrbrbirlbel Jan 04 '13 at 04:12skipperstep of themarkingsdecoration inaccuracy. – percusse Jan 04 '13 at 04:17markingsalso suffer from this http://sourceforge.net/tracker/?func=detail&aid=3496004&group_id=142562&atid=752792 – percusse Jan 04 '13 at 04:23