![尽管使用了 xcolor cmyk 选项,DeviceGray 色彩空间始终存在](https://linux22.com/image/416262/%E5%B0%BD%E7%AE%A1%E4%BD%BF%E7%94%A8%E4%BA%86%20xcolor%20cmyk%20%E9%80%89%E9%A1%B9%EF%BC%8CDeviceGray%20%E8%89%B2%E5%BD%A9%E7%A9%BA%E9%97%B4%E5%A7%8B%E7%BB%88%E5%AD%98%E5%9C%A8.png)
有人可以解释为什么即使使用了选项,DeviceGray
色彩空间模型也始终存在于输出中吗?xcolor
cmyk
我使用这个在线工具运行了 PDF 分析:https://www.setasign.com/products/setapdf-core/demos/get-colors-from-pdf-with-php/
% !TEX program = xelatex
\documentclass{article}
% [xetex,cmyk] => DeviceCMYK, DeviceGray
% [xetex] => DeviceGray
\usepackage[xetex,cmyk]{xcolor}
\begin{document}
test
\end{document}
答案1
颜色命令将一种颜色推送到堆栈上,并在组末尾从中恢复之前的颜色。
堆栈上的默认颜色是黑色,因此在外部组中弹出颜色时会得到以下颜色:
\RequirePackage{l3pdf}
\ExplSyntaxOn
\pdf_uncompress:
\ExplSyntaxOff
\documentclass{article}
\begin{document}
%\special{color push cmyk 0 0 0 1}
\special{color push cmyk 0 0 1 1}
test
\special{color pop}
\end{document}
这给出(稍微缩短并注释:):
0 0 1 1 K 0 0 1 1 k %<-- push color
BT /F1 9.9626 Tf 76.712 -62.765 Td[<0069003200620069>]TJ ET
0 G 0 g %<-- pop color
您可以通过先将不同的颜色压入堆栈来避免这种情况。如果您取消注释第一个特殊颜色,您将获得:
0 0 0 1 K 0 0 0 1 k
0 0 1 1 K 0 0 1 1 k
BT /F1 9.9626 Tf 76.712 -62.765 Td[<0069003200620069>]TJ ET
0 0 0 1 K 0 0 0 1 k