循环可让您在绘制时闭合曲线,并且
\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
大小为空。因此,您的第一个示例(有效)实际上是第二个示例的一个特例,其中节点被调整为“点质量”。