TikZ:“局部边界框”与“用作边界框”不兼容?

TikZ:“局部边界框”与“用作边界框”不兼容?

TikZ/PGF 文档(v 2.10)包含以下使用示例local bounding box

\documentclass{article}
\usepackage{tikz}
\usepgfmodule{shapes}
\usetikzlibrary{scopes}

\begin{document}

\begin{tikzpicture}
\draw [help lines] (0,0) grid (3,2);
{ [local bounding box=outer box]
    \draw (1,1) circle (.5) [local bounding box=inner box] (2,2) circle (.5);
}
\draw (outer box.south west) rectangle (outer box.north east);
\draw[fill,red] (inner box.south west) rectangle (inner box.north east);
\end{tikzpicture}

\end{document}

– 实际上只是tikzpicture,我把它做成了一个完整的文档。在我明确设置全局边界框之前,它的工作方式与宣传的一样:

\documentclass{article}
\usepackage{tikz}
\usepgfmodule{shapes}
\usetikzlibrary{scopes}

\begin{document}

\begin{tikzpicture}
\path[use as bounding box] (-1,-1) rectangle (4,3);  % <------------
\draw [help lines] (0,0) grid (3,2);
{ [local bounding box=outer box]
    \draw (1,1) circle (.5) [local bounding box=inner box] (2,2) circle (.5);
}
\draw (outer box.south west) rectangle (outer box.north east);
\draw[fill,red] (inner box.south west) rectangle (inner box.north east);
\end{tikzpicture}

\end{document}

– 然后两个绘制的轮廓outer boxinner box消失。变为\draw表示\fill框变得很大并覆盖了整个页面甚至更多。

我的问题:我该如何让它发挥作用?这是一个已知的错误,有解决方法吗?

我的目标local bounding box是使用以下方法来测量 TikZ 图形部分的宽度和高度卡拉姆迪尔的方法。万一local bounding box坏了,我还能做什么?

答案1

来自以下文档/tikz/use as bounding box

通常,当在路径上给出此选项时,将使用当前路径的边界框来确定图片的大小,并所有后续路径的大小都被忽略

这就是为什么你不能local bounding box在它之后使用它。

但是您可以做的是随后重置边界框,如下所示:

\pgfresetboundingbox
\path[use as bounding box] (-1,-1) rectangle (4,3);

完整代码如下:

\documentclass[varwidth,border=10,convert]{standalone}
\usepackage{tikz}

\begin{document}
  before
  \begin{tikzpicture}
    \draw [help lines] (0,0) grid (3,2);
    \scoped[local bounding box=outer box]
      \draw (1,1) circle (.5) [local bounding box=inner box] (2,2) circle (.5);
    \draw (outer box.south west) rectangle (outer box.north east);
    \draw[red] (inner box.south west) rectangle (inner box.north east);
    \pgfresetboundingbox
    \path[use as bounding box] (-1,-1) rectangle (4,3);
  \end{tikzpicture}
  after
\end{document}

在此处输入图片描述

相关内容