PDF 输出中的颜色 - 将 RGB 浓灰色转换为纯灰色(xcolor、tikzs、pgplots)

PDF 输出中的颜色 - 将 RGB 浓灰色转换为纯灰色(xcolor、tikzs、pgplots)

当使用以下最小示例分别用 pgfplots 和 tikzs 绘制 3 条线时,您将获得一个包含三条线的 pdf:

 \documentclass[12pt,a4paper,tikz]{standalone}
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
 \usepackage{lmodern}
 \usepackage{tikz,pgfplots,grffile,amsmath}
 \pgfplotsset{compat=newest}    
 \definecolor{parula01}{rgb}{0.00600,0.39650,0.88330}%
 \definecolor{parulagray01}{rgb}{0.33527,0.33527,0.33527}% same color as parula01, just converted to greyscale with a MATLAB algorithm - weighted sum: 0.2989 * R + 0.5870 * G + 0.1140 * B --> the result is about 33.527 % black
 \definecolor{parulagray02}{gray}{0.33527}% probably the same color as parulagray01, just defined as a gray scale color with only one percentage argument for the grey level
 \begin{document}
 \begin{tikzpicture}
 \begin{axis}[%
 ]
 \addplot [line width=0.8pt, color=parula01, forget plot]
   table[row sep=crcr]{%
 1  1\\
 100    100\\
 };
\addplot [line width=0.8pt, color=parulagray01, forget plot]
   table[row sep=crcr]{%
 1  5\\
 100    105\\
 };
\addplot [line width=0.8pt, color=parulagray02, forget plot]
   table[row sep=crcr]{%
 1  10\\
 100    110\\
 };
 \end{axis}
 \end{tikzpicture}%
 \end{document}

结果(Adobe Acrobat XI Pro.)将如下所示: 结果

您会注意到两条灰线看起来不同,因为 Adob​​e Acrobat XI 使用一些 CMYK 配置文件作为默认配置文件来显示结果(我猜!!),因此将 rgb 灰度(序言中的 parulagray01)转换为不同于真实灰度(序言中的 parulagray02),并从 R、G 和 B 到 C、M、Y 和 K 进行了一些加权转换。实际上,您可以查看 Adob​​e Acrobat输出预览(或者评估德语)仔细查看 CMYK 组合。RGB 灰度(序言中的 parulagray01)的结果将产生以下结果

rgb 灰色 - parulagray01 来自序言

而真实灰度(序言中的 parulagray02)的结果将产生这样的结果

真正的灰色 - parulagray02 来自序言

至少对于颜色模拟配置文件 US Web Coated (WOP) v2 而言,Adobe Acrobat XI 将其用作默认配置文件(我再次假设),这可能是颜色在屏幕上显示的原因。您也可以在此处选择 Adob​​e RGB 之类的东西,然后两种灰色看起来完全相同,您可以在此处看到:

显示为 rgb 时颜色相同

无论如何 - 如果我理解正确的话:打印机将使用大量颜色作为 parulagray01(伪灰色),因为指定了大量 C、M、Y,我认为它被称为浓灰色或者浓黑色(灰色/黑色色调在打印时看起来是灰色/黑色但实际上使用了很多颜色)。

现在的问题是:是否有一个简单的命令来告诉 pdflatex(或者可能是 komascript 包或者可能是 xcolor 包 - 我不知道把它放在哪里)将所有具有三个相同成分的 rgb 颜色(例如序言中的 parulagray01,它使用 r=0.33527,g=0.33527 和 b=0.33527)解释为真正的灰度颜色,而不是将其转换为某种浓灰色或浓黑色?

我意识到 Adob​​e Acrobat XI Pro 中有一些选项可以将颜色从一个颜色空间转换为另一个颜色空间,但我还不太明白。我尝试了一下,设法摆脱了一些矢量图形中的浓灰色。但是当我尝试 ghostscript(9.05 及更高版本)的 inkov 命令时,所有页面(即使只有文本的页面)在 Acrobat 转换后都有 C、M、Y 和 K 分量,尽管 Adob​​e 中显示的输出预览只显示 K 分量。在撰写博士论文时,现在是否有必要考虑这样的颜色问题,因为出版商会负责 pdf 的颜色管理?有人知道如何使用 Adob​​e Acrobat XI pro 将整个文档中 rgb 空间的所有灰色转换为灰色空间中的真实灰色,而不会影响文档中的真实颜色吗?是否有人知道,在使用 LaTeX(tikz、pgfplots)但文档中嵌入一些来自其他来源(如 Corel)的 *.eps 矢量图形时,博士论文中的颜色规格通常会出现哪些问题/方面,因此应该尽早考虑,而不是以后再出现问题?

答案1

如果没有重新定义,下面的测试文件在日志中显示两种形式:

$ grep 33527 qq524.log 
................\pdfliteral{0.33527 0.33527 0.33527 RG }
................\pdfliteral{0.33527 0.33527 0.33527 rg }
................\pdfliteral{0.33527 G }
................\pdfliteral{0.33527 g }

定义后日志显示

$ grep 33527 qq524.log 
................\pdfliteral{0.33527 G }
................\pdfliteral{0.33527 g }
................\pdfliteral{0.33527 G }
................\pdfliteral{0.33527 g }

显示两个输入使用相同的灰度模型

\documentclass[12pt,a4paper,tikz]{standalone}
\showoutput
 \usepackage[T1]{fontenc}
 \usepackage[utf8]{inputenc}
 \usepackage{lmodern}
 \usepackage{tikz,pgfplots,grffile,amsmath}
 \pgfplotsset{compat=newest} 

\makeatletter
\def\zzrgb{rgb}
\let\olddefinecolor\definecolor
\def\definecolor#1#2#3{%
\def\zz{#2}%
\ifx\zz\zzrgb
\zzrgbconv#3\relax{#1}%
\else
\olddefinecolor{#1}{#2}{#3}%
\fi}

\def\zzrgbconv#1,#2,#3\relax#4{%
\def\zza{#1}\def\zzb{#2}\def\zzc{#3}%
\ifx\zza\zzb\else\let\zzc\relax\fi
\ifx\zza\zzc
\olddefinecolor{#4}{gray}{#1}%
\else
\olddefinecolor{#4}{rgb}{#1,#2,#3}%
\fi
}
\makeatother

 \definecolor{parula01}{rgb}{0.00600,0.39650,0.88330}%
 \definecolor{parulagray01}{rgb}{0.33527,0.33527,0.33527}% same color as parula01, just converted to greyscale with a MATLAB algorithm - weighted sum: 0.2989 * R + 0.5870 * G + 0.1140 * B --> the result is about 33.527 % black
 \definecolor{parulagray02}{gray}{0.33527}% probably the same color as parulagray01, just defined as a gray scale color with only one percentage argument for the grey level
 \begin{document}
 \begin{tikzpicture}
 \begin{axis}[%
 ]
 \addplot [line width=0.8pt, color=parula01, forget plot]
   table[row sep=crcr]{%
 1  1\\
 100    100\\
 };
\addplot [line width=0.8pt, color=parulagray01, forget plot]
   table[row sep=crcr]{%
 1  5\\
 100    105\\
 };
\addplot [line width=0.8pt, color=parulagray02, forget plot]
   table[row sep=crcr]{%
 1  10\\
 100    110\\
 };
 \end{axis}
 \end{tikzpicture}%
 \end{document}

相关内容