无法通过叠加进行监视,请记住图片选项

无法通过叠加进行监视,请记住图片选项
\documentclass{article}
\usepackage{tikz}
\usetikzlibrary{spy}
\begin{document}
 \begin{tikzpicture}[remember picture,overlay,spy using overlays={connect spies,blue!50}]
  \node(a)[circle]{Text};
  \spy [rectangle,height=2cm,width=3cm,magnification=4] on (a.center) in node [right,line width=3pt] at (2,0);
 \end{tikzpicture}
\end{document}

为什么指定和选项\spy后不起作用?有没有办法让它再次工作而不抑制上述选项?remember pictureoverlay

编辑:实际上“冲突”发生在remember picture和之间\spyoverlay仅使用就可以了。

答案1

解决方法是明确指定坐标。请参阅提取 TikZ 中任意点的 x,y 坐标如果您仍想通过节点名来调用它。

\documentclass{article}
    \usepackage{tikz}\usetikzlibrary{spy}
\begin{document}
    \begin{tikzpicture}[remember picture,spy using overlays={connect spies,blue}]
        \node(a)[circle,fill=yellow]{Text};
        \newdimen\tempx\newdimen\tempy
        \pgfextractx\tempx{(a)}\pgfextracty\tempy{(a)}
        \spy[rectangle,height=3cm,width=5cm,magnification=4]
            on(\the\tempx,\the\tempy)in node at(4,0);
    \end{tikzpicture}
\end{document}

为什么\spy节点名会失败?

实际上\spy仍在工作。例如

\begin{tikzpicture}[remember picture,spy using overlays={connect spies,blue}]
    \node(a)[circle,fill=yellow]{Text};
    \spy[rectangle,height=3cm,width=5cm,magnification=4]
        on(a)in nodeat(1,0);
\end{tikzpicture}

问题在于,这块华丽的玻璃没有聚焦在正确的位置。假设你想在 (b) 中窥探 (a)。那么你需要应用变换

移位(向量=(b))*比例(因子=4)*移位(向量=-(a))。

但不知何故,以下内容被应用。

移位(向量=(b)-(a))*比例(因子=4)*移位(向量=-(a))。

我不知道为什么。到目前为止,我唯一能说的是:转到tikzlibraryspy.code.tex并查看 的定义\tikz@lib@spy@do#1#2#3。在以下两行之间

\tikz@scan@one@point\tikz@lib@spy@shift#2%
\pgflowlevelsynccm%

有两个信使维度\pgf@pt@x,并\pgf@pt@y带来错误的向量。这只发生在 TiZ 需要解析节点名称。

我可以就\spy一些记得的点进行讨论吗?

我猜你,可能还有其他一些用户,来这里是因为你想记住一个点,然后稍后再观察它。然而,这不能以这种方式实现。

当一个人用 标记一个范围(在本例中为整个tikzpicture)时spy using ...,TiZ 将此范围存储在名为 的框中\tikz@lib@spybox。它通常会打印此框一次,并且每次打印一次\spy。在此范围之后,内存将被释放。

因此,如果您想监视当前范围内没有的东西,您需要复制该范围而不是记住位置。

我可以\spy在外面放点东西吗?页眉/页脚?

不,除非 (i) 整个页面现在都是tikzpicture;或 (ii) 您手动提取材料。

据我所知 (ii) 是可能的。例如,crop包用于在整个页面上执行某些操作。它应该包含一些有用的东西。

相关内容