![如何旋转 TikZ 装饰(箭头)?](https://linux22.com/image/341890/%E5%A6%82%E4%BD%95%E6%97%8B%E8%BD%AC%20TikZ%20%E8%A3%85%E9%A5%B0%EF%BC%88%E7%AE%AD%E5%A4%B4%EF%BC%89%EF%BC%9F.png)
虽然 TikZ 可以选择弯曲出现在边缘尖端的箭头(库bending
),也可以选择将箭头放置在边缘中间(库decorations
),但我无法将两者结合起来。在下面的代码中,我使用库decorations
将箭头放置在循环中间附近,但箭头的方向是根据尖端曲线的切线确定的。是否可以弯曲箭头,甚至只是将其旋转一个硬编码的角度?
\pdfoutput=1
\documentclass{standalone}
\usepackage{tikz}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\tikzset{->-/.style={decoration={markings, mark=at position #1 with {\arrow{stealth}}},postaction={decorate}}}
\node[draw,circle] (n) {$n$};
\draw [->-=.5] (n) to [distance=5ex, in=60, out=120, loop] ();
\end{tikzpicture}
\end{document}
答案1
在装饰时,\pgfdecoratedangle
保存路径切线角度以调整变换。您可以使用该角度或任何与该量相偏移的硬编码值
\documentclass[tikz]{standalone}
\usetikzlibrary{decorations.markings}
\begin{document}
\begin{tikzpicture}
\tikzset{->-/.style={
decoration={markings, mark=at position #1 with {%
\arrow[rotate=-\pgfdecoratedangle]{stealth}% always point right
}
},
postaction={decorate}
}
}
\node[draw,circle] (n) {$n$};
\draw [->-=.2] (n) to [distance=5ex, in=60, out=120, loop] ();
\end{tikzpicture}
\end{document}