From 9b219d1b664067729034647a4b37626cf2bf5e26 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 26 Dec 2013 23:18:36 +0000 Subject: koma-script (26dec13) git-svn-id: svn://tug.org/texlive/trunk@32489 c570f23f-e606-0410-a88d-b1316a301751 --- .../doc/ngerman/scrlayer-notecolumn.tex | 679 +++++++++++++++++++++ 1 file changed, 679 insertions(+) create mode 100644 Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlayer-notecolumn.tex (limited to 'Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlayer-notecolumn.tex') diff --git a/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlayer-notecolumn.tex b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlayer-notecolumn.tex new file mode 100644 index 00000000000..53918019fc7 --- /dev/null +++ b/Master/texmf-dist/source/latex/koma-script/doc/ngerman/scrlayer-notecolumn.tex @@ -0,0 +1,679 @@ +% ====================================================================== +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013 +% +% This file is part of the LaTeX2e KOMA-Script bundle. +% +% This work may be distributed and/or modified under the conditions of +% the LaTeX Project Public License, version 1.3c of the license. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3c or later is part of all distributions of LaTeX +% version 2005/12/01 or later and of this work. +% +% This work has the LPPL maintenance status "author-maintained". +% +% The Current Maintainer and author of this work is Markus Kohm. +% +% This work consists of all files listed in manifest.txt. +% ---------------------------------------------------------------------- +% scrlayer-notecolumn.tex +% Copyright (c) Markus Kohm, 2013 +% +% Dieses Werk darf nach den Bedingungen der LaTeX Project Public Lizenz, +% Version 1.3c, verteilt und/oder veraendert werden. +% Die neuste Version dieser Lizenz ist +% http://www.latex-project.org/lppl.txt +% und Version 1.3c ist Teil aller Verteilungen von LaTeX +% Version 2005/12/01 oder spaeter und dieses Werks. +% +% Dieses Werk hat den LPPL-Verwaltungs-Status "author-maintained" +% (allein durch den Autor verwaltet). +% +% Der Aktuelle Verwalter und Autor dieses Werkes ist Markus Kohm. +% +% Dieses Werk besteht aus den in manifest.txt aufgefuehrten Dateien. +% ====================================================================== +% +% Chapter about scrlayer-notecolumn of the KOMA-Script guide +% Maintained by Markus Kohm +% +% ---------------------------------------------------------------------- +% +% Kapitel über scrlayer-notecolumn in der KOMA-Script-Anleitung +% Verwaltet von Markus Kohm +% +% ============================================================================ + +\KOMAProvidesFile{scrlayer-notecolumn.tex}% + [$Date: 2013-10-16 16:24:20 +0200 (Mi, 16. Okt 2013) $ + KOMA-Script guide (chapter:scrlayer-notecolumn)] + +\chapter{Notizspalten mit \Package{scrlayer-notecolumn}} +\labelbase{scrlayer-notecolumn} + +\BeginIndex{Package}{scrlayer-notecolumn}% +Bis einschließlich Version~3.11b unterstützte \KOMAScript{} Notizspalten nur +in Form der Marginalienspalte, die mit \Macro{marginpar} und +\Macro{marginline} (siehe \autoref{sec:maincls.marginNotes}, +\autopageref{desc:maincls.cmd.marginline}) mit Inhalt versehen werden +können. Jene Art der Randnotizen hat allerdings einige Nachteile: +\begin{itemize} +\item Randnotizen können nur vollständig auf einer einzelnen Seite gesetzt + werden. Seitenumbrüche innerhalb von Randnotizen sind nicht möglich. Dies + führt teilweise dazu, dass die Randnotizen bis in den unteren Rand hinein + ragen. +\item Randnotizen in der Nähe des Seitenumbruchs können auf die nächste Seiten + rutschen und dort im Falle des doppelseitigen Layouts mit alternierenden + Marginalienspalten im falschen Rand ausgegeben werden. Dieses Problem ist + mit dem Zusatzpaket \Package{mparhack}\IndexPackage{mparhack} oder durch + Verwendung von \Macro{marginnote} aus dem Paket + \Package{marginnote}\IndexPackage{marginnote} lösbar. +\item Randnotizen innerhalb von Gleitumgebungen oder Fußnoten sind nicht + möglich. Auch dieses Problem ist mit \Package{marginnote} lösbar. +\item Es gibt nur eine Marginalienspalte oder, wenn mit + \Macro{reversemarginpar} und \Macro{normalmarginpar} gearbeitet wird, auch + zwei. +\end{itemize} +Die Verwendung von \Package{marginnote}\IndexPackage{marginnote} führt zu +einem weiteren Problem. Da das Paket keine Kollisionserkennung besitzt, können +sich Randnotizen, die in unmittelbarer Nähe veranlasst wurden, gegenseitig +ganz oder teilweise überdecken. Darüber hinaus führt \Macro{marginnote} je +nach den gewählten Einstellungen von \Package{marginnote} manchmal zu +Veränderungen beim Zeilenabstand des normalen Textes. + +Das Paket \Package{scrlayer-notecolumn} tritt an, all diese Probleme zu +lösen. Dazu stützt es sich auf die Grundfunktionalität von +\Package{scrlayer}\IndexPackage{scrlayer}. Damit einher geht jedoch auch ein +Nachteil:\textnote{Achtung!} Notizen können nur auf den Seiten ausgegeben +werden, die einen auf \Package{scrlayer} basierenden Seitenstil +besitzen. Dieser Nachteil lässt sich mit Hilfe von +\Package{scrlayer-scrpage}\IndexPackage{scrlayer-scrpage} jedoch leicht +auflösen oder sogar in einen Vorteil verwandeln. + + +\section{Hinweise zum Entwicklungsstand} +\label{sec:scrlayer-notecolumn.draft} + +Obwohl sich das Paket derzeit noch in einem recht frühen Entwicklungsstadium +befindet, ist die Stabilität von weiten Teilen weniger eine Frage von +\Package{scrlayer-notecolumn} als von \Package{scrlayer}. Dennoch ist davon +auszugehen, dass sich auch in \Package{scrlayer-notecolumn} noch Fehler +befinden. Es wird darum gebeten, diese bei Auffinden zu melden. Einige +\emph{Unzulänglichkeiten} des Pakets sind jedoch auch der Minimierung des +Aufwands geschuldet. So können Notizspalten zwar über Seiten hinweg umbrochen +werden, allerdings findet dabei kein neuerlicher Absatzumbruch statt. Dies ist +bei \TeX{} schlicht nicht vorgesehen. + +Da das Paket derzeit noch als experimentell gilt, findet sich die Anleitung +hier im zweiten Teil der \KOMAScript-Anleitung. Dementsprechend richtet sie +sich auch in erster Linie an erfahrene Anwender. Für Anfänger oder Anwender, +die sich bereits deutlich auf dem Weg zum \LaTeX-Experten befinden, mag +einiges in den nachfolgenden Erklärungen unklar oder gar unverständlich +sein. Ich bitte um Nachsicht, dass ich bei experimentellen Paketen den Aufwand +für die Anleitung halbwegs erträglich halten will. + +\section{Deklaration neuer Notizspalten} +\label{sec:scrlayer-notecolumn.declaration} + +Beim Laden des Pakets wird bereits automatisch eine Notizspalte namens +\PName{marginpar} deklariert. Wie der Name andeutet, liegt diese Notizspalte +auf der Marginalienspalte von \Macro{marginpar} und \Macro{marginline}. Dabei +werden auch \Macro{reversemarginpar} und \Macro{normalmarginpar} beachtet, +allerdings nicht für die einzelnen Notizen, sondern nur für die gesamten +Notizen einer Seite. Maßgeblich ist dabei die Einstellung, die am Ende der +Seite, nämlich bei der Ausgabe der Notizspalte gilt. Dies sind im Übrigen auch +die Voreinstellungen für alle neue deklarierten Notizspalten, soweit bei der +Deklaration nichts anderes angegeben wurde. + +Es ist zu beachten\textnote{Achtung!}, dass Notizspalten nur auf Seiten +ausgegeben werden, deren Seitenstil auf dem Paket +\Package{scrlayer}\IndexPackage{scrlayer} basiert. Das Paket +\Package{scrlayer} wird von \Package{scrlayer-notecolumn} automatisch geladen +und stellt in der Voreinstellung lediglich den Seitenstil +\Pagestyle{empty}\IndexPagestyle{empty} bereit. Werden weitere Seitenstile +benötigt, wird zusätzlich das Paket +\Package{scrlayer-scrpage}\IndexPackage{scrlayer-scrpage} empfohlen. + +\begin{Declaration} + \Macro{DeclareNoteColumn}% + \OParameter{Liste der Einstellungen}\Parameter{Name der Notizspalte}\\ + \Macro{DeclareNewNoteColumn}% + \OParameter{Liste der Einstellungen}\Parameter{Name der Notizspalte}\\ + \Macro{ProvideNoteColumn}% + \OParameter{Liste der Einstellungen}\Parameter{Name der Notizspalte}\\ + \Macro{RedeclareNoteColumn}% + \OParameter{Liste der Einstellungen}\Parameter{Name der Notizspalte}% +\end{Declaration} +\BeginIndex{Cmd}{DeclareNoteColumn}% +\BeginIndex{Cmd}{DeclareNewNoteColumn}% +\BeginIndex{Cmd}{ProvideNoteColumn}% +\BeginIndex{Cmd}{RedeclareNoteColumn}% +Mit Hilfe dieser Anweisungen können Notizspalten angelegt werden. Dabei +erzeugt \Macro{DeclareNoteColumn} die Notizspalte ungeachtet der Tatsache, ob +sie bereits existiert oder nicht, während \Macro{DeclareNewNoteColumn} einen +Fehler ausgibt, falls der \PName{Name der Notizspalte} bereits für eine andere +Notizspalte vergeben ist, und \Macro{ProvideNoteColumn} in eben diesem Fall +schlicht nichts tut. Mit \Macro{RedeclareNoteColumn} wiederum kann nur eine +bereits existierende Notiz-Spalte neu konfiguriert werden. + +Bei der Neukonfigurierung bereits existierender Notizspalten mit +\Macro{DeclareNoteColumn} oder \Macro{RedeclareNoteColumn} gehen im übrigen +die bereits erzeugten Notizen für diese Spalte nicht verloren, sondern bleiben +erhalten. + +\BeginIndex{FontElement}{notecolumn.\PName{Name der Notizspalte}}% +\BeginIndex{FontElement}{notecolumn.marginpar}% +Für neue Notizspalten wird immer ein Element zur Änderung der +Schriftattribute mit \Macro{setkomafont} und \Macro{addtokomafont} angelegt, +falls dieses noch nicht existiert. Als Name für das Element wird +\PValue{notecolumn.}\PName{Name der Notizspalte} verwendet. Dementsprechend +existiert für die vordefinierte Notizspalte \PValue{marginpar} das Element +\PValue{notecolumn.marginpar}. Die Voreinstellung kann bei der Deklaration +einer Notizspalte direkt über die Option \Option{font} innerhalb der +optionalen \PName{Liste der Einstellungen} angegeben werden.% +\EndIndex{FontElement}{notecolumn.marginpar}% +\EndIndex{FontElement}{notecolumn.\PName{Name der Notizspalte}}% + +Die \PName{Liste der Einstellungen} ist eine durch Komma separierte Liste von +Einstellungen oder Optionen. Die verfügbaren Optionen sind in +\autoref{tab:scrlayer-notecolumn.note.column.options} zu finden. Als +Voreinstellung ist \Option{marginpar} immer gesetzt, kann aber durch +individuelle Einstellungen überschrieben werden. + +\begin{desclist} + \desccaption{% + Mögliche Einstellungen für die Deklaration von Notizspalten% + \label{tab:scrlayer-notecolumn.note.column.options}% + }{% + Mögliche Einstellungen für die Deklaration von Notizspalten + (\emph{Fortsetzung})% + }% + \entry{\KOption{font}\PName{Schriftattribute}}{% + Einstellung der \PName{Schriftattribute} der Notizspalte mit Hilfe von + \Macro{setkomafont}. Für erlaubte Werte sei auf + \autoref{sec:maincls.textmarkup}, + \autopageref{desc:maincls.cmd.setkomafont} verwiesen.\par% + Voreinstellung: \emph{leer}% + }% + \entry{\Option{marginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \Macro{marginpar} entsprechen. Eine Umschaltung + zwischen \Macro{reversemarginpar}\IndexCmd{reversemarginpar} und + \Macro{normalmarginpar}\IndexCmd{normalmarginpar} wird immer nur am Ende + der Seite bei der Ausgabe der Notizspalte beachtet. Es wird darauf + hingewiesen, dass diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{ja} + }% + \entry{\Option{normalmarginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \Macro{marginpar} bei Einstellung + \Macro{normalmarginpar} entsprechen. Es wird darauf hingewiesen, dass + diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{nein} + }% + \entry{\KOption{position}\PName{Abstand}}{% + Die Notizspalte wird mit \PName{Abstand} vom linken Rand des Papiers + gesetzt. Dabei sind für \PName{Abstand} auch komplexe Ausdrücke gestattet, + solange diese voll expandierbar sind und zum Zeitpunkt der Ausgabe der + Notizspalte zu einer Länge oder zu einem Längenwert oder einem + Längenausdruck expandieren. Siehe \cite[Abschnitt~3.5]{manual:eTeX} für + weitere Informationen zu Längenausdrücken.\par% + Voreinstellung: \emph{durch Option \Option{marginpar}}% + }% + \entry{\KOption{width}\PName{Breite}}{% + Die Notizspalte wird mit der angegebenen Breite gesetzt. Dabei sind für + \PName{Breite} auch komplexe Ausdrücke gestattet, solange diese voll + expandierbar sind und zum Zeitpunkt der Ausgabe der Notizspalte zu einer + Länge oder einem Längenwert oder einem Längenausdruck expandieren. Siehe + \cite[Abschnitt~3.5]{manual:eTeX} für weitere Informationen zu + Längenausdrucken.\par% + Voreinstellung: \emph{durch Option \Option{marginpar}}% + }% + \entry{\Option{reversemarginpar}}{% + Position und Breite der Notizspalte werden so eingestellt, dass sie der + Marginalienspalte von \Macro{marginpar} bei Einstellung + \Macro{reversemarginpar} entsprechen. Es wird darauf hingewiesen, dass + diese Option kein Argument erwartet oder erlaubt.\par% + Voreinstellung: \emph{nein} + }% +\end{desclist} + +Da die Notizspalten mit Hilfe von \Package{scrlayer} definiert werden, wird +auch für jede Notizspalte eine Ebene angelegt. Als Name für diese Ebene wird +ebenfalls \PValue{notecolumn.}\PName{Name der Notizspalte} verwendet. Näheres +zu Ebenen ist \autoref{sec:scrlayer.layers} zu entnehmen.% +% +\begin{Example} + Angenommen Sie sind Professor für ulkiges Recht und wollen eine Abhandlung + über das neue »Gesetz über die ausgelassene Verbreitung allgemeiner Späße«, + kurz GüdaVaS, schreiben. Der Hauptaugenmerk soll dabei jeweils auf dem + Kommentar zu einzelnen Paragraphen liegen. Sie entscheiden sich für ein + zweispaltiges Layout, wobei der Kommentar in der Hauptspalte enthalten sein + soll und die Paragraphen jeweils klein\iffree{ und in Farbe}{} in einer + schmaleren Notizspalte rechts daneben. +\begin{lstcode} + \documentclass{scrartcl} + \usepackage[ngerman]{babel} + \usepackage{selinput} + \SelectInputMappings{ + adieresis={ä}, + germandbls={ß}, + } + \usepackage[T1]{fontenc} + \usepackage{lmodern} + \usepackage{xcolor} + + \usepackage{scrjura} + \setkomafont{contract.Paragraph}{\bfseries} + \setkeys{contract}{preskip=-\dp\strutbox} + + \usepackage{scrlayer-scrpage} + \usepackage{scrlayer-notecolumn} + + \newlength{\paragraphscolwidth} + \AfterCalculatingTypearea{% + \setlength{\paragraphscolwidth}{.333\textwidth}% + \addtolength{\paragraphscolwidth}{-\marginparsep}% + } + \recalctypearea + \DeclareNewNoteColumn[% + position=\oddsidemargin+1in + +.667\textwidth + +\marginparsep, + width=\paragraphscolwidth, + font=\raggedright\footnotesize + \color{blue} + ]{paragraphs} +\end{lstcode} + Es wird ein einseitiger Artikel verfasst. Dazu wird die Sprache mit Hilfe + des \Package{babel}\IndexPackage{babel}-Pakets auf Deutsch (neue + Rechtschreibung) festgelegt. Die Eingabecodierung wird mit Hilfe von + \Package{selinput}\IndexPackage{selinput} automatisch bestimmt. Als Schrift + wird Latin Modern in 8-Bit-Codierung verwendet.\iffree{ Für die + Farbeinstellungen wird das Paket \Package{xcolor}\IndexPackage{xcolor} + genutzt.}{} + + Bezüglich des Setzens von Gesetzestexten mit \Package{scrjura} sei auf + \iffree{dessen Anleitung}{\autoref{cha:scrjura}} verwiesen. + + Da ein Seitenstil mit Seitenzahl verwendet werden soll, wird das Paket + \Package{scrlayer-scrpage} verwendet. Somit können Notizspalten auf allen + Seiten ausgegeben werden. + + Dann wird das Paket \Package{scrlayer-notecolumn} für die Notizspalten + geladen. Die gewünschte Breite der Notizspalte wird über + \Macro{AfterCalculatingTypearea} nach jeder etwaigen Neuberechnung des + Satzspiegels neu berechnet. Sie soll jeweils ein Drittel der + Satzspiegelbreite betragen, wobei der Abstand zwischen Text und Notizspalte + zu Lasten der Notizspalte geht. + + Mit dieser Information kann dann die neue Notizspalte definiert werden. Bei + der Festlegung der Position wird ein einfacher Längenausdruck genutzt. Dabei + ist zu beachten, dass \Length{oddsidemargin} nicht der gesamte linke Rand + ist, sondern aus historischen Gründen der linke Rand abzüglich + 1\Unit{inch}. Daher muss dieser Wert noch hinzugezählt werden. + + Damit ist die Deklaration abgeschlossen. Es ist zu beachten, dass die + Notizspalte bisher im Textbereich ausgegeben wird. Die Notizspalte würde + also den Text überschreiben. + +\begin{lstcode} + \begin{document} + + \title{Kommentar zum GüdaVaS} + \author{Professor R. O. Tenase} + \date{11.\,11.~2011} + \maketitle + \tableofcontents + + \section{Vormerkung} + Das GüdaVaS ist ohne jeden Zweifel das wichtigste Gesetz, das in + Spaßmanien in den letzten eintausend Jahren verabschiedet wurde. + Die erste Lesung fand bereits am 11.\,11.~1111 im obersten + spaßmanischen Kongress statt, wurde aber vom damalige Spaßvesier + abgelehnt. Erst nach Umwandlung der spaßmanischen, aberwitzigen + Monarchie in eine repräsentative, witzige Monarchie durch W. Itzbold, + den Urkomischen, am 9.\,9.~1999 war der Weg für dieses Gesetz + endlich frei. +\end{lstcode} + Dadurch, dass der Textbereich nicht verkleinert wurde, wird hier der ganze + Vorspann über die Gesamtbreite ausgegeben. Um das Beispiel zu testen, können + Sie vorübergehend +\begin{lstcode} + \end{document} +\end{lstcode} + ergänzen. +\end{Example} +% +Offen blieb in diesem Beispiel die Frage, wie dann aber der Text für den +Kommentar schmaler gesetzt werden kann. Dies werden Sie bei der Fortsetzung +des Beispiels erfahren.% +\EndIndex{Cmd}{RedeclareNoteColumn}% +\EndIndex{Cmd}{ProvideNoteColumn}% +\EndIndex{Cmd}{DeclareNewNoteColumn}% +\EndIndex{Cmd}{DeclareNoteColumn}% + +\section{Erstellen einer Notiz} +\label{sec:scrlayer-notecolumn.makenote} + +Nachdem eine Notizspalte deklariert wurde, können Notizen für diese Spalte +erstellt werden. Diese Notizen werden allerdings nicht unmittelbar ausgegeben, +sondern zunächst nur in eine Hilfsdatei mit Endung »\File{.slnc}« +geschrieben.\footnote{Ganz genau werden die Notizen sogar zunächst in die + \File{aux}-Datei geschrieben und erst beim Lesen der \File{aux}-Datei + innerhalb von \Macro{end}\PParameter{document} in die \File{slnc}-Datei + übertragen. Dabei wird gegebenenfalls auch die Einstellung \Macro{nofiles} + beachtet.} % +Beim nächsten \LaTeX-Lauf wird diese Hilfsdatei dann Stück für Stück je nach +Fortschritt des Dokuments wieder eingelesen und am Ende der Seite die Notizen +für die jeweilige Seite ausgegeben. + +Es ist jedoch zu beachten\textnote{Achtung!}, dass Notizspalten nur auf Seiten +ausgegeben werden, deren Seitenstil auf dem Paket +\Package{scrlayer}\IndexPackage{scrlayer} basiert. Das Paket +\Package{scrlayer} wird von \Package{scrlayer-notecolumn} automatisch geladen +und stellt in der Voreinstellung lediglich den Seitenstil +\Pagestyle{empty}\IndexPagestyle{empty} bereit. Werden weitere Seitenstile +benötigt, wird zusätzlich das Paket +\Package{scrlayer-scrpage}\IndexPackage{scrlayer-scrpage} empfohlen. + +\begin{Declaration} + \Macro{makenote}\OParameter{Name der Notizspalte}\Parameter{Notiz} +\end{Declaration} +\BeginIndex{Cmd}{makenote}% +Mit Hilfe dieser Anweisung kann eine \PName{Notiz} erstellt werden. Dabei wird +die aktuelle vertikale Position als vertikale Position für den Anfang der +\PName{Notiz} verwendet. Die horizontale Position für die Notiz ergibt sich +aus der definierten Position der Notizspalte. Für die korrekte Funktion ist +das Paket dabei auf \Macro{pdfsavepos}, \Macro{pdflastypos} und +\Macro{pdfpageheight} angewiesen. Ohne diese Befehle funktioniert +\Package{scrlayer-notecolumn} nicht. Dabei wird außerdem davon ausgegangen, +dass die genannten Primitiven exakt die Ergebnisse von PDF\TeX{} liefern. + +Wird allerdings bei der Ausgabe der \PName{Notiz} eine Kollision mit einer +früheren Notiz in derselben Notizspalte erkannt, so wird die \PName{Notiz} bis +unter diese frühere Notiz verschoben. Passt die \PName{Notiz} nicht mehr auf +die Seite, so wird sie ganz oder teilweise auf die nächste Seite umbrochen. + +Für welche Notizspalte die \PName{Notiz} erstellt werden soll, wird über das +optionale Argument \PName{Name der Notizspalte} bestimmt. Ist kein optionales +Argument angegeben, so wird die vordefinierte Notizspalte \PValue{marginpar} +verwendet.% +\begin{Example} + Fügen wir nun dem Beispiel aus dem vorherigen Abschnitt einen kommentierten + Paragraphen hinzu, wobei der Paragraph selbst in der neu definierten + Notizspalte gesetzt werden soll. +\begin{lstcode} + \section{Analyse} + \begin{addmargin}[0pt]{.333\textwidth} + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Paragraph{title={Kein Witz ohne Publikum}} + Ein Witz kann nur dort witzig sein, wo er auf ein Publikum + trifft. + \protect\end{contract} + } + Dies ist eine der zentralsten Aussagen des Gesetzes. Sie ist derart + elementar, dass es durchaus angebracht ist, sich vor der Weisheit der + Verfasser zu verbeugen. +\end{lstcode} + Die in \autoref{sec:maincls.lists}, \autopageref{desc:maincls.env.addmargin} + dokumentierte Umgebung wird genutzt, um den Haupttext in der Breite um die + Spalte für die Paragraphen zu vermindern. Hier ist auch eines der wenigen + Probleme bei Verwendung von \Macro{makenote} zu erkennen. Da das + obligatorische Argument in Dateien geschrieben wird, können Befehle + innerhalb des Arguments leider \emph{zerbrechen}. Um das zu verhindern, wird + empfohlen, vor alle Befehle ein \Macro{protect} zu setzen. Anderenfalls kann + die Verwendung von Befehlen innerhalb dieses Arguments zu Fehlermeldungen + führen. + + Prinzipiell könnten Sie das Beispiel nun bereits mit +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + beenden, wenn Sie ein Ergebnis sehen wollen. +\end{Example}% +Wenn Sie das Beispiel testen, werden Sie feststellen, dass die Gesetzes-Spalte +tiefer hinunter reicht als der Kommentartext. Wenn Sie zwecks Übung einen +weiteren Abschnitt mit einem weiteren Paragraphen hinzufügen, ergibt sich +eventuell das Problem, dass der Kommentar nicht unterhalb des Gesetzestextes, +sondern direkt im Anschluss an den bisherigen Kommentar fortgesetzt wird. Eine +Lösung für dieses Problem, werden Sie gleich kennenlernen.% +\EndIndex{Cmd}{makenote}% + +\begin{Declaration} + \Macro{syncwithnotecolumn}\OParameter{Name der Notizspalte} +\end{Declaration} +\BeginIndex{Cmd}{syncwithnotecolumn}% +Mit Hilfe dieser Anweisung wird in einer Notizspalte und im Haupttext des +Dokumente je ein Synchronisierungspunkt erstellt. Wann immer bei der Ausgabe +einer Notizspalte oder des Haupttextes ein solcher Synchronisierungspunkt +erreicht wird, wird eine Marke angelegt, deren Inhalt die aktuelle Seite und +die aktuelle vertikale Position ist. + +Parallel zum Erstellen der Synchronisierungspunkte, wird ermittelt, ob in +der Notizspalte und im Haupttext beim letzten \LaTeX-Lauf eine Marke angelegt +wurde. Falls das der Fall ist, werden deren Werte miteinander +verglichen. Liegt die Marke der Notizspalte tiefer auf der Seite oder auf +einer späteren Seite, so wird im Haupttext bis zu der Stelle der Notizspalte +vorgerückt. + +In der Regel sollten Synchronisierungspunkte nicht innerhalb eines Absatzes +des Haupttextes, sondern nur zwischen diesen gesetzt werden. Wird +\Macro{syncwithnotecolumn} dennoch innerhalb eines Absatzes verwendet, so +wird der Synchronisierungspunkt im Haupttext tatsächlich erst nach der +aktuellen Zeile eingefügt. In dieser Hinsicht ähnelt +\Macro{syncwithnotecolumn} also beispielsweise \Macro{vspace}. + +Dadurch, dass Synchronisierungspunkte in den Notizspalten erst beim nächsten +\LaTeX-Lauf erkannt werden, benötigt der Mechanismus mindestens drei +\LaTeX-Läufe. Aus jeder neuen Synchronisierung können sich außerdem +Verschiebungen für spätere Synchronisierungspunkte ergeben, was wiederum die +Notwendigkeit weiterer \LaTeX-Läufe nach sich zieht. Zu erkennen +sind solche Verschiebungen in der Regel an der Meldung: »\LaTeX{} +Warning: Label(s) may have changed. Rerun to get cross-references right.« Aber +auch Meldungen über undefinierte \emph{Labels} können auf die Notwendigkeit +eines weiteren \LaTeX-Laufs hinweisen. + +Wird das optionale Argument nicht angegeben\footnote{Es sei an dieser Stelle + darauf hingewiesen, dass ein leeres optionales Argument nicht + gleichbedeutend mit dem Weglassen eines optionalen Arguments ist!}, so wird +an seiner Stelle \PValue{marginpar}, also die vordefinierte Notizspalte +verwendet. + +Es ist nicht erlaubt \Macro{syncwithnotecolumn} innerhalb einer Notiz selbst, +also im obligatorischen Argument von \Macro{makenote}\IndexCmd{makenote} zu +verwenden! Dieser Fehler kann derzeit nicht abgefangen werden und führt dazu, +dass mit jedem \LaTeX-Lauf neue Verschiebungen auftreten, so dass nie ein +endgültiger Zustand erreicht wird. Um zwei oder mehrere Notizspalten +miteinander zu synchronisieren, sind diese stattdessen mit dem Haupttext zu +synchronisieren, da dabei auch die Spalten miteinander synchronisiert +werden. Die hierzu empfohlene Anweisung wird nachfolgend beschrieben.% +% +\begin{Example} + Führen wir nun das obige Beispiel fort, indem wir zunächst einen + Synchronisationspunkt und dann einen weiteren Paragraphen + mit Kommentar hinzufügen: +\begin{lstcode} + \syncwithnotecolumn[paragraphs]\bigskip + \makenote[paragraphs]{% + \protect\begin{contract} + \protect\Paragraph{title={Komik der Kultur}} + \setcounter{par}{0}% + Die Komik eines Witzes kann durch das kulturelle + Umfeld, in dem er erzählt wird, bestimmt sein. + + Die Komik eines Witzes kann durch das kulturelle Umfeld, + in dem er spielt, bestimmt sein. + \protect\end{contract} + } + Die kulturelle Komponente eines Witzes ist tatsächlich nicht zu + vernachlässigen. Über die politische Korrektheit der Nutzung des + kulturellen Umfeldes kann zwar trefflich gestritten werden, + nichtsdestotrotz ist die Treffsicherheit einer solchen Komik im + entsprechendem Umfeld frappierend. Auf der anderen Seite kann ein + vermeintlicher Witz im falschen kulturellen Umfeld auch zu einer + echten Gefahr für den Witzeerzähler werden. +\end{lstcode} + Außer dem Synchronisationspunkt wurde hier auch noch ein vertikaler + Abstand mit \Macro{bigskip} eingefügt, um die einzelnen Paragraphen und ihre + Kommentare besser voneinander abzusetzen. + + Außerdem wird hier ein weiterer Punkt, der zu einem Problem werden kann, + sichtbar. Da die Notizspalten mit Boxen arbeiten, die zusammengebaut und + zerlegt werden, kann es bei Zählern innerhalb der Notizspalten teilweise zu + Verschiebungen kommen. Im Beispiel würde daher der erste Absatz nicht mit 1, + sondern mit 2 nummeriert. Dies kann jedoch mit einem beherzten Zurücksetzen + des entsprechenden Zählers leicht korrigiert werden. + + Das Beispiel ist damit fast fertig, was noch fehlt, ist das Ende der + Umgebungen: +\begin{lstcode} + \end{addmargin} + \end{document} +\end{lstcode} + Tatsächlich wären natürlich auch noch die restlichen Paragraphen des + Gesetztes zu kommentieren. Dies sei mir hier jedoch erlassen. +\end{Example}% +Doch halt! Was wäre, wenn in diesem Beispiel der Paragraph nicht mehr auf die +Seiten passen würde? Würde er dann auf der nächsten Seite ausgegeben? Diese +Frage wird im nächsten Abschnitt beantwortet werden. +\EndIndex{Cmd}{syncwithnotecolumn}% + +\begin{Declaration} + \Macro{syncwithnotecolumns}\OParameter{Liste von Notizspalte-Namen} +\end{Declaration} +\BeginIndex{Cmd}{syncwithnotecolumns}% +Diese Anweisung führt eine Synchronisierung des Haupttextes mit allen in der +mit Komma separierten \PName{Liste von Notizspalten-Namen} durch. Dabei wird +der Haupttext mit der Notizspalte synchronisiert, deren Marke am weitesten +hinten im Dokument steht. Somit werden als Nebeneffekt auch die Notizspalten +untereinander synchronisiert. + +Wird das optionale Argument nicht angegeben oder ist es leer (oder beginnt es +mit \Macro{relax}), so wird mit allen deklarierten Notizspalten +synchronisiert.% +\EndIndex{Cmd}{syncwithnotecolumns}% + + +\section{Erzwungene Ausgabe von Notizspalten} +\label{sec:scrlayer-notecolumn.clearnotes} + +Neben der normalen Ausgabe der Notizspalten, wie sie in +\autoref{sec:scrlayer-notecolumn.makenote} beschrieben ist, ist es manchmal +auch erforderlich alle aufgesammelten Notizen, die noch nicht ausgegeben +wurden, auszugeben. Das ist insbesondere dann sinnvoll, wenn längere Notizen +dazu führen, dass immer mehr Notizen nach unten und auf neue Seiten verschoben +werden. Ein guter Zeitpunkt für eine solche erzwungene Ausgabe ist +beispielsweise das Ende eines Kapitels oder das Ende des Dokuments. + +\begin{Declaration} + \Macro{clearnotecolum}\OParameter{Name der Notizspalte} +\end{Declaration} +\BeginIndex{Cmd}{clearnotecolumn}% +Mit dieser Anweisung werden alle Notizen einer bestimmen Notizspalte +ausgegeben, die bis zum Ende der aktuellen Seite noch nicht ausgegeben sind, +aber auf dieser oder einer vorherigen Seite erstellt wurden. Zur Ausgabe +dieser noch anhängigen Notizen werden nach Bedarf Leerseiten erstellt. Während +der Ausgabe der anhängigen Notizen dieser Notizspalte werden gegebenenfalls +auch anhängige Notizen anderer Notizspalten ausgegeben, jedoch nur so lange, +wie dies zu Ausgabe der anhängigen Notizen der angegebenen Notizspalte +notwendig ist. + +Während der Ausgabe der anhängigen Notizen kann es auch geschehen, dass +irrtümlich Notizen ausgegeben werden, die im vorherigen \LaTeX-Lauf auf den +Seiten erstellt wurden, die nun durch die eingefügten Leerseiten ersetzt +werden. Dies normalisiert sich in einem der nächsten \LaTeX-Läufe. Zu erkennen +sind solche Verschiebungen in der Regel an der Meldung: »\LaTeX{} +Warning: Label(s) may have changed. Rerun to get cross-references right.« + +Die Notizspalte, deren anhängige Notizen ausgegeben werden soll, ist über das +optionale Argument, \PName{Name der Notizspalte}, angegeben. Ist kein solches +Argument angegeben, so wird die vordefinierte Notizspalte \PValue{marginpar} +verwendet. + +Dem aufmerksamen Leser wird nicht entgangen sein, dass die erzwungene Ausgabe +einer Notizspalte der Synchronisierung nicht unähnlich ist. Allerdings +befindet man sich nach der erzwungenen Ausgabe im Fall, dass tatsächlich eine +Ausgabe stattfindet, am Anfang der Seite nach der letzten Ausgabe und nicht +unmittelbar unterhalb der letzten Ausgabe. Dafür terminiert die erzwungene +Ausgabe in der Regel mit weniger \LaTeX-Läufen.% +\EndIndex{Cmd}{clearnotecolumn}% + +\begin{Declaration} + \Macro{clearnotecolumns}\OParameter{Liste von Notizspalten-Namen} +\end{Declaration} +\BeginIndex{Cmd}{clearnotecolumns}% +Diese Anweisung arbeitet vergleichbar mit \Macro{clearnotecolumn}. Allerdings +kann hier als optionales Argument nicht nur eine Notizspalte angegeben werden, +sondern es ist eine durch Komma getrennte Liste mehrere Namen von +Notizspalten erlaubt. Es werden dann die anhängigen Notizen all dieser Spalten +ausgegeben. + +Wurde das optionale Argument nicht angegeben oder ist es leer, so werden die +anhängigen Notizen aller Notizspalten ausgegeben.% +\EndIndex{Cmd}{clearnotecolumns}% + +\begin{Declaration} + \KOption{autoclearnotecolumns}\PName{Ein-Aus-Schalter} +\end{Declaration} +\BeginIndex{Option}{autoclearnotecolumns}% +In der Regel wird man anhängige Notizen immer dann ausgeben lassen, wenn im +Dokument explizit oder implizit -- beispielsweise in Folge von \Macro{chapter} +-- die Anweisung \Macro{clearpage} ausgeführt wird. Dies ist auch am Ende +eines Dokuments innerhalb von \Macro{end}\PParameter{document} der Fall. Über +Option \Option{autoclearnotecolumns} kann daher gesteuert werden, ob bei +Ausführung von \Macro{clearpage} automatisch auch \Macro{clearnotecolumns} +ohne Argument ausgeführt werden soll. + +Da davon ausgegangen wird, dass dies in der Regel erwünscht ist, ist die +Option in der Voreinstellung aktiv. Man kann sie jedoch über die +entsprechenden Werte für einfache Schalter (siehe +\autoref{tab:truefalseswitch} auf \autopageref{tab:truefalseswitch}) jederzeit +aus- und auch wieder einschalten. + +Es ist zu beachten, dass im Falle der Deaktivierung der automatischen Ausgabe +anhängiger Notizen am Ende des Dokument Notizen ganz oder teilweise verloren +gehen können. Daher sollte man in diesem Fall vor +\Macro{end}\PParameter{document} sicherheitshalber ein +\Macro{clearnotecolumns} einfügen. + +Damit ist nun auch die Frage nach dem Beispiel im letzten Abschnitt +beantwortet, ob der Paragraph auch komplett ausgegeben würde, wenn er auf die +nächste Seite umbrochen werden müsste. Dies ist in der Voreinstellung +selbstverständlich der Fall. Da es jedoch nach dem Ende der +\Environment{addmargin}-Umgebung geschehen würde, könnte es eventuell noch +zu Überlappungen durch nachfolgenden Text kommen. Daher wäre es im Beispiel +durchaus sinnvoll nach der \Environment{addmargin}-Umgebung einen weiteren +Synchronisationspunkt einzufügen. + +Das Ergebnis des Beispiels ist übrigens in +\autoref{fig:scrlayer-notecolumn.example} zu sehen. + +\begin{figure} + \KOMAoptions{captions=bottombeside}% + \setcapindent{0pt}% + \begin{captionbeside}[{Eine Ergebnisseite zu dem Beispiel in + \autoref{cha:scrlayer-notecolumn}}]{Eine Ergebnisseite zu dem Beispiel + aus diesem Kapitel\label{fig:scrlayer-notecolumn.example}}[l] + \frame{\includegraphics[width=.5\textwidth,keepaspectratio]% + {scrlayer-notecolumn-example}} + \end{captionbeside} +\end{figure} +\EndIndex{Option}{autoclearnotecolumns}% +% +\EndIndex{Package}{scrlayer-notecolumn}% + +%%% Local Variables: +%%% mode: latex +%%% mode: flyspell +%%% coding: iso-latin-1 +%%% ispell-local-dictionary: "de_DE" +%%% TeX-master: "scrlayer-de.tex" +%%% TeX-PDF-mode: t +%%% End: + +% LocalWords: Randnotizen Entwicklungsstadium Notizspalte Notizspalten +% LocalWords: Neukonfigurierung Synchronisierungspunkt -- cgit v1.2.3