PNG:使用 latex 导入 | pdflatex | xelatex

PNG:使用 latex 导入 | pdflatex | xelatex

我一直不明白如何(pdf)latex确定导入位图的大小,但多年前我通过实验制定了一条简单的规则,该规则允许我通过在同一源上运行latex或编译器来获得相同的输出。根据这条规则,PNG 图形的自然高度和宽度(高度和宽度的像素数)应在后缀为单位pdflatex的可选参数中指示,例如,\includegraphicsbp

\includegraphics[natwidth=162bp,natheight=227bp]{Aston.png}

scale然后,可以通过添加或选项将导入的图形缩放到所需大小width。最重要的是,结果不依赖于 PNG 图形的分辨率。但是,该规则似乎不适用于。仅当 DPI 为 72 时,才能获得预期大小(我的意思是或xelatex生成的导入图形的大小)。这是我的测试源代码:latexpdflatex

\documentclass{article}
\usepackage{graphicx}
\begin{document}
[natwidth=162bp, natheight=227bp, width=70bp]; DPI=72;\\
\fbox{\includegraphics[natwidth=162bp,natheight=227bp, width=70bp]{Aston.png}}

\medskip
[natwidth=200bp, natheight=287bp, width=70bp]; DPI=120; DPI=96; DPI=72;\\
\fbox{\includegraphics[natwidth=200bp,natheight=287bp, width=70bp]{200px-Hans_Bethe.png}}
\fbox{\includegraphics[natwidth=200bp,natheight=287bp, width=70bp]{Bethe-DPI96.png}}
\fbox{\includegraphics[natwidth=200bp,natheight=287bp, width=70bp]{Bethe-DPI72.png}}
\end{document}

以下是 xelatex 产生的输出:

xelatex 的输出

那么。我现在很疑惑该如何处理我书的附录?它包含一百多个位图。

答案1

EPS 文件的大小是通过graphics/x读取BoundingBoxASCII 标头来确定的。PDF、PNG 或 JPG 的大小是通过pdftex(我假设)以二进制方式读取的。这些文件格式将大小作为二进制标头的一部分保存。对于 XeLaTeX,我猜应该与 PDF-LaTeX 相同。

如今,它latex实际上以 DVI 模式运行pdflatex。显然,它不会在此模式下从文件中读取 PNG 的大小,而在 PDF 模式下却运行良好。一种方法是.bb为所有 PNG 创建文件,例如foo.png.bbfoo.png它保存了以下行(此处显示的是 200x287 bp 图像):

%%BoundingBox: 0 0 200 287

然后按照图形指南grfguide):

\DeclareGraphicsRule{.png}{png}{.png.bb}{}

您应该能够使用脚本自动生成这些文件。这样,您就无需在每次使用它们时手动使用natwidth和声明大小。natheight

但是,我还没有彻底测试过。使用 PNG 可能根本不是一个好主意latex

相关内容