词汇表包超出 TeX 容量

词汇表包超出 TeX 容量

我的文档包含数千个词汇表项。使用 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 = 30000000extra_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) 用于池(控制序列的名称)的主内存。

相关内容