`babel` ist ein Paket, das es nicht nur ermöglicht, die Sprache eines Dokuments einzustellen, es ermöglicht auch, innerhalb eines Dokument mit mehreren Sprachen zu arbeiten. Das kann dazu führen, dass auch Einträge in Verzeichnisse in unterschiedlichen Sprachen vorgenommen werden. Daher schreibt `babel` zunächst beim Öffnen der Hilfsdateien für die Verzeichnisse, aber auch bei `\selectlanguage` eine Anweisung in die Hilfsdateien, mit der die Sprache in der Hilfsdatei klar definiert wird. Normalerweise betrifft dies nur die Hilfsdateien für das Inhaltsverzeichnis, das Tabellenverzeichnis und das Abbildungsverzeichnis. Verzeichnisse, die mit Hilfe von `tocbasic`, einem Paket aus der [KOMA-Script-Sammlung][1], erstellt werden, werden davon ebenfalls automatisch erfasst. Das ist übrigens ein gutes Argument für das Paket `scrhack` auch mit anderen Klassen als den KOMA-Script-Klassen, weil dabei die Verzeichnisse von `listings`, `float` und `floatrow` unter die Kontrolle von `tocbasic` gestellt werden. Meines Wissens ist `tocbasic` das einzige Paket, das Sprachumschaltungen mit `babel` innerhalb der zusätzlichen Verzeichnisse aktiv unterstützt.
Nimmt man nun zwischen zwei LaTeX-Läufen eine Sprache aus der Optionenliste von `babel` heraus oder entfernt man `babel` ganz, so stehen in den Hilfsdateien noch immer die Aufrufe zur Festlegung der Sprache. Genau diese Aufrufe führen dann dazu, dass der genannte Fehler gemeldet wird.
Da sowohl die `aux`-Datei als auch die daraus erzeugten Hilfsdateien für die Verzeichnisse bei jedem LaTeX-Lauf neu geschrieben werden, verschwindet der Fehler normalerweise automatisch wieder. Das gilt nur dann nicht, wenn der LaTeX-Lauf abgebrochen wurde, bevor sämtliche Hilfsdateien neu geschrieben wurden.
wurden. In diesem Fall kann man einfach die `aux`-Datei und die Hilfsdateien der Verzeichnisse, beispielsweise die `toc`-, die `lof`- und die `lot`-Datei, selbst löschen.
[1]: http://www.komascript.de