![当文件没有扩展名时,如何避免指定所包含图形的大小?](https://linux22.com/image/244971/%E5%BD%93%E6%96%87%E4%BB%B6%E6%B2%A1%E6%9C%89%E6%89%A9%E5%B1%95%E5%90%8D%E6%97%B6%EF%BC%8C%E5%A6%82%E4%BD%95%E9%81%BF%E5%85%8D%E6%8C%87%E5%AE%9A%E6%89%80%E5%8C%85%E5%90%AB%E5%9B%BE%E5%BD%A2%E7%9A%84%E5%A4%A7%E5%B0%8F%EF%BC%9F.png)
我正在使用 xelatex 渲染以下代码:
\documentclass{article}
\usepackage[debugshow]{graphicx}
\begin{document}
%% This gives ! LaTeX Error: Cannot determine size of graphic in lowres (no size specifed).
\includegraphics[type=png]{lowres}
%% This works fine without specified size.
\includegraphics{highres.png}
\end{document}
我当前目录中有文件“lowres”和“highres.png”:
$ file lowres
lowres: PNG image data, 348 x 350, 8-bit colormap, non-interlaced
$ file highres.png
highres.png: PNG image data, 348 x 350, 8-bit colormap, non-interlaced
这些文件之间的明显区别是缺少“lowres”的扩展名,所以这就是我在“includegraphics”中指定类型的原因。
问题是,当文件没有任何扩展名时,似乎必须指定大小(尽管我们将类型作为参数)。
这种行为对我来说毫无意义,有什么办法可以解决它吗?
答案1
如果您未指定扩展名作为文件名的一部分,\includegraphics
则将使用一组预定义的扩展名来搜索合适的文件。如果您仅使用,lowres
则它会查找文件lowres.png
、lowres.jpg
和lowres.pdf
(不必按此顺序),并使用找到的第一个文件。它不会查找lowres
没有任何扩展名的文件。据我type
所知,该选项已被弃用,可能无法达到您的预期。
最好的办法是直接重命名相关文件,使其具有正确的文件扩展名。您还可以定义一个空扩展名作为默认扩展名列表的一部分,然后删除该type
选项。
以下对我有用。显然 XeTeX 足够聪明,无需扩展即可找出真实类型,这实际上并不难。
\documentclass{article}
\usepackage[debugshow]{graphicx}
\DeclareGraphicsExtensions{.pdf,.png,.jpg,}% Note the trailing ',' which defines an empty extension
\begin{document}
\includegraphics{lowres}
\includegraphics{highres.png}
\end{document}