问题。 你建议如何让弧(箭头)从节点(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
是因为您将节点放在了路径的末端,所以它与上面提到的问题无关,只需使用任何锚定方向,它就会远离终点。