增加内存大小:并非所有文件都已成功构建

增加内存大小:并非所有文件都已成功构建

我正在尝试编译一个大文件,其中包含一个 tikz 图片,其数据点多于 tex 可以处理的数。

问题这里这里我设置通过更改路径 /usr/local/texlive/2012 中的文件来增加 tex 的容量texmf.cnf。我添加了以下行

main_memory = 10000000

在终端上我运行

sudo fmtutil-sys --all

问题是这个内存不够,大于这个数字就无法正确完成 fmtutil 运行。我得到了错误

 fmtutil: Error! Not all formats have been built successfully.

为了更好地了解问题的来源,如果我仅在文件中包含texmf.cnf以下行

main_memory.latex = 15000000
main_memory.pdflatex = 15000000

那么这些是未正确构建的文件:

This is a summary of all `failed' messages:
`pdftex -ini  -jobname=latex -progname=latex -translate-file=cp227.tcx *latex.ini' failed
`pdftex -ini  -jobname=pdflatex -progname=pdflatex -translate-file=cp227.tcx *pdflatex.ini' failed

如何将内存大小增加到 10000000 以上?我做错什么了吗?

(顺便说一句,我在 Mac 上运行的是 texlive 2012)

答案1

我不认为增加main_memory是解决方案:默认值非常接近最大值(这也取决于其他参数,在我的系统上最大值似乎是 12435455),因此内存最多会增加 25%。

要使用的参数是extra_mem_topextra_mem_bot。前者适用于“小物体”,后者适用于“复杂”物体,例如盒子。

例如,texmf.cnf我们发现

% ConTeXt needs lots of memory.
extra_mem_top.context = 2000000
extra_mem_bot.context = 4000000

texmf.cnf因此,第一个建议是在位于的本地文件中设置/usr/local/texlive/2012

% Add memory to pdflatex
extra_mem_top.pdflatex = 2000000
extra_mem_bot.pdflatex = 4000000

设置这些值不需要重建格式,就像 的情况一样main_memory

另一种方法是使用lualatex,它以动态方式分配内存。结果应该与使用 获得的结果没有太大区别pdflatex(可能会有一些小的变化,例如,因为 LuaTeX 使用略有不同的连字算法)。

相关内容