Matlab2tikz, Tex capacity exeeded trotz tikz externalize

Wer eine gutes How-To hat. Bitte hier hinein.
hofgockel
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 26. Jun 2019, 22:36

Matlab2tikz, Tex capacity exeeded trotz tikz externalize

Beitrag von hofgockel »

Hi zusammen,

ich schreibe gerade meine Masterarbeit und möchte diese in LaTex schreiben. Das ist das erste mal, dass ich LaTex verwende.

Ich habe in Matlab mit dem Befehl "matlab2tikz()" aus einem Plot eine .tikz Datei erzeugt. Diese binde ich in mein LaTex Dokument mit ein:

Lasse ich mir ein sehr kleinen Plot erstellen, wie das Ellipsoid, wird mir die Grafik erzeugt.
Möchte ich nun einen größeren Plot einbinden, kommt die Fehlermeldung:
Tex capacity exeeded, sorry ...

Ich habe das Netz durchforstet und bin immer auf dieses externalize und LuaLaTex gestoßen. Habe auch diverse Beispiele ausprobiert, leider ohne Erfolg.


Hier mein Minimalbeispiel:

Code: Alles auswählen

\documentclass{article} 
\usepackage{pgfplots} 
\usepackage{tikz}

\pgfplotsset{compat=newest}
\usepgfplotslibrary{external}

\tikzexternalize[shell escape=-enable-write18] 

\begin{document} 

\input{ellipsoid.tikz}

\end{document} 
Unter Texstudio konfigurieren - Befehle habe ich -shell-escape hinzugefügt (siehe Screenshot).

In meinem Ordner wird das Ellipsoid als pdf erzeugt.

Und das "\usepgfplotslibrary{external}" ist rot hinterlegt. Wenn ich mit der Maus drauf gehe, wird angezeigt "Befehl nicht erkannt"

Ich nutze Texstudio und MikTex, Packages sind aktuell.

Hoffe ihr könnt mir weiterhelfen. Bin langsam am verzweifeln.

Gruß Daniel
Dateianhänge
Texstudio konfig
Texstudio konfig
Sceenshot_konfig.jpg (221.19 KiB) 416 mal betrachtet
Bild.tikz
(3.25 MiB) 80-mal heruntergeladen
ellipsoid.tikz
kleiner Plot, funktioniert
(30.2 KiB) 79-mal heruntergeladen

Gast

Beitrag von Gast »

Externalize arbeitet so, dass es für jedes Bild einen externen LaTeX-Aufruf durchführt, um ein PDF für dieses einzelne Bild zu erzeugen und dann dieses fertige PDF einzubinden statt jedes Mal das Bild neu zu erzeugen. Für Speicherplatzprobleme bringt das nur etwas, wenn man mehrere Bilder auf einer Seite hat. Wenn schon ein einziges Bild nicht verarbeitet werden kann, wird das natürlich auch nicht funktionieren. Solange das einzelne Bild verarbeitet werden kann, aber einfach lange dauert, bringt es natürlich einen Geschwindigkeitsvorteil nach dem ersten Lauf.

Dazu kommt, dass in Bild.tikz Befehle verwendet werden, die in deinem Beispiel nicht definiert sind und es daher beim LaTeX-Lauf für dieses Bild zu einer Fehlermeldung kommt.

In deinem Fall ist das große Bild in der Tat schlicht für pdflatex zu groß. Wenn du auf lualatex umsteigst, sollte es aber funktionieren. Bei mir geht

Code: Alles auswählen

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}
\usepgfplotslibrary{external}

\tikzexternalize

\begin{document}

\input{Bild.tikz}

\end{document}
jedenfalls, wenn ich das als test-externalize.tex speichere und dann lualatex -shell-escape test-externalize.tex (in einem Terminalfenster) aufrufe. Es dauert allerdings eine gefühlte Ewigkeit (ca. 21 Sekunden). Ob du in TeXstudio bereits LuaLaTeX aufgerufen hast, geht aus der Konfiguration nicht hervor. Ich denke aber nicht, weil es dann zu keinem Speicherproblem käme (außer dein Rechner verfügt nur über extrem wenig freien Speicher, was sehr unwahrscheinlich ist).

BTW: Das optionale Argument bei \tikzexternalize kannst du weglassen. Es setzt bei dir nur die erneut die Voreinstellung. Das Laden von tikz kannst du ebenfalls weglassen, weil das bereits von pgfplots erledigt wird.

hofgockel
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Mi 26. Jun 2019, 22:36

Beitrag von hofgockel »

Anonymous hat geschrieben:Externalize arbeitet so, dass es für jedes Bild einen externen LaTeX-Aufruf durchführt, um ein PDF für dieses einzelne Bild zu erzeugen und dann dieses fertige PDF einzubinden statt jedes Mal das Bild neu zu erzeugen. Für Speicherplatzprobleme bringt das nur etwas, wenn man mehrere Bilder auf einer Seite hat. Wenn schon ein einziges Bild nicht verarbeitet werden kann, wird das natürlich auch nicht funktionieren. Solange das einzelne Bild verarbeitet werden kann, aber einfach lange dauert, bringt es natürlich einen Geschwindigkeitsvorteil nach dem ersten Lauf.

Dazu kommt, dass in Bild.tikz Befehle verwendet werden, die in deinem Beispiel nicht definiert sind und es daher beim LaTeX-Lauf für dieses Bild zu einer Fehlermeldung kommt.

In deinem Fall ist das große Bild in der Tat schlicht für pdflatex zu groß. Wenn du auf lualatex umsteigst, sollte es aber funktionieren. Bei mir geht

Code: Alles auswählen

\documentclass{article}
\usepackage{amsmath}
\usepackage{pgfplots}

\pgfplotsset{compat=newest}
\usepgfplotslibrary{external}

\tikzexternalize

\begin{document}

\input{Bild.tikz}

\end{document}
jedenfalls, wenn ich das als test-externalize.tex speichere und dann lualatex -shell-escape test-externalize.tex (in einem Terminalfenster) aufrufe. Es dauert allerdings eine gefühlte Ewigkeit (ca. 21 Sekunden). Ob du in TeXstudio bereits LuaLaTeX aufgerufen hast, geht aus der Konfiguration nicht hervor. Ich denke aber nicht, weil es dann zu keinem Speicherproblem käme (außer dein Rechner verfügt nur über extrem wenig freien Speicher, was sehr unwahrscheinlich ist).

BTW: Das optionale Argument bei \tikzexternalize kannst du weglassen. Es setzt bei dir nur die erneut die Voreinstellung. Das Laden von tikz kannst du ebenfalls weglassen, weil das bereits von pgfplots erledigt wird.

Danke für die schnelle Antwort, hat mir sehr weitergeholfen.

Ich habe immer mit pdflatex compiliert. Wenn ich auf lualatex umstelle und dein Terminalbefehl in den Einstellungen eingebe, funktionierts ;)

Gruß

Antworten