我再次达到了 80,000 的“保存空间”限制。
TeX 容量超出,抱歉 [保存大小=80000]。
我没有遇到此问题的最后一个日志文件报告了以下内容。
182627 strings out of 492990
5066323 string characters out of 39882636
7912668 words of memory out of 12435455
170281 multiletter control sequences out of 15000+600000
722420 words of font info for 253 fonts, out of 8000000 for 9000
1143 hyphenation exceptions out of 8191
87i,19n,130p,10511b,4441s stack positions out of 5000i,500n,10000p,200000b,80000s
和
PDF statistics:
390899 PDF objects out of 409690 (max. 8388607)
382617 compressed objects within 3827 object streams
5591 named destinations out of 6186 (max. 500000)
68544 words of extra memory for PDF output out of 74296 (max. 10000000)
这是一个 4,500 页的索引,现在似乎在第 530 页左右就出问题了。
问题:
如何确定日志文件使用了多少保存空间?
我是否正确地假设导致这种情况的原因可能是对执行大的一组中的作业数量。
一旦我能确定实际的节省空间,我就可以开始尝试减少它。
答案1
- 如何确定日志文件使用了多少保存空间?
在日志文件的末尾:
87i,19n,130p,10511b,4441s stack positions out of 5000i,500n,10000p,200000b,80000s
这是第五个条目。这里使用的堆栈大小是 4441,最大堆栈大小是 80000。
- 我是否可以正确地假设,造成这种情况的原因可能是对一个组中执行大量作业的宏进行了某些更改。
可能的原因:
一个常见的错误是将组内的局部和全局分配混合到同一个宏或寄存器。
通常,前十个寄存器是临时寄存器,例如
\dimen0
,,\dimen1
...,\dimen9
。纯 TeX 的惯例是使用偶数(0、2、4、6、8)的寄存器当地的分配和奇数暂存寄存器(1、3、5、7、9)用于全球的仅用于分配。暂存寄存器编号 255 (\count@
) 用于本地分配。
答案2
保存堆栈的使用情况如下行所示
87i,19n,130p,10511b,4441s stack positions out of 5000i,500n,10000p,200000b,80000s
因此在这种情况下为 4441。
TeXBook 说
您可以通过设置来确定 TeX 在保存堆栈上放置了什么
\tracingrestores=1
;然后您的日志文件将记录有关在组末尾从堆栈中删除的任何内容的信息。