我的文档包含数千个词汇表项。使用 XeLaTeX 进行编译时,大约编译了 1/8 的文档,它会报告:
! TeX capacity exceeded, sorry [main memory size=3000000].
\@glolist@ ...},{13586},{9406},{4539},{12811},{179
51},{5831},{1047},{14948},
- 您在上面看到的数字是 中的数字
#1
。\newglossaryentry{#1}{#2}
为方便起见,每个条目都分配有这些唯一的数字。 - 我已成功编译该文档的简短测试,仅使用了全部内容的 1%。
- 生成的
.glo
文件大小约为 1 MB。
这可能是我的错误造成的,还是我给 TeX 布置了太多工作?
更新:
我已按照以下说明进行操作(已编辑texmf.cnf
并运行)
fmtutil-sys --all
。这使我能够编写该书的额外部分,但无论我添加什么设置,我都无法超越 5/8 的路程。
编译extra_mem_top.xelatex = 30000000
并extra_mem_top.xelatex = 50000000
两者的结果为:
TeX capacity exceeded, sorry [pool size=3186676].
更新:
我已完成以下操作:
$ kpsewhich texmf.cnf
/usr/local/texlive/2011/texmf.cnf
$ nano /usr/local/texlive/2011/texmf.cnf
texmf.cnf
按照以下说明操作即可找到该文件增加 TeX 容量,无需 root 权限,我补充道:
main_memory = 230000000
extra_mem_top = 10000000
extra_mem_bot = 10000000
save_size = 150000
stack_size = 150000
main_memory.xelatex = 30000000
extra_mem_top.xelatex = 30000000
在此之后,我尝试: - fmtutil-sys --all
,然后编译xelatex file.tex
。 - fmtutil --all
,然后编译xelatex file.tex
。 - fmtutil-sys --byfmt xelatex
,然后用xelatex file.tex
。 -进行编译texhash
,然后用 进行编译xelatex file.tex
。
所有这些都没有导致结果发生变化。我仍然得到:
TeX capacity exceeded, sorry [pool size=3186676].
答案1
假设你的代码没有问题,你需要增加 TeX 允许的内存。看一看这里寻求有关如何做到这一点的建议。
具体怎么做取决于你使用的发行版和操作系统。这决定了 texmf.cnf 文件的位置,你需要修改该文件。
在 TeXLive 2011 中,它是/usr/local/texlive/2011/texmf.cnf
。修改此文件后,运行
sudo fmtutil-sys --all
在终端中。
答案2
您可以尝试编辑辅助texmf.cnf
文件
sudo nano $(kpsewhich texmf.cnf)
(例如,使用您最喜欢的文本编辑器,gedit
而不是nano
)。在打开的文件中,附加
extra_mem_top.xelatex = 20000000
main_memory.xelatex = 20000000
保存文件并运行
sudo fmtutil-sys --byfmt xelatex
然后尝试再次编译。虽然修改第一个参数通常不需要重建格式,但修改第二个参数则需要。它是 TeX (XeTeX) 用于池(控制序列的名称)的主内存。