以下 MWE 编译(对我来说)
\documentclass{article}
\usepackage{pgfplots}
\pgfplotsset{compat=newest}
\usetikzlibrary{external}
\tikzexternalize[prefix=figures/externalized/]
\begin{document}
\begin{figure}
\centering
\begin{tikzpicture}
\begin{axis}
% \addplot3[surf,mesh/rows=129,mesh/cols=129,mesh/ordering=y varies] table[x=X,y=Y,z=psi] {figures/data/LidDrivenCavity/Lid_SPIKE_128x128_Re1000_psi.dat};
\addplot3[contour gnuplot,mesh/rows=129,mesh/cols=129,mesh/ordering=y varies] table[x=X,y=Y,z=psi] {figures/data/LidDrivenCavity/Lid_SPIKE_128x128_Re1000_psi.dat};
\end{axis}
\end{tikzpicture}
\caption{ciao}
\end{figure}
\end{document}
数据文件的位置这里。如果我取消注释第一个\addplot3
并注释第二个,则会出现错误。日志文件的最后一部分(我认为很有趣)是
===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-o
n-error -interaction=batchmode -jobname "figures/externalized/prova-figure0" "\
def\tikzexternalrealjob{prova}\input{prova}"' ========
\openout3 = `prova.auxlock'.
runsystem(pdflatex -shell-escape -halt-on-error -interaction=batchmode -jobname
"figures/externalized/prova-figure0" "\def\tikzexternalrealjob{prova}\input{pr
ova}")...executed.
\openout3 = `prova.auxlock'.
./prova.tex:22: Package tikz Error: Sorry, the system call 'pdflatex -shell-esc
ape -halt-on-error -interaction=batchmode -jobname "figures/externalized/prova-
figure0" "\def\tikzexternalrealjob{prova}\input{prova}"' did NOT result in a us
able output file 'figures/externalized/prova-figure0' (expected one of .pdf:.jp
g:.jpeg:.png:). Please verify that you have enabled system calls. For pdflatex,
this is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or som
ething like that. Or maybe the command simply failed? Error messages can be fou
nd in 'figures/externalized/prova-figure0.log'. If you continue now, I'll try t
o typeset the picture.
See the tikz package documentation for explanation.
Type H <return> for immediate help.
...
l.22 \end{tikzpicture}
?
PGFPlots: reading {figures/data/LidDrivenCavity/Lid_SPIKE_128x128_Re1000_psi.da
t}
Runaway argument?
{\pgfkeyssetvalue {/pgfplots/execute at begin plot visualization}{}\pgfkeyssetv
alue \ETC.
./prova.tex:22: TeX capacity exceeded, sorry [main memory size=5000000].
<argument> ...5e-1],2Y7.753628e-3]}{2Y8.20894\ETC.
l.22 \end{tikzpicture}
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:
20761 strings out of 493054
547383 string characters out of 6134761
5000001 words of memory out of 5000000
23958 multiletter control sequences out of 15000+600000
3640 words of font info for 14 fonts, out of 8000000 for 9000
1141 hyphenation exceptions out of 8191
62i,4n,84p,728b,1519s stack positions out of 5000i,500n,10000p,200000b,80000s
./prova.tex:22: ==> Fatal error occurred, no output PDF file produced!
如果未启用/使用外部化,则会出现类似(或相同)的错误。
我的 TeX 发行版是 Mac OS X 10.9.5 上的 TeX Live,并且我使用 TeXShop 作为编辑器。
有一次,我 (部分)解决了类似问题在 Windows+MikTeX+TeXniccenter 上,通过修改/添加按下编译按钮时执行的命令选项。我说部分是因为我确实解决了一些数据文件的问题。然后我在更大的数据文件和/或不同的图(我不记得了)上遇到了同样的问题,无论我扩展多少内存,都没有找到解决方法。
我现在应该怎么做?
答案1
我在 Windows 上使用 MikTeX 发行版时遇到了同样的问题(使用 TeXniccenter 作为编辑器),我发布的相关问题是这里。
这次,在 TeXLive 上,我使用 LuaLaTeX 解决了这个问题。我以前从未尝试过,因为我认为它很难使用,或者与 LaTeX 有很大不同。相反,它只不过是另一个可以代替 pdfLaTeX 的程序。所以我只是运行
lualatex --enable-write18 main.tex
从命令行,而不是
pdflatex --enable-write18 main.tex
并且一切正常(lualatex 需要花费大量时间来排版大型 3D 冲浪图!)我是一个 LaTeX 用户,而不是 LaTeX 专家,所以这个解决方案对我来说并不明显。
如果您必须排版如此之大,tikzpictures
则必须使用externalize
库tikz
。在这种情况下,您只需运行一次 LuaLaTeX 即可排版图片。完成此操作后,您可以依靠 pdfLaTeX,它将确保图形是最新的,至少在图片发生更改之前是如此,在这种情况下,您应该再次运行 LuaLaTeX 以避免内存问题。