我在编译论文时遇到了问题。由于我插入了新情节,因此编译时间变长。
根据本指南,我增加了 lualatex 的限制,如下所示:
pool_size=5000000
main_memory=6000000
extra_mem_bot=2000000
font_mem_size=2000000
save_size=120000
并拯救了他们:
initexmf --dump=lualatex
尽管如此,我还是收到了这个错误信息:
!TeX 容量超出,抱歉 [save size=80000]。 \pgfplotsarraysort@iflt ...then@b =\pgfmathresult \ifdim \pgfplotsplothandle... l.45682 \end{axis} 如果您确实需要更多容量,可以请向导帮我扩大。
这里列出了您使用的 LuaTeX 内存量: 495013 个字符串中的 114715 个字符串 100000,36569284 个节点字,分配了令牌内存 25514 个节点字内存仍在使用中:节点可用列表:1:1、2:35、4:2165、5:257、6:3245、7:522、8:5、9:1078、10:558、11:1 65536+200000 个多字母控制序列中的 115594 个多字母控制序列 197 种字体使用了 5517751 个字节 5000i、500n、10000p、200000b、80000s 中的 68i、19n、144p、1144b、79999s 堆栈位置! ==> 发生致命错误,未生成输出 PDF 文件!
据我所见,我将限制改为 80k(原为 50k),但这似乎是一个硬限制。
最小工作示例:
\documentclass[12pt, a4paper, bibliography=totoc, listof=totoc, parskip=half, numbers=noenddot]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[english, ngerman]{babel}
\usepackage{lmodern}
\renewcommand{\familydefault}{\sfdefault}
\usepackage{tikz, tikz-3dplot, pgfplots}
\usepackage{siunitx}
\usepackage{tikz, tikz-3dplot, pgfplots}
\pgfplotsset{compat=1.9}
\usetikzlibrary{shapes, arrows, plotmarks, calc, fpu, positioning, fit, fadings, external}
\tikzset{>=latex}
\begin{document}
\begin{figure}[htb]
\centering
\input{diff_slice_KV-Referenz_131.tikz.tex}
\caption{Problematic plot}
\label{fig:iterpower_Referenz}
\end{figure}
\end{document}
该图的输入文件位于此处:https://www.dropbox.com/s/osl8ulsukcrasip/diff_slice_KV-Referenz_131.tikz.tex
我也尝试过使用 XeLaTex,但很久以前我遇到了与使用 pdflatex 相同的错误:“主内存大小”超出。(这就是首先切换到 lualatex 的原因)
我知道这对 tex 来说很费力,但所有其他表面图都运行良好。这个切片图由两个表面图组成,显然将 lualatex 推到了极限。它是由 matlab2tikz 生成的,因此我认为它在语法上应该是正确的。(所有其他表面图都是正确的)此外,我还测试了一个较小的切片图,它很慢(一如既往),但渲染还可以。
有什么方法可以用 pfgplots 渲染该图吗?
这些问题都涉及相同的错误,它们表明我无法将限制提高到 80k 以上,并且代码中可能存在错误。但我不知道如何追踪错误。
答案1
您的数据集实在太大:没有办法解决。
无论如何,人眼无法区分印刷页面上约 50 cm 2区域中的 46000 个离散样本。在 MATLAB 中对数据进行下采样,然后在那里绘图并运行matlab2tikz
。如果您绝对必须在 MATLAB 中保留完整数据集的图,请生成单独的下采样图以供使用matlab2tikz
。
当我将数据样本数量减少到更易于管理的数量时,您的示例代码运行良好(我使用了大约 10:1 的重采样来编译它,但您可能可以更进一步而不会损失质量)。因此,除了它太大之外,生成的代码没有问题。