为什么 XeTeX 无法处理这个糟糕的 meme?

为什么 XeTeX 无法处理这个糟糕的 meme?

平均能量损失

请使用下面链接的图像。

\documentclass{article}
\usepackage{graphicx}

\begin{document}
\includegraphics{dank}
\end{document}

奇怪的是,只有图片失败,仅有的使用 XeTeX 编译时(而不是 pdfTeX 或 LuaTeX):

ERROR: Dimension too large.

--- TeX said ---
<to be read again> 
                   b
l.5 \includegraphics{dank}

--- HELP ---
From the .log file...

I can't work with sizes bigger than about 19 feet.
Continue and I'll use the largest value I can.

潮湿模因本身有点碍眼,所以我没有以内联方式显示。请检查 shasum 以确保下载时它仍然是同一个文件。

$ shasum dank.jpg
b889bc28b2ccd079073267159db0562f45b58e4d  dank.jpg

这张图片有什么特别之处?为什么会失败?它的自然环境(如 LuaTeX 或 pdfTeX 所示)远低于 19 英尺。

答案1

原因是 dank.jpg 没有 JFIF,也就是 Exif 头。所以 XeTeX 的 jpeg 驱动无法读取密度,并假设它是 1DPI。因此它变得非常大。pdftex 的 jpeg 驱动也无法读取密度,因此假设它是 72DPI。解决方案:使用 ImageMagick 中的 convert 添加 JFIF 头。

convert -density 72x72 dank.jpg dank1.jpg

然后转换后的 dank1.jpg 就可以用于 XeTeX 了。


要确定这是否是给定图像的问题,请使用(从@egreg 的评论复制)identify -verbose dank.jpg | grep Resolution:。

相关内容