Anzeige:
Ergebnis 1 bis 9 von 9

Thema: TeX capacity exceeded

  1. #1
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180

    TeX capacity exceeded

    Hallo,

    trotz intensiver Recherche und Googlens habe ich bisher keine Lösung für ein Problem. Ich erstelle ein Dokument mit LaTeX, in welchem Grafiken (JPG-Dateien) eingebunden werden sollen. Das Dokument umfasst bisher ca. 90 DIN A4 Seiten, und es sind bisher ca. 6 JPG-Dateien mit \includegraphics eingebunden. Die Einbindung einer weiteren JPG-Datei bringt TeX an seine Grenzen mit der Fehlermeldung:
    ! TeX capacity exceeded, sorry [main memory size=3500000].

    Ich benutze SuSE Linux 10.0 mit ALLEN bsherigen Patches (neuester Stand). In /etc/temxf/web2c/texmf.cnf habe ich den bisherigen Wert von "main_memory = 3500000" bereits auf 7500000 erhöht und die Datei zurückgeschrieben, trotzdem behauptet TeX nach wie vor, dass der verfügbare Arbeitsspeicher nur 3500000 Worte (zu je 32Bits?) beträgt.

    Meine Absicht ist es, ca. 80 JPG-Dateien (im Durchschnitt 130kB) in das mit LaTeX zu erzeugende Dokument (eine Chronik) aufzunehmen. Warum macht TeX/LaTeX bereits nach wenigen JPG-Dateien (< 10) schlapp?

    Ein Auszug aus der LOG-Datei:
    ! TeX capacity exceeded, sorry [main memory size=3500000].
    \copy \z@

    l.343 \include{43-Chroniken-bis-1996}

    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:
    12900 strings out of 94499
    173389 string characters out of 1172810
    3500000 words of memory out of 3500000
    15540 multiletter control sequences out of 10000+50000
    96105 words of font info for 165 fonts, out of 500000 for 2000
    591 hyphenation exceptions out of 1000
    39i,12n,47p,1593b,601s stack positions out of 1500i,500n,5000p,200000b,5000s
    PDF statistics:
    477 PDF objects out of 300000
    0 named destinations out of 131072
    20255 words of extra memory for PDF output out of 65536
    ! ==> Fatal error occurred, the output PDF file is not finished!

    Und mit welchem Wizard (Zauberer) erhöhe ich für TeX/LaTeX den verfügbaren Arbeitsspeicher, wenn schon die direkte Änderung in der Konfigurationsdatei nichts hilft? (siehe Hinweis im Auszug der Logdatei)

    Ich habe einen Ratgeber durchgearbeitet, in dem Empfehlungen für die Einbindung von Grafiken gegeben werden. Leider gibt er keine Hinweise zur Umgehung von Speicherplatzproblemen.

    Gruß
    Dieter

  2. #2
    Registrierter Benutzer Avatar von countbela666
    Registriert seit
    15.04.2005
    Ort
    Berlin
    Beiträge
    2.317
    Hallo Dieter,

    der von dir beschriebene Fehler tritt seeeehr häufig in Verbindung mit nicht-terminierenden rekursiven Befehlen auf. Bist du sicher, dass du nicht vielleicht einen eigenen Befehl falsch verwendet hast?

    Um auszuschließen, dass das Problem durch die große Anzahl an Bildern ausgelöst wird (was ich mir nur sehr schwer vorstellen kann) könntest du das Paket graphicx mal mit der Option "demo" laden. Wenn der Fehler dann immer noch auftritt, haben die Grafiken keine Schuld. Dann können wir weitersehen...

    Grüße,
    Marcel

    Listen to me children of the night, beyond the doors of darkness you will find
    a thousand worlds for you to see here, take my hand and follow me...

  3. #3
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Hallo Marcel,

    vielen Dank für den schnellen Hinweis. Ich habe die Option demo" eingebaut
    \usepackage[demo]{graphicx}

    Der Fehler mit ausgeschöpften Arbeitsspeicher tritt immer noch auf. Deinem Hinweis zufolge, hat der Fehler nicht seine Ursache in TeX/LaTeX mit zu vielen Bilddateien.

    Ich habe einen Makro geschrieben, mit dem ich die Bilder einbinde:
    %*** #1: Name of graphics file
    %*** #2: caption short text
    %*** #3: caption long text
    %*** #4: Label name (without prefix „fig:“)
    \newcommand{\dhBild}[4]{%
    \begin{center}
    \begin{figure}[htb]
    \includegraphics{#1}
    \caption[#2]{#3}
    \label{fig:#4}
    \end{figure}
    \end{center}
    }

    Ein konkreter Aufruf lautet z.B.
    \dhBild{./Bilddateien/Altdorf/Stadt/Laurentius-Kirche.jpg}{Die Laurentius-Kirche}{Die Laurentius-Kirche}{Laurentius-Kirche}

    Der selbst-definierte Befehl \dhBild könnte "schöner" aussehen, wenn ich das 2. Argument leer lassen könnte, was zur Folge haben müsste, dass der Kurztext identisch mit dem Langtext gesetzt würde.

    Zurück zum Problem:
    Einige der zu setzenden Bilder werden innerhalb einer \begin{multicols}{2}...\end{multicols} gesetzt, sofern sie schmal genug sind. Andere Bilder werden "einspaltig" gesetzt, d.h. zentriert über die Textbreite des DIN A4 Papiers (Hochformat).

    Die Bilder, die zum Abbruch führen, sind NACH einer \end{multicols} und vor der nächsten \begin{multicols}{2} Anweisung gesetzt.

    Um den Fehler einzugrenzen, habe ich auch versucht, zwei "schmale" Bilder AUSSERHALB einer \begin{multicols}{2}...\end{multicols} Umgebung nebeneinander zu setzen mit

    \begin{figure}[h]
    \begin{minipage}{0.48\textwidth}
    \begin{center}
    \includegraphics{./Bilddateien/Altdorf/Stadt/Laurentius-Kirche.jpg}
    \caption[Laurentius-Kirche in Altdorf]{Laurentius-Kirche in Altdorf}
    \label{Laurentius-Kirche}
    \end{center}
    \end{minipage}% This % is important. NO horizontal spacing between minipages
    \begin{minipage}{0.04\textwidth}
    \hfill % To ensure separation of captions
    \end{minipage}
    \begin{minipage}{0.48\textwidth}
    \begin{center}
    \includegraphics{./Bilddateien/Altdorf/Stadt/Kirche-in-Rasch.jpg}
    \caption[Kirche in Rasch]{Kirche in Rasch}
    \label{Kirche-Rasch}
    \end{center}
    \end{minipage}% This % is important. NO horizontal spacing between minipages
    \end{figure}

    D.h., auch wenn ich meinen \dhBild-Befehl NICHT benutze, erhalte ich den o.g. Fehler.

  4. #4
    Registrierter Benutzer Avatar von localghost
    Registriert seit
    01.11.2006
    Ort
    Braunschweig
    Beiträge
    3.413

    Arrow AW: TeX capacity exceeded

    Du solltest im optionalen Argument für die figure-Umgebung ein "!" einbauen, um die strengen Bedingungen für die Platzierung von Gleitobjekten zu lockern.
    Code:
    \begin{figure}[!htb]
      …
    \end{figure}
    Eine Garantie für den Erfolg ist diese Maßnahme allerdings nicht.
    TeX und LaTeX, Fragen und Antworten – TeXwelt

    ¹ Es tut mir Leid. Meine Antworten sind begrenzt. Sie müssen die richtigen Fragen stellen.
    ² System: openSUSE 13.1 (Linux 3.11.10), TeX Live 2013, TeXworks 0.5 (r1351)

  5. #5
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    Habe das optionale Argument von \begin{figure} auf [!htp] erweitert.

    Der Fehler tritt erneut auf, allerdings nicht beim Einbinden einer JPG-Datei, sondern irgendwo danach im normalen Text.


    Warum behält TeX/LaTeX so viel Speicher, und gibt ihn nicht wieder frei (so scheint mir das Verhalten zu sein)?

    Und warum sind die Änderungen in der Konfigurationsdatei /etc/texmf/web2c/texmf.cnf wirkungslos? Nach wie vor behauptet TeX, dass er das Limit von 3500000 Worten erreicht habe, auch wenn der Wert in der Datei bereits hochgesetzt wurde?

  6. #6
    Registrierter Benutzer Avatar von bischi
    Registriert seit
    10.04.2003
    Beiträge
    4.828
    Zitat Zitat von DieterH Beitrag anzeigen
    Der Fehler tritt erneut auf, allerdings nicht beim Einbinden einer JPG-Datei, sondern irgendwo danach im normalen Text.
    Wie bereits gesagt - dieser Fehler tritt im Normalfall nur bei Rekursion auf; Will heissen: Du hast irgendwo eine Endlosschleife drin - beispielsweise ein Befehl, der sich selbst aufruft,...

    MfG Bischi

    "There is an art, it says, or rather, a knack to flying. The knack lies in learning how to throw yourself at the ground and miss it" The hitchhiker's guide to the galaxy by Douglas Adams

    --> l2picfaq.pdf <-- www.n.ethz.ch/~dominikb/index.html LaTeX-Tutorial, LaTeX-Links, Java-Links,...

  7. #7
    Registrierter Benutzer Avatar von rais
    Registriert seit
    18.07.2005
    Beiträge
    5.862
    Moin moin,
    Zitat Zitat von DieterH Beitrag anzeigen
    Ich habe einen Makro geschrieben, mit dem ich die Bilder einbinde:
    %*** #1: Name of graphics file
    %*** #2: caption short text
    %*** #3: caption long text
    %*** #4: Label name (without prefix „fig:“)
    \newcommand{\dhBild}[4]{%
    \begin{center}
    \begin{figure}[htb]
    \includegraphics{#1}
    \caption[#2]{#3}
    \label{fig:#4}
    \end{figure}
    \end{center}
    }
    so aus dem Bauch raus würd' ich sagen, Du solltest die figure-Umgebung _nicht_ innerhalb einer anderen Umgebung aufrufen - wie soll die Abbildung dann noch gleiten können?
    Code:
    %ich hab mal die Reihenfolge geändert, damit man dem \newcommand auch einen
    %optionalen Parameter verkaufen kann;-)
    \newcommand{\dhBild}[4][\empty]{%
    %\begin{center}
    \begin{figure}[htb]
    \centering %oder wolltest Du den zusätzlichen Abstand durch die center-Umgebung?
    \includegraphics{#4}
    \ifx #1 \empty \caption{#2} \else \caption[#1]{#2} \fi
    \label{fig:#3}
    \end{figure}
    %\end{center}
    }%\dhBild[short caption]{caption}{label}{filename}
    wär' so ne Idee... auch für
    Zitat Zitat von DieterH Beitrag anzeigen
    Der selbst-definierte Befehl \dhBild könnte "schöner" aussehen, wenn ich das 2. Argument leer lassen könnte, was zur Folge haben müsste, dass der Kurztext identisch mit dem Langtext gesetzt würde.
    Afaik akzeptiert \(re)newcommand nur einen als optional deklarierten Parameter -- und das müsste dann der erste Parameter sein, deshalb die hier geänderte Reihenfolge der Parameter. Ein Aufruf wäre entsprechend
    \dhBild[Kurzbezeichnung]{Langbezeichnung}{test}{Bilddatei}
    oder eben
    \dhBild{Bezeichnung}{test}{Bilddatei}
    -- so es denn funzt.

    Alternativ (wenn Du bei Deiner ursprünglichen Reihenfolge bleiben willst), kannst Du Dir mit Hilfe des ifthen-Pakets auch so etwas in der Art
    \ifthenelse{\equal{#2x}{x}}{\caption{#3}}{\caption[#2]{#3}}
    basteln, dann könntest Du den zweiten Parameter auch leer lassen (mußt die Klammer aber wohl noch angeben).
    Zitat Zitat von DieterH Beitrag anzeigen
    Zurück zum Problem:
    Einige der zu setzenden Bilder werden innerhalb einer \begin{multicols}{2}...\end{multicols} gesetzt, sofern sie schmal genug sind. Andere Bilder werden "einspaltig" gesetzt, d.h. zentriert über die Textbreite des DIN A4 Papiers (Hochformat).
    Und das funktioniert? (vgl. z.B. mit diesem Thread)
    Also vllt. besser gleich das caption-Paket laden, auf die Gleitumgebung figure verzichten und statt \caption dann \captionof{figure}{..}

    MfG,
    Rainer
    There's nothing a good whack with a hammer won't fix!

  8. #8
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    @bischi

    vielen Dank für Deinen klaren Hinweis. Es hat mir sehr viel Zeit gekostet, zu klären, ob sich ein Befehl rekursiv aufruft. War nicht der Fall.

    Ich habe dann schrittweise mein großes Dokument (ist bereits in "\include"-Teildokumente strukturiert) auskommentiert, bis ich herausgefunden habe, dass der Speicherfehler auftritt, wenn eine Tabelle über eine DIN A4 Seite hinausgeht. Klar, es bracuht das Paket "longtable".

    Ich habe DANACH in Helmut Kopka's "Einführung in LaTeX" (Band 1) gelesen, und bin zufällig auf das Kapitel gestossen, das die Fehlermeldungen erklärt. Dort sind die möglichen Ursachen dieses Fehlers erklärt. :-)

    Wieder um eine Erfahrung reicher ...

    Danke
    Gruß
    Dieter

  9. #9
    Registrierter Benutzer
    Registriert seit
    20.03.2006
    Beiträge
    180
    @Rainer,

    danke für Deine Empfehlungen (opt. Parameter, Paket "caption", usw.)
    Ich werde es morgen früh ausprobieren

    Danke
    Gruß
    Dieter

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •