我一直不明白如何(pdf)latex
确定导入位图的大小,但多年前我通过实验制定了一条简单的规则,该规则允许我通过在同一源上运行latex
或编译器来获得相同的输出。根据这条规则,PNG 图形的自然高度和宽度(高度和宽度的像素数)应在后缀为单位pdflatex
的可选参数中指示,例如,\includegraphics
bp
\includegraphics[natwidth=162bp,natheight=227bp]{Aston.png}
scale
然后,可以通过添加或选项将导入的图形缩放到所需大小width
。最重要的是,结果不依赖于 PNG 图形的分辨率。但是,该规则似乎不适用于。仅当 DPI 为 72 时,才能获得预期大小(我的意思是或xelatex
生成的导入图形的大小)。这是我的测试源代码:latex
pdflatex
\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 产生的输出:
那么。我现在很疑惑该如何处理我书的附录?它包含一百多个位图。
答案1
EPS 文件的大小是通过graphics/x
读取BoundingBox
ASCII 标头来确定的。PDF、PNG 或 JPG 的大小是通过pdftex
(我假设)以二进制方式读取的。这些文件格式将大小作为二进制标头的一部分保存。对于 XeLaTeX,我猜应该与 PDF-LaTeX 相同。
如今,它latex
实际上以 DVI 模式运行pdflatex
。显然,它不会在此模式下从文件中读取 PNG 的大小,而在 PDF 模式下却运行良好。一种方法是.bb
为所有 PNG 创建文件,例如foo.png.bb
,foo.png
它保存了以下行(此处显示的是 200x287 bp 图像):
%%BoundingBox: 0 0 200 287
然后按照图形指南(grfguide
):
\DeclareGraphicsRule{.png}{png}{.png.bb}{}
您应该能够使用脚本自动生成这些文件。这样,您就无需在每次使用它们时手动使用natwidth
和声明大小。natheight
但是,我还没有彻底测试过。使用 PNG 可能根本不是一个好主意latex
。