next up previous contents index
Next: III. LATEX图形命令的使用 Up: 9. 高级命令 Previous: 9.1 DeclareGraphicsExtensions 命令


9.2 DeclareGraphicsRule  命令

\DeclareGraphicsRule 命令指定 \includegraphics 如何按照文件的扩展名 来对图形文件进行操作。可以允许有多个 \DeclareGraphicsRule 命令。

\DeclareGraphicsRule{ext}{type}{sizefile}{command}

表 9.1: DeclareGraphicsRule Arguments
ext 文件的扩展名。
type 扩展名所对应的图形格式。
sizefile 包含图形的 BoundingBox 的文件的扩展名。如果这一选项为空, 那么须要在 \includegraphics 命令中给定 bb 项 的值。
command 作用于图形文件的命令,此项常为空。命令前必须有一个后向单引号 (而不是常使用的前向单引号)。目前为止,只有 dvips 能 够使用这样的命令。参见第 13 章用这样的命令 来处理非 EPS 格式图形和压缩 EPS 图形的例子。


例如:

\DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{`gunzip -c #1}
指定任何以 .eps.gz 为扩展名的文件为压缩 EPS 文件,该文件 的 BoundingBox 信息存放在扩展名为 .eps.bb 的文件中,并 用命令 gunzip -c 来解压缩(因为 LATEX 不能从压缩文件中 读取 BoundingBox 信息,所以 BoundingBox 行必须存放到一非压缩文件中)。 \DeclareGraphicsRule 命令允许使用 * 代表任何未知扩展名, 例如:

\DeclareGraphicsRule{*}{eps}{*}{}
会导致所有未知扩展名的文件都被认为是 EPS 文件,比方说 file.EPS  就被当做 EPS 文件。 这里文件名里第一个句点 以后的部分都被认为是文件的扩展名,这样做是为了能够 正确地识别压缩的 EPS 文件(扩展名为 .eps.gz)等。为了避免 混淆,文件的基本名中不要使用句点。否则 file.name.eps.gz 会让  \includegraphics 寻找扩展名为 .name.eps.gz 所对应的规则, 由于这样的规则很有可能不存在,结果导致使用未知扩展名所对应的规则。 例外的情形是该文件的格式正好是缺省格式,如未知扩展名的文件 都被认为是 EPS 文件时,那么 file.name.eps 就能被正确地识别。 为方便起见,根据不同的图形驱动选项 9.2 预定义了不同的缺省图形规则。例如使用 dvips 图形驱动选项 时,缺省图形规则为:

\DeclareGraphicsRule{.eps}{eps}{.eps}{} 
\DeclareGraphicsRule{.ps}{eps}{.ps}{} 
\DeclareGraphicsRule{.pz}{eps}{.bb}{`gunzip -c #1} 
\DeclareGraphicsRule{.eps.Z}{eps}{.eps.bb}{`gunzip -c #1} 
\DeclareGraphicsRule{.ps.Z}{eps}{.ps.bb}{`gunzip -c #1} 
\DeclareGraphicsRule{.eps.gz}{eps}{.eps.bb}{`gunzip -c #1} 
\DeclareGraphicsRule{.ps.gz}{eps}{.ps.bb}{`gunzip -c #1} 
\DeclareGraphicsRule{.pcx}{bmp}{}{} 
\DeclareGraphicsRule{.bmp}{bmp}{}{} 
\DeclareGraphicsRule{.msp}{bmp}{}{} 
\DeclareGraphicsRule{*}{eps}{*}{}
前面两个命令定义扩展名为 .eps 和 .ps 的文件为 EPS 文件, 它们后面的五个命令定义了压缩 EPS 文件的扩展名和解压命令, 接下来的三个命令定义了位图文件的扩展名(见第 13.3 节), 最后一个命令设定未知扩展名的文件为 EPS 文件。


Wang Lei
2000-04-15