DeclareGraphicsRule 有什么作用?

DeclareGraphicsRule 有什么作用?

我正在处理一份文档,发现

\DeclareGraphicsRule{.tif}{png}{.png}{`convert #1 `dirname #1`/`basename #1 .tif`.png}

我不太清楚它的作用。有人能告诉我吗?

答案1

该行希望.tif通过使用 ImageMagic(convert在 Linux 上可执行;我认为在 Windows 上它被称为magick)将转换.tif.png图形包含之前的来添加对 LaTeX 的支持,因为没有 TeX 引擎/后端(据我所知)可以本机包含 TIFF 文件。该行可能是受以下部分的启发grfguide

命令通常为空,但如果非空,则用于代替 \special 中的文件名。在此参数中,可以使用 #1 来表示文件名。因此,使用 dvips 驱动程序,可以使用 \DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{zcat #1}``

它会在包含文件之前调用zcat命令来解压.ps.gz文件。但是,该行仅适用于可以从后端处理的简单内容。像 ImageMagick 这样的更复杂的命令无法由后端直接处理,因此您的\DeclareGraphicsRule行实际上不起作用。

.tif您可以手动运行该命令将图形(如果有的话)转换为.png,或者使用自动解决方案,例如这里(请注意,该解决方案效率很低,因为它在每次构建文档时都会执行转换)。


更准确地回答标题中的问题:

\DeclareGraphicsRule{<ext>}{<type>}{<read-file>}{<command>}

声明graphics(或graphicx) 包应如何处理扩展名为 的文件。当找到<ext>图形文件时,它使用通用图形(由引擎代码定义)来包含该文件,并使用扩展名获取该文件的边界框信息(通常与 相同),并如上所述将其传递给后端以读取和包含图形文件。file.<ext><type><read-file><ext><command>

相关内容