增加 TeX 的主内存

增加 TeX 的主内存

我有一个包含大量测量数据点的图。我从 Matlab2tikz 导出了此图。

当我尝试编译时,它说内存已超出。我发现这个问题它告诉我我可以将不同的 tikzpicture 导出到不同的文件。不幸的是,这没有帮助我,因为只有 1 个 tikzpicture 导致了问题。

所以我实际上尝试增加 TeX 的内存。我进入,/usr/share/texlive/texmf/web2c然后在texmf.cnf我将其更改main_memory = 3000000main_memory = 5000000。然后我运行texhash并尝试再次编译我的 TeX 文件。

我的问题是,增加内存限制后,我再次收到相同的错误:! TeX capacity exceeded, sorry [main memory size=3000000].但是我只是将其更改为5000000。我推测我在增加内存限制时做错了什么。是吗?

-编辑-

最后我只使用了 lualatex。这是因为我认为我的 texlive 安装有问题:由于某种原因,它在我的系统上安装了两次。不过,我认为 Heiko Oberdiek 的答案是正确的,因此将其标记为正确答案。

答案1

texmf.cnf

% Memory. Must be less than 8,000,000 total.
%
% main_memory is relevant only to initex, extra_mem_* only to non-ini.
% Thus, have to redump the .fmt file after changing main_memory; to add
% to existing fmt files, increase extra_mem_*.  (To get an idea of how
% much, try \tracingstats=2 in your TeX source file;
% web2c/tests/memtest.tex might also be interesting.)

因此,您必须重新生成格式文件(fmtutil)才能看到更改的效果main_memory

答案2

增加内存可能有助于您编译图表,但最终会得到非常大的文件,需要花费大量时间才能通过 pdf 查看器加载,并且滚动时会变得不流畅。此外,随着图表复杂度的增加,您可能会达到性能上限。

这是另一种解决方案,它可以生成非常小的文件,同时保持完整方法的“清晰度” tikz

  1. 在不同的图形上绘制不同颜色的元素。确保轴限值相同,删除轴(matlab 中的轴关闭)并使用打印命令将其导出为高分辨率 png

    print -dpng -r800 *name_of_file.png*
    
  2. 使用 gimp 或 imagemagick 将 .png 转换为位图。使用后者:

    convert *name_of_file.png* *name_of_file.bmp*
    

您可能希望直接从 Matlab 导出 bmp 格式。不过我还没有测试过,而且现在手头也没有许可证。

  1. 使用波特雷斯检索 .bmp 的 .svg 矢量跟踪

    potrace *name_of_file.bmp* -s
    
  2. 然后将 .svg 与 Inkscape 重新组合,应用使用 potrace 时丢失的所需颜色。

  3. 使用 Inkscape inkscape2tikz 扩展将最终结果导出为 pdf 或 tikz 代码。如果是前者,请使用\addplot graphic(请参阅pgfplots有关该命令的手册)。

我曾将这项技术用于包含 10,000 个点且重叠程度相当高的散点图。生成的文件非常小,但几乎完美无瑕,而当有人想放大时,.png 看起来会很粗糙。

相关内容