如何在 TikZ 中移动“初始”节点?

如何在 TikZ 中移动“初始”节点?

好的,当在 TikZ 中启动图表时,我已经定义了相对于第一个节点的所有其他节点。

\node (1)                  {$1$};

\node (2)  [below of=1]    {$2$};

\node (3) [right of=2]    {$3$};

\node (4) [right of=3]    {$4$};

等等。我已经完成了图表,但想将所有内容向上和向左移动,因为图表更靠近右边界而不是左边界。由于所有内容都是根据第一个节点的位置确定的,是否可以只移动第一个节点,其他所有内容都随之移动。我试过:

\node (1)   [xshift=-3cm,yshift=-3]               {$1$};

\node (2)  [below of=1]    {$2$};

\node (3) [right of=2]    {$3$};

\node (4) [right of=3]    {$4$};

但是 xshift 和 yshift 对第一个节点不起作用,只对其他节点起作用。这可能吗?

答案1

当你编写 TikZ 代码时,它会在内部跟踪一个称为边界框的东西。它基本上是一个矩形,它通过检查输入的内容来跟踪它的角。

现在想象一下你在 (0,0) 和 (5,3) 处放置了一些东西。然后 TikZ 会跟踪这些,当它遇到\end{tikzpicture}它会发送给 TeX 作为“我是一个宽5高3的箱子”。你把其他东西放在这些坐标之外,它就会被放大。

请注意,如果将东西放在 (2,2) 和 (7,5) 处,它将分派相同的内容,因为框的大小相同。因此 TikZ 会剪切边界框外的所有内容。这就是为什么无论你把东西放在哪里,如果它们彼此相对相同,你都会得到相同的结果。

如果你想把东西绝对地放在某个地方,那么你必须修改边界框,或者把一个虚拟的不可见的东西放在某个地方

\node at (0,0) {};

或者在图片末尾创建自定义边界框

\useasboundingbox (0,0) rectangle (10,5);

然后 TikZ 将使用它作为边界框而不是它自己的跟踪。

答案2

我知道这是一篇旧帖子,但我遇到了类似的问题,我想分享我的解决方案。我只需\hspace{-2em}在“初始”节点之前添加它即可。

相关内容