我正在尝试使我的 pdf 也适合打印。为此,我使用了该colorspace
包。显然,色彩空间文档可用。
像往常一样,我定义我的颜色,这次使用definespotcolor
,然后我继续正常使用它们,例如在tikz
。但是,tikz 似乎没有使用新颜色,以下 MWE 演示了这一点:
\documentclass{article}
\usepackage{xcolor}
\usepackage{colorspace}
\usepackage{tikz}
\definespotcolor{blue}{HKS 44 K}[cmyk]{1,0.5,0,0}
\begin{document}
\begin{tikzpicture}
\draw[draw=gray, fill=blue] (0,0) rectangle ++ (1,1);
\node[anchor=south, color=blue] (B) at (0.5,1){blue};
\draw[draw=gray, fill=lime] (2,0) rectangle ++ (1,1);
\node[anchor=south, color=lime] (B) at (2.5,1){lime};
\end{tikzpicture}
\end{document}
预期结果是蓝色方块上方用蓝色显示单词“blue”,而黄绿色方块上方用黄绿色显示单词“lime”。这是我得到的输出:
我做错什么了吗? 这是tikz
和之间不兼容吗colorspace
?
附言:也许比我更有名望的人可以添加标签“色彩空间”?
答案1
由于我有时看不到 tikz 使用的原因\colorlet[named]
,这会破坏色彩空间。如果重新定义 pgf 命令,它会再次起作用:
\documentclass{article}
\usepackage{xcolor}
\usepackage{colorspace}
\usepackage{tikz}
\makeatletter
\def\pgfutil@colorlet#1#2{\colorlet{#1}{#2}}
\makeatother
\definespotcolor{blue}{HKS 44 K}[cmyk]{1,0.5,0,0}
\begin{document}
\begin{tikzpicture}
\draw[draw=gray, fill=blue] (0,0) rectangle ++ (1,1);
\node[anchor=south, color=blue] (B) at (0.5,1){blue};
\draw[draw=gray, fill=lime] (2,0) rectangle ++ (1,1);
\node[anchor=south, color=lime] (B) at (2.5,1){lime};
\end{tikzpicture}
\end{document}
答案2
不相关,但我建议避免重新定义现有颜色,而应使用自定义名称(此处myblue
)。
我不太明白为什么它不能按原样工作,但如果您使用命令fill
而不是命令draw
,它就可以工作...
\documentclass{article}
\usepackage{xcolor}
\usepackage{colorspace}
\usepackage{tikz}
\definespotcolor{myblue}{HKS 44 K}[cmyk]{0.5,0.5,0,0}
\begin{document}
\begin{tikzpicture}
\fill[myblue, draw=gray] (0,0) rectangle ++ (1,1);
\node[anchor=south, color=myblue] (B) at (0.5,1){blue};
\draw[draw=gray, fill=lime] (2,0) rectangle ++ (1,1);
\node[anchor=south, color=lime] (B) at (2.5,1){lime};
\end{tikzpicture}
\end{document}
答案3
好的,在对此进行更多研究之后,发现该colorspace
包中有一个错误,该错误也已解决github 上的这个问题。
不幸的是,在这个问题解决之前,我自己将停止使用该colorspace
软件包,这也意味着暂时不会使用 HKS 颜色。
因此,回答我自己的问题:我按预期设置了所有内容,但是,该包与肯定 tikz
命令,例如\draw
。
对于单个设备,如果适用解决方法并且必须不惜一切代价使用专色,则@SebGlav 和@UlrikeFischer 在答案中提供的解决方法可能是可以接受的。