使用 dvips -Ppdf 编译 latex->dvips->ps2pdf

使用 dvips -Ppdf 编译 latex->dvips->ps2pdf

我创建的文档很大程度上依赖于 PostScript(我使用得pstricks相当多)。我遇到了一些分辨率问题,而且建议尝试使用dvips -Ppdf。但最近我一直在使用该animate软件包,很高兴它现在支持沿latex->dvips->ps2pdf路线进行编译。

我现在注意到在几个地方,例如animate包文档和解决方案PDF 显示中的移动框,不使用开关-Ppdf。但没有说明为什么不应该这样做。

有人可以解释一下为什么/何时不应使用这个开关吗?

答案1

原因大致解释如下漏洞动画文档的部分。

-Ppdf在 DVI 到 PS 转换期间加载config.pdf,并将中间 Postscript 中的每英寸点数分辨率 (DPI) 设置为 的值8000。这相当于使用dvips选项-D8000

这种高分辨率的唯一好处与 Type-3(像素)字体的字体生成有关。如今,人们使用的是 Type-1(矢量)字体,这种字体总是会利用打印设备的最大可用分辨率,以便在纸上创建清晰的字形轮廓。8000 dpi 过去和现在都刚好够用,适合市售的喷墨和激光打印机硬件。

DPI 设置的另一个副作用与 PS 到 PDF 转换期间图形对象 (XObjects) 的转换矩阵计算有关。(动画帧和移动工具提示在生成的 PDF 中保存为 XObjects。)Ghostscript倾向于计算元素值非常大的转换矩阵。虽然这些值在数值上是正确的,但如果中间 Postscript 的 DPI 分辨率设置为via或,ps2pdf它们对于 Adob​​e Reader 来说太大了。因此,Adobe Reader 会在错误的位置显示图形对象或缩放不当。8000-Ppdf-D8000

因此,建议不要使用-Ppdf或通过运行dvips覆盖 DPI 设置config.pdfdvips

dvips -Ppdf -D1200 ...

2636 dpi()这个值dvips -D2636在这里似乎很关键。

考虑以下代码示例,该示例在 Adob​​e Reader 中生成一个可点击按钮。带框的字符串“Hello!”被提炼为 XObject 并用作按钮面:

\documentclass{article}
\usepackage{media9}

\begin{document}
\mediabutton[jsaction={app.alert('Hello!');}]{\fbox{Hello!}}
\end{document}

如果 PDF 是用latex--> dvips -D2636-->生成的ps2pdf,按钮在 Adob​​e Reader 中是完全可见的。但是,在任何更高的分辨率下,例如dvips -D2637dvips -Ppdf,按钮表面都会消失(尽管按钮本身仍可正常使用)。

相关内容