使用 `xelatex` 生成颜色中性的 PDF

使用 `xelatex` 生成颜色中性的 PDF

(这是基于我回答的解决方法使用表情符号pdflatex — 此解决方法在另一个答案)要点是:事实证明,在我发布答案后的几年里,行为xelatex改变

截至目前TeXLive2018,由 生成的 PDF 文件xelatex都是“颜色中性的”:\includegraphics编辑时,它们会从父文档继承当前的前景色。但是,使用TeXLive2021生成的 PDF 文件具有颜色设置命令。 结果:必须进行二进制编辑(不可靠并且不方便)才能在其他文档中充分使用本 PDF 文件。(更改的详细信息以及需要哪些后处理将在 上面的链接。核心就是以下几个改变:)

- q 1 0 0 1 72 -62.967 cm                 BT /F1 9.9626 Tf -72 64.65 Td[<1841>]TJ ET Q
+ q 1 0 0 1 72 -62.967 cm 0 G 0 g 0 g 0 G BT /F1 9.9626 Tf -72 64.65 Td[<1841>]TJ ET Q

问题:有没有办法建议xelatex不要使用颜色设置命令?


更详细地说:使用类似以下的输入文件

\documentclass[crop]{standalone}
\usepackage{fontspec}
\setmainfont{DejaVu Sans}  % https://dejavu-fonts.github.io/
\begin{document}
\end{document}

然后解压缩pdftk file.pdf output uncompress-file.pdf uncompress(每个)页面的内容看起来如上所示。


为了测试颜色中性,可以包含生成的PDF文件,如下所示:

\documentclass{article}
\usepackage{graphicx,xcolor}
\begin{document}
\color{red}\includegraphics[height=1in]{emoji-from-list.pdf}
\end{document}

(包含颜色中性的PDF文件,内容应该是红色)。

答案1

您可以尝试使用以下方法进行编译

xelatex -output-driver="xdvipdfmx -c" file

为了

\ExplSyntaxOn
\sys_ensure_backend:
\pdf_uncompress:
\ExplSyntaxOff

\documentclass{article}
\begin{document}
abc
\end{document}

它改变了流

stream
 q 1 0 0 1 72 769.89 cm 0 G 0 g BT /F1 9.9626 Tf 76.712 -62.765 Td[<001c0023>-28<002b>]TJ 154.421 -567.87 Td[<0052>]TJ ET Q

endstream

stream
 q 1 0 0 1 72 769.89 cm BT /F1 9.9626 Tf 76.712 -62.765 Td[<001c0023>-28<002b>]TJ 154.421 -567.87 Td[<0052>]TJ ET Q

endstream

或者使用 lualatex。

相关内容