我正在尝试编译一个大文件,其中包含一个 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_top
和extra_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 使用略有不同的连字算法)。