「スパイ スコープ」の定義が前景色の変更を意味するのはなぜですか?

「スパイ スコープ」の定義が前景色の変更を意味するのはなぜですか?

spy scopetikzpicture に を追加すると前景色が変わることに気付きました。

比較する:

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

カラーでスパイ

これがご希望のものかどうか、お知らせください。私はライブラリに詳しくないので、意図を誤解している可能性があります。

関連情報