我正在尝试编译一个 TeX 文件,但很长时间后我收到此消息:
l.3593 ...temp.png}
If you really absolutely need more capacity,
you can ask a wizard to enlarge me.
Here is how much of TeX's memory you used:
31937 strings out of 94500
1176767 string characters out of 1176767
272586 words of memory out of 1000000
24170 multiletter control sequences out of 10000+50000
11185 words of font info for 39 fonts, out of 500000 for 2000
580 hyphenation exceptions out of 1000
28i,7n,36p,345b,3810s stack positions out of 1500i,500n,5000p,200000b,5000s
PDF statistics:
33619 PDF objects out of 300000
7356 named destinations out of 131072
48094 words of extra memory for PDF output out of 65536
! ==> Fatal error occurred, the output PDF file is not finished!
也许我的文件很大(比如 4000 页),这就是原因。
答案1
将其放入你的本地 TeX 配置文件中,例如 TeXLive 中的.../texlive/2011/texmf.cnf
,
pool_size = 3250000
然后运行sudo fmtutil-sys --all
。对于 MiKTeX,应该可以从 MiKTeX 配置 GUI 中更改这些值。
如果你没有找到文件运行
kpsewhich texmf.cnf
它显示了位置。
答案2
另一个解决方案是使用 LuaLaTeX。
使用 luatex 它会动态分配内存,因此你会受到可用物理内存的限制
但要注意内存使用情况。虽然旧版 TeX 引擎有硬编码的固定长度限制,但 LuaTeX 会根据需要使用尽可能多的内存。
答案3
如果您使用 TeXLive,则有几种可能性(使用 MikTeX 请参阅问题评论中的 Werner 链接)。
1)一种简单但“糟糕”的方法:你可以修改原来的texmf.cnf
。这个文件在这里:
/some/path/to/texlive/2011/texmf/web2c/texmf.cnf
(对我来说是 2011 年,但与 2010 年是一样的)但如果您修改此原始文件,则更新后您的更改将会丢失。
您可以修改什么?
以下值用于 pgf 手册(参见/doc/generic/pgf/tex-en/texmf.cnf
)
main_memory = 9000000 % words
extra_mem_top = 6000000 % extra high memory for chars, tokens, etc.
extra_mem_bot = 6000000 % extra low memory for boxes, glue, breakpoints,
% Extra space for the hash table of control sequences (which allows 10K
% names as distributed).
hash_extra = 200000
% Max number of characters in all strings, including all error messages,
% help texts, font names, control sequences. These values apply to TeX and MP.
pool_size = 3850000
2) 更好的方法是,不要修改原始文件,而是将更改(且只将更改)放入 中../../texmf.cnf
。也就是说,如果此文件安装在:
/some/path/to/texlive/2011/texmf/web2c/texmf.cnf
添加您的自定义设置
/some/path/to/texlive/2011/texmf.cnf
例如,MacTeX 在文件中添加/usr/local/texlive/2011/texmf.cnf
:
TEXMFHOME = ~/Library/texmf
TEXMFVAR = ~/Library/texlive/2011/texmf-var
TEXMFCONFIG = ~/Library/texlive/2011/texmf-config
重要提示:包括仅有的您改变的价值观,而不是整个事物的副本!
3) 另一种可能性是使用另一个文件。这在第 6 节中描述内存和速度考虑因素的pgfplots
包裹,但是如果你知道如何使用,你可以使用像 pgfmanual 那样的变体MakeFile
它使用位于 ../../text-en 中的 'texmf.cnf'。dist: FORCE
export TEXMFCNF="../../text-en:$(TEXMFCNF)"; 看看如何编译 pgfmanual 很有趣。编译此文档需要大量内存
答案4
您应该将文档拆分成更小的部分或重新编译 TeX 包以增加可用空间。您已经用尽了可用的字符串字符。