Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

seltsames Verhalten von Listings: Tex capacity exceeded

338 views
Skip to first unread message

Dierk Erdmann

unread,
Aug 16, 2010, 12:43:28 PM8/16/10
to
Hallo,

ich beobachte hier ein sehr seltsames Verhalten von Listings. Beim
Versuch das unten stehende Dokument zu kompilieren (pdfltex oder
latex) erhalte ich folgende Fehlermeldung:
ERROR: TeX capacity exceeded, sorry [input stack size=5000].
--- TeX said ---
"->\lst@IfNextCharsArg {""}
{\let \lst@enext \lst@CArgEmpty \ifnum 10=
\lst@mo...
l.60 self.
lonelyAdrs.add(adr)

Das Beispieldokument ist recht lang, was aber seinen Grund hat: selbst
kleinste Änderungen führen dazu, dass der Fehler nicht mehr auftritt.
Bspw. kann man die Zeile mit \section auskommentieren, oder die Zeile
mit "Der nächste Schritt des Datenimports..." entfernen. Auch wenn die
letzte Zeile des zweiten Listings ("self.lonelyAdrs.add(adr)")
entfernt wird, verschwindet der Fehler.

Hat jemand eine Idee, wo das Problem liegen könnte?

Gruß u. Danke
Dierk

Beispieldokument:


%-*- encoding: utf-8 -*-
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{listings,shortvrb}
\usepackage[german]{babel}
\listfiles
\begin{document}
\MakeShortVerb{|}
\lstset{language=Python}
\section{Datenimport}
\subsection{Import von E"=Mails, Personennamen und Absenderadressen}
Der nächste Schritt des Datenimports wird in der Skripdatei
|mboxdb.py| abgewickelt. Die Klasse |AddressBook| enthält die in
Abschnitt~?? beschriebenen Tabellen, mit denen die Zuordnung zwischen
Personennamen und E"=Mail"=Adressen durchgeführt wird.
\begin{lstlisting}[name=mboxdb]
class AddressBook:
def __init__(self):
self.names_adrs = {}
self.adrs_names = {}
self.lonelyAdrs = set()
def getAdrBook(self):
return self.names_adrs
def _addMailName(self, mail, name):
# Eintrag f"ur Abfrage Mailadresse->Name anlegen
self.adrs_names[mail] = name
\end{lstlisting}
Mittels der Klassenmethode |addEntry| können neue Adresseinträge
hinzugefügt werden, wobei überflüssige Zeichen wie Kommata oder
Unterstriche automatisch entfernt werden. Die Fallunterscheidung ab
Zeile~\ref{src:addrentry-if} sorgt für die korrekte Verwaltung der in
Abschnitt~?? beschriebenen Tabellen.
\begin{lstlisting}[name=mboxdb]
def addEntry(self, name, adr):
name = name.strip().replace("'", "").replace('"',
'').replace(',', '').replace('_', ' ')
# nicht-ASCII-Zeichen durch ASCII-Aequivalente ersetzen
name = unidecode(name)
# doppelte Leerzeichen entfernen
while " " in name:
name = name.replace(' ', ' ')
adr = adr.strip()
if name != '' and adr != '':
# Name und E-Mail-Adresse gegeben
if not self.names_adrs.has_key(name):
# Name wurde noch nicht gespeichert: neuen Eintrag mit
E-Mail-Adresse (in set-Obj.) anlegen
self.names_adrs[name] = set()

# E-Mail-Adresse hinzufuegen
self.names_adrs[name].add(adr)
self._addMailName(adr, name)
elif name != '' and adr == '':
# Name gegeben, aber keine E-Mail-Adr.
if not self.names_adrs.has_key(name):
self.names_adrs[name] = set() # leeres Set anlegen
elif name == '' and adr != '':
# Name fehlt, E-Mail-Adr gegeben: E-Mail Adresse in die
Liste der bisher nicht zugeordneten legen
self.lonelyAdrs.add(adr)
\end{lstlisting}

\end{document}

*File List*
article.cls 2007/10/19 v1.4h Standard LaTeX document class
size10.clo 2007/10/19 v1.4h Standard LaTeX file (size option)
inputenc.sty 2008/03/30 v1.1d Input encoding file
utf8.def 2008/04/05 v1.1m UTF-8 support for inputenc
t1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
ot1enc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
omsenc.dfu 2008/04/05 v1.1m UTF-8 support for inputenc
fontenc.sty
t1enc.def 2005/09/27 v1.99g Standard LaTeX file
listings.sty 2007/02/22 1.4 (Carsten Heinz)
keyval.sty 1999/03/16 v1.13 key=value parser (DPC)
lstmisc.sty 2007/02/22 1.4 (Carsten Heinz)
listings.cfg 2007/02/22 1.4 listings configuration
shortvrb.sty 2006/02/02 v2.1d Standard LaTeX documentation package
(FMi)
babel.sty 2008/07/06 v3.8l The Babel package
bblopts.cfg 2006/07/31 v1.0 MiKTeX 'babel' configuration
germanb.ldf 2008/06/01 v2.6m German support from the babel system
lstlang1.sty 2004/09/05 1.3 listings language file
t1cmtt.fd 1999/05/25 v2.5h Standard LaTeX font definitions

Ulrike Fischer

unread,
Aug 16, 2010, 1:06:48 PM8/16/10
to
Am Mon, 16 Aug 2010 09:43:28 -0700 (PDT) schrieb Dierk Erdmann:

> Hallo,
>
> ich beobachte hier ein sehr seltsames Verhalten von Listings. Beim
> Versuch das unten stehende Dokument zu kompilieren (pdfltex oder
> latex) erhalte ich folgende Fehlermeldung:
> ERROR: TeX capacity exceeded, sorry [input stack size=5000].
> --- TeX said ---
> "->\lst@IfNextCharsArg {""}
> {\let \lst@enext \lst@CArgEmpty \ifnum 10=
> \lst@mo...
> l.60 self.
> lonelyAdrs.add(adr)
>
> Das Beispieldokument ist recht lang, was aber seinen Grund hat: selbst
> kleinste Änderungen führen dazu, dass der Fehler nicht mehr auftritt.
> Bspw. kann man die Zeile mit \section auskommentieren, oder die Zeile
> mit "Der nächste Schritt des Datenimports..." entfernen. Auch wenn die
> letzte Zeile des zweiten Listings ("self.lonelyAdrs.add(adr)")
> entfernt wird, verschwindet der Fehler.
>
> Hat jemand eine Idee, wo das Problem liegen könnte?

Benutze nicht "= in der \subsection-Überschrift. Am Seitenumbruch
kollidiert das mit den Catcode-Änderungen von listings.


--
Ulrike Fischer

Dierk Erdmann

unread,
Aug 16, 2010, 1:20:09 PM8/16/10
to
On 16 Aug., 19:06, Ulrike Fischer <ne...@nililand.de> wrote:
> Benutze nicht "= in der \subsection-Überschrift. Am Seitenumbruch
> kollidiert das mit den Catcode-Änderungen von listings.

Vielen Dank für den Hinweis, das Problem ist damit gelöst.
Was genau läuft da eigentlich schief beim Seitenumbruch? Der Fehler
verschwindet ja auch, wenn ich eine andere Zeile im Dokument entferne
und das "= in der Überschrift belasse.

Gruß
Dierk

Ulrike Fischer

unread,
Aug 16, 2010, 2:08:07 PM8/16/10
to
Am Mon, 16 Aug 2010 10:20:09 -0700 (PDT) schrieb Dierk Erdmann:

> On 16 Aug., 19:06, Ulrike Fischer <ne...@nililand.de> wrote:
>> Benutze nicht "= in der \subsection-Überschrift. Am Seitenumbruch
>> kollidiert das mit den Catcode-Änderungen von listings.
>
> Vielen Dank für den Hinweis, das Problem ist damit gelöst.
> Was genau läuft da eigentlich schief beim Seitenumbruch?

Beim Seitenumbruch (bzw. beim \shipout) wird die Zeile fürs toc in
die aux-Datei geschrieben, Kopf- und Fußzeilen gebastelt, ... Da
kann so ein komplexes Ding wie listings sich schon mal zerlegen,
wenn der \shipout in der falschen Zeile kommt. Was genau in diesem
Fall passiert weiß ich nicht.

--
Ulrike Fischer

Robert Hartmann

unread,
Aug 17, 2010, 5:07:03 AM8/17/10
to
Hallo,

Am 16.08.2010 18:43, schrieb Dierk Erdmann:
> Hallo,
>
> ich beobachte hier ein sehr seltsames Verhalten von Listings. Beim
> Versuch das unten stehende Dokument zu kompilieren (pdfltex oder
> latex) erhalte ich folgende Fehlermeldung:
> ERROR: TeX capacity exceeded, sorry [input stack size=5000].


Eine ähnliche Fehlermeldung hatte ich auch mal, als ich mit meiner
Diplomarbeit beschäftigt war.

Message-ID: <g4fh3g$1p3h$1...@ariadne.rz.tu-clausthal.de>

http://groups.google.de/group/de.comp.text.tex/browse_frm/thread/fa283d6e3ccbb96e/653a9a60305952e7?hl=de&tvc=1#653a9a60305952e7


Wobei es bei mir der Wert für PDF memory size (pdf_mem_size)
in einer der MiKTeX 2.4 Konfigurationsdatei im Zusammenspiel
mit microtype zu klein war.

====================
| When applying micro-typographic enhancement to a large document with a
| lot of fonts, pdfTEX may be running out of some kind of memory. It can
| be increased by setting the respective parameter to a larger value.
| For web2c-based systems, e.g., TEXLive, change the settings in
| texmf.cnf, for MiKTEX, in the file miktex.ini (2.4 or older) resp.
| pdflatex.ini (2.5 or newer).
|====================

Und hier, Dierk, hatte Assa (frymor) genau Deine Fehlermeldung:

http://mrunix.de/forums/showthread.php?t=64066

=================
| Kapitel 2.
| ! TeX capacity exceeded, sorry [input stack size=5000].
| \font@name ->
| \TS1/ptm/m/n/12
| l.20 ...stressten Pflanzen ist stark verlangsamt.}
|
| If you really absolutely need more capacity,
| you can ask a wizard to enlarge me.
=================

Die Lösung hatte Herbert Voss dort angegeben als:
=================
| Für das Archiv:
| das Problem waren unter anderem die viel zu langen Zeilen,
| die entstehen, wenn man den Editor die Zeilen umbrechen lässt
| und nicht selbst Enter drückt.
| Der Editor umbricht nur optisch, aber nicht programmtechnisch,
| d.h. für TeX ist das eine Zeile, die komplett eingelesen werden muss.
=================

Beste Grüße,
Robert Hartmann

0 new messages