TikZ 中节点之间绘图时的循环选项

TikZ 中节点之间绘图时的循环选项

循环可让您在绘制时闭合曲线,并且

\coordinate (a) at (0,0);
\coordinate (b) at (1,0);
\coordinate (c) at (0.5, -1);
\draw (a) -- (b) -- (c) -- cycle;

工作正常。也不应该

\node (a) at (0,0) {};
\node (b) at (1,0) {};
\node (c) at (0.5, -1) {};
\draw (a) -- (b) -- (c) -- cycle;

给出相同的结果?

前者给出了一个三角形,而第二个没有闭合。这是一个错误还是我遗漏了有关循环选项的某些内容?

(当然,作为一种解决方法,我可以使用坐标来绘制循环路径,然后在相同的坐标处绘制节点,但仍然......)

答案1

当您将裸节点指定为坐标时,如(a),则 TikZ 会尝试提供帮助并将其解释为 上最合适的目标a。大多数情况下,这正是您想要的:\tikz \draw[->] (0,0) node (a) {A} (1,0) node (b) {B} (a) -- (b);排版 A → B,箭头从 的右侧开始A,到 的左侧结束B

但是,在执行“循环”时,您不希望出现这种行为。您希望线条连接起来。即使是空节点也有大小,除非您明确告诉它们不要。因此,您需要覆盖这种“有用性”,这是通过指定您要指哪个目标来完成的。因此:

\node (a) at (0,0) {};
\node (b) at (1,0) {};
\node (c) at (0.5, -1) {};
\draw (a.center) -- (b.center) -- (c.center) -- cycle;

按照你的意愿去做。

还有其他方法可以做到这一点,特别是当您的节点为空时,您可以强制它们的大小为零。事实上,\coordinate实际上是 的简写\node[coordinate],特殊形状的coordinate大小为空。因此,您的第一个示例(有效)实际上是第二个示例的一个特例,其中节点被调整为“点质量”。

相关内容