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 中定义的扩展名集减到最小,
这样在使用省略扩展名的文件时会好些。
|