Por que a definição de `escopo de espionagem` implica uma mudança na cor do primeiro plano?

Por que a definição de `escopo de espionagem` implica uma mudança na cor do primeiro plano?

Percebi que a cor do primeiro plano muda ao adicionar um spy scopeao meu tikzpicture.

Comparar:

\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}                                                              

Isso produz um quadrado verde conforme esperado. Quando incluo a linha

spy using outlines

acima, o quadrado fica preto! Observe que eu nem uso o \spycomando real. Gostaria de usar a cor de primeiro plano para o contorno dos nós espiões. Não encontrei a definição padrão para espião nos documentos. Talvez haja uma chave para substituí-la?

Editar:

Eu descobri o que poderia ser a configuração ofensivatexmf-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}
}

Se eu mudarpretopara outra cor, essa cor aparecerá ao invocar a referida linha. Sinto que isso é um bug, mas meu conhecimento interno do TeX não é suficiente para corrigi-lo sozinho.

Responder1

Acho que isso spy using outlinesmuda a cor. beameré irrelevante aqui.

Aqui está uma solução alternativa que acho que fará o que você deseja. Observe, entretanto, que nunca usei essa biblioteca antes e ela não foi testada extensivamente. Basicamente, acho que simplesmente não especificar a cor na definição é provavelmente a coisa certa a fazer. Quando testo isso, obtenho contornos na cor de primeiro plano, independentemente da cor usada para a área que está sendo espionada, e uma solicitação de cor explícita substitui esse padrão conforme o esperado. Usei um MWE um pouco diferente para isolar o problema e deixar mais claro o que está acontecendo. (Pelo menos, para deixar isso mais claro para mim – não posso falar pelos outros.)

Para modificar o código que você identificou na biblioteca, basta adicionar

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

ao seu preâmbulo. Por exemplo:

\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}

Espiando em cores

Por favor, deixe-me saber se é isso que você queria. Como não estou familiarizado com a biblioteca, posso ter entendido mal a intenção.

informação relacionada