Warum impliziert die Definition eines „Spionagefernrohrs“ eine Änderung der Vordergrundfarbe?

Warum impliziert die Definition eines „Spionagefernrohrs“ eine Änderung der Vordergrundfarbe?

Mir ist aufgefallen, dass sich die Vordergrundfarbe ändert, wenn ich spy scopemeinem Tikz-Bild eins hinzufüge.

Vergleichen:

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

Dies erzeugt wie erwartet ein grünes Quadrat. Wenn ich die Zeile einfüge

spy using outlines

oben wird das Quadrat schwarz! Beachten Sie, dass ich nicht einmal den eigentlichen \spyBefehl verwende. Ich möchte die Vordergrundfarbe für den Umriss der Spionageknoten verwenden. Ich habe die Standarddefinition für einen Spion in den Dokumenten nicht gefunden. Vielleicht gibt es einen Schlüssel, um sie zu überschreiben?

Bearbeiten:

Ich fand, was könnte die beleidigende Einstellung intexmf-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}
}

Wenn ich mich ändereSchwarzin eine andere Farbe, wird diese Farbe beim Aufrufen der besagten Zeile erscheinen. Ich glaube, das ist ein Fehler, aber meine Kenntnisse der internen Vorgänge von TeX reichen nicht aus, um ihn selbst zu beheben.

Antwort1

Ich vermute, dadurch spy using outlinesändert sich die Farbe. beamerIst hier irrelevant.

Hier ist ein Workaround, der meiner Meinung nach das gewünschte Ergebnis liefert. Beachten Sie jedoch, dass ich diese Bibliothek noch nie zuvor verwendet habe und sie nicht umfassend getestet wurde. Grundsätzlich denke ich, dass es wahrscheinlich das Richtige ist, die Farbe in der Definition einfach nicht anzugeben. Wenn ich dies teste, erhalte ich Umrisse in der Vordergrundfarbe, unabhängig von der Farbe, die für den ausspionierten Bereich verwendet wird, und eine explizite Farbanforderung überschreibt diese Vorgabe wie erwartet. Ich habe ein etwas anderes MWE verwendet, um das Problem zu isolieren und deutlicher zu machen, was vor sich geht. (Zumindest, um es mir klarer zu machen – ich kann nicht für andere sprechen.)

Um den Code zu ändern, den Sie in der Bibliothek identifiziert haben, fügen Sie einfach hinzu

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

zu Ihrer Präambel. Zum Beispiel:

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

Spionage in Farbe

Bitte lassen Sie mich wissen, ob das das ist, was Sie wollten. Da ich mit der Bibliothek nicht vertraut bin, habe ich die Absicht möglicherweise missverstanden.

verwandte Informationen