Sie sind hier

Bekannte Probleme und Änderungen in KOMA-Script 3.09

Bild von Markus Kohm

Der Support für diese Version ist definitiv eingestellt. Wenden Sie sich ggf. an Ihren Distributor oder Administrator.

Mögliche Probleme:

  • Die englische Anleitung hat teilweise noch den alten Aufbau und gibt noch nicht alle neuen Möglichkeiten von KOMA-Script 3 an.
  • Per \DeclareNewTOC implementierte Gleitumgebungen akzeptieren derzeit kein optionales Argument.
    Abhilfe: Die nächste Version wird das wieder können.
    Hinweis: Die SVN-Version kann dies bereits.
  • Bei Verwendung von \FamilyOptions kommt es leicht zu Fehlermeldungen der Art:
    ! Argument of … has an extra }.

    Ursache: Die Option einschließlich ihres Wertes wird von \FamilyOptions derzeit vollständig expandiert. Bei Verwendung von sogenannten zerbrechlichen Anweisungen kann das u. a. zu obiger Fehlermeldung führen. Abhilfe schafft hier die Verwendung von \protect vor der zerbrechlichen Anweisung.
    Hinweis: Ab der nächsten Release wird nicht mehr vollständig expandiert, so dass es in der Regel auch ohne \protect funktioniert. Dafür ist dann zu beachten, dass Makros im Wert einer Option in einigen Fällen über das ganze Dokument hinweg im Wert der Option erhalten bleiben und Änderungen daran entsprechende Auswirkungen haben.
    Hinweis: Die SVN-Version enthält diese Änderung bereits.
    Hinweis: Änderungen an \FamilyOptions wirken sich immer auch auf \KOMAoptions aus!

Wichtige Änderungen:

scrartcl:
  • \captionaboveof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Überschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • \captionbelowof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Unterschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • captions=(heading|above|top): Die Funktion von \caption wird auf \captionabove, die von \captionof auf \captionaboveof eingestellt.
  • captions=(signature|below|bot|bottom): Die Funktion von \caption wird auf \captionbelow, die von \captionof auf \captionbelowof eingestellt.
  • captions=(figureheading|figureabove|abovefigure|topatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionabove eingestellt.
  • captions=(figuresignature|figurebelow|belowfigure|bottomatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionbelow eingestellt.
scrbook:
  • \captionaboveof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Überschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • \captionbelowof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Unterschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • captions=(heading|above|top): Die Funktion von \caption wird auf \captionabove, die von \captionof auf \captionaboveof eingestellt.
  • captions=(signature|below|bot|bottom): Die Funktion von \caption wird auf \captionbelow, die von \captionof auf \captionbelowof eingestellt.
  • captions=(figureheading|figureabove|abovefigure|topatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionabove eingestellt.
  • captions=(figuresignature|figurebelow|belowfigure|bottomatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionbelow eingestellt.
scrdate:
  • Die Sprachen austrian und naustrian werden unsterstützt.
scrfontsizes:
Neues Paket, das nur eine einzige Benutzeranweisung (eigentlich eine Expertenanweisung) zur Verfügung stellt:

  • \generatefontfile{Dateinamenpreäfix}[Grundlinienabstand]{Schriftgröße}: Erzeugt eine neue Schriftgrößendatei. Dazu bedient es sich der Anweisung \changefontsizes. Als Dateinamenpräfix ist alles erlaubt außer »scrsize«. Die mit KOMA-Script ausgelieferten Schriftgrößendateien können auf diesem Weg also nicht ersetzt werden. Um eine der erzeugten Dateien zu verwenden, muss man daher zunächst \@fontsizefilebase umdefinieren.
    Ein einfaches Beispiel zur Erzeugung der Datei »test10dd.clo« wäre daher:
    \documentclass{minimal}
    \usepackage{scrfontsizes}
    \generatefontfile{test}{10dd}
    \begin{document}\end{document}

    Danach kann man die so erzeugte Datei weiter anpassen, beispielsweise wenn \small andere Einstellungen verwenden soll. Verwenden kann man die Datei dann in einem beliebigen KOMA-Script-Dokument beispielsweise so:

    \makeatletter
    \renewcommand*{\@fontsizefilebase}{test}
    \makeatother
    \documentclass[fontsize=10dd]{scrartcl}

    Wie das Beispiel zeigt, ist das ganze eher etwas für Autoren von Wrapperklassen, die bestimmte Schriftgrößeneinstellungen vornehmen müssen, aber nicht alles von Hand machen wollen. Die Anweisung kann übrigens nur in der Dokumentpräambel verwendet werden.

scrlfile:
  • \AfterClass+{Klasse}{Anweisungen}: Führt die Anweisungen aus, falls oder sobald die Klasse vollständig geladen wurde, aber – falls die Klasse zum Zeitpunkt des Aufrufs noch nicht vollständig geladen wurde – noch bevor \AtEndOfClass-Code ausgeführt wird.
  • \AfterClass!{Klasse}{Anweisungen}: Führt Anweisungen aus, falls oder sobald die Klasse vollständig geladen und auch \AtEndOfClass-Code ausgeführt wurde. Die Ausführung findet daher grundsätzlich nicht mehr im Kontext der Klasse statt.

Der Unterschied zwischen \AfterClass*, \AfterClass+ und \AfterClass! erschließt sich nur bei Betrachtung des Falls, dass Klasse gerade geladen wird, wenn die Anweisung für diese Klasse aufgerufen wird.

  • \AfterAtEndOfClass{Klasse}{Anweisungen}: Diese Anweisung arbeitet grundsätzlich wie \AfterClass, führt die angegebenen Anweisungen aber nach \AtEndOfClass-Anweisungen der jeweiligen Klasse und nicht mehr im Kontext der Klasse aus.
  • \AfterPackage+{Paket}{Anweisungen}: Führt die Anweisungen aus, falls oder sobald das Paket vollständig geladen wurde, aber – falls das Palet zum Zeitpunkt des Aufrufs noch nicht vollständig geladen wurde – noch bevor \AtEndOfPackage-Code ausgeführt wird.
  • \AfterPackage!{Paket}{Anweisungen}: Führt Anweisungen aus, falls oder sobald das Paket vollständig geladen und auch \AtEndOfPackage-Code ausgeführt wurde. Die Ausführung findet damit auch grundsätzlich nicht mehr in Kontext des Pakets statt.

Der Unterschied zwischen \AfterPackage*, \AfterPackage+ und \AfterPackage! erschließt sich nur bei Betrachtung des Falls, dass Paket gerade geladen wird, wenn die entsprechende Anweisung für dieses Paket aufgerufen wird. So ergibt beispielsweise:

\begin{filecontents}{requireA.sty}
\ProvidesPackage{requireA}
\AtEndOfPackage{\typeout{AtEndOfPackage by A}}
\RequirePackage{requireB}
\typeout{finish package requireA}
\end{filecontents}
\begin{filecontents}{requireB.sty}
\ProvidesPackage{requireB}
\AfterPackage+{requireA}{\typeout{>+ from B}}
\AfterPackage!{requireA}{\typeout{>! from B}}
\AfterPackage*{requireA}{\typeout{>* from B}}
\AfterPackage{requireA}{\typeout{>from B}}
\end{filecontents}
 
\documentclass{article}
\usepackage{scrlfile}
\AfterPackage!{requireA}{\typeout{>! global}}
\AfterPackage+{requireA}{\typeout{>+ global}}
\AfterPackage*{requireA}{\typeout{>* global}}
\AfterPackage{requireA}{\typeout{>global}}
\usepackage{requireA}
\begin{document}
\end{document}

die Ausgabe:

(./requireA.sty (./requireB.sty
>* from B
)
finish package requireA
)
>+ global
>* global
>global
>+ from B
>from B
AtEndOfPackage by A
>! global
>! from B

Man beachte hier die sehr unterschiedliche Positionen der Ausgaben »>* from B«, »>+ from B« und »>! from B«.

  • \AfterAtEndOfPackage{Paket}{Anweisungen}: Diese Anweisung arbeitet grundsätzlich wie \AfterPackage, führt die angegebenen Anweisungen aber nach \AtEndOfPackage-Anweisungen des jeweiligen Pakets und nicht mehr im Kontext des Pakets aus.
scrlttr2:
  • refline=dateleft: Setzt das Datum in der Geschäftszeile links.
  • refline=dateright: Setzt das Datum in der Geschäftszeile rechts (Voreinstellung).
  • refline=nodate: Setzt das Datum gar nicht in der Geschäftszeile.
  • Die Sprache naustrian wird unterstützt.
scrreprt:
  • \captionaboveof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Überschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • \captionbelowof{Gleitumgebung}[Verzeichniseintrag}{Titel}: fügt einen als Unterschrift formatierten Gleitumgebungstitel ein und funktioniert im Unterschied zu \caption auch außerhalb einer Gleitumgebung.
  • captions=(heading|above|top): Die Funktion von \caption wird auf \captionabove, die von \captionof auf \captionaboveof eingestellt.
  • captions=(signature|below|bot|bottom): Die Funktion von \caption wird auf \captionbelow, die von \captionof auf \captionbelowof eingestellt.
  • captions=(figureheading|figureabove|abovefigure|topatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionabove eingestellt.
  • captions=(figuresignature|figurebelow|belowfigure|bottomatfigure): Die Funktion von \caption wird innerhalb von figure- und figure*-Umgebungen auf \captionbelow eingestellt.
tocbasic (und damit indirekt auch scrartcl, scrreprt und scrbook):
  • atbegin=Code: neue Option für \DeclareNewTOC, um am Anfang der gleitenden oder nicht gleitenden Umgebung Code ausführen zu lassen.
  • atend=Code: neue Option für \DeclareNewTOC, um an Ende der gleitenden oder nicht gleitenden Umgebung Code ausführen zu lassen.

Hinweis:

Das angekündigte Paket scrwfile wurde mangels Tester nicht integriert.