我有以下最小示例,其中我结合使用in
和:out
shorten >
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 1.5em}]
\node (a) at (0, 0) {$a$};
\node (b) at (0, 0.8) {$b$};
\draw[->, shorten > = 3pt] (a) to [out = 45, in = -45] (b);
\end{tikzpicture}
\end{document}
如您所见,箭头不再与路径末端对齐。有没有办法改变箭头的角度,或者理想情况下改变路径的曲率,使其在节点前 3pt 处以 -45 度角进入?我不介意手动调整一些角度或控制点。
这个问题decorations
是我能找到的最接近的问题,但它与我没有使用的库有关。
答案1
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\usetikzlibrary{arrows.meta, % <--- added
bending % <--- added
}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 1.5em}]
\node (a) at (0, 0) {$a$};
\node (b) at (0, 0.8) {$b$};
\draw[-{Straight Barb[bend]}, % <--- changed
shorten > = 3pt] (a) to [out = 45, in = -45] (b);
\end{tikzpicture}
\end{document}
答案2
尽管 Zarko 的答案已经很好了,但我想提请您注意另一种方法,这种方法可能是也可能不是您的选择。使用密钥looseness
(在 70.3 节中描述)pgf
手动的),可以作用于控制点与起始坐标和目标坐标之间的距离。
\documentclass[border=2mm]{standalone}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}[every node/.style = {draw, circle, minimum size = 1.5em}]
\node (a) at (0, 0) {$a$};
\node (b) at (0, 0.8) {$b$};
\draw[->, shorten > = 3pt] (a) to [out = 45, in = -45, looseness=1.6] (b);
\end{tikzpicture}
\end{document}
也许你可以将它与bend
箭头结合使用。