next up previous contents index
Next: 14.1 Psfrag 使用例一 Up: III. LATEX图形命令的使用 Previous: 13.3.2 对非 EPS 图形的直接支持


14. Psfrag  宏包

目前大多数绘图和分析软件都可以输出 EPS 格式的图形,但是它们大都 不能像 LATEX 一样支持符号和公式。 PSfrag 宏包允许用  LATEX 的文本和公式来替代 EPS 图形文件中的字符。在 CJK 等 中文环境下,可以使用 PSfrag 将图形中的标记字符替换 为所需的中文文本。 PSfrag 3.0 是 1996 发布的正式版本,几乎是被完全重新写过。 以前的版本则需要借助预处理程序(ps2frag 或 ps2psfrag) 来识别和记录 EPS 图形文件中的文本。而 PSfrag 3.0 不需要借助 预处理程序,也不需要像 perl 或 ghostscript 等外部 程序。 PSfrag 3.0 只需要较近版本的 LATEX (12/95  或以后)和 LATEX 图形宏包套件。参考文献 [7] 给出了  PSfrag 3.0 的详细说明。 新版的 PSfrag 3.0 的另一优势是支持压缩的 EPS 图形。不过,  \tex 命令(见第 14.3 节)不能被用来在压缩的 EPS 图形 中嵌入 LATEX 文本。 为使用 PSfrag,生成一 EPS 图形文件,然后按照以下步骤:
  1. 在 LATEX 文档的导言区中加入:\usepackage{psfrag}
  2. 在 LATEX 文档中,使用 \psfrag 命令来指明那些 EPS 图形 中的文本将被什么样的 LATEX 文本所替代。这些替换会在同一环境 下后面的任何 \includegraphics 命令中执行。
  3. 像通常一样使用 \includegraphics

\psfrag 命令的用法如下:

\psfrag{PStext}[posn][PSposn][scale][rot]{text}

上面命令中的参数的说明见表 14.1。 posn  和 PSposn 选项可为图  8.1 所示的 12 个点中的一个。如果没有给出,则 缺省为 [Bl]。空的选项则设定为 c (如 []  就等于 [c], [l] 就等于 [lc])。 可参考 [7] 中各种位置组合的例子。

表 14.1: PSfrag Options
PStext EPS 图形中被替换的文本。
posn (可选项,缺省为 [Bl])放置点相对于  LATEX 文本的参考位置。
PSposn (可选项,缺省为 [Bl])放置点相对于 现存的 EPS 文本的参考位置。
scale (可选项,缺省为 1 ) LATEX 文本的缩放因子。 为得到最好的效果,建议不使用这一选项,而使用  LATEX 的字体命令如 \small 和 \large 等。
rot (可选项,缺省为零)当给出一个角度时,此角度即为 新的 LATEX 文本相对于旧的 EPS 图形中文本的角度。 它以度为单位并且逆时针方向为正。此选项对处理那些 由只允许水平方向的文本的应用软体生成的 EPS 图形时 特别有用。
text 用来替换旧的 EPS 图形中文本的 LATEX 文本。 如同通常的 LATEX 文本,数学公式必须放在美元符号对 中。如: $\frac{1}{2}$ 或 $x^2$


注意 \psfrag 只匹配整个字符串,如下面的命令

\psfrag{pi}{$\pi$}
用 $\pi$ 替换 pi。但却不会替换 EPS 文件中的其它像 pi/2  或 2pi 这样的字符串。对于这样的字符串必须分别使用 \pafrag 命令。 如果所替换 EPS 中字符串不是完整的置于一 PS 命令中, PSfrag 将 不起作用。在一些应用软件生成的 EPS 图形中,为达到特殊的字符间距,将一 字符串分隔为几个子串或单个的字符。例如, Corel Draw 用如下 的 EPS 代码来放置字符串 ``Hello World'':

0 0 (Hello W) 
1080 0 (orld) 
由于 PSfrag 把它看作是两个不相干的字符串 ``Hello W'' 和 ``orld'', 所以任何对 ``Hello World'' 的替换都不起作用。如果不能在应用软件中 取消这种对字符间距的处理,使用 Courier 或其它单一间距的字体一般 可防止这种情况。如果确实无法避免这种情况,那么只能对单个字符进行替换。


Sections

Wang Lei
2000-04-15