在专业印刷店打印论文时,我遇到了各种问题。首先,带有灰度图形的页面无法被识别(需要店里手动修复),并且还有色调,我认为这是由于颜色转换和打印机校准不完美造成的。我了解了命令,这是第一个问题的快速解决方案,并且我应该用而不是\selectcolormodel{gray}
来定义灰色,才能真正解决这两个问题。到目前为止一切顺利。\definecolor{xxx}{gray}{0.5}
\definecolor{xxx}{rgb}{0.5,0.5,0.5}
但还有一个我无法修复的情况:带有颜色分量,所以我不能使用\selectcolormodel{gray}
和灰度渐变发生同时。即使我用真正的灰度颜色定义阴影/褪色,它最终也会转换为 rgb/cmyk,因此打印中再次出现色调。这是错误吗?是设计使然吗?有修复方法吗?
非常感谢!
平均能量损失
\documentclass{standalone}
\usepackage{xcolor}
\usepackage{tikz}
\usetikzlibrary{shapes.arrows}
\definecolor{grau-}{gray}{0.50}
\definecolor{grau}{gray}{0.73}
\definecolor{grau+}{gray}{0.84}
%\selectcolormodel{gray} % only fix for entire document
\begin{document}
\begin{tikzpicture}
%% mixed colors! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\node[single arrow, left color=grau+, right color=grau-,
minimum height = 7.5cm] at (0,0) {Hello World!};
\shadedraw[top color=gray!30, bottom color=gray!30, middle color=white, thin, yshift =1cm, xshift =-3cm]
(0,-2) -- ++(0, 2) -- ++(-2, 0) -- ++(0, -2) -- cycle;
%% true grayscale! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%\node[single arrow, fill=grau+,
% minimum height = 7.5cm] at (0,0) {Hello World!};
%\draw[fill=gray, thin, yshift =1cm, xshift =-3cm]
% (0,-2) -- ++(0, 2) -- ++(-2, 0) -- ++(0, -2) -- cycle;
%\end{tikzpicture}
\end{document}
如何检查真正的灰度
为了检查输出的 pdf 是否仅包含灰度,我安装了 Ghostscript 并使用批处理文件(将 pdf 拖放到批处理文件上):
gswin64c.exe -o - -sDEVICE=inkcov "%~1"
pause
对于真正的灰度 pdf,输出仅在第 4 个位置有值:
Page 1
0.00000 0.00000 0.00000 0.43900 CMYK OK
对于包含颜色的 pdf,输出显示所有位置的值:
Page 1
0.41208 0.41208 0.40833 0.10622 CMYK OK
复杂示例
请看下面的图形。打印时,下方的“圆柱体”会带有色调,因为灰色阴影会转换为颜色混合。这正是我想要避免的。
答案1
阴影是 PDF 中的特殊对象。pgf 用于创建此类阴影的代码开头如下:
\def\pgf@setup@shading@model{%
\pgfshadingmodelrgbtrue
\pgfshadingmodelcmykfalse
\pgfshadingmodelgrayfalse
\XC@sdef\pgf@mod@test{\XC@tgt@mod{natural}}%
\def\pgf@shading@device{/DeviceRGB}% <-------------- 1
\def\pgf@shading@ps@device{setrgbcolor}%
\def\pgf@shading@functional@range{0 1 0 1 0 1}%
\def\pgf@shading@model{rgb}%
\ifx\pgf@mod@test\XC@mod@cmyk
\def\pgf@shading@device{/DeviceCMYK}%
\def\pgf@shading@ps@device{setcmykcolor}%
\def\pgf@shading@functional@range{0 1 0 1 0 1 0 1}%
\def\pgf@shading@model{cmyk}%
\pgfshadingmodelrgbfalse
\pgfshadingmodelcmyktrue
\fi
\ifx\pgf@mod@test\XC@mod@gray %<----------------------2
\def\pgf@shading@device{/DeviceGray}% %<------------3
\def\pgf@shading@ps@device{setgray}%
\def\pgf@shading@functional@range{0 1}%
\def\pgf@shading@model{gray}%
\pgfshadingmodelrgbfalse
\pgfshadingmodelgraytrue
\fi
标有 1 的行
\def\pgf@shading@device{/DeviceRGB}%
意味着阴影的默认颜色空间是 /DeviceRGB
,所以是 rgb。
/DeviceGray
线 2 + 3 表示如果您将 xcolor 的颜色模型本地或全局设置为灰色,则会得到阴影。