今天我发现了一件很奇怪的事情。当我\selectcolormodel{}
在TikZ
绘图中使用时,模型只应用于\fill
而不应用于\draw[fill=]
。有人知道为什么吗?
\documentclass{article}
%\usepackage[gray]{xcolor} % all draws or fills become gray
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [fill=cyan] (0,0) rectangle (1,1);
\fill [cyan] (2,0) rectangle (3,1);
\end{tikzpicture}
\selectcolormodel{gray}
\begin{tikzpicture}
\draw [fill=cyan] (0,0) rectangle (1,1); % expected this one to change
\fill [cyan] (2,0) rectangle (3,1);
\end{tikzpicture}
\end{document}
结果如下。
答案1
以下解决方法通过 重新定义当前目标颜色模型中的颜色\colorlet[named]{<color>}{<color>}
。\colorlet
不带[named]
的不会重新定义目标颜色模型中的颜色,这似乎也是 TikZ 的问题,它使用\colorlet
。\pgfsetfillcolor
作为“未知”选项,TikZ 改用\color
,它会在使用时转换颜色(取决于开关\ifconvertcolorU
)。
\documentclass{article}
\usepackage{xcolor}
\usepackage{tikz}
\begin{document}
\begin{tikzpicture}
\draw [fill=cyan] (0,0) rectangle (1,1);
\fill [cyan] (2,0) rectangle (3,1);
\end{tikzpicture}
\selectcolormodel{gray}
\begin{tikzpicture}
% \colorlet{cyan}{cyan} alone does not convert the color space
\colorlet[named]{cyan}{cyan}%
\draw [fill=cyan] (0,0) rectangle (1,1);
\fill [cyan] (2,0) rectangle (3,1);
\end{tikzpicture}
\end{document}
答案2
同时,这个错误已经在提交中被修复(或被解决)83b22a可从 pgf/tikz 的开发存储库获取https://sourceforge.net/projects/pgf/