Sie sind hier

Probleme mit Listings

Hallo.

Nach dem Update von Koma-Skript 2.9u auf die aktuelle Version (2.95b), bekomme ich eine Fehlermeldung in Verbindung mit dem Befehl \lstlistoflistings. Dieser gehört zum Packet listings, jedoch tritt der Fehler nach dem Update von Koma-Skript auf.

Die Fehlermeldung:

! Undefined control sequence.
\lstlistoflistings ...\lol@heading \@parskipfalse
\@parskip@indent \@startto...
l.16 \lstlistoflistings

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

! Undefined control sequence.
\lstlistoflistings ...rskipfalse \@parskip@indent
\@starttoc {lol}\if@reston...
l.16 \lstlistoflistings

The control sequence at the end of the top line
of your error message was never \def'ed. If you have
misspelled it (e.g., `\hobx'), type `I' and the correct
spelling (e.g., `I\hbox'). Otherwise just continue,
and I'll forget about whatever was undefined.

Ich habe kein umfangreiches Wissen über Latex, deshalb komme ich hier selbst nicht weiter. Prinzipiell würde ich auch wieder auf 2.9u downgraden, jedoch finde ich diese Version nirgends mehr zum downloaden.

Bild von Markus Kohm

Das ist ein schwerer Bug in listings. Das Paket einfach mal eben davon aus, dass wenn das Paket scrlfile geladen ist, u. a. die Anweisungen \@parskipfalse und \@parskip@indent definiert sind. Das galt schon früher nicht, denn die beiden Anweisungen waren nie in scrlfile definiert, sondern in den KOMA-Script-Klassen. Wenn man also scrlfile beispielsweise zusammen mit einer Standardklasse verwendet hätte, wäre das schon früher komplett in die Hose gegangen. Die Anweisungen waren auch nie für die Allgemeinheit freigegeben, sondern immer interne Anweisungen von KOMA-Script. Es gab auch nie eine Notwendigkeit, für andere Pakete, sie zu verwenden, das man mit direktem Setzen von \parskip, \parindent und \parfillskip in fremden Paketen durchaus auskommen würde. Überhaupt wäre es listings gut bekommen, bei der Definition von \lstlistoflistings etwas mehr auf das float-Paket zu schielen, die dortigen Verzeichnisse sind nämlich deutlich sauberer implementiert.

Da der Autor von listings derzeit leider nicht erreichbar ist, hier ein ungetesteter Workaround, der funktionieren sollte:

\makeatletter% --> De-TeX-FAQ
\renewcommand*{\lstlistoflistings}{%
  \begingroup
    \if@twocolumn
      \@restonecoltrue\onecolumn
    \else
      \@restonecolfalse
    \fi
    \lol@heading
    \setlength{\parskip}{\z@}%
    \setlength{\parindent}{\z@}%
    \setlength{\parfillskip}{\z@ \@plus 1fil}%
    \@starttoc{lol}%
    \if@restonecol\twocolumn\fi
  \endgroup
}
\makeatother% --> \makeatletter

Mail an den aktuellen Maintainer von listings ist außerdem unterwegs.

Vielen Dank für den Workaround, er funktioniert! Entschuldige mein spätes Feedback, aber ich hatte zwischendurch noch 2 Wochen Urlaub, deshalb habe ich nicht eher geantwortet.

Hallo Markus,

ich arbeite zur Zeit mit etwa 12 Leuten an einem LaTeX Dokument und leider haben wir alle andere TeX Distros, so dass wir auf einigen Systemen leider auch den beschrieben Fehler bekommen haben. Der Workaround hat dort dann zwar Abhilfe geschaffen, dafür kamen aber die anderen Distros nicht mehr damit klar.

Ich hab daraufhin Deinen Workaround etwas angepasst, so dass es auf beiden Systemen läuft:

<pre>
\makeatletter
\@ifundefined{float@listhead}{}{%
    \renewcommand*{\lstlistoflistings}{%
        \begingroup
    	    \if@twocolumn
                \@restonecoltrue\onecolumn
            \else
                \@restonecolfalse
            \fi
            \float@listhead{\lstlistlistingname}%
            \setlength{\parskip}{\z@}%
            \setlength{\parindent}{\z@}%
            \setlength{\parfillskip}{\z@ \@plus 1fil}%
            \@starttoc{lol}%
            \if@restonecol\twocolumn\fi
        \endgroup
    }%
}
\makeatother
</pre>
Bild von Markus Kohm

... eine aktuelle Version des listings-Pakets. Das sollte nun wirklich nicht das Problem sein ...

Comments for "Probleme mit Listings" abonnieren