LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Alles rund um das System für Windows.


Permutation
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 12. Jan 2022, 19:01

LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Permutation »

Hallo zusammen,

ich benutze MiKTeX bzw. lualatex.exe um eine PDF zu generieren. Dabei bekomme ich folgenden Fehler:
This is LuaHBTeX, Version 1.13.0 (MiKTeX 21.3 Portable) (format=lualatex 2021.10.18) 12 JAN 2022 17:00
...
! TeX capacity exceeded, sorry [number of strings=478531].
Leider habe ich nichts gefunden um "number of strings" zu erhöhen. LuaLatex verwaltet den Speicher ja anders als LaTeX, daher werden ja einige Einstellungen nicht beachtet. Aber leider habe ich keine Möglichkeit gefunden, diesen Wert zu erhöhen, bzw. nicht wo und wie man dies macht.

Könnte mir evtl. sagen wie ich das Problem lösen kann?

Schöne Grüße
Permutation

gast.

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von gast. »

Kann es sein, dass das ein Folgeproblem eines anderen Fehlers ist? Normalerweise muss man sich schon sehr anstrengen, um bei einem Dokument auf mehrere Hunderttausend Strings zu kommen. Ich habe gerade mal mein größtes Dokument kontrolliert, das auch beispielsweise rund 2500 Labels enthält. Aber ich komme laut log-Datei bei knapp 1000 Seiten trotzdem nur auf 50000 Strings.

Ob sich LuaTeX an max_strings (normalerweise auf 500000 eingestellt) hält, weiß ich leider nicht. Aber ich würde wirklich erst einmal kontrollieren, ob nicht ein seltsamer Code-Fehler vorliegt.

Ein Minimaldokument belegt bei mir unter LuaLaTeX übrigens weniger als 450 strings.

Permutation
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 12. Jan 2022, 19:01

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Permutation »

Das ist leider schwer zu sagen. Der TeX-Code wird nämlich generiert und besteht aus fast 1000 tex-Dateien.

Dabei werden bei diesem Dokument allein ca. 50000 newcommands benutzt. D.h. hier werden schon mind. 50000 strings benutzt.
Das PDF dürfte mind. 10000 Seiten haben. Leider kann ich gegen diese newcommds nichts machen, da der Code der diese generiert erstmal nicht geändert werden soll.

Benutzeravatar
Stefan Kottwitz
Admin
Admin
Beiträge: 2498
Registriert: Di 8. Jul 2008, 00:39
Kontaktdaten:

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Stefan Kottwitz »

Wow, das klingt viel.

Magst Du hier vielleicht die .log-Datei posten, als Anhang? Vielleicht erkennt man ja was darin.

Stefan

Benutzeravatar
KOMA
TeX-Entwickler
TeX-Entwickler
Beiträge: 2958
Registriert: Fr 4. Jul 2008, 17:28
Kontaktdaten:

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von KOMA »

Wenn man wirklich ein Dokument hat, bei dem die aktuelle Einstellung für max_strings nicht genügt, dann kann man diesen Wert laut luatex Manual Abschnitt 10.4 entweder durch ein startup Lua script oder via texmf.cnf ändern. Ob das bei MiKTeX genauso ist oder dort irgend eine INI-Datei texmf.cnf ersetzt, weiß ich nicht. Ich verwende bekanntlich kein MiKTeX, sondern TeX Live.

Bei TeX Live muss man gar nicht die texmf.cnf-Datei ändern oder eine eigene verwenden, sondern kann einfach einen Aufruf wie
lualatex --cnf-line=max_strings=750000 test.tex
verwenden. Ob das lualatex von MiKTeX das ebenfalls unterstützt, kann man einfach per luatex --help erfragen.

Oder man probiert es einfach aus und schaut anschließend in die log-Datei. Bei mir ergibt obiger Aufruf für die Test-Datei:
%!TeX lualatex
\documentclass{article}

\begin{document}
Test
\end{document}
am Ende der log-Datei die Ausgabe:
Here is how much of LuaTeX's memory you used:
 453 strings out of 727875
Die Vergrößerung hat also funktioniert.

Dateizugriffe sind übrigens u. a. durch die Suche nach der Datei relativ teuer. 1000 \input{…} zu verwenden, würde aber ebenfalls nicht mehrere 100000 strings belegen, sondern einige 1000 (normalerweise AFAIK weniger als 10000). \include{…} ist noch teurer. Da ist man rasch mit mehr als 20 strings je Datei dabei, selbst wenn die Datei selbst leer ist. Aber auch das sind dann eben nur einige 10000 für 1000 Dateien. Trotzdem will ich nicht ausschließen, dass es Dokumente gibt, bei denen die übliche Einstellung von max_strings=500000 nicht genügt.

Permutation
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 12. Jan 2022, 19:01

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Permutation »

Das mit dem Log kläre ich. Ich muss schauen was alles im Log steht, da das PDF vertraulich behandelt werden muss.

Ich hatte mir schon --help angeschaut, aber immer nach "max strings" Ausschau gehalten. Und im PDF habe ich immer nach "max strings" gesucht :(
"--cnf-line" gibt es auch unter MiKTeX und werde es gleich mal probieren. Vielen Dank schon mal für den Hinweis :)

Es gibt unter anderem auch noch ca. 6000 Bilder (als PDF) die hinzugefügt werden, viele Tabellen Links usw. aber ich werde versuchen das Log mal zu posten.

Permutation
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 12. Jan 2022, 19:01

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Permutation »

Leider klappt es wohl nicht:

Hier der Aufruf:
"C:\miktex-portable\texmfs\install\miktex\bin\x64\lualatex.exe" --cnf-line=max_strings=750000 TeXFile.tex
Und das Log dazu.

Ich werde jetzt mal schauen wie es mit einem "startup Lua script" gehen könnte. Bzw. hat jemand schon mal jemand in so einem Skript die texconfig table geändert?

Edit:
Selbst wenn ich --cnf-line=XXX oder --cnf-line=max_strings=XXX kommt es zum selben Log.
Dateianhänge
TeXFile.log
(5.32 KiB) 119-mal heruntergeladen

KOMA (als Gast)

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von KOMA (als Gast) »

Laut MiKTeX Manual kann man die Einstellungen bei MiKTeX per
initexmf --edit-config-file=lualatex
editieren. Ob es in der Datei dann max_strings gibt oder es etwas nützt, das dort zu ergänzen, kann ich natürlich nicht sagen.

Permutation
Forum-Anfänger
Forum-Anfänger
Beiträge: 24
Registriert: Mi 12. Jan 2022, 19:01

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von Permutation »

Hier das gekürzte Log vom ursprünglichen Problem. "XXX" ist nur von mir nachträglich geändert, um die Namen zu "schützen".
Ich habe auch das Log an sich gekürzt, da es sich immer wieder wiederholt hat, siehe "..." im Log.
LogFile.log
(58.81 KiB) 119-mal heruntergeladen

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Re: LuaLatex ! Fehler TeX capacity exceeded, sorry [number of strings=478531].

Beitrag von u_fischer »

In miktex musst du
initexmf --edit-config-file lualatex 
aufrufen. Dann öffnet sich der Editor mit einer lualatex.ini. Dort gibst du
max_strings = 1500000
ein und speicherst. Wenn du es auch für lualatex-dev brauchst musst du auch
initexmf --edit-config-file lualatex-dev 
aufrufen und auch dort die ini ergänzen.

Anschließend solltest es gehen.

Aber normalerweise deutet es auf Programmierfehler hin, wenn die überlaufen. Ich habe es mal mit vielen tikz-Koordinaten geschafft: https://tex.stackexchange.com/questions/316999/release-space-in-the-string-pool

Antworten