\selectcolormodel{gray}
对鸭毛不起作用,但对鸭子的其他部分却起作用,为什么?
\documentclass{ltugboat}
\usepackage{microtype}
\usepackage{graphicx}
\usepackage{ifthen}
\newboolean{grayscale}
\setboolean{grayscale}{true}% for the black & white version
%\setboolean{grayscale}{false}% for the colored version
\usepackage{tikzducks}
\usetikzlibrary{positioning}
\newenvironment{mytikz}{%
\begin{tikzpicture}
\ifthenelse{\boolean{grayscale}}{\selectcolormodel{gray}}{}
}
{\end{tikzpicture}}
\usepackage{ifpdf}
\ifpdf
\usepackage[breaklinks,hidelinks]{hyperref}
\else \usepackage{url} \fi
\begin{document}
Why \textbackslash\texttt{selectcolormodel\string{gray\string}} does not work for the duck hair?
Black and white version:
\begin{mytikz}
\begin{scope}[xscale=-1]
\duck[longhair=pink]
\end{scope}
\begin{scope}[xshift=10pt]
\duck[crazyhair=orange]
\end{scope}
\end{mytikz}
Colored version:
\setboolean{grayscale}{false}
\begin{mytikz}
\begin{scope}[xscale=-1]
\duck[longhair=pink]
\end{scope}
\begin{scope}[xshift=10pt]
\duck[crazyhair=orange]
\end{scope}
\end{mytikz}
\end{document}
答案1
\selectcolormodel
运行良好,但tikz
通过映射内部命令来执行大量颜色分配\let
,这在许多情况下会绕过颜色转换。例如,直接使用颜色(或扩展到颜色的命令)有效,但使用键无效fill
。也\colorlet
不起作用。
\documentclass{article}
\usepackage{tikz}
\begin{document}
\textcolor{red}{RED}
\selectcolormodel{gray}
Black and white version:
\def\mycmdcolor{red}
\colorlet{mynewletcolor}{red}
\definecolor{mynewdefcolor}{rgb}{1,0,0}
\textcolor{red}{RED}
\textcolor{\mycmdcolor}{MYCMDCOLOR}
\textcolor{mynewletcolor}{MYNEWLETCOLOR}
\textcolor{mynewdefcolor}{MYNEWDEFCOLOR}
\begin{tikzpicture}
\fill[\mycmdcolor] (0,0) rectangle (1,1);
\draw[fill=\mycmdcolor] (2,0) rectangle (3,1);
\draw[fill=mynewletcolor] (4,0) rectangle (5,1);
\draw[fill=mynewdefcolor] (6,0) rectangle (7,1);
\end{tikzpicture}
\end{document}
我认为唯一的解决方法是直接使用灰色模型加载xcolor
。其他方法都只是治标不治本。
答案2
这似乎是一个错误tikz
,请参阅
我听从了乌尔丽克·菲舍尔并修改了代码以避免fill=...
。 它在 0.3 及更新版本中已修复。
如果你仍然遇到此问题,请更新你的 tex 发行版或从以下位置获取最新的软件包版本https://www.ctan.org/pkg/tikzducks或者https://github.com/samcarter/tikzducks
答案3
同时,这个错误已经在提交中被修复(或被解决)83b22a可从 pgf/tikz 的开发存储库获取https://sourceforge.net/projects/pgf/