Duplikat von pgfplot TeX capacity exceeded


Ich habe in meinem Dokument unheimlich viele png, TiKz und pgfplots Zeichnungen. Ich habe (noch) einen groupplot erstellt, der 5 Diagramme enthält, wenn ich nur vier einkommentiere läuft es durch. Sobald ich den fünften einkommentiere, kommt die Meldung:! TeX capacity exceeded, sorry [main memory size=3000000].. Dabei ist es egal, welcher auskommentiert ist. Jeder Plot enthält 1024 Datenpunkte. Meine Arbeit hat mehrere Kapitel und alleine läuft das Kapitel auch durch. Alles in Allem deutet das für mich darauf hin, dass es sich nicht um einen Syntaxfehler handelt, sondern der Input-Stack tatsächlich überschritten ist. Nur kann ich mir das nicht so recht vorstellen, schließlich werden ganze Enzyklopädien geTeXt, sodass TeX mit meinen popeligen paar Seiten eigentlich fertig werden müsste, auch wenn viele Bilder drin sind.

Habt ihr Ideen? Mit externalize Paket bin ich nicht so recht zufrieden gewesen, vielleicht habt ihr ja andere Ideen. Aus verständlichen Gründen hab ich kein Minimalbeispiel gepostet.

gefragt 08 Sep '14, 11:38

lorbj's gravatar image

lorbj
1392713
Akzeptiert-Rate: 33%

geschlossen 03 Mär '17, 13:07

saputello's gravatar image

saputello
11.1k174365

Wie die Fehlermeldung sagt, wurde main memory überschritten. Input stack size ist bei TeX etwas ganz anderes und hat damit nichts zu tun! Ich habe deshalb den Titel der Frage angepasst.

(08 Sep '14, 18:42) gast3

Die Frage wurde aus folgenden Grund "Duplikat einer anderen Frage" geschlossen saputello 03 Mär '17, 13:07


Bei aufwändigen Plots erhielt ich diese Fehlermeldung auch. Ich habe dann mit LuaTeX übersetzt, wo solche komplexen Plots dann problemlos durchgelaufen sind, LuaTeX' Speicherverwaltung ist da besser.

Wenn es keinen ausschlaggebenden Grund gibt, dass Du nur pdfLaTeX verwenden kannst, wäre das eine Lösung. Wenn es jedoch bei pdfLaTeX bleiben muss, kannst Du LuaTeX rein für die Plots einsetzen und die ausgelagerten Plots in Dein Dokument einbinden. Ist nicht sehr komfortabel, für die Plots ein separates Dokument zu pflegen, doch es wäre zumindest eine Lösung.

Permanenter link

beantwortet 08 Sep '14, 11:57

stefan's gravatar image

stefan ♦♦
18.3k163148
Akzeptiert-Rate: 50%

Ok, danke für den Tipp. Jetzt läuft LuaTeX seit 5 min durch. Also offenbar doch eher ein Fehler im Syntax. Ich Poste mal den Code der Zeichnung und hab die Daten verlinkt: profile_xgradient.

Open in writeLaTeX
\begin{tikzpicture}
\begin{groupplot}[
    group style={
        group name=my plots,
        group size=1 by 5,
        xlabels at=edge bottom, %nur untere Achsenbeschriftung
        xticklabels at=edge bottom, %nur untere Achsenticks
        vertical sep=0pt, %Platz zwischen den Diagrammen
    },
      ymin = -30, %Minimum y-Achse
      ymax = 30,    %Maximum y-Achse
      %ytick = {0.001,0.01,0.1,1}, %Anzahl Zahlen y-Achse         
      xmin = 3,      
      xmax = 8,
      xlabel={Position [\SI{}{\micro\meter}]},
      width=\textwidth,
      height=0.2\textheight,
      %ymode=log,
      no markers, % keine Punkte
      %legend pos = north west, %Legende oben links
      %legend style={draw=none},%Legende ohne Rahmen
]  
\nextgroupplot
\addplot [color=black, smooth] table [y index=1, smooth] {profile_xgradient.csv};
\coordinate (left top) at (rel axis cs:0,1);
\addlegendentry{\scriptsize{1}};
\nextgroupplot
\addplot[color=green, smooth] table [y index=2, smooth] {profile_xgradient.csv};
\addlegendentry{\scriptsize{2}};
\nextgroupplot
\addplot[color=blue, smooth] table [y index=3, smooth] {profile_xgradient.csv};
\addlegendentry{\scriptsize{3}};
\nextgroupplot
\addplot[color=red!50!blue, smooth] table [y index=4, smooth] {profile_xgradient.csv};
\addlegendentry{\scriptsize{4}};
\nextgroupplot
\addplot[color=black!50!green, smooth] table [y index=5, smooth] {profile_xgradient.csv};
\addlegendentry{\scriptsize{5}};
\coordinate (left bot) at (rel axis cs:0,0);
\end{groupplot}
\path (left top-|current bounding box.west)-- 
  node[anchor=south,rotate=90] {Gradientenwinkel [\SI{}{\degree}]}
  (left bot-|current bounding box.west);
\end{tikzpicture}
Permanenter link

beantwortet 08 Sep '14, 12:20

lorbj's gravatar image

lorbj
1392713
Akzeptiert-Rate: 33%

bearbeitet 08 Sep '14, 13:38

Ach so, schaut euch auch mal bitte das inputfile an. Der Zeilentrenner ist "\r" "\n", vielleicht kommt TeX auch damit nicht klar.

(08 Sep '14, 12:22) lorbj
1

@lorbj Ich habe die Daten auf TeXwelt hochgeladen. (Diese externe File-Hosting-Seite öffnet unerwünschte Popup-Fenster mit unangenehmer Werbung.) Nochwas: bitte editiere die Frage zum Aktualisieren und Ergänzen von Informationen, statt eine Antwort zu posten (welche die Frage ja nicht beantwortet). Antworten sind hier (nach Stimmen) sortierte Lösungen, für optimale Archiv-Funktion. Ungewohnt, doch innovativ gegenüber Diskussionsforen und sehr effizient zur Nachnutzung der Lösungen.

(08 Sep '14, 12:38) stefan ♦♦

Enschuldige, nachdem ich das hier geschrieben habe, habe ich den Hinweis gelesen. Wie kann man Dateien hier direkt hochladen?

(08 Sep '14, 12:42) lorbj

@lorbj Uploaden kann man nur Grafiken, und Texte (tex, log o.a.) als Codeblock. Hab ich bisher nicht ausgedehnt, weil fremde Spammer hier einfallen könnten oder jemand urheberrechtlich geschützte Sachen uploaden könnte, es ist auch ganz selten nötig. Probleme lassen sich fast immer kurz darstellen, mit mehr oder weniger Mühe. Hier ist ein Fehler offenbar eine fehlende öffnende geschweifte Klammer in letzten groupplot.

(08 Sep '14, 13:21) stefan ♦♦

Oh, entschuldige, die Klammer ist da. Die ist mit beim Entfernen der Pfadangabe wohl abhanden gekommen. Es wäre auch zu schön gewesen... ;-)

(08 Sep '14, 13:37) lorbj

@lorbj Der Codeausschnitt läuft bei mir auch mit pdfLaTeX fehlerfrei durch. Für mich ist es daher kein Syntaxproblem. Ich habe noch siunitx und die groupplots library geladen, damit es lauffähig wird. In diesem Sinne wäre es schon gut, Minimalbeispiele zu posten, eher jeder Leser, der testen will, erstmal fehlendes herausfinden und einbauen muss. Vllt. update zu einem Minimalbeispiel, das den Fehler auch produziert, das kannst Du in die Frage oben rein-editieren, die Nicht-Antwort hier kann dann weg.

(08 Sep '14, 13:57) stefan ♦♦

Ich versteh schon, dass du gerne ein Minimalbeispiel hättest. Das Problem ist ja aber genau, dass es einzeln kompiliert durchläuft, auch bei mir. Nur sobald ich ein weiteres Kapitel einkommentiere kommt der Fehler (das andere Kapitel läuft dabei alleine auch und wenn ich die Grafik auskommentiere läuft es auch). Ich kann den Fehler in einem Minibeispiel nicht reproduzieren. Ist es realistisch, dass LateX mit so einem kleinen Dokument mit mit 50 Seiten ein Problem hat!? Und Lualatex beleibt einfach am Anfang ohne Rückmeldung hängen.

(08 Sep '14, 14:16) lorbj

Mit pdfLaTeX hatte ich schon mit einem einzigen Plot (mit vielen Punkten) Speicher-Probleme, das ist also realistisch. LuaTeX half da. Das Hängenbleiben mit LuaTeX kann eine andere Ursache haben. Vllt. grenze das als ein Minimalbeispiel ein und poste als separate Frage, um diesen Teil abzuklären.

(08 Sep '14, 14:26) stefan ♦♦

Ich denke da hast du Recht. Nur noch eine Nachfrage: Kann man LaTeX Code 1:1 nach Lua übernehmen? Ich bin mit meiner Arbeit nämlich fast durch und es wäre Irrsinn, wenn man das ganze Dokument nochmal an LuaTeX anpassen müsste. Da wäre die Variante mit dem auslagern der Plots nämlich einfacher.

(08 Sep '14, 14:35) lorbj

@lorbj Du brauchst nicht mal Lua. LuaTeX ist nur die neue Engine darunter. LaTeX-Dokumente funktionieren oft sofort mit LuaLaTeX ohne jegliche Änderung, wenn utf8-Eingabecodierung verwendet wird, bei LuaTeX ist das Standard (nicht applemac oder latin1 z.B.) - die inputenc-Zeile solltest Du dann weglassen. Ansonsten poste evtl, eine separate Frage, was beim Umstieg von pdfLaTeX auf LuaLaTeX zu beachten ist, da können Tipps zusammenkommen. Wäre generell hilfreich und informativ.

(08 Sep '14, 15:15) stefan ♦♦
Ergebnis 5 von 10 show 5 more comments

Nach einiger Sucherei habe ich beschlossen doch nochmal der external-libary eine Chance zu geben, was jetzt auch funktioniert.

Folgende drei Zeilen haben das Problem beseitigt:

Open in writeLaTeX
\usepgfplotslibrary{external}
\tikzexternalize
\tikzsetexternalprefix{external_figs/}

Wenn ich alles richtig verstanden habe, werden dabei in einem ersten Lauf alle Bilder in das Verzeichnis external_figs compiliert. Außerdem wir vorher eine Prüfsumme berechnet, mit der sichergestellt wird, dass nur veränderte Dateien neu Compiliert werden. Alles in allem ganz brauchbar.

Vielen Dank nochmal Stefan, aber ich wollte nicht meine ganze Präambel auseinandernehmen, ich denke, dass hätte ein riesiges Chaos gegeben.

Permanenter link

beantwortet 08 Sep '14, 16:54

lorbj's gravatar image

lorbj
1392713
Akzeptiert-Rate: 33%

bearbeitet 08 Sep '14, 16:54

Wir könnten damit den zweiten Post von mir löschen. :-)

(08 Sep '14, 16:55) lorbj

@lorbj Statt Deine andere Antwort, die keine ist, zu löschen, solltest Du die dort enthaltene Präzisierung der Frage in die Frage einfügen. Siehe auch den Kommentar @stefan zu jener Nichtantwort.

(08 Sep '14, 18:41) gast3

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×730
×298
×128

gestellte Frage: 08 Sep '14, 11:38

Frage wurde gesehen: 28,870 Mal

zuletzt geändert: 03 Mär '17, 13:07