为什么“间谍范围”的定义意味着前景色的变化?

为什么“间谍范围”的定义意味着前景色的变化?

我注意到,在向我的 tikzpicture 添加时,前景色会发生变化spy scope

比较:

\documentclass[]{beamer}                                                    

\usepackage{tikz}                                                           
\usetikzlibrary{spy}                                                        
\usepackage{lmodern}                                                        
\begin{document}                                                            
\begin{frame}                                   
  \centering                                    
  \begin{tikzpicture}[green!50!black,     
       %spy using outlines            
      ]                                                                     
      \fill (0,0) rectangle (1,1);                                          
     % \spy[size=0.3\linewidth] on (nitscheInit)  
     %   in node at (1.7,1.7);   
  \end{tikzpicture}                                   
\end{frame}                                                                 
\end{document}                                                              

这将产生一个绿色的方块,正如预期的那样。当我添加以下行时

spy using outlines

上面,方块变黑了!请注意,我甚至没有使用实际\spy命令。我想使用前景色作为间谍节点的轮廓。我在文档中没有找到间谍的默认定义,也许有一个键可以覆盖它?

编辑:

我发现什么可以令人反感的背景texmf-dist/tex/generic/pgf/frontendlayer/tikz/libraries/tikzlibraryspy.code.tex

\tikzset{
  tikz@lib@reset@gs/.style={black,thin,solid,opaque,line cap=butt,line join=miter}
}

如果我改变黑色的更改为另一种颜色,则调用上述行时将显示该颜色。我觉得这是一个错误,但我对 TeX 内部知识的了解不足以自己修复它。

答案1

我猜那spy using outlines会改变颜色。beamer在这里不相关。

这里有一个解决方法,我认为它可以满足您的要求。但请注意,我以前从未使用过这个库,而且它没有经过广泛的测试。基本上,我认为在定义中不指定颜色可能是正确的做法。当我测试它时,无论被监视区域使用什么颜色,我都会得到前景色的轮廓,并且明确的颜色请求会按预期覆盖此默认值。我使用了略有不同的 MWE 来隔离问题并更清楚地了解发生了什么。(至少,对我来说更清楚 - 我不能代表其他人说话。)

要修改库中标识的代码,只需添加

\makeatletter
  \tikzset{%
    tikz@lib@reset@gs/.style={thin,solid,opaque,line cap=butt,line join=miter}
  }
\makeatother

在你的序言中。例如:

\documentclass[tikz, border=5pt]{standalone}
\usetikzlibrary{spy}
\makeatletter
  \tikzset{%
    tikz@lib@reset@gs/.style={thin,solid,opaque,line cap=butt,line join=miter}
  }
\makeatother
\begin{document}

  \begin{tikzpicture}
    [
      green!50!black,
      spy using outlines={magnification=2, connect spies},
    ]
    \fill (0,0) rectangle (1,1);
    \spy[size=0.1\linewidth] on (.5,.5) in node at (4,5);
    % check with a case where the target area's colour is different from the outline colour
    \fill [blue] (10,0) rectangle (9,1);
    % check that an explicit colour specification does what we expect
    \spy[red,size=0.1\linewidth] on (9.5,.5) in node at (6,5);
    % and that we get the expected default again when we don't specify one
    \spy[size=0.05\linewidth] on (9.5,.5) in node at (6,3);
  \end{tikzpicture}

\end{document}

彩色侦察

如果这是您想要的,请告诉我。由于我不熟悉该库,我可能误解了其意图。

相关内容