\selectcolormodel{gray} 不适用于 \draw

\selectcolormodel{gray} 不适用于 \draw

今天我发现了一件很奇怪的事情。当我\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/

在此处输入图片描述

相关内容