我自己生成了 EPS 文件。在 EPS 文件中,我设置了选项\interpolate false
。我将它们包含在 TikZ 中的 LaTeX 源中includegraphics
(因为我希望其中几个彼此靠近。)
然后我运行标准步骤:
latex src.tex
dvips -Ppdf src.dvi
ps2pdf src.ps
在文本编辑器中,我看到 PostScript 源文件保留了完整的 EPS 文件文本。甚至我的注释也保留在里面(应该如此)。所以那\interpolate false
行也保留了下来。当我用 Evince(GNOME pdf 查看器)打开 PostScript 源时,确实没有插值。为了检查,我使用编辑器设置\interpolate true
并重新打开了 PostScript 文件,并确认现在 Evince 确实可以插值图像。这表明至少 Evince 理解这个选项。
但是当我打开src.pdf
ps2pdf 输出的文件时,我看到输出无论如何都是插值的(抗锯齿)!我还用文本编辑器打开了 PDF 文件,发现只保留了 EPS 图像的最基本参数(如宽度或高度)。\interpolate false
已被删除。
从上面的结果来看,我发现问题不在于includegraphics
LaTeX 的任何步骤,甚至不在于我的 pdf 查看器。问题出在 ps2pdf 上。
在其文档,似乎有AntiAliasColorImages
,AntiAliasGrayImages
和AntiAliasMonoImages
,但接下来却说:
(note 0) This parameter can be set and queried, but currently has no effect.
因此,当我运行以下命令时,没有任何区别:
ps2pdf -dAntiAliasGrayImages=false -dAntiAliasMonoImages=false src.ps
我想看看是否有办法解决这个问题。对我来说,PDF 文件中不出现抗锯齿现象非常重要。
答案1
/Interpolate
PDF 文件的图像词典中的键的默认值为false
,请参阅PDF 规范, 部分8.9.5.3 图像插值。因此,添加/Interpolate false
只会使默认值明确。很可能,抗锯齿是由 PDF 查看器完成的,因此应在那里将其关闭。
另请注意以下描述附带的注释/Interpolate
:
符合标准的阅读器可以选择不实现 PDF 的此功能,或者可以使用其希望的任何特定插值实现。
测试/Interpolate
pdftex.def
包的驱动程序graphics
支持布尔键,它将其设置映射到图像字典中的interpolate
键。默认值(false)和启用的键显示了预期的结果/Interpolate
图像在 AR9 或 xpdf 3.03 或 evince 3.4.0 中:
\documentclass{article}
\pagestyle{empty}
\usepackage{graphicx}
\begin{document}
\centering
\includegraphics[width=.48\linewidth]{uJ9k7.png}\hfill
\includegraphics[width=.48\linewidth, interpolate]{uJ9k7.png}
\end{document}