\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 picture
overlay
蒂
编辑:实际上“冲突”发生在remember picture
和之间\spy
。overlay
仅使用就可以了。
答案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
带来错误的向量。这只发生在 Ti钾Z 需要解析节点名称。
我可以就\spy
一些记得的点进行讨论吗?
我猜你,可能还有其他一些用户,来这里是因为你想记住一个点,然后稍后再观察它。然而,这不能以这种方式实现。
当一个人用 标记一个范围(在本例中为整个tikzpicture
)时spy using ...
,Ti钾Z 将此范围存储在名为 的框中\tikz@lib@spybox
。它通常会打印此框一次,并且每次打印一次\spy
。在此范围之后,内存将被释放。
因此,如果您想监视当前范围内没有的东西,您需要复制该范围而不是记住位置。
我可以\spy
在外面放点东西吗?页眉/页脚?
不,除非 (i) 整个页面现在都是tikzpicture
;或 (ii) 您手动提取材料。
据我所知 (ii) 是可能的。例如,crop
包用于在整个页面上执行某些操作。它应该包含一些有用的东西。