next up previous contents index
Next: 13. 压缩图形文件和非  EPS  文件的使用 Up: 12. 使用子目录 Previous: 12.2 图形文件搜索路径


12.3 节约  Pool  空间

TEX为其内部的字符串的传递保留了一部分内存空间,称为 pool space 。每当 TEX 打开一文件或试图打开一文件, 就会有一部分 pool space 被永久性分配。当打开一个很大的文件时,这种内存的 丢失会导致 TEX 耗光它的 pool size,产生如下的错误讯息:

! TeX capacity exceeded, sorry [poolsize=72288]
因为已分配的 pool space 是文件名长度的函数,所以若其中带有子目录名会 使 pool space 问题更加恶化。 除了最新版的基于 web2c 的 TEX 软件和一些商业软件外,增加 poolsize 的 唯一办法就是重新编译 TEX。所幸的是,通常用下面这些节约 pool space 的 办法就可以解决问题。
  • 避免用过长的文件名。
  • 不要把子目录名包括进来
    
          \includegraphics{images/file.eps}
    
    取而代之的是将子目录加到 TEX 搜索路径中或不要把图形文件放在 子目录下。
  • 不要使用 \graphicspath 命令。
    
          \graphicspath{{dir1/}{dir2/}}
          ...
          \includegraphics{file.eps}
    
    将使 \includegraphics 命令试图打开下列文件:
    
          file.eps
          dir1/file.eps
          dir2/file.eps
    
    这每一次打开文件的尝试都会消耗 pool space。应该用更改 TEX 搜索路径 的办法来替代使用命令 \graphicspath
  • 给出全部的文件名,不要省略文件的扩展名(特别地,像 .eps)。在缺省的  \DeclareGraphicsExtensions 定义下,命令
    
          \includegraphics{file}
    
    将使 \includegraphics 命令试图打开下列文件:
    
          file.eps
          file.ps
          file.eps.gz
          file.ps.gz
          file.eps.Z
    
    若是再加上使用 \graphicspath,会导致效率极低。 最好将 \DeclareGraphicsExtensions 中定义的扩展名集减到最小, 这样在使用省略扩展名的文件时会好些。


Wang Lei
2000-04-15