我如何引用当前或其他tikzpicture
中心?有没有类似(current picture.center)
或 的东西(previous picture.center)
?
我问的是直接解决方案,不需要嵌入tikzpicture
到其他节点中tikzpicture
,就像在转换坐标,因此 tikzpicture 中的 (0,0) 被放置在页面的所需位置。
答案1
您可以使用(current bounding box.center)
来引用当前的中心tikzpicture
。只要您添加新的材料来扩展图片,中心就会移动。
remember picture
引用前一张图片的中心比较困难。当然,您需要使用它,然后current bounding box
在最后存储它,例如通过在中心创建一个具有相同尺寸的矩形节点。
请记住,只有使用overlay
图片选项时,您才能从一张图片绘制到另一张图片,该选项还会将官方图片大小设置为零。这样做时,current bounding box
始终为零,因此没有用!您需要绘制两张普通图片,然后将它们与第三张overlay
图片连接起来。
这里有一些实现这一点的代码:
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{calc}
\usepackage{lipsum}
\tikzset{save bounding box/.style={remember picture,execute at end picture={%
\path let
\p1 = (current bounding box.south west),
\p2 = (current bounding box.north east)
in node (#1) at (\x1,\y1)
[rectangle,above right,inner sep=0pt,outer sep=0pt,
minimum width=\x2-\x1,minimum height=\y2-\y1] {};
% or, if you only want the center:
%\coordinate (#1) at (current bounding box.center);
}}}
\begin{document}
\begin{tikzpicture}[save bounding box=first]
\draw (0,0) rectangle (5,5);
\draw (0,0) -- (5,5) (0,5) -- (5,0);
\draw [red] (current bounding box.center) circle (5pt);
\end{tikzpicture}
\lipsum[1]
\begin{tikzpicture}[save bounding box=second]
\draw (0,0) rectangle (8,8);
\draw (0,0) -- (8,8) (0,8) -- (8,0);
\draw [red] (current bounding box.center) circle (5pt);
\end{tikzpicture}
%
% Now connect both pictures:
\begin{tikzpicture}[remember picture,overlay]
\draw [green,thick] (first.center) -- (second.center);
\end{tikzpicture}
\end{document}