Wie behebe ich das Problem "TeX capacity exceeded" im Zusammenhang mit gnuplot mit großer sample-Anzahl
Ich lasse mir mit TikZ und gnuplot mit 5000 samples den Tanges plotten. In folgendem Beispiel funktioniert das einwandfei:
\documentclass[12pt]{beamer}
\usepackage[utf8]{inputenc}
\usepackage{fontenc}
\usepackage[ngerman]{babel}
\usepackage{tikz}
\usetikzlibrary{arrows.meta}
\begin{document}
\begin{frame}
\begin{tikzpicture}[line cap=round, line join=round, x=0.5cm, y=0.5cm]
\draw plot[raw gnuplot,id=tan,smooth] function{set samples 5000;set xrange [-3.1*pi:3.1*pi]; set yrange[-5:5]; plot tan(x)};
\end{tikzpicture}
\end{frame}
\end{document}
Sobald ich das `tikzpicture` in meine Präsentation einbaue (derzeit letzte Folie), erhalte ich die Fehlermeldung
> TeX capacity exceeded, sorry [main memory size=3000000]. \end{frame}
Ich bin auch auf der Suche nach der Fehlermeldung [hier][1] gelandet.
Ich hab die Variante mit `\tikzexternalize` versucht, auch weil mir das aufgrund der Vielzahl von plots attraktiv bezüglich der Übersetzungszeit erscheint. Leider funktioniert das nicht. Die Übersetzung bleibt bei dem selben plot mit der selben Fehlermelung stehen. Mir ist unklar warum. Ich hatte die die Sache so verstanden, dass durch `\tikzexternalize` jedes `tikzpicture` getrennt übersetzt wird und als pdf gespeichert wird. Dies passiert auch mit allen `tikzpictures` bis zu dem obigen. das obigen erreicht wird. Sogar die ganzen Item-Circles werden in einzelne pdf-Dateien geschrieben (kann man das global abschalten?) geschrieben.
abschalten?).
Warum lässt sich der plot in einer einzelnen Datei übersetzten, nicht aber mit der `external`-Variante?
Hier das logfile ab der Stelle, bei der der Fehler auftritt (Der Name des plots ist "figures/Praesentation-figure-41"):
! Package tikz Error: Sorry, the system call 'pdflatex -shell-escape -halt-on-e
rror -interaction=batchmode -jobname "figures/Praesentation-figure41" "\def\tik
zexternalrealjob{Praesentation}\input{Praesentation}"' did NOT result in a usab
le output file 'figures/Praesentation-figure41' (expected one of .pdf:.jpg:.jpe
g:.png:). Please verify that you have enabled system calls. For pdflatex, this
is 'pdflatex -shell-escape'. Sometimes it is also named 'write 18' or something
like that. Or maybe the command simply failed? Error messages can be found in
'figures/Praesentation-figure41.log'. If you continue now, I'll try to typeset
the picture.
See the tikz package documentation for explanation.
Type H <return> for immediate help.
...
l.819 \end{frame}
This error message was generated by an \errmessage
command, so I can't give any explicit help.
Pretend that you're Hercule Poirot: Examine all clues,
and deduce the truth by order and method.
Runaway definition?
->\pgfsyssoftpath@movetotoken {-134.08026pt}{0.0pt}\pgfsyssoftpath@curvetosuppo
rtatoken \ETC.
! TeX capacity exceeded, sorry [main memory size=3000000].
\pgfsyssoftpath@thepath ...vetosupportatoken \ETC.
l.819 \end{frame}
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:
37254 strings out of 493698
770434 string characters out of 3144418
3000001 words of memory out of 3000000
39746 multiletter control sequences out of 15000+200000
231113 words of font info for 266 fonts, out of 3000000 for 9000
1025 hyphenation exceptions out of 8191
56i,26n,65p,10380b,793s stack positions out of 5000i,500n,10000p,200000b,50000s
! ==> Fatal error occurred, no output PDF file produced!
Hat jemand von euch eine Idee, woran das liegt?
In obigem Link war auch noch eine anderer Tipp. Es heißt dort, dass man MikTeX mit der Option `--extra-mem-bot=10000000` starten kann. Dies funktioniert nicht.
Ich hab dann einfach mal die Option `--extra-mem-top=10000000` ausprobiert. Sie funktioniert, und zwar sowohl wenn man das gesamten Dokument ohne `external` am Stück übersetzt, als auch mit der `external` Variante:
\tikzexternalize[prefix=figures/,system call={pdflatex \tikzexternalcheckshellescape --extra-mem-top=10000000 -halt-on-error -interaction=batchmode -jobname "\image" "\texsource"}]
Allerdings hab ich an einer anderen Stelle gelesen, dass es nicht sinnvoll ist, mit dieser Speichererhöhung rumzuspielen. Mir ist auch unklar, wie weit ich den Wert erhöhen kann bzw. ob LaTeX nicht doch irgendwann wieder an die Grenze stößt. Und ich hab es so verstanden, dass dies nur mit MikTeX geht. Wie würde man diese Option z.B. bei TeXlive mitgeben? (Der Systemspeicher von Windows sagt übrigens ca. 4700 MB freier pysikalischer Speicher.)
Am liebsten wäre mir, die Sache irgendwie ohne diese Option aber mit `external` zum Laufen zu bringen (und ohne LuaLaTeX und ohne `pgfplots`).
[1]: http://tex.stackexchange.com/questions/7953/how-to-expand-texs-main-memory-size-pgfplots-memory-overload