Tikz“覆盖”选项不会绘制引用本地边界框的节点

Tikz“覆盖”选项不会绘制引用本地边界框的节点

我想用我的包命令输出的示例边框填充我的包的封面,这些示例是用 TikZ 绘制的。为此,我使用了tikzpicture带有该选项的环境overlay。但是,我的命令语法的一部分涉及定义局部边界框并使用其锚点绘制符号的其他部分,类似于下面的 MWE:

\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}    

\begin{tikzpicture}[overlay]

\begin{scope} [local bounding box=M]
\draw (0, 0) rectangle (1, 1);
\end{scope}
\node [anchor=east] at (M.north west) {A};
\end{tikzpicture}

\end{document}

但是,当我仅编译矩形渲染时,“A”节点不会:

示例 1

当我overlay删除该选项进行编译时,节点呈现:

示例 2

overlay即使设置了该选项,是否可以让节点进行渲染?

答案1

overlay停止边界框计算(use as bounding box也会这样做)。

您可以overlay在最后重置边界框:

\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}

\begin{tikzpicture}    
\begin{scope} [local bounding box=M]
\draw (0, 0) rectangle (1, 1);
\end{scope}
\node [anchor=east] at (M.north west) {A};
\pgfresetboundingbox
\path[use as bounding box] (0,0);
\end{tikzpicture}

\end{document}

答案2

我知道我们必须避免嵌套的 tikzpictures,但这是我发现的唯一方法:

\documentclass[a4paper]{article}
\usepackage{tikz}
\begin{document}    

\begin{tikzpicture}[overlay]
\begin{tikzpicture}
  \begin{scope}[local bounding box=m]
  \draw(0, 0) rectangle (1, 1) coordinate (M);
  \end{scope}
  \begin{scope}[overlay]
  \node [anchor=east] at (m.north west) {A};
  \end{scope}
\end{tikzpicture}
\end{tikzpicture}

我测试过了并且有效...但可能不是建议的方式。

附言:你可以想象我欺骗环境的想法:P

相关内容