X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fde%2Fuser%2Fspacing.itely;h=950ea30ad8401e8c9ac81335105c16d4fc6f8326;hb=b97565a9af1c13369ac7e7e9ea80c2638dbc0e51;hp=0f84453c409847afb0a42648122812fd8cdb8317;hpb=a012bb5a590d068d1cf13e4397a0273a80abeda7;p=lilypond.git diff --git a/Documentation/de/user/spacing.itely b/Documentation/de/user/spacing.itely index 0f84453c40..950ea30ad8 100644 --- a/Documentation/de/user/spacing.itely +++ b/Documentation/de/user/spacing.itely @@ -1,7 +1,7 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @c This file is part of lilypond.tely @ignore - Translation of GIT committish: 5395f0433b4f09b18360118a23227a4a3cef8e72 + Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d When revising a translation, copy the HEAD committish of the version that you are working on. See TRANSLATION for details. @@ -9,11 +9,35 @@ @c \version "2.12.0" + @node Spacing issues @chapter Spacing issues -@untranslated - +Das finale Layout der Seite wird von drei Faktoren bestimmt: dem Layout +der Seite, den Zeilenumbrüchen und der Platzverteilung. Jeder Faktor +beeinflusst auch die anderen mit. Die Wahl der Platzverteilung +entscheidet, wie eng die Notensysteme gesetzt werden. Das wiederum +hat Einfluss auf die gewählten Zeilenumbrüche und letztendlich also +auch darauf, wieviele Seiten ein Stück beansprucht. + +Die Verteilung der Musik auf der Seite geschieht grob gesagt in +vier Schritten. Zuerst werden flexible Entfernungen (@qq{springs}) +gewählt, die auf den Notendauern basieren. Alle möglichen +Zeilenumbrüche werden getestet und ein @qq{Schlechtigkeitsscore} +für die Umbrüche erstellt. Danach wird die mögliche Höhe eines Systems +ermittelt und schließlich wird eine bestimmte Kombination aus +Seiten- und Zeilenumbruch ausgewählt, sodass weder die horizontale +noch die vertikale Platzverteilung zu eng oder zu weit gesetzt wird. + +Einstellungen, die das Layout beeinflussen, können in zwei Umgebungen +gesetzt werden: Die @code{\paper @{...@}}-Umgebung wird außerhalb einer +@code{\score @{...@}}-Umgebung geschrieben und enthält Einstellungen, +die für das gesamte Dokument gelten. Die @code{\layout @{...@}}-Umgebung +wird innerhalb von einer @code{\score @{...@}}-Umgebung notiert und +enthält die Einstellungen für eine bestimmte Partitur. Wenn Sie +nur eine @code{\score @{...@}}-Umgebung in der Datei haben, haben +beide Umgebungen den gleichen Effekt. Die Befehle, die in diesem Abschnitt +erklärt werden, können in beiden Umgebungen nach Bedarf gesetzt werden. @menu * Paper and pages:: @@ -24,252 +48,2582 @@ * Fitting music onto fewer pages:: @end menu -@node Paper and pages -@section Paper and pages -@untranslated +@node Paper and pages +@section Paper and pages + +Dieser Abschnitt behandelt die Grenzen, die Notationsgebiete +definieren. + +@menu +* Paper size:: +* Page formatting:: +@end menu + + +@node Paper size +@subsection Paper size + +@cindex Papiergröße +@cindex Größe, Papier +@cindex Seitegröße +@cindex Größe, Seite + +Zwei Funktionen ermöglichen es, die Papiergröße zu ändern: +@code{set-default-paper-size} und @code{set-paper-size}. +@code{set-default-paper-size} muss auf der obersten Ebene in +der Quelldatei gesetzt werden, @code{set-paper-size} hingegegen +muss sich in einer @code{\paper}-Umgebung befinden: + +@example +#(set-default-paper-size "a4") +@end example + +@example +\paper @{ + #(set-paper-size "a4") +@} +@end example + +@noindent +@code{set-default-paper-size} bestimmt die Größe aller Seiten, während +@code{set-paper-size} nur die Seitengröße für die Seiten definiert, +auf die sich die aktuelle @code{\paper}-Umgebung bezieht. Wenn die +@code{\paper}-Umgebung auf der höchsten Ebene steht, bezieht sich die +Papiergröße auf alle Seiten, wenn sie aber innerhalb einer +@code{\book}-Umgebung definiert wird, nur auf die Seiten innerhalb +dieses Buches. + +Die normalen Papierformate sind definiert, u.A. @code{a4}, +@code{letter}, @code{legal} und @code{11x17} (auch als +Tabloit bekannt). Sehr viel mehr Formate sind unterstützt. +Einzelheiten finden sich in der Datei +@file{scm/@/paper@/.scm} in der Definition von +@code{paper-alist}. + +@warning{Das Standardformat ist @code{a4}.} + +Weitere Papierformate können hinzugefügt werden, indem die +Definition von @code{paper-alist} in der Datei +@file{scm/@/paper@/.scm} verändert wird. Derartige +Änderungen werden jedoch bei einer Aktualisierung des +Programmes überschrieben. + +@cindex Ausrichtung, Papier +@cindex Papier, Ausrichtung +@cindex hochkant, Papier +@cindex quer, Papier + +@funindex landscape + +Wenn das Symbol @code{'landscape} als Argument an die Funktion +@code{set-default-paper-size}gehänt wird, werden die Seiten um +90° gedreht und die Notensysteme entsprechend breiter gesetzt. + +@example +#(set-default-paper-size "a6" 'landscape) +@end example + +Wenn man die Seitengröße setzt, werden einige Variablen der +@code{\paper}-Umgebung verändert, wie etwa Seitenränder. Um +eine bestimmte Papiergröße mit veränderten @code{\paper}-Variablen +zubenuttzen, muss die Papiergröße definiert werden, bevor diese +Variablen neu gesetzt werden. + + +@seealso +Installierte Dateien: +@file{scm/@/paper@/.scm}. + +Schnipsel: +@rlsr{Spacing}. + + +@node Page formatting +@subsection Page formatting + +Ränder, Kopf- und Fußzeilen und andere Layoutvariablen werden +entsprechend dem Papierformat automatisch gesetzt. + +Dieser Abschnitt zeigt einige der Papiervariablen, die geändert +werden können. + +@menu +* Vertical dimensions:: +* Horizontal dimensions:: +* Other layout variables:: +@end menu + + +@node Vertical dimensions +@unnumberedsubsubsec Vertical dimensions + +Diese Variablen werden benutzt um andere vertikale Verhältnisse +auf einer Seite zu produzieren: + +@funindex \paper +@funindex after-title-space +@funindex before-title-space +@funindex between-system-padding +@funindex between-system-space +@funindex between-title-space +@funindex bottom-margin +@funindex foot-separation +@funindex head-separation +@funindex page-top-space +@funindex paper-height +@funindex top-margin + +@table @code + +@item after-title-space + +Die Größe des Abstands zwischen der Überschrift und dem ersten +Notensystem. Standard: @code{5\mm}. + +@item before-title-space + +Die Größe des Abstands zwischen dem letzten Notensystem einer +Partitur und dem Titel der nächsten Partitur. Standard: @code{10\mm}. + +@item between-system-padding + +Der Mindestabstand zwischen dem untersten Symbol in einem Notensystem +und dem obersten Symbol im sich darunter befindlichen System. +Standard: @code{4\mm}. + +Wenn dieser Wert erhöht wird, werden Systeme, deren @qq{bounding box} +sich beinahe berühren, weiter auseinander gezogen. + +@item between-system-space + +Der Abstand zwischen Systemen. Das ist der ideale Abstand zwischen +der Mitte des eines Systems (bzw. des untersten Systems einer Systemgruppe) +und der Mitte des nächsten Systems (bzw. des obersten System der +nächsten Systemgruppe). Standard: @code{20\mm}. + +Wenn dieser Wert erhöhrt wird, erscheinen die Noten auf der Seite gleichmäßiger, +wobei sie aber auch mehr Platz einnehmen. + +@item between-title-space + +Der Abstand zwischen aufeinanderfolgenden Überschriften (etwa die +Überschrift für ein @code{book} und die Überschrift einer Partitur. +Standard: @code{2\mm}. + +@item bottom-margin + +Der Rand zwischen der Fußzeile und dem unteren Rand der Seite. +Standard: @code{6\mm}. + +@item foot-separation + +Der Abstand zwischen dem untersten Notensystem und der Fußzeile. +Standard: @code{4\mm}. + +@item head-separation + +Der Abstand zwischen dem obersten System und der Kopfzeile. Standard: +@code{4\mm}. + +@item page-top-space + +Der Abstand von der Oberkante des druckbaren Bereichs bis zur +Mitte des ersten Notensystems. Das funktioniert nur für Systeme, +die nicht vertikal ausgedehnt sind. Hohe Systeme bzw. Systemgruppen +werden mit ihrer @qq{bounding box} an der Oberkante des +druckbaren Bereichs ausgerichtet. Standard: @code{12\mm}. + +@item paper-height + +Die Höhe der Seite. Standard: Die Höhe des aktuellen Papierformats. +Zu Einzelheiten siehe @ref{Paper size}. + +@item top-margin + +Der Rand zwischen der Kopfzeile und dem oberen Rand der Seite. Standard: +@code{5\mm}. + +@end table + + +@snippets + +Kopf- und Fußzeile werden von den Funktionen @code{make-footer} und +@code{make-header} erstellt, welche in der @code{\paper}-Umgebung definiert +werden. Die Standardeinstellungen sind in den Dateien +@file{ly/paper-defaults.ly} und @code{ly/titling-init.ly} dargestellt. + +Das Seitenlayout wird durch zwei Funktionen der @code{\paper}-Umgebung +bestimmt: @code{page-music-height} und @code{page-make-stencil}. Die erste +teilt dem Zeilenumbruchsalgorithmus mit, wieviel Platz auf einer Seite +belegt werden kann, die zweite hingegegen erstellt die konkrete Seite, +nachdem sie die Systeme entgegengenommen hat, die auf der Seite platziert +werden sollen. + +Beispiel: + +@example +\paper@{ + paper-width = 2\cm + top-margin = 3\cm + bottom-margin = 3\cm + ragged-last-bottom = ##t +@} +@end example + +Das nächste Beispiel zentriert Seitenzahlen unten auf jeder Seite: + +@example +\paper @{ + print-page-number = ##t + print-first-page-number = ##t + oddHeaderMarkup = \markup \fill-line @{ " " @} + evenHeaderMarkup = \markup \fill-line @{ " " @} + oddFooterMarkup = \markup @{ \fill-line @{ + \bold \fontsize #3 \on-the-fly #print-page-number-check-first + \fromproperty #'page:page-number-string @} @} + evenFooterMarkup = \markup @{ \fill-line @{ + \bold \fontsize #3 \on-the-fly #print-page-number-check-first + \fromproperty #'page:page-number-string @} @} +@} +@end example + +Werte der @code{\paper}-Umgebung können in Scheme definiert werden. In diesem +Fall sind @code{mm}, @code{in}, @code{pt} und @code{cm} Variablen, +die in der Datei @file{paper-defaults.ly} mit Millimeter-Werten definiert +sind. Darum muss der Wert 2 cm in dem Beispiel unten multilpliziert werden +muss: + +@example +\paper @{ + #(define bottom-margin (* 2 cm)) +@} +@end example + +@seealso +Notationsreferenz: +@ref{Vertical spacing between systems}. + +Schnipsel: +@rlsr{Spacing}. + + +@node Horizontal dimensions +@unnumberedsubsubsec Horizontal dimensions + +@funindex horizontal-shift +@funindex indent +@funindex left-margin +@funindex line-width +@funindex paper-width +@funindex short-indent + +@warning{Wenn @code{paper-width} manuell gesetzt wird, müssen +möglicherweise auch die Werte von @code{line-width}, +@code{left-margin}, @code{indent} und @code{short-indent} angepasst +werden.} + +Es gibt einige Variablen, die die horizontalen Dimensionen der Seite +beeinflussen: + +@table @code + +@item horizontal-shift + +Der Wert, um den alle Systeme (und auch Überschriften und Systemtrenner) +nach rechts verschoben werden. Standard: @code{0.0}. + +@item indent + +Der Einzug für das erste System einer Partitur. Standard: +@code{paper-width} geteilt durch @code{14}, definiert in +@code{set-default-paper-size} bzw. @code{set-paper-size}. + +@item left-margin + +Der Rand zwischen dem linken Rand der Seite und dem Anfang der Notensysteme. +Standard: @code{10\mm}, definiert in +@code{set-default-paper-size} oder @code{set-paper-size}. + +@item line-width + +Die Breite der Notensystems. Standard: @code{paper-width} minus +@code{20\mm}, dfiniert in @code{set-default-paper-size} bzw. +@code{set-paper-size}. + +@item paper-width + +Die Breite der Seite. Standard: Die Breite des aktuellen +Papierformats. Zu Einzelheiten siehe @ref{Paper size}. + +@item short-indent + +Der Einzug für alle Systeme einer Partitur ausschließlich das +erste System. Standard: @code{0}, dfiniert in +@code{set-default-paper-size} bzw. @code{set-paper-size}. + +@end table + + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@knownissues + +Die Option @code{right-margin} ist definiert, bestimmt aber nicht den +rechten Rand der Seite. Der Wert für den rechten Rand ergibt sich +aus den Werten des linken Randes (@code{left-margin}) und der Zeilenbreite +(@code{line-width}). + + +@node Other layout variables +@unnumberedsubsubsec Other layout variables + +Diese Variablen können verwendet werden, um das allgemeine Layout der Seite +anzupassen. + +@funindex auto-first-page-number +@funindex blank-last-page-force +@funindex blank-page-force +@funindex first-page-number +@funindex page-breaking-between-system-padding +@funindex page-count +@funindex page-limit-inter-system-space +@funindex page-limit-inter-system-space-factor +@funindex page-spacing-weight +@funindex print-all-headers +@funindex print-first-page-number +@funindex print-page-number +@funindex ragged-bottom +@funindex ragged-last +@funindex ragged-last-bottom +@funindex ragged-right +@funindex system-separator-markup +@funindex system-count + +@table @code + +@item auto-first-page-number + +Der Seitenumbruchsalgorithmus wird davon beeinflusst, ob die erste +Seitenzahl gerade oder ungerade ist. Wenn die Variable auf wahr +gesetzt wird, entscheidet der Seitenumbruchsalgorithmus selber, +ob die Noten auf einer geraden oder ungeraden Seite beginnen sollen. +Das hat dann zur Folge, dass die erste Seite entweder bleibt wie +sie ist oder um eins erhöht wird. Standard: @code{##f}. + +@ignore + +FIXME: this variable is used, but I don't know what it does. -pm +@item blank-after-score-page-force +@funindex blank-after-score-page-force + +Default: @code{2}. + +@end ignore + +@item blank-last-page-force + +Die Strafpunkte, wenn eine Partitur auf einer ungeraden Seite +beendet wird. Stadnard: @code{0}. + +@item blank-page-force + +Die Strafpunkte, wenn eine leere Seite mitten in einer Partitur +auftritt. Das wird nicht benutzt von @code{ly:optimal-breaking}, +weil hiermit niemals leere Seiten mitten in einer Partitur zugelassen +werden. Standard: @code{5}. + +@item first-page-number + +Der Wert der Seitenzahl auf der ersten Seite. Standard: @code{#1}. + +@item max-systems-per-page + +Die maximale Anzahl an Notensystemen, die auf einer Seite gesetzt werden. Das +wird zur Zeit nur von dem @code{ly:optimal-breaking}-Alghoritmus +unterstützt. Standard: nicht gesetzt. + +@item min-systems-per-page + +Die minimale Anzahl an Notensystemen, die auf einer Seite gesetzt werden. Das +kann dazu führen, dass Seiten zu dicht gefüllt werden, wenn der Wert +zu groß gewählt wird. Die Option ist zur Zeit nur von dem +@code{ly:optimal-breaking}-Alghoritmus unterstützt. Standard: nicht gesetzt. + +@item page-breaking-between-system-padding + +Überlistet die Seitenumbruchfunktion, indem ihr ein anderer Wert +für @code{between-system-padding} mitgeteilt wird, als in Wirklichkeit +eingestellt ist. Wenn diese Variable beispielsweise auf einen +deutlich größeren Wert als @code{between-system-padding} gesetzt +wird, setzt die Seitenumbruchsfunktion weniger Systeme auf eine +Seite. Standard: nicht gesetzt. + +@item page-count + +Die Zahl der Seiten, die für eine Partitur benutzt werden sollen. +Standard: nicht gesetzt. + +@item page-limit-inter-system-space + +Wenn wahr, wird Platz zwischen Systemen eingeschränkt, wenn viel +Platz auf der Seite ist. Standard: @code{##f}. Einzelheiten siehe +@ref{Vertical spacing between systems}. + +@item page-limit-inter-system-space-factor + +Der Faktor, der von @code{page-limit-inter-system-space} verwendet +wird. Standard: @code{1.4}. Einzelheiten siehe +@ref{Vertical spacing between systems}. + +@item page-spacing-weight + +Die relative Gewichtung von (vertikalem) Abstand auf der Seite und +(horizontalem) Abstand innerhalb der Zeilen. Hohe Werte gewichten +die vertikalen Abstände mehr. Standard: @code{#10}. + +@item print-all-headers + +Wenn wahr, werden alle Einträge des Titelfeldes (@code{\header}-Umgebung) +für jede Partitur ausgegeben. Normalerweise wird nur die +Satzbezeichnung und die Opuszahl (@code{piece} und @code{opus}) +ausgegeben. Standard: @code{##f}. + +@item print-first-page-number + +Wenn wahr, wird auch auf der ersten Seite die Seitenzahl ausgegeben. +Standard: @code{##f}. + +@item print-page-number + +Wenn falsch, werden Seitenzahlen nicht ausgegeben. Standard: +@code{##t}. + +@item ragged-bottom + +Wenn wahr, werden die Systeme nicht gleichmäßig über die Seite +verteilt sondern am oberen Seitenrand beginnend eng angeordnet. +Das wirkt sich nicht auf die letzte Seite aus. Standard: @code{##f}. + +Die Variable sollte auf wahr gesetzt werden für Stücke, die nur +zwei oder drei Systeme pro Seite haben, wie etwa Orchesterpartituren. + +@item ragged-last + +Wenn wahr, wird die letzte Notenzeile einer Partitur nicht bis +zum Zeilenende durchgezogen, sondern entsprechend mit Noten +gefüllt und dann abgebrochen. Standard: @code{##f}. + +@item ragged-last-bottom + +Wenn falsch, werden Systeme gleichmäßig über die letzte Seite +verteilt. Standard: @code{##t}. + +Stücke, die zwei oder mehr Seiten gut füllen, sollten die Option auf wahr +gesetzt haben. + +Sie wirkt sich auch auf die letzte Seite von Buchteilen aus, d.h. +Teilen eines Buches, die mit der @code{\bookpart}-Umgebung erstellt werden. + +@item ragged-right + +Wenn wahr, werden Systeme nicht im Blocksatz gesetzt, sondern erhalten +nur ihre normale Breite. Standard: @code{##f}. + +Wenn eine Partitur nur ein System hat, ist der Standardwert @code{##t}. + +@item system-separator-markup + +Ein Beschriftungsobjekt, das zwischen zwei Systeme gesetzt wird. Das +wird oft in Orchesterpartituren eingesetzt. Standard: nicht gesetzt. + +Der Beschriftungsbefehl @code{\slashSeparator} kann für einen Trenner +benutzt werden, etwa so: + +@lilypond[quote,ragged-right] +#(set-default-paper-size "a6" 'landscape) +\book { + \score { + \relative { c1 \break c1 } + } + \paper { + system-separator-markup = \slashSeparator + } +} +@end lilypond + +@item system-count + +Die Anzahl der Systeme, auf denen eine Partitur gesetzt werden soll. +Standard: nicht gesetzt. + +@item systems-per-page +@funindex systems-per-page + +Die Anzahl an Systemen, die auf jede Seite gesetzt werden sollen. +Diese Option wird zur Zeit nur von dem @code{ly:optimal-breaking}-Alghoritmus +unterstützt. Standard: nicht gesetzt. + +@end table + + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@knownissues + +Die Standard-Kopfzeilendefinition setzt die Seitenzahl und das +@code{instrument}-Feld aus der @code{\header}-Umgebung in eine +Zeile. + +Die Überschriften (aus der @code{\header}-Umgebung) werden als +ein System interpretiert, sodass @code{ragged-bottom} und +@code{ragged-last-bottom} Platz zwischen die Überschrift und +das erste System der Partitur setzen. + + +@node Music layout +@section Music layout + +@menu +* Setting the staff size:: +* Score layout:: +@end menu + + +@node Setting the staff size +@subsection Setting the staff size + +@cindex Schriftgröße, Einstellung +@cindex Systemgröße, Einstellung +@cindex Verändern der Schriftgröße +@cindex Verändern der Systemgröße +@funindex layout file + +Die Standardgröße der Notensysteme beträgt 20 Punkte (pt). +Das kann auf zwei Arten geändert werden: + +Um die Systemgröße global für alle Partituren einer +Datei (bzw. einer @code{\book}-Umgebung) zu verändern, +geht man wie folgt vor: + +@example +#(set-global-staff-size 14) +@end example + +@noindent +Hiermit wird die Standardhöhe der Notensysteme auf 14 pt +gesetzt. Die Schriftarten werden entsprechend verkleinert. + +Um die Systemhöhe für jede Partitur einzeln zu verändern, +muss + +@example +\score@{ + ... + \layout@{ + #(layout-set-staff-size 15) + @} +@} +@end example + +@noindent +eingesetzt werden. + +Die Feta-Schriftart stellt die Noten- und Musiksymbole +für acht verschiedene Größen zur Verfügung. Jede +Schriftgröße ist einer bestimmten Systemgröße angepasst: +für kleinere Schriftgrößen werden die Zeichen etwas +schwerer, um mit den ebenfalls dickeren Notenlinien +zu harmonieren. Die empfohlenen Notensystemgrößen +sind in der Tabelle aufgeführt: + +@quotation +@multitable @columnfractions .15 .2 .22 .2 + +@item @b{Schriftbezeichnung} +@tab @b{Höhe des Systems (pt)} +@tab @b{Höhe des Systems (mm)} +@tab @b{Benutzung} + +@item feta11 +@tab 11.22 +@tab 3.9 +@tab Taschenparituren + +@item feta13 +@tab 12.60 +@tab 4.4 +@tab + +@item feta14 +@tab 14.14 +@tab 5.0 +@tab + +@item feta16 +@tab 15.87 +@tab 5.6 +@tab + +@item feta18 +@tab 17.82 +@tab 6.3 +@tab Liederbücher + +@item feta20 +@tab 20 +@tab 7.0 +@tab Orchesterstimmen + +@item feta23 +@tab 22.45 +@tab 7.9 +@tab + +@item feta26 +@tab 25.2 +@tab 8.9 +@tab +@c modern rental material? + +@end multitable +@end quotation + +Diese Schriftarten sind in allen Größen erhältlich. Die Kontext-Eigenschaft +@code{fontSize} und die Layout-Eigenschaft @code{staff-space} (in +@code{StaffSymbol}) können benutzt werden, um die Schriftgröße für +einzelne Systeme zu verändern. Die Größe von einzelnen Systemen +ist relativ zur globalen Systemgröße. + + +@seealso +Notationsreferenz: +@ref{Selecting notation font size}. + +Schnipsel: +@rlsr{Spacing}. + + +@knownissues + +@code{layout-set-staff-size} verändert nicht den Abstand zwischen den +Notenlinien. + + +@node Score layout +@subsection Score layout + +@cindex Partitur, Layout +@cindex Layout, Partitur + +@funindex \layout + +Während die @code{\paper}-Umgebung Einstellungen für die Formatierung +der Seiten eines gesamten Dokuments enthalten, enthält die +@code{\layout}-Umgebung Einstellungen für einzelne Parituren. + +@example +\layout @{ + indent = 2.0\cm + \context @{ \Staff + \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6) + @} + \context @{ \Voice + \override TextScript #'padding = #1.0 + \override Glissando #'thickness = #3 + @} +@} +@end example + +@seealso +Notationsreferenz: +@ref{Changing context default settings}. + +Schnipsel: +@rlsr{Spacing}. + + +@node Breaks +@section Breaks + +@menu +* Line breaking:: +* Page breaking:: +* Optimal page breaking:: +* Optimal page turning:: +* Minimal page breaking:: +* Explicit breaks:: +* Using an extra voice for breaks:: +@end menu + + +@node Line breaking +@subsection Line breaking + +@cindex Zeilenumbrüche +@cindex Umbrüche von Zeilen + +Zeilenumbrüche werden normalerweise automatisch erstellt. Sie +werden so ausgewählt, dass die Zeilen weder gedrängt nocht zu +weit gespreizt wirken und aufeinander folgende Seiten einen +ähnlichen Grauwert haben. In seltenen Fällen kann es jedoch +nötig sein, manuell Zeilenumbrüche einzufügen. Das geschieht +mit dem Befehl @code{\break}. Hiermit wird direkt nach dem Befehl +ein Zeilenumbruch erzwungen. Zeilenumbrüche können jedoch nur +am Ende von @qq{vollständigen} Takten stattfinden. Damit sind +Takte gemeint, in welchen alle Noten mit der letzten Taktzeit +komplett abgeschlossen sind und nicht über das Taktende hinausragen. +Wenn Sie einen Zeilenumbruch an einer Stelle benötigen, an der +keine Taktlinie vorliegt, können Sie mit @code{\bar ""} eine +unsichtbare Taktlinie hinzufügen, die dann den Zeilenumbruch +erlaubt. Wiederum gilt, dass keine Noten überstehen dürfen, +sonst wird diese unsichtbare Taktlinie ignoriert. + +Mit dem Befehl @code{\noBreak} wird ein Zeilenumbruch an dem +entsprechenden Taktstrich verboten. + +Die grundlegenden Einstellungen, die Einfluss auf die Zeilenlänge +haben, sind @code{indent} (Einzug) und @code{line-width} +(Zeilenbreite). Sie werden in der @code{\layout}-Umgebung +einestellt. Der erste Befehl bestimmt den Einzug der ersten +Zeile, der zweite die Zeilenlänge der weiteren Notenzeilen. + +Wenn @code{ragged-right} eingestellt ist (als in der +@code{\layout}-Umgebung auf den Wert @code{#t} gesetzt wurde), +werden die Systeme linksbündig gesetzt und nicht bis zum +rechten Rand hin durchgezogen, sondern den Noten entsprechend +gesetzt. Das ist oftmals nützlich für kleine Notenfragmente +und um zu überprüfen, wie eng die Noten natürlicherweise +gesetzt werden würden. + +Die Option @code{ragged-last} verhält sich ähnlich zu @code{ragged-right}, +aber wirkt sich nur auf die letzte Zeile eines Stückes aus. + +@example +\layout @{ +indent = #0 +line-width = #150 +ragged-last = ##t +@} +@end example + +@cindex regelmäßige Zeilenumbrüche +@cindex Zeilenumbrüche in Intervallen + +Um Zeilenumbrüche zu erzwingen, die in festgelegten Intervallen +stattfinden, kann der Befehl @code{\break} in Kombination +mit unsichtbaren Noten und einer Wiederholung eingesetzt +werden. Das folgende Beispiel etwa setzt die nächsten +28 Takte (im 4/4-Takt) in Zeilen zu jeweils 4 Takten: + +@example +<< \repeat unfold 7 @{ + s1 \noBreak s1 \noBreak + s1 \noBreak s1 \break @} + @notation{Hier die Noten} +>> +@end example + +Eine Zeilenumbruchkonfiguration kann auch als eine @code{.ly}-Datei +automatisch gespeichert werden. Damit kann die vertikale Ausrichtung +während eines zweiten Programmdurchlaufs angepasst werden um die +Seiten besser zu füllen. Diese Eigenschaft ist recht neu und +kompliziert. Mehr Einzelheiten finden sich in +@rlsr{Spacing}. + +@funindex \break +@funindex \noBreak + +@predefined +@code{\break}, +@code{\noBreak}. +@endpredefined + +@seealso +Referenz der Interna: +@rinternals{LineBreakEvent}. + +Schnipsel: +@rlsr{Spacing}. + +@knownissues + +Zeilenumbrüche können nur gesetzt werden, wenn eine +@qq{richtige} Taktlinie vorliegt. Wenn eine Note +über die Taktlinie übersteht, wie etwa in folgendem +Beispiel: + +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +c4 c2 << c2 {s4 \break } >> % this does nothing +c2 c4 | % a break here would work +c4 c2 c4 ~ \break % as does this break +c4 c2 c4 +@end lilypond + +@noindent +kann ein Umbruchbefehl nicht ausgeführt werden. Dieses +Verhalten kann jedoch vermieden werden, indem der +@code{Forbid_line_break_engraver} aus dem Stimmen-Kontext +entfernt wird. + +@lilypond[quote,ragged-right,verbatim] +\new Voice \with { + \remove Forbid_line_break_engraver +} { + c4 c2 << c2 {s4 \break } >> % now the break is allowed + c2 c4 +} +@end lilypond + +@noindent +Entsprechend werden Umbrüche auch verhindert, wenn Balken über +Taktlinien reichen. Das kann mit folgendem Befehl verhindert +werden: @code{\override Beam #'breakable = ##t}. + + +@node Page breaking +@subsection Page breaking + +@cindex Seiteumbrüche +@cindex Umbrüche, Seite + +Die Standardseitenumbrüche können verändert werden, indem +man die Befehle @code{\pageBreak} bzw. @code{\noPageBreak} +benutzt. Sie verhalten sich analog zu den Befehlen +@code{\break} und @code{\noBreak}. Sie sollten an einem +Taktstrich notiert werden. Diese Befehle erzwingen bzw. +verbieten einen Seitenumbruch. Mit dem @code{\pageBreak}-Befehl +wird natürlich gleichzeitig auch ein Zeilenumbruch erzwungen. + +Die @code{\pageBreak} und @code{\noPageBreak}-Befehle können +auch auf der höchsten Ebene einer Datei benutzt werden, etwa +zwischen Partituren und Textbeschriftungen. + +Es gibt auch vertikale Gegenstücke zu den Variablen +@code{ragged-right} und @code{ragged-last}: +@code{ragged-bottom} und @code{ragged-last-bottom}. Wenn diese +Variablen auf @code{##t} gesetzt werden, werden im ersten +Fall die Notensysteme auf allen Seiten eng nach oben orientiert +gesetzt werden. Im zweiten Fall bezieht sich dies nur auf die +letzte Seite. + +Zu Einzelheiten siehe @ref{Vertical spacing}. + +Seitenumbrüche werden von der @code{page-breaking}-Funktion errechnet. +LilyPond kennt drei Algorithmen um Seitenumbrüche zu errechnen: +@code{ly:optimal-breaking}, @code{ly:page-turn-breaking} und +@code{ly:minimal-breaking}. Der Standard ist @code{ly:optimal-breaking}, +aber der Wert kann in der @code{\paper}-Umgebung geändert werden: + +@example +\paper@{ + #(define page-breaking ly:page-turn-breaking) +@} +@end example + +Der alte Algorithmus für Umbruch hat die Bezeichnung +@code{optimal-page-breaks}. Wenn Sie Problememit der neuen +Umbruchsfunktion haben, können sie die alte vorläufig wieder +aktivieren. + +@funindex \bookpart + +When a book has many scores and pages, the page breaking problem may be +difficult to solve, requiring large processing time and memory. To ease +the page breaking process, @code{\bookpart} blocks are used to divide +the book into several parts: the page breaking occurs separately on each +part. Different page breaking functions may also be used in different +book parts. + +@example +\bookpart @{ + \header @{ + subtitle = "Vorwort" + @} + \paper @{ + %% In einem Abschnitt, der vor allem Text hat, + %% funktioniert womöglich ly:minimal-breaking besser + #(define page-breaking ly:minimal-breaking) + @} + \markup @{ @dots{} @} + @dots{} +@} +\bookpart @{ + %% In diesem Abschnitt mit Noten wird + %% die Standard-Seitenumbruchsfunktion benutzt. + \header @{ + subtitle = "Erster Satz" + @} + \score @{ @dots{} @} + @dots{} +@} +@end example + +@funindex \pageBreak +@funindex \noPageBreak + +@predefined +@code{\pageBreak}, +@code{\noPageBreak}. +@endpredefined + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@node Optimal page breaking +@subsection Optimal page breaking + +@funindex ly:optimal-breaking + +Die @code{ly:optimal-breaking}-Funktion ist die Standardmethode für +LilyPond, um Seitenumbrüche zu errechnen. Hiermit wird versucht, +Seitenumbrüche zu finden, die das Stauchen oder Strecken von Zeilen +minimieren, sowohl horizontal als auch vertikal. Anders als die +@code{ly:page-turn-breaking}-Funktion hat diese Methode keine +Möglichkeit, Überlegungen zum Umblättern mit einzubeziehen. + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@node Optimal page turning +@subsection Optimal page turning + +@funindex ly:page-turn-breaking + +Es ist oft nötig, die Seiten so umzubrechen, dass sich eine Pause am +Ende jeder zweiten Seite befindet, damit der Musiker es leichter hat, +die Seite umzublättern ohne das Spielen zu Unterbrechen. Die +@code{ly:page-turn-breaking}-Funktion versucht, Seitenumbrüche zu +finden, died das Stauchen oder Strecken von Zeilen minimieren und +gleichzeitig auch noch Seitenumbrüchen an angegebenen Stellen +den Vorrang zu geben. + +Die Funktion wird in zwei Schritten eingesetzt. Zunächst muss sie +in der @code{\paper}-Umgebung aktiviert werden, wie gezeigt in +@ref{Page breaking}. Dann muss noch angegeben werden, welche Stellen +bevorzugt für Seitenumbrüche benutzt werden sollen. + +Für diesen zweiten Schritt gibt es zwei Methoden. Am Einfachsten ist +es, die möglichen Seitenumbrüche mit dem Befehl @code{\allowPageTurn} +an jeder Stelle manuell anzugeben. + +Wenn Ihnen das zu aufwändig ist, können Sie den @code{Page_turn_engraver} +zu einem @code{Staff}- oder @code{Voice}-Kontext hinzufügen. Dieser +Engraver durchsucht den entsprechenden Kontext nach Stellen ohne Noten. +(Es wird also nicht nach Pausen gesucht, sondern nach Stellen ohne +Noten. Dieses Verhalten verhindert, dass an polyphonen Stellen umgebrochen +wird, wo nur in einer Stimme Pausen vorhanden sind.) Wenn eine +derartige Stelle ohne Noten gefunden wird, fügt der Engraver den +Befehl @code{\allowPageTurn} am letzten Taktstrich des Abschnitts ein. Wenn +in dem Abschnitt ein besonderer Taktstrich vorkommt (wie etwa ein +Doppelstrich), wird der Befehl nach diesem Taktstrich gesetzt. + +@funindex minimumPageTurnLength + +Der @code{Page_turn_engraver} list die Kontexteigenschaft +@code{minimumPageTurnLength} um zu erkennen, wie lang eine Stelle +frei von Noten sein muss, damit ein Seitenumbruch in Frage kommt. Der +Standardwert hierfür ist @code{#(ly:make-moment 1 1)}. Wenn Sie +Seitenumbrüche zum Umblättern ausschalten wollen, können Sie +einen sehr großen Wert angeben. + +@example +\new Staff \with @{ \consists "Page_turn_engraver" @} +@{ + a4 b c d | + R1 | % Ein Seitenumbruch zum Umblättern erlaubt + a4 b c d | + \set Staff.minimumPageTurnLength = #(ly:make-moment 5 2) + R1 | % Seitenumbruch nicht erlaubt + a4 b r2 | + R1*2 | % Seitenumbruch erlaubt + a1 +@} +@end example + +@funindex minimumRepeatLengthForPageTurn + +Der @code{Page_turn_engraver} erkennt Wiederholungen vom Typ @code{volta}. +Ein Seitenumbruch zum Umblättern wird nur zugelassen, wenn vor und nach +der Wiederholung genug Zeit ist, um die Seite wieder zurückzublättern. +Wenn die Wiederholung sehr kurz ist, kann auch Umblättern verboten +werden. Wenn Sie die Kontexteigenschaft +@code{minimumRepeatLengthForPageTurn} definieren, erlaubt der +@code{Page_turn_engraver} nur Umblättern in Wiederholungen, deren +Dauer länger als dieser Wert ist. + +Die Seitenumblätter-Befehle @code{\pageTurn}, @code{\noPageTurn} und +@code{\allowPageTurn} können auch auf oberster Dateiebene benutzt +werden, etwa zwischen Parituren und Textabschnitten. + +@funindex \pageTurn +@funindex \noPageTurn +@funindex \allowPageTurn + +@predefined +@code{\pageTurn}, +@code{\noPageTurn}, +@code{\allowPageTurn}. +@endpredefined + +@seealso +Schnipsel: +@rlsr{Spacing}. + +@knownissues + +In einer Partitur sollte nur ein @code{Page_turn_engraver} vorkommen. Wenn +mehr als einer definiert werden, stören sie sich gegenseitig. + + +@node Minimal page breaking +@subsection Minimal page breaking + +@funindex ly:minimal-breaking + +Die @code{ly:minimal-breaking}-Funktion benötigt nur minimale Berechnungen, +um die Seitenumbrüche zu bestimmen. Die Seite wird mit möglichst +vielen Systemen gefüllt und dann zur nächsten Seite gewechselt. Die +Funktion kann benutzt werden um Partituren mit vielen Seiten zu +setzen, wenn die anderen Seitenumbruchsfunktionen zu langsam wären +oder zu viel Speicher beanspruchen. Auch für Seiten mit viel Text +ist die Funktion geeignet. Sie wird folgendermaßen aktiviert: + +@example +\paper @{ + #(define page-breaking ly:minimal-breaking) +@} +@end example + + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@node Explicit breaks +@subsection Explicit breaks + +Es kann vorkommen, dass LilyPond direkte @code{\break} oder +@code{\pageBreak}-Befehl nicht beachtet. Mit folgenden +Einstellungen kann dieses Verhalten ausgeschaltet werden: + +@example +\override NonMusicalPaperColumn #'line-break-permission = ##f +\override NonMusicalPaperColumn #'page-break-permission = ##f +@end example + +Wenn @code{line-break-permission} die Einstellung falsch +(@code{##f}) hat, werden Zeilenumbrüche nur an den Befehlen +@code{\break} eingefügt und nirgendwo anders. Wenn +@code{page-break-permission} die Einstellung falsch +(@code{##f}) hat, werden Seitenumbrüche nur an den Befehlen +@code{\pageBreak} eingefügt und nirgendwo anders. + +@lilypond[quote,verbatim] +\paper { + indent = #0 + ragged-right = ##t + ragged-bottom = ##t +} + +\score { + \new Score \with { + \override NonMusicalPaperColumn #'line-break-permission = ##f + \override NonMusicalPaperColumn #'page-break-permission = ##f + } { + \new Staff { + \repeat unfold 2 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 8 { c'8 c'8 c'8 c'8 } \pageBreak + \repeat unfold 8 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 6 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 4 { c'8 c'8 c'8 c'8 } \break + \repeat unfold 2 { c'8 c'8 c'8 c'8 } + } + } +} +@end lilypond + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@node Using an extra voice for breaks +@subsection Using an extra voice for breaks + +Zeilen- und Seitenumbruchbefehle werden normalerweise direkt +zusammen mit den Noten eingegeben. + +@example +\new Score @{ + \new Staff @{ + \repeat unfold 2 @{ c'4 c'4 c'4 c'4 @} + \break + \repeat unfold 3 @{ c'4 c'4 c'4 c'4 @} + @} +@} +@end example + +Hierdurch sind zwar die Befehle @code{\break} und @code{\pageBreak} +einfach zu notieren, es werden aber Informationen zur Notation +mit Informationen zur Anordnung auf der Seite vermischt. Man kann +diese Informationen auch voneinander trennen, indem man eine zusätzliche +Stimme einfügt, in der Zeilen- und Seitenumbrüche vorgenommen werden. +Diese zusätzliche Stimme enthält nur unsichtbare Noten und die +Umbruchbefehle: + +@lilypond[quote,verbatim] +\new Score { + \new Staff << + \new Voice { + s1 * 2 \break + s1 * 3 \break + s1 * 6 \break + s1 * 5 \break + } + \new Voice { + \repeat unfold 2 { c'4 c'4 c'4 c'4 } + \repeat unfold 3 { c'4 c'4 c'4 c'4 } + \repeat unfold 6 { c'4 c'4 c'4 c'4 } + \repeat unfold 5 { c'4 c'4 c'4 c'4 } + } + >> +} +@end lilypond + +Mit dieser Herangehensweise kann der Code insbesondere +dann klarer notiert werden, wenn man Einstellungen der +@code{line-break-system-details}-Eigenschaft oder +anderer Eigenschaften von +@code{NonMusicalPaperColumnGrob} vornimmt (hierzu auch +@ref{Vertical spacing}). + +@lilypond[quote,verbatim] +\new Score { + \new Staff << + \new Voice { + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0)) + s1 * 2 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 35)) + s1 * 3 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 70)) + s1 * 6 \break + + \overrideProperty "Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 105)) + s1 * 5 \break + } + \new Voice { + \repeat unfold 2 { c'4 c'4 c'4 c'4 } + \repeat unfold 3 { c'4 c'4 c'4 c'4 } + \repeat unfold 6 { c'4 c'4 c'4 c'4 } + \repeat unfold 5 { c'4 c'4 c'4 c'4 } + } + >> +} +@end lilypond + + +@seealso +Notationsreferenz: +@ref{Vertical spacing}. + +Schnipsel: +@rlsr{Spacing}. + + +@node Vertical spacing +@section Vertical spacing + +@cindex vertikale Positionierung +@cindex Positionierung, vertikal +@cindex Abstände, vertikal + +Vertikale Abstände werden durch drei Eigenschaften +bestimmt: wieviel Platz frei ist (etwa Papiergröße +und Ränder), wieviel Platz zwischen Systemgruppen +(engl. system) gesetzt werden soll und wieviel +Platz zwischen Notensystemen (engl. staff, Pl. staves) +innerhalb von Gruppen gesetzt wird. + +@menu +* Vertical spacing inside a system:: +* Vertical spacing between systems:: +* Explicit staff and system positioning:: +* Two-pass vertical spacing:: +* Vertical collision avoidance:: +@end menu + + +@node Vertical spacing inside a system +@subsection Vertical spacing inside a system + +@cindex Abstand zwischen Notensystemen +@cindex Notensystemabstand +@cindex Platz zwischen Notensystemen +@cindex Platz innerhalb von Systemgruppen +@cindex Systemgruppen, Abstände innerhalb + +Die Höhe jeder Notensystemgruppe (engl. system) wird automatisch errechnet. +Um einzelne Notensysteme daran zu hindern, sich zu überschneiden, +werden Minimalabstände festgelegt. Indem man diese ändert, +können die Systeme enger zusammen gerückt werden. Dadurch +brauchen die Gruppen weniger Platz und es passen mehr Gruppen +auf eine Seite. + +Normalerweise werden die Notensysteme vertikal gestapelt. Damit +die Systeme einen bestimten Abstand einhalten, haben sie +Füllabstände, die in der Eigenschaft @code{minimum-Y-extent} +definiert sind. Wenn diese Eigenschaft für ein +@code{VerticalAxisGroup}-Objekt gesetzt wird, kann eingestellt +werden, wieviel Platz nach unten oder oben die vertikale Linie +(also das Notensystem oder eine Textzeile) einnimmt. Die +Eigenschaft braucht ein Zahlenpaar; der Standardwert ist +@code{#'(-4 . 4)}. Um also ein Notensystem schmaler zu machen, +kann man schreiben: + +@example +\override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3) +@end example + +@noindent +Damit wird die vertikale Größe des Systems auf jeweils drei +Notenlinienzwischenräume nach oben und unten von der Systemmitte +aus eingestellt. Der Wert @code{(-3 . 3)} wird als ein +Intervall ausgewertet, dessen Zentrum bei 0 liegt; deshalb +ist die erste Zahl immer negativ. Die Zahlen müssen nicht +gleich sein: man kann etwa die Ausdehnung nach unten vergrößern, +indem man @code{(-6 . 4)} setzt. + +Nachdem die Seitenumbrüche bestimmt wurden, wird die vertikale +Platzverteilung innerhalb jeder Systemgruppe neu ausgewertet +um die Seite so gleichmäßig wie möglich zu füllen. Wenn auf +einer Seite viel Platz übrigbleibt, werden die Gruppen etwas +gedehnt um die Seite besser auszufüllen. Die Größe dieser +Dehnung kann mit der @code{max-stretch}-Eigenschaft +des @code{VerticalAlignment}-Grobs eingestellt werden. +Standardmäßig hat @code{max-stretch} den Wert 0, sodass +die Dehnung ausgeschaltet ist. Um sie einzuschalten, kann +als guter Wert für @code{max-stretch} der Wert von +@code{ly:align-interface::calc-max-stretch} eingesetzt werden. + +In manchen Situationen sollen zwar die meisten Systeme gedehnt +werden, einige Gruppen sollen aber einen festen Abstand einhalten. +Das kann etwa der Fall sein, wenn ein Klaviersystem in der +Mitte einer Orchesterpartitur vorkommt. Mit der +@code{keep-fixed-while-stretching}-Eigenschaft des +@code{VerticalAxisGroup}-Objektes kann das erreicht werden. +Wenn sie auf @code{##t} gesetzt wird, wird das entsprechende +System (oder die Textzeile) nicht von der Zeile entfernt, die +sich direkt darüber befindet. Man müsste diese Einstellung +als beispielsweise für das zweite Notensystem eines Klaviersystems +vornehmen: + +@lilypond[verbatim] +#(set-default-paper-size "a6") +#(set-global-staff-size 14.0) + +\book { +\paper { + ragged-last-bottom = ##f +} + +\new Score \with +{ + \override VerticalAlignment #'max-stretch = #ly:align-interface::calc-max-stretch +} +{ +\new GrandStaff +<< + \new StaffGroup + << + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + >> + + \new PianoStaff + << + \new Staff {c' d' e' f'} + \new Staff \with { + \override VerticalAxisGroup #'keep-fixed-while-stretching = ##t + } + {c' d' e' f'} + >> + + \new StaffGroup + << + \new Staff {c' d' e' f'} + \new Staff {c' d' e' f'} + >> +>> +} +} +@end lilypond + +Die vertikale Ausrichtung von Notensystemen wird +von dem @code{VerticalAlignment}-Objekt vorgenommen. +Die Kontextparameter für die vertikale Ausdehnung +werden für den @code{Axis_group_engraver} angegeben. + +@seealso +Schnipsel: +@rlsr{Spacing}. + +@c @lsr{spacing,page-spacing.ly}, +@c @lsr{spacing,alignment-vertical-spacing.ly}. + +Referenz der Interna: +@rinternals{VerticalAlignment}, +@rinternals{Axis_group_engraver}. + + +@node Vertical spacing between systems +@subsection Vertical spacing between systems + +Der Platz zwischen Notensystembruppen wird von vier +Variablen in der @code{\paper}-Umgebung kontrolliert: + +@example +\paper @{ + between-system-space = 1.5\cm + between-system-padding = #1 + ragged-bottom=##f + ragged-last-bottom=##f +@} +@end example + +Wenn nur ein paar schmale Systeme auf eine Seite gesetzt werden, +kann die vertikale Platzverteilung recht negativ ausfallen, so +dass etwa ein System ganz oben auf der Seite und das nächste +unten auf der Seite erscheint, mit einer großen Lücke dazwischen. +Um derartige Situationen zu umgehen, kann der Platz, der zwischen +Gruppen eingefügt wird, begrenzt werden. Dieses Verhalten wird +aktiviert, indem die @code{page-limit-inter-system-space}-Variable +in der @code{\paper}-Umgebung auf @code{##t} gesetzt wird. Die +Variable @code{page-limit-inter-system-space-factor} bestimmt, +um wieviel der Platz zwischen Gruppen gedehnt werden darf: Bei +einem Wert von @code{1.3} etwa darf der Platz 30% größer sein +als er es wäre, wenn die Seite mit der Option @code{ragged-bottom} +gesetzt worden wäre. + +Im folgenden Beispiel würde das zweite System der ersten Seite +unten auf der Seite gesetzt werden, wenn der Platz zwischen +den Systemen nicht begrenzt wäre. Weil aber die Begrenzung +eingesetzt wurde, wird das zweite System näher am ersten +platziert. Wenn @code{page-limit-inter-system-space-factor} +auf @code{1} gesetzt wird, wäre die Platzverteilung die gleiche +auf einer Seite mit @code{ragged-bottom}, wie etwa die letzte +Seite einer Partitur. + +@lilypond[verbatim] +#(set-default-paper-size "a6") +\book { + \paper { + page-limit-inter-system-space = ##t + page-limit-inter-system-space-factor = 1.3 + + oddFooterMarkup = \markup "page bottom" + evenFooterMarkup = \markup "page bottom" + oddHeaderMarkup = \markup \fill-line { + "page top" \fromproperty #'page:page-number-string } + evenHeaderMarkup = \markup \fill-line { + "page top" \fromproperty #'page:page-number-string } + } + \new Staff << \repeat unfold 4 { g'4 g' g' g' \break } + { s1*2 \pageBreak } >> +} +@end lilypond + + +@seealso +Schnipsel: +@rlsr{Spacing}. + + +@node Explicit staff and system positioning +@subsection Explicit staff and system positioning + +Man kann die Einstellungen des @code{VerticalAxisGroup}-Objekts +und der @code{\paper}-Umgebung, wie sie im vorigen Abschnitt +erklärt wurden, als eine Sammlung verschiedenerer Einstellmöglichkeiten +verstehen, die vor allem die Größe des vertikalen Platzes zwischen +Notensystemen und Gruppen auf der Seite kontrollieren. + +Die vertikale Platzverteilung kann aber auch auf andere Weise +eingestellt werden: mit den Optionen von +@code{NonMusicalPaperColumn #'line-break-system-details}. Während +Einstellungen in @code{VerticalAxisGroup} und @code{\paper} Füllplatz +definieren, werden mit +@code{NonMusicalPaperColumn #'line-break-system-details} absolute vertikale +Positionen auf der Seite festgelegt. + +@code{NonMusicalPaperColumn #'line-break-system-details} akzeptiert eine +Liste aus fünf unterschiedlichen Einstellungen: + +@itemize +@item @code{X-offset} +@item @code{Y-offset} +@item @code{alignment-offsets} +@item @code{alignment-extra-space} +@item @code{fixed-alignment-extra-space} +@end itemize + +Veränderungen von Grobs (wozu auch @code{NonMusicalPaperColumn} gehört), +können an drei unterschiedlichen Stellen in der Quelldatei vorgenommen +werde: + +@itemize +@item mitten im Notentext +@item in einer @code{\context}-Umgebung +@item in einer @code{\with}-Umgebung +@end itemize + +Wenn der Grob @code{NonMusicalPaperColumn} verändert werden soll, +wird der @code{\override}-Befehl in der @code{\context} oder +@code{\with}-Umgebung eingesetzt. Wenn die Veränderungen aber +mitten im Notentext stattfinden sollen, müssen Sie den Befehl +@code{\overrideProperty} einsetzen. Einige Beispiele für eine +Veränderungen von @code{NonMusicalPaperColumn} mit dem +@code{\overrideProperty}-Befehl sind hier aufgelistet: + +@example +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20)) +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((Y-offset . 40)) -@menu -* Paper size:: -* Page formatting:: -@end menu +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20) (Y-offset . 40)) -@node Paper size -@subsection Paper size +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((alignment-offsets . (0 -15))) -@untranslated +\overrideProperty NonMusicalPaperColumn + #'line-break-system-details #'((X-offset . 20) (Y-offset . 40) + (alignment-offsets . (0 -15))) +@end example +Um zu verstehen, wie jede dieser unterschiedlichen Einstellungen +funktioniert, wollen wir uns ein Beispiel vornehmen, dass überhaupt +keine Einstellungen (d.h. @code{override}-Befehle) enthält: + +@c \book { } is required in these examples to ensure the spacing +@c overrides can be seen between systems. -np + +@lilypond[quote] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + s1*5 \break + s1*5 \break + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond -@node Page formatting -@subsection Page formatting +Diese Partitur nimmt Zeilen- und Seitenumbruchinformationen in einer +eigenen Stimme vor. Mit dieser Methode kann die Layout-Information +einfach von den Noten getrennt werden, was sehr hilfreich ist, wenn +das Beispiel komplizierter wird. Siehe auch +@ref{Using an extra voice for breaks}. + +Ausdrückliche @code{\break}-Befehle teilen die Noten in sechs Takte +lange Zeilen. Die vertikale Platzverteilung wird von LilyPond +errechnet. Um den vertikalen Beginn einer jeden Systemgruppe +genau anzugeben, kann @code{Y-offset} in der +@code{line-break-system-details}-Eigenschaft des +@code{NonMusicalPaperColumn}-Grobs wie in dem Beispiel +ersichtlich benutzt werden: + +@lilypond[quote] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0)) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 40)) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 80)) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond -@untranslated +In der @code{line-break-system-details}-Eigenschaft kann eine Liste +mit vielen Einstellungen eingegeben werden, aber hier wird nur eine +Einstellung angegeben. Die @code{Y-offset}-Eigenschaft bestimmt +hier die exakte vertikale Position auf der Seite, an welcher jede +neue Systemgruppe begonnen wird. + +Da jetzt der exakte Beginn eines jeden Systems explizit festgelegt wurde, +können wir auch den exakten Beginn eines jeden Notensystems in der +Gruppe festlegen. Dies geschieht mit der @code{alignment-offsets}-Eigenschaft +von @code{line-break-system-details}. + +@lilypond[quote] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 20) + (alignment-offsets . (0 -15))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 60) + (alignment-offsets . (0 -15))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 100) + (alignment-offsets . (0 -15))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new Staff { + \repeat unfold 15 { d'4 d' d' d' } + } + >> + } +} +@end lilypond -@menu -* Vertical dimensions:: -* Horizontal dimensions:: -* Other layout variables:: -@end menu +Dem @code{line-break-system-details}-Attribut des +@code{NonMusicalPaperColumn}-Grobs werden zwei Eigenschaften +zugewiesen. Auch wenn die Liste (alist) von +@code{line-break-system-details} sehr viel mehr Platzierungsparameter +akzeptiert, müssen hier nu die Parameter @code{Y-offset} und +@code{alignment-offsets} gesetzt werden, um den vertikalen Beginn +jedes Systems und jeder Systemgruppe zu kontrollieren. @code{Y-offset} +bestimmt also die vertikale Position von Systemgruppen und @code{alignment-offsets} +die vertikale Position von einzelnen Notensystemen. + +@lilypond[quote] +\header { tagline = ##f } +\paper { left-margin = 0\mm } +\book { + \score { + << + \new Staff << + \new Voice { + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 0) + (alignment-offsets . (0 -30 -40))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 60) + (alignment-offsets . (0 -10 -20))) + s1*5 \break + \overrideProperty #"Score.NonMusicalPaperColumn" + #'line-break-system-details #'((Y-offset . 100) + (alignment-offsets . (0 -10 -40))) + s1*5 \break + } + \new Voice { \repeat unfold 15 { c'4 c' c' c' } } + >> + \new StaffGroup << + \new Staff { \repeat unfold 15 { d'4 d' d' d' } } + \new Staff { \repeat unfold 15 { e'4 e' e' e' } } + >> + >> + } +} +@end lilypond -@node Vertical dimensions -@unnumberedsubsubsec Vertical dimensions +Einige Dinge sollten beachtet werden: + +@itemize +@item Wenn @code{alignment-offsets} benutzt wird, werden Gesangtextzeilen +als ein System gezählt. + +@item Die Einheiten der Zahlen, die für @code{X-offset}, +@code{Y-offset} und @code{alignment-offsets} benutzt werden, werden als +Vielfaches des Abstandes zwischen zwei Notenlinien gewertet. Positive +Werte verschieben Systeme und Gesangstext nach oben, negative Werte nach +unten. + +@item Weil die Einstellungen von @code{NonMusicalPaperColumn #'line-break-system-details} +es möglich machen, Notensysteme und Gruppen an beliebigen Stellen auf der +Seite zu platzieren, kann man damit auch Ränder überschreiben oder sogar +Notensysteme übereinander platzieren. Sinnvolle Werte für diese +Parameter werden derartiges Verhalten vermeiden. +@end itemize -@untranslated -@node Horizontal dimensions -@unnumberedsubsubsec Horizontal dimensions +@seealso +Schnipsel: +@rlsr{Spacing}. -@untranslated -@node Other layout variables -@unnumberedsubsubsec Other layout variables +@node Two-pass vertical spacing +@subsection Two-pass vertical spacing -@untranslated +@warning{Vertikale Positionierung in zwei Durchgängen ist veraltet +(deprecated) und wird in zukünftigen Versionen von LilyPond entfernt +werden. Systeme werden jetzt automatisch in einem einzigen +Durchlauf gedehnt. Siehe auch @ref{Vertical spacing inside a system}.} +Um Systeme zu dehnen, sodass sie den restlichen Platz auf der Seite +auffüllen, kann ein Verfahren benutzt werden, dass die Positionierung +in zwei Durchläufen ermittelt: -@node Music layout -@section Music layout +@enumerate +@item Im ersten Durchlauf wird der Platz berechnet, um den jede +Systemgruppe gedehnt werden sollte und in eine Datei geschrieben. +@item Im zweiten Durchlauf werden die Systemgruppen anhand der +Daten aus dieser Datei entsprechend gedehnt. +@end enumerate -@untranslated +Die @code{ragged-bottom}-Eigenschaft fügt den Platz zwischen +Systemgruppen ein, während mit der Technik in zwei Durchläufen +die Systemgruppen selber gedehnt werden. +Um dieses Verhalten zu erzeugen, muss die @code{tweak-key}-Eigenschaft +in der @code{\layout}-Umgebung jeder Partitur definiert werden und diese +Anpassungen dann in jeder Paritur mit dem Befehl @code{\scoreTweak} +angewandt werden. -@menu -* Setting the staff size:: -* Score layout:: -@end menu +@quotation +@verbatim +%% die erstellte Layout-Datei einfügen +\includePageLayoutFile -@node Setting the staff size -@subsection Setting the staff size +\score { + \new StaffGroup << + \new Staff << + %% Anpassungen für diese Partitur einfügen + \scoreTweak "scoreA" + { \clef french c''1 \break c''1 } + >> + \new Staff { \clef soprano g'1 g'1 } + \new Staff { \clef mezzosoprano e'1 e'1 } + \new Staff { \clef alto g1 g1 } + \new Staff { \clef bass c1 c1 } + >> + \header { + piece = "Score with tweaks" + } + %% Definieren, wie die Anpassungen für diese Datei genannt werden: + \layout { #(define tweak-key "scoreA") } +} +@end verbatim +@end quotation -@untranslated +Für den ersten Durchgang sollte die @code{dump-tweaks}-Option gesetzt +werden, damit die Layout-Datei erstellt wird. +@example +lilypond -dbackend=null -d dump-tweaks .ly +lilypond .ly +@end example -@node Score layout -@subsection Score layout -@untranslated +@seealso +Schnipsel: +@rlsr{Spacing}. -@node Breaks -@section Breaks +@node Vertical collision avoidance +@subsection Vertical collision avoidance + +@cindex Vermeidung von vertikalen Zusammenstößen +@cindex Zusammenstöße, vertikal, vermeiden +@cindex vertikale Zusammenstöße, vermeiden +@cindex Kollisionen, vertikal, vermeiden + +@funindex outside-staff-priority +@funindex outside-staff-padding +@funindex outside-staff-horizontal-padding + +Intuitiv gibt es in der Notation einige Objekte, die zu dem Notensystem +gehören, und einige andere, die immer außerhalb des Notensystems +positioniert werden sollten. Zu diesen letzteren gehören etwa +Übungszeichen, Textbeschriftung und Dynamikbezeichnung (die als +Objekte außerhalb des Systems bezeichnet werden können). LilyPonds +Regeln um diese Objekte zu positionieren lautet: so nah am Notensystem +wie möglich, aber gerade so weit weg, dass sie nicht mit anderen +Objekten zusammenstoßen. + +Dabei setzt LilyPon die @code{outside-staff-priority}-Eigenschaft +ein um herauszufinden, ob ein Grob ein Objekt außerhalb des Systems +ist: wenn @code{outside-staff-priority} eine Zahl ist, dann handelt +es sich um ein Objekt außerhalb des Systems. Zusätzlich teilt +@code{outside-staff-priority} noch mit, in welcher Reihenfolge +die Objekte außerhalb des Systems gesetzt werden sollen. + +Zuerst werden alle Objekte gesetzt, die nicht außerhalb des Systems +gehören. Dann werden die Objekte außerhalb des Systems nach dem Wert +ihrer @code{outside-staff-priority} (in aufsteigender Anordnung) +sortiert. Eins nach dem anderen werden diese Objekte schließlich +genommen und so platziert, dass sie nicht mit den Objekten zusammenstoßen, +die bereits platziert worden sind. Wenn also zwei Objekte außerhalb +des Systems um den gleichen Platz streiten, wird das mit dem +geringeren Wert von @code{outside-staff-priority} näher an das +entsprechende Notensystem gesetzt. + +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +c4_"Text"\pp +r2. +\once \override TextScript #'outside-staff-priority = #1 +c4_"Text"\pp % this time the text will be closer to the staff +r2. +% by setting outside-staff-priority to a non-number, +% we disable the automatic collision avoidance +\once \override TextScript #'outside-staff-priority = ##f +\once \override DynamicLineSpanner #'outside-staff-priority = ##f +c4_"Text"\pp % now they will collide +@end lilypond + +Der Platz, der zwischen einem Objekt außerhalb des Systems und +dem vorhergehenden Objekt eingefügt werden kann (auch als +padding bezeichnet), kann durch @code{outside-staff-padding} +kontrolliert werden. + +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +\once \override TextScript #'outside-staff-padding = #0 +a'^"This text is placed very close to the note" +\once \override TextScript #'outside-staff-padding = #3 +c^"This text is padded away from the previous text" +c^"This text is placed close to the previous text" +@end lilypond + +Standardmäßig werden Objekte außerhalb des Systems so gesetzt, +dass sie eine horizontale Überschneidung mit einem der +vorher gesetzten Grobs vermeiden. Das kann zu Situationen +führen, in denen Objekte sehr dicht nebeneinander gesetzt +werden. Der vertikale Platz zwischen Notensystemen kann +auch gesetzt werden, sodass Objekte außerhalb des Systems +ineinander greifen. Mit der Eigenschaft +@code{outside-staff-horizontal-padding} können Objekte vertikal +verschoben werden und derartige Situationen kommen nicht +vor. + +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +% the markup is too close to the following note +c4^"Text" +c4 +c''2 +% setting outside-staff-horizontal-padding fixes this +R1 +\once \override TextScript #'outside-staff-horizontal-padding = #1 +c,,4^"Text" +c4 +c''2 +@end lilypond + +@seealso +Schnipsel: +@rlsr{Spacing}. -@untranslated +@node Horizontal spacing +@section Horizontal spacing + +@cindex horizontale Platzierung +@cindex horizontale Anordnung +@cindex Anordnung, horizontal @menu -* Line breaking:: -* Page breaking:: -* Optimal page breaking:: -* Optimal page turning:: -* Minimal page breaking:: -* Explicit breaks:: -* Using an extra voice for breaks:: +* Horizontal spacing overview:: +* New spacing area:: +* Changing horizontal spacing:: +* Line length:: +* Proportional notation:: @end menu -@node Line breaking -@subsection Line breaking -@untranslated +@node Horizontal spacing overview +@subsection Horizontal spacing overview +Die Setzmaschine interpretiert unterschiedliche Notendauern als +dehnbare Abstände (engl. spring) unterschiedlicher Länge. Längere +Dauern erhalten mehr Platz, kürzere weniger. Die kürzeste Dauer +erhält eine feste Breite (die mit @code{shortest-duration-space} +im @code{SpacingSpanner}-Objekt kontrolliert werden kann). Je +länger die Dauer, umso mehr Platz erhält die Note: wenn ihre +Dauer verdoppelt wird, wird ein bestimmter Platz hinzugefügt +(dessen Breite durch @code{spacing-increment} bestimmt werden +kann). + +Das folgende Stück beispielsweise enthält Halbe, Viertel und Achtel. +Die Achtelnote wird gefolgt von einem Notenkopfabstand (NKA). Die +Viertel wird von 2 NKA gefolgt, die Halbe von 3 NKA usw. + +@lilypond[quote,fragment,verbatim,relative=1] +c2 c4. c8 c4. c8 c4. c8 c8 +c8 c4 c4 c4 +@end lilypond -@node Page breaking -@subsection Page breaking +Normalerweise ist @code{spacing-increment} definiert als 1.2 mal +der Abstand zwischen zwei Notenlinien, was in etwa die Breite eines +Notenkopfes ist. @code{shortest-duration-space} ist definiert als +2.0, was bedeutet, dass die kürzeste Note 2.4 Notenlinienabstände +2.0 mal der Wert von @code{spacing-increment}) horizontalen +Abstand erhält. Der Abstand wirdvon der linken Kande des Symbols +errechnet, so dass die kürzeste Note üblicherweise von 1 NKA +Abstand gefolgt wird. + +Wenn diese Herangehensweise konsequent angewandt würde, würde eine +einzige Zweiunddreißigstel eine Partitur, in der vor allem Achtel und +Sechzehntel vorkommen, sehr weit auseinanderdehnen. Die kürzeste +Note wäre nun keine Sechzehntel mehr, sondern eine Zweiunddreißigstel, +wodurch an jede Note der Wert von 1 NKA hinzugefügt würde. Um das +zu vermeiden, ist die kürzeste Dauer für die Platzverteilung nicht die +kürzeste Note einer Partitur, sondern die, die am häufigsten vorkommt. + +Die Notendauer, die am häufigsten vorkommt, wird auf folgende +Weise bestimmt: in jedem Takt wird die kürzeste Note bestimmt. Die +häufigste kürzeste Note wird dann als Grundlage für die Platzverteilung +der Noten herangezogen, mit der Bedingung, dass diese kürzeste +Note immer ein Achtel oder kürzer sein soll. Die kürzeste Dauer +wird ausgegeben, wenn @code{lilypond} mit der Option @code{--verbose} +aufgerufen wird. + +Diese Dauern können aber auch angepasst werden. Wenn Sie die Eigenschaft +@code{common-shortest-duration} in dem @code{SpacingSpanner} setzen, +dann wird hiermit die Grunddauer für die Platzverteilung eingestellt. +Die maximale Dauer für diesen Grundwert (normalerweise eine Achtel) +wird definiert mit @code{base-shortest-duration}. + +@funindex common-shortest-duration +@funindex base-shortest-duration +@funindex stem-spacing-correction +@funindex spacing + +Noten, die noch kürzer sind als die häufigste kürzeste Note, werden +durch einen Platz voneinander getrennt, der proportional zu ihrer +Dauer in Beziehung zur häufigsten kürzesten Note ist. Wenn also +nur ein paar Sechszehntel zu dem obigen Beispiel hinzugefügt werden, +würden sie von 1/2 NKA gefolgt werden: + +@lilypond[quote,fragment,verbatim,relative=2] +c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4 +@end lilypond -@untranslated +In der Einleitung (siehe @rlearning{Engraving}) wurde erklärt, dass die +Richtung der Notenhälse die Platzverteilung beeinflusst. Das wird +kontrolliert durch die @code{stem-spacing-correction}-Eigenschaft +in dem @code{NoteSpacing}-Objekt. Dieses Objekt wird für jeden +@code{Voice}-Kontext erstellt. Das @code{StaffSpacing}-Objekt (in +einem @code{Staff}-Kontext erstellt) enthält die gleiche Eigenschaft, +um die Verteilung von Hälsen neben Taktlinien zu kontrollieren. In +dem folgenden Beispiel werden diese Einstellungen gezeigt, einmal +mit den Standardwerten und dann mit größeren Werten, damit man sie +besser sieht: + +@lilypond[quote,ragged-right] +{ + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4| + \override Staff.NoteSpacing #'stem-spacing-correction = #1.5 + \override Staff.StaffSpacing #'stem-spacing-correction = #1.5 + c'4 e''4 e'4 b'4 | + b'4 e''4 b'4 e''4| +} +@end lilypond +Proportionale Notation ist unterstützt, siehe @ref{Proportional notation}. -@node Optimal page breaking -@subsection Optimal page breaking +@seealso +Schnipsel: +@rlsr{Spacing}. -@untranslated +Referenz der Interna: +@rinternals{SpacingSpanner}, +@rinternals{NoteSpacing}, +@rinternals{StaffSpacing}, +@rinternals{NonMusicalPaperColumn}. +@knownissues -@node Optimal page turning -@subsection Optimal page turning +Es gibt keine sinnvolle Möglichkeit, die horizontale Verteilung der +Noten zu unterdrücken. Die folgende Problemumgehung, mit der +dehnbare Abstände (padding) eingesetzt werden, kann benutzt +werden, um zusätzlichen Platz in eine Partitur einzufügen. -@untranslated +@example + \once \override Score.SeparationItem #'padding = #10 +@end example +Es gibt derzeit keine Möglichkeit, den Platz zu verringern. -@node Minimal page breaking -@subsection Minimal page breaking -@untranslated +@node New spacing area +@subsection New spacing area +@cindex horizontale Notenabstände, Abschnitte definierten +@cindex Notenabstände, Abschnitte definieren +@cindex Abschnitte definieren, Notenabstände + +Neue Abschnitte mit unterschiedlichen Notenabstandsparametern +können mit dem Befehl @code{newSpacingSection} begonnen werden. +Das ist hilfreich, wenn in verschiedenen Abschnitten die +Verhältnisse von kurzen und langen Noten sehr unterschiedlich +ausfallen. + +Im folgenden Beispiel wird durch die neue Taktart ein neuer +Abschnitt begonnen, in dem die Sechszehntel weiter außeinander +gesetzt werden sollen. + +@lilypond[relative,fragment,verbatim,quote] +\time 2/4 +c4 c8 c +c8 c c4 c16[ c c8] c4 +\newSpacingSection +\time 4/16 +c16[ c c8] +@end lilypond -@node Explicit breaks -@subsection Explicit breaks +Der @code{\newSpacingSection}-Befehl erstellt ein neues +@code{SpacingSpanner}-Objekt, weshalb auch neue Anpassungen +mit dem @code{\override}-Befehl an dieser Stelle eingesetzt +werden können. -@untranslated +@seealso +Schnipsel: +@rlsr{Spacing}. +Referenz der Interna: +@rinternals{SpacingSpanner}. -@node Using an extra voice for breaks -@subsection Using an extra voice for breaks -@untranslated +@node Changing horizontal spacing +@subsection Changing horizontal spacing +@cindex Notenabstände, horizontal +@cindex horizontale Abstände +@cindex horizontale Notenabstände + +Die horizontalen Abstände können mit der +@code{base-shortest-duration}-Eigenschaft +verändert werden. In den folgenden Beispielen +werden die gleichen Noten eingesetzt, zuerst +ohne die Eigenschaft zu verändern, im zweiten +Beispiel dann mit einem anderen Wert. Größere +Werte für @code{ly:make-moment} ergeben dichtere +Noten. @code{ly:make-moment} erstellt eine Dauer, +die als Bruch notiert wird, sodass @code{1 4} +eine größere Dauer ist als @code{1 16}. + +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } +} +@end lilypond -@node Vertical spacing -@section Vertical spacing +@lilypond[verbatim,line-width=12\cm] +\score { + \relative c'' { + g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | + g4 e e2 | f4 d d2 | c4 e g g | c,1 | + } + \layout { + \context { + \Score + \override SpacingSpanner + #'base-shortest-duration = #(ly:make-moment 1 16) + } + } +} +@end lilypond -@untranslated +@snippets + +Standardmäßig wird die Platzverteilung in Triolen und andern +rhythmischen Aufteilungen nach verschiedenen nicht von der +Dauer abgeleiteten Faktoren (wie Versetzungszeichen, +Schlüsselwechseln usw.) berechnet. Um diese Symbole zu +ignorieren und eine gleichmäßige Verteilung der Noten +zu erzwingen, kann die gleichmäßige Dehnung (engl. +uniform stretching) zu Beginn einer Partitur eingeschaltet +werden: + +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +\new Score \with { + \override SpacingSpanner #'uniform-stretching = ##t +} << + \new Staff{ + \times 4/5 { + c8 c8 c8 c8 c8 + } + c8 c8 c8 c8 + } + \new Staff{ + c8 c8 c8 c8 + \times 4/5 { + c8 c8 c8 c8 c8 + } + } +>> +@end lilypond -@menu -* Vertical spacing inside a system:: -* Vertical spacing between systems:: -* Explicit staff and system positioning:: -* Two-pass vertical spacing:: -* Vertical collision avoidance:: -@end menu +Wenn @code{strict-note-spacing} eingestellt ist, werden Noten +gesetzt, ohne dass Schlüssel, Taktlinine oder Verzierungsnoten +zusätzlichen Platz erhalten. -@node Vertical spacing inside a system -@subsection Vertical spacing inside a system +@lilypond[quote,ragged-right,relative=2,fragment,verbatim] +\override Score.SpacingSpanner #'strict-note-spacing = ##t +\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c] c32[ c32] } +@end lilypond -@untranslated +@seealso +Schnipsel: +@rlsr{Spacing}. -@node Vertical spacing between systems -@subsection Vertical spacing between systems -@untranslated +@node Line length +@subsection Line length +@cindex Seitenumbrüche +@cindex Umbrechen von Seiten +@cindex Zeilenlänge +@cindex Länge von Zeilen + +@funindex indent +@funindex line-width +@funindex ragged-right +@funindex ragged-last + +@c Although line-width can be set in \layout, it should be set in paper +@c block, to get page layout right. +@c Setting indent in \paper block makes not much sense, but it works. + +@c Bit verbose and vague, use examples? +Die grundlegenden Einstellungen, die Einfluss auf die Zeilenlänge +haben, sind @code{indent} (Einzug) und @code{line-width} +(Zeilenbreite). Sie werden in der @code{\layout}-Umgebung +einestellt. Der erste Befehl bestimmt den Einzug der ersten +Zeile, der zweite die Zeilenlänge der weiteren Notenzeilen. + +Wenn @code{ragged-right} eingestellt ist (als in der +@code{\layout}-Umgebung auf den Wert @code{#t} gesetzt wurde), +werden die Systeme linksbündig gesetzt und nicht bis zum +rechten Rand hin durchgezogen, sondern den Noten entsprechend +gesetzt. Das ist oftmals nützlich für kleine Notenfragmente +und um zu überprüfen, wie eng die Noten natürlicherweise +gesetzt werden würden. + +Die Option @code{ragged-last} verhält sich ähnlich zu @code{ragged-right}, +aber wirkt sich nur auf die letzte Zeile eines Stückes aus. +Für diese letzte Zeile gibt es keine Einschränkungen. Das +Resultat erinnert an Textabsätze im Blocksatz, wo die letzte +Zeile des Absatzes mit ihrer natürlichen Länge gestzt wird. -@node Explicit staff and system positioning -@subsection Explicit staff and system positioning +@example +\layout @{ +indent = #0 +line-width = #150 +ragged-last = ##t +@} +@end example -@untranslated +@seealso +Schnipsel: +@rlsr{Spacing}. -@node Two-pass vertical spacing -@subsection Two-pass vertical spacing +@node Proportional notation +@subsection Proportional notation -@untranslated +LilyPond hat Unterstützung für proportionale Notation. Dabei handelt +es sich um eine horizontale Platzverteilung, die jeder Note einen +exakt ihrer Dauer entsprechenden Platz zuordnet. Man kann es vergleichen +mit der Notenplatzierung auf einem Raster. In einigen Partituren +des späten 20. und frühen 21. Jahrhunderts wird dies proportionale +Notation benutzt, um sehr komplizierte rhythmische Verhältnisse +klarer darzustellen, oder um einen Zeitstrahl oder ähnliche Graphiken +direkt in die Partitur zu integrieren. +LilyPond hat Unterstützung für fünf verschiedene Einstellungen der +proportionalen Notation, die alle zusammen oder jede für sich +benutzt werden können: -@node Vertical collision avoidance -@subsection Vertical collision avoidance +@itemize +@item @code{proportionalNotationDuration} (proportionale Notendauer) +@item @code{uniform-stretching} (gleichmäßige Dehnung) +@item @code{strict-note-spacing} (strenge Notenverteilung) +@item @code{\remove Separating_line_group_engraver} (entferne Liniengruppentrennungsengraver) +@item @code{\override PaperColumn #'used = ##t} (PapierSpalte benutzt = wahr) +@end itemize -@untranslated +In den Beispielen unten werden diese fünf unterschiedlichen Einstellungen +für die proportionale Notation vorgestellt und ihre Wirkungen +untereinander illustriert. +Es soll mit diesem 1 Takt langen Beispiel begonnen werden, in welchem +die klassischen Abstände und Flattersatz (ragged-right) eingesetzt werden: -@node Horizontal spacing -@section Horizontal Spacing +@lilypond[quote,verbatim,ragged-right] +\new Score << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } +>> +@end lilypond -@untranslated +Die Halbe, mit der der Takt beginnt, braucht weitaus weniger +Platz als die Hälfte des Taktes. Gleichermaßen haben die +Sechszehntel und die Sechszehntel-Quintolen (oder Zwanzigstel), +mit denen der Takt endet, insgesamt weitaus mehr als die Hälfte +der Taktbreite. + +Im klassischen Notensatz kann dieses Verhalten genau das gewünschte +Ergebnis bringen, weil dadurch horizontaler Platz von der Halben +weggenommen werden kann und so insgesamt Platz in dem Takt eingespart +wird. + +Wenn allerdings ein Zeitstrahl oder andere zeitliche ablaufende +Graphiken über oder unter dem Takt eingefügt werden soll, braucht man +eine Notenplatzierung, die exakt der von ihnen eingenommenen Dauer +entspricht. Auf folgende Art wird die proportionale Notation +eingeschaltet: + +@lilypond[quote,verbatim,ragged-right] +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 20) +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } +>> +@end lilypond +Die Halbe zu Beginn des Taktes und die schnelleren Noten in der zweiten +Takthälfte nehmen jetzt genau den gleichen horizontalen Platz ein. Jetzt +könnte man einen Zeitstrahl mit dem Takt synchronisieren. + +Die Einstellung von @code{proportionalNotationDuration} gehört zum +@code{Score}-Kontext. Kontexteinstellungen können an drei verschiedenen +Stellen in der Quelldatei geschrieben werden: in einer @code{\with}-Umgebung, +in einer @code{\context}-Unmgebung oder direkt in den Noten mit dem +@code{\set}-Befehl. Alle drei Positionen sind gleichwertig und es hängt +vom Benutzer ab, welche bevorzugt wird. + +Die Eigenschaft @code{proportionalNotationDuration} braucht ein Argument, +welches die Referenzdauer ist, anhand welcher alle Noten platziert werden. +Hier wird die LilyPond Scheme-Funktion @code{make-moment} eingesetzt. Sie +braucht zwei Argumente: einen Zähler und einen Nenner, die einen Bruch einer +Ganzen darstellen. Die Funktion @code{#(ly:make-moment 1 20)} ergibt also +eine Referenzdauer von einer Zwanzigstel. Genauso gut können etwa die Dauern +@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)} oder +@code{#(ly:make-moment 3 97)} eingesetzt werden. + +Die richtige Referenzdauer, mit der eine vernünftige Verteilung der Noten +proportional möglich ist, muss durch Ausprobieren herausgefunden werden. +Dabei sollte man mit einer Dauer beginnen, die der kleinsten Note des +Stückes nahekommt. Kleine Referenzdauern lassen die Noten sehr gedehnt +erscheinen, größere Referenzdauern zwingen sie dichter zusammen. + +@lilypond[quote,verbatim,ragged-right] +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 8) +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } +>> + +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 16) +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } +>> + +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 32) +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } +>> +@end lilypond -@menu -* Horizontal spacing overview:: -* New spacing area:: -* Changing horizontal spacing:: -* Line length:: -* Proportional notation:: -@end menu +Man muss beachten, dass die Referenzdauer nicht zu groß ist +(wie die Achtel in dem Beispiel oben), denn dadurch werden +die Noten so dicht gesetzt, dass sich eventuell sogar Notenköpfe +von sehr kleinen Notenwerten überschneiden können. Die proportionale +Notation nimmt üblicherweise mehr Platz ein als die klassische +Platzverteilung. Der rhythmischen Klarheit muss ein eng gesetztes +Notenbild geopfert werden. + +In Folgenden soll betrachtet werden, wie sich überlappende +rhythmische Aufteilungen am besten positioniert werden. Als Referenz +wird das erste Beispiel herangezogen, zu welchem ein zweites +System mit anderen rhythmischen Werten hinzugefügt wird: + +@lilypond[quote,verbatim,ragged-right] +\new Score << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } +>> +@end lilypond -@node Horizontal spacing overview -@subsection Horizontal spacing overview +Die Platzaufteilung ist schlecht, weil die gleichlangen Noten des +untersten Systems nicht gleichmäßig verteilt sind. Im klassischen +Notensatz kommen komplexe rhythmische Verhältnisse wie dieses sehr +selten vor, sodass der Notensatz nicht in Hinsicht auf sie optimiert +ist. @code{proportionalNotationDuration} hilft in +dieser Situation deutlich: + +@lilypond[quote,verbatim,ragged-right] +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 20) +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } +>> +@end lilypond -@untranslated +Aber bei sehr genauer Betrachtung sind die Noten der zweiten Hälfte +der Nonole doch immernoch eine Spur weiter gesetzt als die Noten +der ersten Hälfte. Um wirklich gleichmäßige Abstände zu erzwingen, +sollte auch noch die gleichmäßige Dehnung angeschaltet werden: + +@lilypond[quote,verbatim,ragged-right] +\new Score \with { + proportionalNotationDuration = #(ly:make-moment 1 20) + \override SpacingSpanner #'uniform-stretching = ##t +} << + \new RhythmicStaff { + c'2 + c'16 c'16 c'16 c'16 + \times 4/5 { + c'16 c'16 c'16 c'16 c'16 + } + } + \new RhythmicStaff { + \times 8/9 { + c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 c'8 + } + } +>> +@end lilypond +Das Beispiel mit den zwei Systemen ist nun exakt nach den +rhythmischen Werten der Noten gesetzt, sodass ein Zeitstrahl +oder ähnliches eingefügt werden könnte. + +Alle Einstellungen zur proportionalen Notation erwarten, +dass die @code{uniform-stretching}-Eigenschaft des +@code{SpacingSpanner}-Objekts auf wahr gesetzt wird. Andernfalls +kann es vorkommen, dass bestimmte Abstände (etwa von +unsichtbaren Noten) nicht richtig gesetzt werden. + +Das @code{SpacingSpanner}-Objekt ist ein abstraktes Grob, dass sich im +@code{Score}-Kontext befindet. Genauso wie die Einstellungen +von @code{proportionalNotationDuration} können auch diese +Veränderungen an den drei Stellen in der Quelldatei vorkommen: +in der @code{\with}-Umgebung innerhalb von @code{Score}, in +einer @code{\context}-Umgebung oder direkt im Notentext. + +Standardmäßig gibt es nur ein @code{SpacingSpanner} pro @code{Score}. +Das heißt, dass @code{uniform-stretching} für die gesamte Partitur +(d.h. für die Reichweite von @code{Score}) entweder an- oder +ausgeschaltet ist. Man kann allerdings in einer Partitur unterschiedliche +Abschnitte mit verschiedenem Platzierungsverhalten definieren. +Hierzu ist der Befehl @code{\newSpacingSection} da. Siehe auch @ref{New spacing area}. + +Im Folgenden soll gezeigt werden, wie sich der @code{Separating_line_group_engraver} +auswirkt und warum er normalerweise für proportionale Notation ausgeschaltet wird. +In diesem Beispiel wird verdeutlicht, dass vor jeder ersten Note eines Notensystems +immer etwas zusätzlicher Platz gesetzt wird: + +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} -@node New spacing area -@subsection New spacing area +\new Staff { + c'1 + \break + c'1 +} +@end lilypond -@untranslated +Der gleiche horizontale Platz wird vor eine Noten gesetzt, wenn sie +einer Taktart, einem Schlüssel oder einer Tonartbezeichnung folgt. +Dieser Platz wird durch @code{Separating_line_group_engraver} +eingefügt; wenn wir ihn aus der Partitur entfernen, entfällt +auch dieser zusätzliche Platz: +@lilypond[quote,verbatim,ragged-right] +\paper { + indent = #0 +} -@node Changing horizontal spacing -@subsection Changing horizontal spacing +\new Staff \with { + \remove Separating_line_group_engraver +} { + c'1 + \break + c'1 +} +@end lilypond + +Nichmusikalische Elemente wir Takt- und Tonartangaben, Schlüssel und +Versetzungszeichen sind problematisch in proportionaler +Notation. Keine dieser Elemente hat eine rhythmische Dauer, aber +alle brauchen horizontalen Platz. Das Problem wird auf unterschiedliche +Weise gelöst. + +Es ist manchmal möglich, Probleme mit Tonarten zu lösen, indem keine +benutzt werden. Das ist durchaus eine ernstzunehmende Option, weil +die meisten Partituren mit proportionaler Notation für heutige +Musik geschrieben werden. Ähnliches gilt für Taktarten, insbesondere, +wenn ein Zeitstrahl in die Partitur eingearbeitet werden soll. +In den meisten Parituren kommt jedoch irgendeine Taktart vor. +Schlüssel und Versetzungszeichen sind noch wichtiger; auf +sie kann selten verzichtet werden. + +Eine Lösungsmöglichkeit ist es, die @code{strict-note-spacing}-Eigenschaft +des @code{SpacingSpanner}-Objekts zu benutzen. Zum Vergleich +die beiden Partituren unten: + +@lilypond[quote,verbatim,ragged-right] +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} -@untranslated +\new Staff { + \set Score.proportionalNotationDuration = #(ly:make-moment 1 16) + \override Score.SpacingSpanner #'strict-note-spacing = ##t + c''8 + c''8 + c''8 + \clef alto + d'8 + d'2 +} +@end lilypond +Bei beiden handelt es sich um proportionale Notation, aber +die Platzverteilung im oberen Beispiel ist zu weit wegen +des Schlüsselwechsels. Die Platzverteilung des zweiten +Beispiels dagegen bleibt rhythmisch korrekt. +@code{strict-note-spacing} bewirkt, dass Takt- und +Tonartbezeichnungen, Schlüssel und Versetzungszeichen +keine Rolle bei der Berechnung der Abstände spielen. -@node Line length -@subsection Line length +Zusätzlich zu den hier vorgestellten Einstellungen gibt es +noch eine Reihe von Möglichkteiten, die oft in proportionaler +Notation benutzt werden. Dazu gehören: -@untranslated +@itemize +@item @code{\override SpacingSpanner #'strict-grace-spacing = ##t} +@item @code{tupletFullLength = ##t} +@item @code{\override Beam #'breakable = ##t} +@item @code{\override Glissando #'breakable = ##t} +@item @code{\override TextSpanner #'breakable = ##t} +@item @code{\remove Forbid_line_break_engraver in the Voice context} +@end itemize +Diese Einstellungn bewirken, dass auch Verzierungsnoten proportional +gesetzt werden, dass Klammern von rhythmischen Gruppen bis zu den +Anfangs- und Endpunkten ausgedehnt werden und lassen dehnbare +Objekte wie Balken und Glissandi auch über Taktstriche hinweg zu. -@node Proportional notation -@subsection Proportional notation +@seealso +Notationsreferenz: +@ref{New spacing area}. -@untranslated +Schnipsel: +@rlsr{Spacing}. @node Fitting music onto fewer pages @section Fitting music onto fewer pages -@untranslated +Manchmal kommt es vor, dass nur ein oder zwei Systeme auf die +nächste Seite geraten, obwohl es so aussieht, als ob auf der +vorigen Seite genügend Platz ist, um diese Systeme auch noch +unterzubringen. +Wenn man derartige Platzierungsprobleme untersucht, ist die +Funktion @code{annotate-spacing} von sehr großer Hilfe. Hiermit +wird in den Musiksatz zusätzlich Information darüber ausgegeben, +wieviel Platz bestimmten Parametern zugewiesen wird. Genaueres +hierzug in +@ref{Displaying spacing}. @menu * Displaying spacing:: * Changing spacing:: @end menu + @node Displaying spacing @subsection Displaying spacing -@untranslated +@cindex Platzierung, Layouteinstellungen + +@funindex annotate-spacing + +Die Dimensionen von vertikalen und horizontalen Platzierungsvariablen, +die veränderbar sind, lassen sich mit ihren aktuellen Werten im +Notentext anzeigen, wenn man die Funktion +@code{annotate-spacing} in der @code{\paper}-Umgebung einschaltet: + +@c need to have \book{} otherwise we get the separate systems. -hwn +@lilypond[verbatim,quote] +#(set-default-paper-size "a6" 'landscape) +\book { + \score { { c4 } } + \paper { annotate-spacing = ##t } +} +@end lilypond + +@noindent +Alle Layoutdimensionen werden in Notenlinienzwischenräumen +aufgelistet, unabhängig von den Einheiten, mit denen sie in der +@code{\paper}- oder @code{\layout}-Umgebung definiert worden +sind. In dem letzten Beispiel hat @code{paper-height} einen Wert von +59.75 Notenlinienzwischenräumen und @code{staff-size} +Systemhöhe) ist 20 Punkte. Dabei gilt: + +@multitable {1 Notenlinienzwischenraum} {Systemgröße)/4 * (25.4/72.27) mm} + +@item 1 Punkt +@tab = (25.4/72.27) mm + +@item 1 Notenlinienzwischenraum +@tab = (@code{staff-size})/4 pts +@item +@tab = (@code{staff-size})/4 * (25.4/72.27) mm + +@end multitable + +In diesem Fall ist ein @code{staff-space} (Notenlinienzwischenraum) +etwa gleich 1.757 mm. Deshalb entspricht der Wert von 95.75 +@code{staff-space} für @code{paper-height} (Papierhöhe) 105 mm, +die Höhe eines quer gelegten A6-Papiers. Die Paare (@var{a},@var{b}) sind +Intervalle, wobei @var{a} der untere Rand und @var{b} der +obere Rand des Intervalls. + +@seealso + +Notationsreferenz: +@ref{Setting the staff size} + +Schnipsel: +@rlsr{Spacing}. @node Changing spacing @subsection Changing spacing -Manchmal bleiben nur noch ein oder zwei Systeme auf der -letzten Seite übrig. Das ist immer ärgerlich, besonders -wenn es scheint, dass auf den vorigen Seiten genug Platz -ist, um die Systeme noch unterzubringen. +Die Ausgabe von @code{annotate-spacing} bietet sehr viele +Details zu den vertikalen Dimensionen einer Paritur. Zu Information, +wie Seitenränder und andere Layout-Variablen geändert werden +können, siehe @ref{Page formatting}. -Wenn man versucht, das Layout zu verändern, kommt einem -der Befehl @code{annotate-spacing} zu Hilfe. Mit diesem -Befehl erhält man die Werte von verschiedenen Abstandsbefehlen -ausgedruckt, mehr Information im Kapitel @ref{Displaying spacing}. -Anhand dieser Angaben kann dann entschieden werden, welche -Werte verändert werden müssen. - -Neben Rändern gibt es nämlich weitere Optionen, Platz zu sparen: +Neben Rändern gibt es einige weitere Optionen, Platz zu sparen: @itemize @item @@ -287,9 +2641,17 @@ dann so anordnen, dass kein weißer Rand unten auf der Seite entsteht. @end example @item -Die Anzahl der Systeme kann reduziert werden (wenn LilyPond -die Musik auf 11 Systeme verteilt, kann man die Benutzung von -nur 10 Systemen erzwingen). +Die Anzahl der Systeme kann reduziert werden. Das kann auf +zwei Arten helfen: wenn einfach nur ein Wert gesetzt wird, auch +wenn es die gleiche Anzahl ist, die auch schon vorher von LilyPond +erstellt wurde, kann manchmal dazu führen, dass mehr Systeme +auf eine Seite gesetzt werden. Das liegt daran, dass ein +Schritt im Notensatz ausgelassen wird, der die Seitenverteilung +nur grob einschätzt, sodass eine bessere Seitenverteilung +entsteht. Auch wenn man eine Verringerung der Anzahl an Systemen +erzwingt, kann oft eine Seite eingespart werden. Wenn LilyPond +die Musik etwa auf 11 Systeme verteilt, kann man die Benutzung von +nur 10 Systemen erzwingen. @example \paper @{ @@ -307,37 +2669,70 @@ nur auf einer Zeile gedruckt werden. Ein anderes Beispiel ist es, Dynamik-Zeichen, die besonders weit @qq{hervorstehen}, zu verschieben. -@lilypond[verbatim,quote,fragment] +@lilypond[verbatim,quote] \relative c' { e4 c g\f c - \override DynamicLineSpanner #'padding = #-1.8 - \override DynamicText #'extra-offset = #'( -2.1 . 0) + \override DynamicText #'extra-offset = #'( -2.2 . 2.0) e4 c g\f c } @end lilypond @item Die horizontalen Abstände können mit der - @code{SpacingSpanner}-Eigenschaft verändert werden. Siehe -@ref{Changing horizontal spacing} für Einzelheiten. +@code{SpacingSpanner}-Eigenschaft verändert werden. Siehe +@ref{Changing horizontal spacing} für Einzelheiten. Dieses +Beispiel zeigt die normalen Abstände: @lilypond[verbatim,quote] \score { \relative c'' { - g4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | - g4 e e2 | f4 d d2 | c4 e g g | c,1 | - d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | - g4 e e2 | f4 d d2 | c4 e g g | c,1 | + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | + } +} +@end lilypond + +@noindent +Das nächste Beispiel verändert @code{common-shortest-duration} (die +häufigste kürzeste Note) von @code{1/4} zu @code{1/2}. Die Viertelnote +ist dennoch die häufigste Note in diesem Abschnitt, sodass der +Notentext zusammengedrängt, wird, wenn eine Halbe als Standard +angegeben wird: + +@lilypond[verbatim,quote] +\score { + \relative c'' { + g4 e e2 | + f4 d d2 | + c4 d e f | + g4 g g2 | + g4 e e2 | } \layout { \context { \Score \override SpacingSpanner - #'base-shortest-duration = #(ly:make-moment 1 4) + #'common-shortest-duration = #(ly:make-moment 1 2) } } } @end lilypond +@noindent +Die @code{common-shortest-duration}-Eigenschaft kann nicht +dynamisch verändert werden, darum muss sie immer in der +@code{\context}-Umgebung definiert werden und wirkt sich somit +auf eine ganze @code{\score}-Umgebung aus. + @end itemize +@seealso +Notationsreferenz: +@ref{Page formatting}, +@ref{Changing horizontal spacing}. + +Schnipsel: +@rlsr{Spacing}.