参考 tikzpicture 中心

参考 tikzpicture 中心

我如何引用当前或其他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}

结果

相关内容