Почему определение «шпионского прицела» подразумевает изменение цвета переднего плана?

Почему определение «шпионского прицела» подразумевает изменение цвета переднего плана?

Я заметил, что цвет переднего плана меняется при добавлении spy scopeк моему tikzpicture.

Сравнивать:

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

Шпионаж в цвете

Пожалуйста, дайте мне знать, если это то, что вы хотели. Поскольку я не знаком с библиотекой, я мог неправильно понять намерение.

Связанный контент