有什么统一的、可推荐的方法来告诉 TikZ“全局”让箭头不要穿透节点的边界?

有什么统一的、可推荐的方法来告诉 TikZ“全局”让箭头不要穿透节点的边界?

问题。 你建议如何让弧(箭头)从节点(b)外部开始,并在节点(c)外部停止?

在此处输入图片描述

这是用创建的

 \documentclass{amsart}
 \usepackage{tikz}
 \begin{document}
  \begin{tikzpicture}
   \node (a) at (0pt,0pt)[]{$a$};
   \node (b) at (0pt,101pt)[]{$b$};

   \draw[->] (a)--(b);
   \draw[->] (b) arc [start angle=0, end angle=74, x radius=25pt, y    radius=25pt,line width=4pt] node (c) {$c$};
  \end{tikzpicture}
 \end{document}

您是否同意 TikZ 没有直箭头有点不系统从...来中心到中心默认情况下?

评论。

我知道不止一种方法不知何故这样做,例如使用选项“缩短”,但似乎没有正确的方法来实现这一点。例如,使用 (b.north) 之类的功能不是一个好的解决方案,因为它没有统一地工作。然后,人们必须记住哪里应该说“北”,哪里应该说“南”,等等,尤其是在较大的 TikZ 程序中使用某种程度的自动化时。

答案1

我不太喜欢用arc,除非必要,我更喜欢用to[out=xx,in=xx],而且在join之前节点必须要存在,否则就直接到达坐标。

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}
 \node (a) at (0pt,0pt){$a$};
 \node (b) at (0pt,101pt){$b$};

 \draw[->] (a)--(b);
 \path  (b)  arc (0:90:25pt) node (c) {$c$};
  \draw[->]  (b)   to [out=90,in=0] (c);

\end{tikzpicture}
\end{document}

在此处输入图片描述

三行即可找到另一种解决方案!

所有节点都定义在路径中,剩下的只是跟踪弧和线段[rounded corners]

\documentclass{article}

\usepackage{tikz}

\begin{document}

\begin{tikzpicture}

 \path  node(a) {$a$} --++ (0,101pt)node(b){$b$}   |-++  (-1,1) node (c) {$c$};
\draw[rounded corners=0.5cm,->] (a) -- (b) ;
\draw[rounded corners=0.5cm,->]   (b)|- (c);

\end{tikzpicture}
\end{document}

答案2

当你写作时

\draw (a) -- (b);

TikZ 实际上试图通过缩短线条来帮助您,这样您就不会遇到同样的线条问题。但请注意,它正在试图提供帮助。

不幸的是,圆弧的情况并非如此,因为圆弧的几何约束要严格得多,而且在解析时无法获得它们的起点和终点。因此,TikZ 无法提供相同的帮助,只能假设center。强调无法提供并非缺失的功能。对于此类用途,TikZ 提供to使用贝塞尔曲线的路径,并指定入角和出角。

对于指定了起点/终点的弧,您可能需要使用\pgfpatharcto手册中指定的其他弧变体。

另一个交叉c是因为您将节点放在了路径的末端,所以它与上面提到的问题无关,只需使用任何锚定方向,它就会远离终点。

相关内容