Habe das "Tex capacity exceeded"-Problem (log-Datei sagt: "3000001
words of memory out of 3000000"). Es geht um eine Xelatex-Datei, die
per \include{...} 66 Dateien miteinschließt. Ich verwende MikTex 2.7.
1. Ich denke, daß es sich nicht um ein "runaway argument" handelt
(rekursive Schleife o.ä.). Grund: Die Fehlermeldung (Tex capacity
exceeded...) kommt zwischen Dokument 62 und 66. Wenn ich vor Dokument
62 einen Teil der normalerweise einzuschließenden Dokumente
auskommentiere (allein das erste Dokument reicht schon!), bekomme ich
keine Fehlermeldung.
2. Ich habe schon probiert, das main_memory von latex, pdflatex, xetex
und xelatex zu erhöhen (ich bin mittlerweile bei
main_memory=90000000). Dazu habe ich in einem Eingabefenster:
initexmf --edit-config-file latex
getippt, in der aufgehenden ini-Datei main_memory=30000000 (bzw.
60000000 usw.) geschrieben, die ini-Datei gespeichert und geschlossen.
Dasselbe mit pdflatex und xelatex (und selbst xetex, weiß nicht, ob
das was bringt). Danach habe ich sowohl
initexmf -dump=latex (auch für pdflatex, xelatex und xetex)
probiert als auch über die MikTeX-Settings einen Update der Formate
ausgeführt. Schien alles ohne Probleme durchzulaufen, aber geändert
hat es an meinem TeX-Capacity-Problem nichts.
Ich weiß auch nicht, ob ich nicht grundsätzlich auf dem Holzweg bin.
Habe bisher ausprobiert, was ich in FAQs u.ä. gefunden habe. Jetzt
weiß ich nicht mehr weiter.
Für Eure Hilfe wäre ich sehr dankbar. (Die gewählten Schriften sind
nur zum Ausprobieren.)
Hier das (nicht ganz so minimale) Minimalbeispiel:
-----------------------------------------------------
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[twocolumn,a4paper,10pt]{scrbook}
\usepackage{xltxtra,fontspec}
\usepackage{polyglossia}
\setmainlanguage[spelling=old]{german}
\setotherlanguage[variant=ancient]{greek}
\setotherlanguage{hebrew}
\defaultfontfeatures{Scale=MatchLowercase}
\newfontfamily{\heb}[Script=Hebrew]{SBL Hebrew}
\newfontfamily{\gre}{SBL Greek}
\setmonofont[Scale=0.90,Mapping=tex-text]{Courier New}
\setmainfont[Mapping=tex-text]{Charis SIL}
\setsansfont[Mapping=tex-text]{Trebuchet MS}
\setcounter{secnumdepth}{-1}
\newcommand{\bv}[1]{{}$^{#1}$}
\usepackage{float}
\usepackage[para*]{manyfoot}
%%%Footnote Level A = textual criticism
\newfootnote[para]{A}
\newcounter{footnoteA}
\newcommand{\footnoteA}{%
\stepcounter{footnoteA}%
\Footnotemark\thefootnoteA \FootnotetextA\thefootnoteA}
\renewcommand{\thefootnoteA}{\arabic{footnoteA}}
%%%Footnote Level B = Other explanatory remarks
\newfootnote[para]{B}
\newcounter{footnoteB}
\newcommand{\footnoteB}{%
\stepcounter{footnoteB}%
\Footnotemark\thefootnoteB \FootnotetextB\thefootnoteB}
\renewcommand{\thefootnoteB}{\alph{footnoteB}}
%\includeonly{books/unicoded/62_1jo_utf8}
\begin{document}
\include{books/unicoded/01_gen_utf8}
\include{books/unicoded/02_exo_utf8}
% Dokumente 03 bis 59 habe ich für das Minimalbeispiel rausgeschnitten
\include{books/unicoded/60_1pe_utf8}
\include{books/unicoded/61_2pe_utf8}
\include{books/unicoded/62_1jo_utf8}
\include{books/unicoded/63_2jo_utf8}
\include{books/unicoded/64_3jo_utf8}
\include{books/unicoded/65_jud_utf8}
\include{books/unicoded/66_rev_utf8}
\end{document}
-----------------------------------------------------
Hier noch das Ende der log-Datei:
--------------------------------------------------
(./books/unicoded/62_1jo_utf8.tex [1093
]
Runaway argument?
{\@ensure@maindir {\protect \@@ensure@maindir {\protect
\@@ensure@maindir \ETC.
! TeX capacity exceeded, sorry [main memory size=3000000].
<argument> ...}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}}}}}}}}}}}}
l.11
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:
7255 strings out of 494708
125965 string characters out of 1164639
3000001 words of memory out of 3000000
10077 multiletter control sequences out of 10000+50000
3856 words of font info for 41 fonts, out of 3000000 for 5000
669 hyphenation exceptions out of 8191
1173i,7n,1162p,14118b,2483s stack positions out of 5000i,500n,10000p,
200000b,50000s
Output written on nlb.pdf (1093 pages).
--------------------------------------------------
> Hallo!
>
> Habe das "Tex capacity exceeded"-Problem (log-Datei sagt: "3000001
> words of memory out of 3000000"). Es geht um eine Xelatex-Datei, die
> per \include{...} 66 Dateien miteinschlie�t. Ich verwende MikTex 2.7.
>
> 1. Ich denke, da� es sich nicht um ein "runaway argument" handelt
....
> ]
> Runaway argument?
> {\@ensure@maindir {\protect \@@ensure@maindir {\protect
> \@@ensure@maindir \ETC.
> ! TeX capacity exceeded, sorry [main memory size=3000000].
> <argument> ...}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
> }}}}}}}}}}}}
> l.11
Also f�r mich sieht das sehr nach einem Runaway Argument aus.
--
Ulrike Fischer
Kann ich verstehen. Was ich dann aber nicht verstehe, ist, wieso das
Problem nur auftritt, wenn ich alle 66 Dokumente miteinschließe. D.h.
das Problem tritt meist bei Dokument 66 auf, aber nur wenn alle
anderen (1-65) mitkompiliert werden. Kompiliere ich nur Dokumente 2
bis 66, tritt das Problem nicht auf. Auch bei, sagen wir, 40 bis 66
tritt es nicht auf. Bei 1 bis 65 auch nicht. Nur wenn ich alle
miteinschließe. Irgendeine Idee?
>>> 1. Ich denke, da� es sich nicht um ein "runaway argument" handelt
>> ....
>>> Runaway argument?
>>
>> Also f�r mich sieht das sehr nach einem Runaway Argument aus.
>
> Kann ich verstehen. Was ich dann aber nicht verstehe, ist, wieso das
> Problem nur auftritt, wenn ich alle 66 Dokumente miteinschlie�e. D.h.
> das Problem tritt meist bei Dokument 66 auf, aber nur wenn alle
> anderen (1-65) mitkompiliert werden. Kompiliere ich nur Dokumente 2
> bis 66, tritt das Problem nicht auf. Auch bei, sagen wir, 40 bis 66
> tritt es nicht auf. Bei 1 bis 65 auch nicht. Nur wenn ich alle
> miteinschlie�e. Irgendeine Idee?
Naja, ich w�rde zuerst einmal versuchen rauszufinden, wo dieses
\@ensure@maindir herkommt, das da explodiert. Deine Pakete
definieren es auf jeden nicht.
--
Ulrike Fischer
Offensichtlich war dein Versuch, main_memory zu erhöhen, nicht
erfolgreich, denn
die aktuelle Obergrenze liegt immer noch beim Defaultwert 3000000. In
der Fehlermeldung müsste ja jetzt 90000000 stehen.
Kann es sein, dass du zwei parallele MiKTeX-Installationen auf deinem
Rechner hast, sodass initexmf auf der Kommandozeile zwar die eine
Installation konfiguriert, von deinem LaTeX-Editor aber die andere zum
Bearbeiten verwendet wird?
Alexander
>> Kann ich verstehen. Was ich dann aber nicht verstehe, ist, wieso das
>> Problem nur auftritt, wenn ich alle 66 Dokumente miteinschlie�e. D.h.
>> das Problem tritt meist bei Dokument 66 auf, aber nur wenn alle
>> anderen (1-65) mitkompiliert werden. Kompiliere ich nur Dokumente 2
>> bis 66, tritt das Problem nicht auf. Auch bei, sagen wir, 40 bis 66
>> tritt es nicht auf. Bei 1 bis 65 auch nicht. Nur wenn ich alle
>> miteinschlie�e. Irgendeine Idee?
>
> Naja, ich w�rde zuerst einmal versuchen rauszufinden, wo dieses
> \@ensure@maindir herkommt, das da explodiert. Deine Pakete
> definieren es auf jeden nicht.
Also \@ensure@maindir wird von Polyglossia definiert (aber nur wenn
man die hebraische Sprache aktiviert, die hatte ich anfangs zusammen
mit den ganzen Schriften rausgenommen) und hat etwas mit der
Schreibrichtung zu tun.
Schachtelst du irgendwie Sprachwechsel bzw. Richtungswechsel?
--
Ulrike Fischer
Erst mal vielen Dank für Deine Hilfe!
Ich bin momentan nicht zu Hause, drum kann ich jetzt nicht weiter
nachsehen und ausprobieren.
Vielleicht muß ich es dann halt ohne Polyglossia machen. Ich wollte
nur eben in bestimmten Fußnoten und Anhängen Hebräisch verwenden. Ich
kann auch mal versuchen rauszufinden, ob das Problem bei den
Polyglossia-Leuten bekannt ist.
Ich kuck es mir heute abend daheim näher an. Ich könnte auch mal einen
Auszug aus einem der 66 Dokumente in einen Beitrag hier kopieren. Ein
kleiner Auszug reicht, da die Dokumente eigentich nur ganz einfachen
Text beinhalten, allerdings momentan mit sehr langen Absätzen, da die
Dokumente noch nicht nach Absätzen formatiert sind.
Es handelt sich bei den Dokumenten um die 66 Bücher der Bibel
(deswegen 66 Dokumente). Die Einteilung ist ganz einfach: Jedes
Kapitel der Bibel (zwischen 1 und ca. 50 pro Bibelbuch/Dokument)
beginnt mit einem section-Befehl (z.B. \section{Kapitel~1}), jeder
Vers mit einem bv-Befehl für die Versnummer (selbst definiert, s.o.:
\newcommand{\bv}[1]{{}$^{#1}$} ), z.B. \bv(1) für Vers 1, \bv{2} usw.
Bei manchen Versen gibt es auch das Format \bv{1}[31:9] oder so was;
die Angaben in den eckigen Klammern geben alternative Verszählungen
an.
Das ist es auch schon.
Ich sollte vielleicht noch sagen, daß, da das Dokument noch
unformatiert ist (außer Kapitel- und Versangaben) und zweispaltig
gesetzt ist, es unheimlich viele Bad Boxes, Underfull- und Overfull-
Warnungen gibt. Ich weiß nicht, ob die sich zu einem Tex-Capacity-
Error hochschaukeln können.
Ich werde auf jeden Fall heute abend mal testen, ob sich was ändert,
wenn ich das Ganze mit LaTeX (nicht XeLaTeX) kompiliere (nach leichtem
Anpassen der Präambel) oder wenn ich die letzten paar Dokumente (wo
der Fehler auftritt) durch andere ersetze.
Nochmal vielen Dank! Mehr heute abend!
Hah! Das ist eine gute Idee, daß ich da mal nachkucke. Ich hatte das
mal (MikTeX 2.6 und 2.7). Bin mir aber nicht sicher, ob es jetzt noch
so ist. Ich kuck heute abend mal nach, wenn ich wieder daheim bin.
Allerdings bin ich mir sicher, daß ich MikTeX 2.7 und TexLive (nicht
älter als drei, vier Monate) beide installiert habe. Ich wollte
ConTeXt mal ausprobieren, bin aber nicht dazu gekommen (ConTeXt
funktioniert bei MikTeX 2.7, glaube ich, nicht). Würde das
(Installation von MikTeX 2.7 und TexLive) auch zu dem Problem führen
können, das Du im Sinn hast?
Da fällt mir noch ein: ich kompiliere XeLaTeX in einem Eingabefenster
(ja, ich weiß, bitte nicht unken), weil ich die Einstellungen
innerhalb von TeXMaker zwar kapiert zu haben geglaubt hatte, es aber
trotzdem nicht funktionierte. :)
Da ich UTF-8-Encoding verwende und die Auswahl an UTF-8-fähigen TeX-
Editoren klein ist, bin ich erst mal bei TeXMaker geblieben.
Wie kriege ich heraus, welchen XeLaTeX-Kompilierer ich verwende (z.B.
in einem Eingabefenster), falls mehr als eine XeLaTeX-fähige
Installation auf dem System vorhanden ist?
> Wie kriege ich heraus, welchen XeLaTeX-Kompilierer ich verwende (z.B.
> in einem Eingabefenster), falls mehr als eine XeLaTeX-f�hige
> Installation auf dem System vorhanden ist?
Das steht am Anfang der log-Datei.
--
Ulrike Fischer
>> Also \@ensure@maindir wird von Polyglossia definiert (aber nur wenn
>> man die hebraische Sprache aktiviert, die hatte ich anfangs zusammen
>> mit den ganzen Schriften rausgenommen) und hat etwas mit der
>> Schreibrichtung zu tun.
> Ich bin momentan nicht zu Hause, drum kann ich jetzt nicht weiter
> nachsehen und ausprobieren.
> Vielleicht mu� ich es dann halt ohne Polyglossia machen.
Unsinn.
> Ich wollte
> nur eben in bestimmten Fu�noten und Anh�ngen Hebr�isch verwenden. Ich
> kann auch mal versuchen rauszufinden, ob das Problem bei den
> Polyglossia-Leuten bekannt ist.
Da ist mir nichts bekannt.
>
> Ich kuck es mir heute abend daheim n�her an.
Du kannst mal \tracingstats=2 benutzen. Dann kannst du sehen, ob
main_memory sich langsam hochschaukelt und du k�nntest
\errorcontextlines=20 benutzen, damit man mehr Kontext von der
Fehlermeldung sieht.
Es kann nat�rlich sein, dass du durch Hochsetzen von main memory das
Problem l�sen kannst, aber ich finde die vielen Klammern in deiner
Fehlermeldung sehr suspekt und denke, es gibt ein wirkliches
Problem.
Soweit ich sehe wird \@@ensure@maindir in den \mark-Befehlen f�r die
Kopfzeilen benutzt, was passiert wenn du [localmarks=off] bei
polyglossia benutzt?
--
Ulrike Fischer
Danke für die Tips. Ich probier das dann zu Hause mal alles aus.
tracingstats=2, errorcontextlines=20, localmarks=off. Ich versuche
auch mal, die letzten paar Dateien durch garantiert harmlose zu
ersetzen, um zu testen, ob da irgendwo der Wurm drin ist.
Ich habe schon nach fehlerhafter Klammerung gekuckt, aber noch nichts
gefunden. Die log-Datei sagt ja:
"<argument> ...}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
}}}}}}}}}}}} "
Heißt das, daß es an fehlerhafter Klammerung von geschwungenen
Klammern liegen muß oder könnte es auch etwas anderes sein, z.B. ein
reserviertes Zeichen (&, $ usw.)?
Bis später!
> @ Ulrike
>
> Danke f�r die Tips. Ich probier das dann zu Hause mal alles aus.
> tracingstats=2, errorcontextlines=20, localmarks=off. Ich versuche
> auch mal, die letzten paar Dateien durch garantiert harmlose zu
> ersetzen, um zu testen, ob da irgendwo der Wurm drin ist.
>
> Ich habe schon nach fehlerhafter Klammerung gekuckt, aber noch nichts
> gefunden. Die log-Datei sagt ja:
>
> "<argument> ...}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}
> }}}}}}}}}}}} "
>
> Hei�t das, da� es an fehlerhafter Klammerung von geschwungenen
> Klammern liegen mu�
Das kann schon sein. Aber zuerst einmal sehen die vielen Klammern so
aus, als w�rde ein Befehl rekursiv definiert und w�rde dabei immer
l�nger. Z.B. in diesem Dokument kannst du sehen, dass \A immer mehr
x enth�lt und immer mehr Klammern bekommt:
\documentclass{article}
\begin{document}
\def\A{B}
\edef\A{{x\A}}
\show\A
\edef\A{{x\A}}
\show\A
\edef\A{{x\A}}
\show\A
\end{document}
Manchmal ist so eine wachsende Definition gewollt, aber es kann sich
auch einfach um einen Programmierfehler handeln.
--
Ulrike Fischer
Jetzt geht es auf jeden Fall wieder (strahl).
Erklärung:
Ich hatte nur 1 Version von MikTeX installiert (MikTeX 2.7), aber auch
gleichzeitig TeXLive, und das war das Problem. Vielleicht wäre es auch
mit weniger drastischen Mitteln gegangen, aber ich habe einfach
TeXLive deinstalliert, und -- voilà: es ging wieder! Ich weiß aber
nicht, ob es an einem Konflikt zwischen TeXLive und MikTeX gelegen hat
oder an TeXLive oder daran, daß ich das Main Memory von MikTeX
anscheinend ja erhöht (aber weiter mit TeXLive kompiliert) hatte
(s.o.).
Nur eine Sache war komisch. Vor der Deinstallation von TeXLive, bekam
ich sonst keine Fehlermeldungen oder Klagen vom Kompilierer.
Allerdings danach war das bidi-Paket angeblich nicht verfügbar, auch
nach einem Format Update und einem Refresh FNDB bei MikTeX nicht. Ich
mußte es explizit angeben:
\usepackage{bidi}
\usepackage{xltxtra,fontspec}
Dann ging's. Dann habe ich mit MikTeXs Paket-Manager alle Pakete
upgedated. Danach ging es ohne \usepackage{bidi} immer noch nicht.
Komischerweise, jetzt (nach zwei-, dreimaligem Kompilieren mit
\usepackage{bidi}) geht es auch wieder ohne diese Angabe. Check ich
nich.
Ich bin auf jeden Fall froh, daß es wieder funktioniert.
Danke für all die freundliche Hilfe!
P.S. Gerade jetzt habe ich entdeckt, daß es MikTeX 2.8 gibt. Hätte mir
das ganze Upgedate von MikTeX 2.7 vielleicht auch sparen können und
gleich MikTeX 2.8 installieren sollen. :)
Ich habe gerade MikTeX 2.8 installiert. (Der Update Wizard im Package
Manager geht nicht. Ist aber ein anderes Problem.) Dasselbe TeX-
Capacity-Problem trat auf. Dann habe ich das Main Memory von LaTeX,
PdfLaTeX und XeLaTeX von 3.000.000 auf 6.000.000 erhöht. Jetzt geht es
wieder. Lag also anscheinend wirklich daran.
ich stehe hier vor genau dem selben "Tex capacity exceeded"-Problem
mit MikTex.
Als Einsteiger tue ich mich aber noch etwas schwer.
_WO_ und _WIE_ kann ich denn die Main Memory Einstellungen setzten?
Ich habe mittlerweile mehrere Dutzend verschiedene Versuche
unternommen.
Leider ohne erfolg, denn egal was ich wo eintrage oder einstelle, die
Meldung zeigt stets das selbe Limit für den Memory an...
> Hallo,
>
> ich stehe hier vor genau dem selben "Tex capacity exceeded"-Problem
> mit MikTex.
> Als Einsteiger tue ich mich aber noch etwas schwer.
Als Einsteiger solltest du als erstes lernen, dein Problem genauer
zu schildern. Es gibt n�mlich diverse ""Tex capacity
exceeded"-Probleme". In miktex gibt es viele TeX-Programme (xetex,
latex, pdflatex ...). Es gibt auch diverse Miktex-Versionen und
diverse M�glichkeiten zu installieren.
--
Ulrike Fischer
Sorry, ich dachte eigentlich das hätte ich deutlich gemacht.
Hier die vollständige Meldung: "TeX capacity exceeded, sorry [main
memory size=3000000]"
Die "Main Memory" Einstellungen eben.
Ich konnte in keiner Konfigurationsdatei den Wert "300000" finden und
alle Einstellungen,
die alternativ in Frage hätten kommen können, haben keine Änderung
bewirkt...
Installiert habe ich die Basisversion von "miktex.org" (WinXP)
Deswegen meine Frage: WO und WIE kann ich diese Einstellung setzen?
>> Als Einsteiger solltest du als erstes lernen, dein Problem genauer
>> zu schildern. Es gibt n�mlich diverse ""Tex capacity
>> exceeded"-Probleme". In miktex gibt es viele TeX-Programme (xetex,
>> latex, pdflatex ...). �Es gibt auch diverse Miktex-Versionen und
>> diverse M�glichkeiten zu installieren.
>
> Sorry, ich dachte eigentlich das h�tte ich deutlich gemacht.
> Hier die vollst�ndige Meldung: "TeX capacity exceeded, sorry [main
> memory size=3000000]"
> Die "Main Memory" Einstellungen eben.
>
> Ich konnte in keiner Konfigurationsdatei den Wert "300000" finden und
> alle Einstellungen,
> die alternativ in Frage h�tten kommen k�nnen, haben keine �nderung
> bewirkt...
>
> Installiert habe ich die Basisversion von "miktex.org" (WinXP)
>
> Deswegen meine Frage: WO und WIE kann ich diese Einstellung setzen?
So wie am Anfang des Threads beschrieben:
F�r latex z.B. mit
initexmf --edit-config-file latex
die latex.ini �ffnen, dort
main_memory=6000000
eintragen. Die Datei speichern. Dann in miktex->settings->format das
LaTeX-Format neu erzeugen. F�r pdflatex, xelatex etc entsprechend.
--
Ulrike Fischer
Die INIs waren alle samt ohne Inhalt beim Öffnen.
Wundert mich etwas... oder ist das ordnungsgemäß?
> Ok, habe ich gemscht.
> Es hat sich leider nichts ver�ndert.
>
> Die INIs waren alle samt ohne Inhalt beim �ffnen.
> Wundert mich etwas... oder ist das ordnungsgem��?
Das ist normal, das sind lokale Dateien, die anfangs leer sind.
Falls du miktex 2.8 benutzt (die Version hast du ja immer noch nicht
verraten), kann es sein, dass du mit initexmf --admin arbeiten musst
(vielleicht auch bei der Formaterstellung).
Abgesehen davon: Es wird dir niemand helfen k�nnen, wenn du nur so
vage �u�erungen von dir gibst, wie "habe ich gemacht" und "Leider
ohne Erfolg".
--
Ulrike Fischer
Wie lang ist Dein Dokument in Seiten und kB? Wieviele Bilder sind drin?
> Ich habe mittlerweile mehrere Dutzend verschiedene Versuche
> unternommen.
> Leider ohne erfolg, denn egal was ich wo eintrage oder einstelle, die
> Meldung zeigt stets das selbe Limit f�r den Memory an...
Als erfahrener LaTeX-User muss ich aber auch feststellen, dass mir diese
Meldung bisher exterem selten untergekommen ist. Meistens war am
Dokument was faul. Beispielsweise hat ein Bekannter von mir sein ganzes
Dokument statt mit richtigen Abs�tzen, also Leerzeilen, mit \\
formatiert. Daraufhin hat TeX bei Seite 15 schlapp gemacht. Es gibt auch
ein paar seltsame Pakete, die exzessiv Speicher verschleudern, z.B.
epic. Da w�re der Rat dann, etwas modernes zu verwenden wie tikz.
Speicherlimits sollte man erst dann erh�hen, wenn man sicher ist, dass
kein solcher Bug im Dokument ist.
Christian
Ich setze MikText eigentlich nur dazu ein per Doxygen erzeugte
Quelldaten
in ein PDF Dokument zu wandeln. Da ich bisher keine Probleme mit
anderen (kleineren)
Projekten hatte, gehe ich mal davon aus, dass die von Doxygen
erzeugten Rohdaten "clean" sein sollten.
Die Rohdaten haben insgesamt eine Größe von ca. 10 MB mit ca. 300
Vektorgrafiken (Diagramme)
Ich arbeite übrigens mit Miktex 2.8.
Die --admin Option bei initexmf hat leider keine Früchte getragen.
Es wird immer noch mit "TeX capacity exceeded, sorry [main
memory size=3000000]" abgebrochen...