Das LaTeX-Paket scrlayer-notecolumn

Das Paket scrlayer-notecolumn nutzt KOMA-Scripts scrlayer, um bliebig viele Notizspalten bereit zu stellen. Notizspalten ähneln den Randspalten, die LaTeX mit Hilfe von \marginpar bereitstellt. Bei scrlayer-notecolumn sind diese jedoch nicht auf einen Rand beschränkt, sondern können beliebig auf der Seite definiert werden. Darüber hinaus werden Seitenumbrüche innerhalb der Notizspalten unterstützt.

Bis KOMA-Script v3.49.3 war scrlayer-notecolumn Teil von KOMA-Script selbst. Es ist weiterhin vom KOMA-Script-Paket scrlayer mindestens Version 3.33 abhängig. Entstanden ist das Paket als Beispiel für die Leistungsfähigkeit des Grundkonzepts von scrlayer. Es stellt damit in erster Linie ein Experiment oder eine Konzeptstudie dar. Ursprünglich war es nicht für den produktiven Einsatz gedacht, hat sich allerdings für diesen als durchaus nützlich erwiesen. Daher wurde es als eigenständiges Paket aus KOMA-Script ausgegliedert. Der Status hat allerdings kleinere Auswirkungen auf den Support. So ist nicht geplant, das Paket um weitere Möglichkeiten zu erweitern. Es ist allerdings durchaus gewünscht, dass andere die Ideen aus dem Paket aufgreifen, um erweiterte Fassungen davon zu entwickeln und bereit zu stellen.

Das Paket wird auf Codeberg gehostet. Weitere Informationen finden Sie im CTAN-Katalogeintrag.

Verwendung

Geladen wird das Paket wie üblich per:

\usepackage[<Optionen>]{scrlayer-notecolumn}

Dabei steht <Optionen> für eine oder mehrere der unter „Optionen“ genannten Optionen. Zusätzlich werden die Optionen von scrlayer unterstützt. Es ist also für die Angabe von Optionen für scrlayer nicht erforderlich jenes Paket zuvor explizit selbst zu laden.

Da das Paket auf die Verwendung eines mit scrlayer definierten Seitenstils angewiesen ist und nach dem Laden von scrlayer zunächst nur der Seitenstil empty ein solcher Seintenstil ist, wird empfohlen, zusätzlich das KOMA-Script-Paket scrlayer-scrpage oder das Paket scrlayer-fancyhdr zu laden und einen von diesen bereitgestellten Seitenstil zu nutzen. Bei scrlayer-scrpage ist das nach dem Laden jenes Pakets automatisch der Fall.

Optionen

Wie bereits erwähnt, unterstützt scrlayer-notecolumn alle Optionen von scrlayer. Darüber hinaus bietet es eigene Optionen:

autoclearnotecolumns
In der Voreinstellung hängt sich scrlayer-notecolumn in \clearpage (und damit auch in (\cleardoublepage) ein, um die Ausgabe bereits angelegter aber noch nicht ausgegebener Notizen zu erzwingen. Dazu werden ggf. weitere Seiten ohne Haupttext nur mit den Notizen ausgegeben. Mit Hilfe von autoclearnotecolumns=false kann dies jedoch unterbunden werden. In dem Fall ist der Anwender selbst dafür verantwortlich, dass beispielsweise am Ende des Dokuments keine Notizen verloren gehen. Der Anwender muss also an passender Stelle, beispielsweise unmittelbar vor \end{document}, \clearnotecolumns einfügen.
autoconvertpagestyles
Seit Version 0.4.4233 versucht scrlayer-notecolumn automatisch Seitenstile, die nicht mit Hilfe von scrlayer definiert wurden, in Seitenstile auf Basis von scrlayer umzudefinieren. Dies geschieht bei Auswahl des jeweiligen Seitenstils. Diese Möglichkeit ist experimentell aber gleichwohl in der Voreinstellung aktiv. Es kann mit autoconvertpagestyles=false deaktiviert werden. Dann werden allerdings auf den Seiten mit entsprechenden Seitenstilen keine Notizen mehr ausgegeben. Daher wird generell empfohlen, stattdessen nur Seitenstile zu verwenden, die mit Hilfe von scrlayer definiert wurden. In der Voreinstellung ist das beim Stil empty der Fall. Sehr einfach kann es mit Hilfe des KOMA-Script-Pakets scrlayer-scrpage erreicht werden. Für Anwender des Pakets fancyhdr gibt es das Paket scrlayer-fancyhdr.

Verwendung von Notizspalten

\makenote[<Name>]{<Notiz>}
Mit dieser Anweisung wird eine <Notiz> in die Notizspalte <Name> geschrieben. Wie dies über den Umweg eine Hilfsdatei funktioniert, ist der ausführlichen Anleitung zu entnehmen. Wie das optionale Argument [<Name>] weggelassen, so wird die vordefinierte Notizspalte marginpar verwendet. Es zu beachten, dass Befehle in <Notiz> bereits am Anlegen der Notiz expandiert werden. Das kann mit \protect verhindert werden. Für sogenannte zerbrechliche Befehle, ist das unbedingt erforderlich. Befehle, die mit \NewDocumentCommand oder \DeclareRobustCommand definiert wurden, sind automatisch robust, werden also erst bei Ausgabe der Notiz expandiert.
\makenote*[<Name>]{<Notiz>}
Durch Verwendung von \detokenize wird verhindert, dass Anweisungen in <Notiz> expandiert werden. Dies ist in vielen Fällen wünschenswert. Werden aber beispielsweise Zähler innerhalb von <Notiz> verwendet, so kann dies dazu führen, dass statt des Wertes beim Anlegen der Notiz, der Wert bei Ausgabe der Notiz verwendet oder verändert wird.
\syncwithnotecolumn[<Name>]
Es wird ein Synchronisationspunkt zwischen dem Haupttext und der Notizspalte <Name> gesetzt. Das bedeutet, dass ggf. zusätzlicher vertikaler Abstand im Haupttext eingefügt wird. Ohne das optionale Argument erfolgt die Synchronisation mit der vordefinierten Notizspalte marginpar. Durch Verwendung eines Synchronisationspunkts erhöht sich ggf. die Anzahl der benötigten LaTeX-Läufe.
\syncwithnotecolumns[<Namensliste>]
Es wird nicht nur ein Synchronisationspunkt zwischen dem Haupttext und allen in der <Namensliste> angegebenen Notizspalten gesetzt, die Notizspalten werden auch untereinander synchronisiert.
\clearnotecolumn[<Name>]
Die Ausgabe aller noch ausstehenden Notizen der angegebenen Notizspalte wird erzwungen. Soweit erforderlich werden dazu auch Seiten mit leerem Haupttext, aber mit dem Inhalt der Notizspalte ausgegeben. Auch der Inhalt anderer Notizspalten kann dabei ausgegeben werden, soweit er auf diese Seiten gehört. Ohne das optionale Argument werden die ausstehenden Notizen der vordefinierten Notizspalte marginpar ausgegeben.
\clearnotecolumns[<Namesliste>]
Die Ausgabe aller noch ausstehenden Notizen aller in der <Namensliste> angegebenen Notizspalten werden, wie bei \clearnotecolumn erklärt, ausgegeben. Ohne das optionale Argument werden automatisc die noch ausstehenden Notizen aller definierten Notizspalten ausgegeben.

Deklaration neuer Notizspalten

In der Voreinstellung ist nur die Notizspalte marginpar definiert. Diese ist weitgehend Dekungsgleich mit der von \marinpar verwendeten Randspalte. Auch \reversemarginpar und \normalmarginpar wird von ihr beachtet, allerdings nicht pro Notiz, sondern nur pro Seite.

\DeclareNoteColumn[<Liste der Einstellungen>]{<Name>}
Es wird eine Notizpalte <Name> entsprechend der <Liste der Einstellungen> definiert. Als Einstellungen stehen font=<Schriftattribute>, marginpar, normalmarginpar, reversemarginpar, position=<Abstand vom linken Rand>, width=<Breite> zur Verfügung. Näheres ist der ausführlichen Anleitung zu entnehmen.
\DeclareNewNoteColumn[<Liste der Einstellungen>]{<Name>}
Wie \DeclareNoteColumn mit dem Unterschied, dass wenn bereits eine Notizspalte <Name> existiert, ein Fehler ausgegeben wird. So kann verhindert werden, dass versehentlich eine bereits existierende Notizspalte mit anderen Einstellungen versehen wird.
\ProvideNoteColumn[<Liste der Einstellungen>]{<Name>}
Wie \DeclareNoteColumn mit dem Unterschied, dass wenn bereits eine Notizspalte <Name> existiert, die neuerliche Definition ignoriert wird.
\RedeclareNoteColumn[<Liste der Einstellungen>]{<Name>}
Wie \DeclareNoteColumn mit dem Unterschied, dass nur bereits existierende Notizspalten mit neuen Einstellungen versehen werden können. Existiert noch keine Notizspalte <Name>, so wird ein Fehler ausgegeben.

Beispiel

Ein Beispiel in Deutsch steht innerhalb des Pakets im Quelltext bereit. Das resultierende PDF ist üblicherweise über die CTAN-Release (siehe oben) ebenfalls zu finden.