好的,当在 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}
在“初始”节点之前添加它即可。