You can create your own custom decoration. With the following, you can use options to customize the appearance of the arrow as described in the picture below.
\documentclass[border=10pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations}
\newlength{\tailarrowtiplength}
\setlength{\tailarrowtiplength}{1em}
\newlength{\tailarrowtipwidth}
\newlength{\tailarrowtailwidth}
\newlength{\tailarrowjointwidth}
\pgfdeclaredecoration{tail arrow decoration}{initial}{
\state{initial}[width=\pgfdecoratedpathlength, next state=final] {
\pgfpathlineto{\pgfpoint{0pt}{0.5\tailarrowtailwidth}}
\pgfpathlineto{\pgfpointadd{\pgfpointdecoratedpathlast}{\pgfpoint{-1\tailarrowtiplength}{0.5\tailarrowjointwidth}}}
\pgfpathlineto{\pgfpointadd{\pgfpointdecoratedpathlast}{\pgfpoint{-1\tailarrowtiplength}{0.5\tailarrowtipwidth}}}
\pgfpathlineto{\pgfpointdecoratedpathlast}
\pgfpathlineto{\pgfpointadd{\pgfpointdecoratedpathlast}{\pgfpoint{-1\tailarrowtiplength}{-0.5\tailarrowtipwidth}}}
\pgfpathlineto{\pgfpointadd{\pgfpointdecoratedpathlast}{\pgfpoint{-1\tailarrowtiplength}{-0.5\tailarrowjointwidth}}}
\pgfpathlineto{\pgfpoint{0pt}{-0.5\tailarrowtailwidth}}
\pgfpathclose
}
\state{final} {
\pgfpathmoveto{\pgfpointdecoratedpathlast}
}
}
\tikzset{
tail arrow tip length/.code={
\setlength{\tailarrowtiplength}{#1}
},
tail arrow tip width/.code={
\setlength{\tailarrowtipwidth}{#1}
},
tail arrow tail width/.code={
\setlength{\tailarrowtailwidth}{#1}
},
tail arrow joint width/.code={
\setlength{\tailarrowjointwidth}{#1}
},
tail arrow tip length/.default={ 2em },
tail arrow tip width/.default={ 2em },
tail arrow tail width/.default={ 1em },
tail arrow joint width/.default={ .2em },
tail arrow/.style={
tail arrow tip length,
tail arrow tip width,
tail arrow tail width,
tail arrow joint width,
decorate,
decoration={tail arrow decoration}
}
}
\begin{document}
\begin{tikzpicture}
\draw[tail arrow, tail arrow tip width=4em, tail arrow tip length=1em, tail arrow joint width=0.5em] (0,-1) -- (5,-2);
\draw[tail arrow] (0,0) -- (5,0);
% description of options
\draw[|-|, red] ([shift={(-2em,-1.5em)}]5,0) -- ([shift={(0em,-1.5em)}]5,0) node[below, midway, font=\ttfamily\scriptsize, align=center] {tail arrow \\ tip length};
\draw[|-|, red] ([shift={(0.5em,-1em)}]5,0) -- ([shift={(0.5em,1em)}]5,0) node[right, midway, font=\ttfamily\scriptsize, align=left] {tail arrow \\ tip width};
\draw[|-|, red] ([shift={(-2.5em,-0.1em)}]5,0) -- ([shift={(-2.5em,0.1em)}]5,0) node[above left, pos=0, font=\ttfamily\scriptsize, align=right] {tail arrow \\ joint width};
\draw[|-|, red] ([shift={(-0.5em,-0.5em)}]0,0) -- ([shift={(-0.5em,0.5em)}]0,0) node[left, midway, font=\ttfamily\scriptsize, align=right] {tail arrow \\ tail width};
\end{tikzpicture}
\end{document}
Applied in a tikzcd
context, you could then do:
\documentclass[border=10pt]{standalone}
\usepackage{tikz-cd}
\usetikzlibrary{decorations}
% [above definitions]
\begin{document}
\begin{tikzcd}[arrows={tail arrow, tail arrow tip width=.75em, tail arrow tail width=.5em, tail arrow tip length=1em}]
K\arrow[dr]\arrow[d]\\
\Omega\arrow[r] & k
\end{tikzcd}
\end{document}
shapes.arrows
? Or should it be a path, connecting two coordinates or nodes? TikZ doesn't really support variable line width in one path (but solutions exist). But in this simple case it could be replicated by drawing the area itself.pic
for your arrow, then use\path (A)--(B) pic[sloped,midway]{myarrow};