增加 LaTeX 容量

增加 LaTeX 容量

我正在尝试编译一个 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 容量?

但要注意内存使用情况。虽然旧版 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 包以增加可用空间。您已经用尽了可用的字符串字符。

相关内容