I need to design a custom arrowtip in TikZ, but so far I haven't had much luck. I have been able to define a circle arrow with the arrows meta library, but I cannot figure out how to add the plus sign in the center. Can anyone help me out with this?

Arrow with custom tip

The code for a circle arrow head:





  \draw [-circleplus] (0,0)  -- +(1,0);


3 Answers 3


I couldn't see how to combine existing arrows but you can modify the definition of Circle easily enough:

enter image description here



  name = CircleP,
  defaults = {
    length  = +2.39365pt +3.191538,
    width'  = +0pt 1,
    line width = +0pt 1 1,
  setup code = {
    % Cap the line width at 1/2th of the length
    \[email protected]\pgfarrowlength
      \pgfarrowssetlineend{\pgfarrowlength\advance\pgf@x by-.5\pgfarrowlinewidth}
    % The hull:
    % The following are needed in the code:
  drawing code = {
        \[email protected]\pgfarrowlength
        \advance\pgf@xa by-.5\pgfarrowlinewidth
        \[email protected]\pgfarrowwidth
        \advance\pgf@xa by-.5\pgfarrowlinewidth
  parameters = {
    \ifpgfarrowharpoon h\fi%
    \ifpgfarrowopen o\fi%
    \ifpgfarrowroundjoin j\fi%



  \draw [-circleplus] (0,0)  -- +(1,0);


You could probably define a new arrow tip, as described in Custom arrow tip with arrows.meta TikZ library

If you don't need the full power of declaring a new arrow, you could just use a marking:

\documentclass[tikz, border=2pt]{standalone}
  -circleplus/.style = {
                mark=at position 1 with
                  {\draw[fill=white] (-2pt,0) circle (2pt);
                   \draw[-] (-3pt,0) -- (-1pt,0) (-2pt,1pt) -- (-2pt,-1pt);
  \draw[-circleplus] (0,0) .. controls (.5,0) .. (1,1);

marked path

This won't combine with other arrow tips in the usual way, but you can still add an arrow tip at the other end using, e.g., \draw[-circleplus, <-] .... You'd have to define a separate command for circleplus- if you want to use that.


@David Carlisle said that he

couldn't see how to combine existing arrows

but he definitely know how: put things together and apply negative spaces.

    Circle[open,length=0 10,sep=0 -7.5]
    Rectangle[length=0 5,width=0 1,sep=0 -3]
    Rectangle[length=0 1,width=0 4]

You must log in to answer this question.

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