It's important to understand how the decorations.markings library works to see what's happening with your code. When it places a marking at a point on a path, then it applies a transformation so that the marking is based at the right place and so that it points along the path. However, it doesn't do anything else.
When an arrow is placed at the start or end of a path then a more complicated process takes place. Even without the bending library, then there are modifications applied to the path to ensure that the arrow ends at exactly the right place, and the path goes "into" the arrow at its base. With the bending library then even more complicated things happen.
The difference, then, is that with a decoration then the path is not used other than to place and rotate the arrow. This leads to the arrow not looking right - it doesn't end at the right place and it points out of the circle. One way to fix this is to use a path to draw the arrow. So we need a path that ends at the right point and follows the path of the circle up to it. We also want to just draw the arrow and not the path. And we'd like to not have to do too much "by hand".
Here's a solution that does that.
- We save a copy of the circle path,
- Using the
spath3 library, we cut the path at the desired point (I found a bug in the code, so you'll need to use the current version from github until I upload it to CTAN). This path now ends at the right place.
- We now use this path to draw an arrow, and thanks to the
tips key we can draw the arrow but not the path.
\documentclass{article}
%\url{https://tex.stackexchange.com/q/656033/86}
\usepackage{tikz}
\usetikzlibrary{
shapes,
decorations,
arrows.meta,
decorations.markings,
bending,
spath3
}
\begin{document}
\begin{tikzpicture}
\draw[
thick,
spath/save=circle
] circle[radius=0.3];
\tikzset{
spath/remove empty components={circle},
spath/split at={circle}{0.27},
}
\path[
red,
thick,
tips=true,
-{Straight Barb[length=2.15,reversed,bend]},
spath/use=circle
];
\draw[
green,
line width=.05pt,
spath/use=circle
];
\end{tikzpicture}
\end{document}
I've drawn the arrow in red and then placed a thin green circle over the top to show that the arrow does lie along the circular path as desired.
