I have an arrow style which works fine for straight arrows. The only purpose of the style is to enlarge the arrowheads, so if there is a simpler way to do this do let me know. Anyhow, when I apply the style to a curved arrow, no arrowhead is rendered. The MWE provided shows the curved arrow with a default head, but I would much like to somehow apply my arrow style.

enter image description here



  \begin{tikzpicture}[list/.style={rectangle split, rectangle split parts=2,
    draw, rectangle split horizontal, thick, minimum
    height=1cm}, >=stealth, start chain]
    \tikzstyle{arrow} = [decoration={markings,mark=at position 1 with

    \node[list,on chain] (A) {$A_1$};
    \node[list,on chain] (B) {$A_2$};
    \node[list,on chain] (C) {$A_3$};
    \node[list,on chain] (D) {$A_4$};
    \node[list,on chain] (E) {$A_5$};
    \node[on chain] (F) {NULL};
    \draw[arrow] let \p1 = (A.two), \p2 = (A.center) in (\x1,\y2) -- (B);
    \draw[arrow, dashed] let \p1 = (B.two), \p2 = (B.center) in (\x1,\y2) -- (C);
    %%%%---I would like the arrowhead style applied here---%%%%
    \draw[->,>=stealth, thick] let \p1 = (B.two), \p2 = (B.center) in (\x1,\y2) to [bend left=60] (D.one west);
    \draw[arrow] let \p1 = (C.two), \p2 = (C.center) in (\x1,\y2) -- (D);
    \draw[arrow] let \p1 = (D.two), \p2 = (D.center) in (\x1,\y2) -- (E);
    \draw[arrow] let \p1 = (E.two), \p2 = (E.center) in (\x1,\y2) -- (F);

1 Answer 1


Like this?

enter image description here

\documentclass[tikz, margin=3mm]{standalone}
\usetikzlibrary{arrows.meta,    % <---

every edge/.style = {draw, -{Stealth[angle=30:7pt, bend]}}, % <---
 start chain = going right,
 list/.style = {rectangle split, rectangle split parts=2,
               rectangle split horizontal, 
               rectangle split empty part width=1.5em, 
               draw, thick, minimum height=1cm, 
               on chain}, 
\node   (A) {$A_1$};
\node   (B) {$A_2$};
\node   (C) {$A_3$};
\node   (D) {$A_4$};
\node   (E) {$A_5$};
\node [on chain] (F) {NULL};
\draw   (A.two north |- A.two east) edge (B) 
        (B.two north |- C.two east) edge[dashed] (C)
        (C.two north |- C.two east) edge (D)
        (D.two north |- D.two east) edge (E)
        (E.two north |- E.two east) edge (F);
        (B.two north |- B.two east) edge[bend left=45] (D.west);

Edit: added details of arrows heads size. All arrows are the same, if the they have the same head lengths:

enter image description here

  • How to determine arrows heads size is described in section 16.3.1 Size in the TikZ & PGF manual, pp 194 -- 197. It is part of you tikz installation or you can found it CTAN (use google to find it).

  • If arrows are bendend, than for aligning arrows head to bended line serves option bend and flex. Their use are described in the section 16.3.8 Bending and Flexing, pp 202 -- 204.

  • For both features you need to load libraries arrows.meta and bending

  • Thanks! But the arrowhead of the curved arrow is still smaller than the others, I'd like it to be the same size as the other arrowheads.
    – John
    Dec 6, 2020 at 0:26
  • @John, all arrows head are equal if the thickness of arrows lines are the same or the lenghts of arrows heads are the same. See edited answer
    – Zarko
    Dec 6, 2020 at 0:56
  • Ah, I did something silly when I copied your solution previously. I noticed if I increase the 7pt to something like 14pt then the arrow heads change as well. This is what I want. I'm quite new to Tikz, can you explain why changing this value affects all arrowheads? Thanks!!
    – John
    Dec 6, 2020 at 1:31
  • @John, see edit of answer. I add some basic information, where you can find description of arrows.meta and `bending library.
    – Zarko
    Dec 6, 2020 at 2:04

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .