1

The follow code produces an arrowhead at the centre of the circles. Can anyone please explain why and how to remove it?

\tikzset{pics/carc/.style args={#1:#2:#3}{
code={\draw[pic actions] (#1:#3) arc(#1:#2:#3);
}}}
\begin{tikzpicture}
\draw[<-,>=stealth', thick, black] (0,0) pic{carc=100:440:1.6};
\draw[<-,>=stealth', thick, black] (0,0) pic{carc=100:440:1.1};
\draw[<-,>=stealth', thick, black] (0,0) pic{carc=100:440:0.6};
\end{tikzpicture}
ThomasC
  • 161
  • 3
    Please, don't post fragments but a minimal example from \documentclass to \end{document}. – egreg Mar 19 '18 at 14:22

2 Answers2

3

The arrow is there because you asked TikZ to put it. I guess you want to pass the options to the \draw inside the pic, not to the outside one.

\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\tikzset{pics/carc/.style args={#1:#2:#3}{
code={\draw[pic actions] (#1:#3) arc(#1:#2:#3);
}}}
\begin{tikzpicture}
 \draw (0,0) pic[<-,>=stealth', thick, black]{carc=100:440:1.6};
 \draw (0,0) pic[<-,>=stealth', thick, black]{carc=100:440:1.1};
 \draw (0,0) pic[<-,>=stealth', thick, black]{carc=100:440:0.6};
\end{tikzpicture}
\end{document}

enter image description here

3

Replace \draw by \path then the arrow to (0,0), which is the end of your the path, will not be drawn:

\documentclass[margin=5pt]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows}
\begin{document}
\tikzset{pics/carc/.style args={#1:#2:#3}{
  code={\draw[pic actions] (#1:#3) arc(#1:#2:#3);
}}}
\begin{tikzpicture}
\path[<-,>=stealth', thick, black] 
  (0,0) foreach \r in {1.6,1.1,.6}{pic {carc=100:440:\r}};
\end{tikzpicture}
\end{document}

enter image description here

esdd
  • 85,675
  • I really like your simple loop, but I think that the path solution is perhaps not optimal. Sometimes the paths get distorted by options like shorten. In the above situation, of course there is none of these issues. –  Mar 19 '18 at 14:58