為什麼「間諜範圍」的定義意味著前景色的變化?

為什麼「間諜範圍」的定義意味著前景色的變化?

我注意到在添加到我的 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}

彩色間諜

請告訴我這是否是您想要的。由於我對圖書館不熟悉,我可能誤解了其意圖。

相關內容