| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Breaks
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Line breaking
Zeilenumbrüche werden normalerweise automatisch erstellt. Sie werden so ausgewählt, dass die Zeilen weder gedrängt noch zu weit gespreizt wirken und aufeinander folgende Seiten einen ähnlichen Grauwert haben.
Einen manuellen Zeilenumbruch fügt man mit dem Befehl \break
ein:
\relative c'' { c4 c c c | \break c4 c c c | }
Normalerweise wird ein \break in der Mitte eines Takes ignoriert
und eine Warnung ausgegeben. Um einen Zeilenumbruch in der Mitte eines
Taktes zu erzwingen, können Sie mit \bar "" eine
unsichtbare Taktlinie hinzufügen, die dann den Zeilenumbruch
erlaubt.
\relative c'' { c4 c c \bar "" \break c | c4 c c c | }
Ein \break an einem Taktstrich wird auch ignoriert, wenn der letzte
Takt mitten in einer Note endet, wenn etwa eine N-tole in unterschiedlichen
Takten beginnt und endet. Damit \break auch in derartigen Situationen
funktioniert, muss Forbid_line_break_engraver aus der
Voice-Umgebung entfernt werden. Dabei sollte beachtet werden, dass
manuell hervorgerufene Umbrüche parallel mit den Noten hinzugefügt werden
müssen.
\new Voice \with { \remove "Forbid_line_break_engraver" } \relative { << { c''2. \tuplet 3/2 { c4 c c } c2. | } { s1 | \break s1 | } >> }
Genauso werden normalerweise Zeilenumbrüche auch verhindert, wenn Balken
über die Taktenden hinausragen. Dieses Verhalten kann verändert werden,
indem man \override Beam.breakable = ##t einstellt:
\relative c'' { \override Beam.breakable = ##t c2. c8[ c | \break c8 c] c2. | }
Mit dem Befehl \noBreak wird ein Zeilenumbruch an dem
entsprechenden Taktstrich verboten.
Die grundlegenden Einstellungen, die Einfluss auf die Zeilenlänge
haben, sind indent (Einzug) und line-width
(Zeilenbreite). Sie werden in der \layout-Umgebung
eingestellt. Der erste Befehl bestimmt den Einzug der ersten
Zeile, der zweite die Zeilenlänge der weiteren Notenzeilen.
Wenn ragged-right eingestellt ist (also in der
\layout-Umgebung auf den Wert #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 ragged-last verhält sich ähnlich zu ragged-right,
aber wirkt sich nur auf die letzte Zeile eines Stückes aus.
\layout {
indent = #0
line-width = #150\mm
ragged-last = ##t
}
|
Um Zeilenumbrüche zu erzwingen, die in festgelegten Intervallen
stattfinden, kann der Befehl \break in Kombination
mit unsichtbaren Noten und einer Wiederholung (\repeat) eingesetzt
werden. Das folgende Beispiel etwa setzt die nächsten
28 Takte (im 4/4-Takt) in Zeilen zu jeweils 4 Takten (die auch nur hier
umgebrochen werden):
<<
\repeat unfold 7 {
s1 \noBreak s1 \noBreak
s1 \noBreak s1 \break
}
{ Hier die Noten… }
>>
|
Eine Zeilenumbruchkonfiguration kann auch als eine ‘.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 (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
Notationsreferenz:
\paper-Variablen für den Zeilenumbruch.
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
Referenz der Interna: (internals)LineBreakEvent in Abschnitt ‘LineBreakEvent’ in Referenz der Interna.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Page breaking
Die Standardseitenumbrüche können verändert werden, indem
man die Befehle \pageBreak bzw. \noPageBreak
benutzt. Sie verhalten sich analog zu den Befehlen
\break und \noBreak. Sie sollten an einem
Taktstrich notiert werden. Diese Befehle erzwingen bzw.
verbieten einen Seitenumbruch. Mit dem \pageBreak-Befehl
wird natürlich gleichzeitig auch ein Zeilenumbruch erzwungen.
Die \pageBreak und \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
ragged-right und ragged-last:
ragged-bottom und ragged-last-bottom. Wenn diese
Variablen auf #t (wahr) 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 Vertikale \paper-Variablen mit festen Abständen.
Seitenumbrüche werden von der page-breaking-Funktion errechnet.
LilyPond kennt drei Algorithmen um Seitenumbrüche zu errechnen:
ly:optimal-breaking, ly:page-turn-breaking und
ly:minimal-breaking. Der Standard ist ly:optimal-breaking,
aber der Wert kann in der \paper-Umgebung geändert werden:
\paper{
#(define page-breaking ly:page-turn-breaking)
}
|
Wenn ein Buch (\book) viele Parituren und Seiten hat, kann die
Seitenaufteilung schwer zu ermitteln sein und viel Zeit und Prozessorlast
in Anspruch nehmen. Um den Seitenumbruchsprozess zu vereinfachen,
werden \bookpart-Umgebungen benutzt, um das Buch in mehrere Teil
zu trennen: Die Seitenumbrüche werden seperat für jeden Teil berechnet.
Unterschiedliche Seitenumbruchsfunktionen können in unterschiedlichen
Buchteilen benutzt werden.
\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 { … }
…
}
\bookpart {
%% In diesem Abschnitt mit Noten wird
%% die Standard-Seitenumbruchsfunktion benutzt.
\header {
subtitle = "Erster Satz"
}
\score { … }
…
}
|
Notationsreferenz:
\paper-Variablen für den Seitenumbruch.
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Optimal page breaking
Die 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
ly:page-turn-breaking-Funktion hat diese Methode keine
Möglichkeit, Überlegungen zum Umblättern mit einzubeziehen.
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Optimal page turning
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
ly:page-turn-breaking-Funktion versucht, Seitenumbrüche zu
finden, die 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 \paper-Umgebung aktiviert werden, wie gezeigt in
Seitenumbrüche. 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 \allowPageTurn
an jeder Stelle manuell anzugeben.
Wenn Ihnen das zu aufwändig ist, können Sie den Page_turn_engraver
zu einem Staff- oder 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 \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.
Der Page_turn_engraver liest die Kontexteigenschaft
minimumPageTurnLength um zu erkennen, wie lang eine Stelle
frei von Noten sein muss, damit ein Seitenumbruch in Frage kommt. Der
Standardwert hierfür ist (ly:make-moment 1/1). Wenn Sie
Seitenumbrüche zum Umblättern ausschalten wollen, können Sie
einen sehr großen Wert angeben.
\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
}
|
Der Page_turn_engraver erkennt Wiederholungen vom Typ 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
minimumRepeatLengthForPageTurn definieren, erlaubt der
Page_turn_engraver nur Umblättern in Wiederholungen, deren
Dauer länger als dieser Wert ist.
Die Seitenumblätter-Befehle \pageTurn, \noPageTurn und
\allowPageTurn können auch auf oberster Dateiebene benutzt
werden, etwa zwischen Partituren und Textabschnitten.
\pageTurn,
\noPageTurn,
\allowPageTurn.
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
In einer Partitur sollte nur ein Page_turn_engraver vorkommen. Wenn
mehr als einer definiert werden, stören sie sich gegenseitig.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Minimal page breaking
Die 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:
\paper {
page-breaking = #ly:minimal-breaking
}
|
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof One-line page breaking
Die Funktion ly:one-line-breaking ist ein besonderer
Seitenumbruchalgorithmus, der jede Partitur (score) auf
eine eigene Seite ausgibt, und in einer einzlenen Zeile. Diese
Seitenumbruchfunktion gibt keine Titel oder Ränder aus, nur die
Partitur wird dargestellt.
Die Seitenbreite wird angepasst, sodass die längeste Partitur auf
eine Zeile passt. Die Variablen paper-width, line-width
und indent in der \paper-Umgebung werden ignoriert,
wenn auch left-margin und right-margin noch beachtet
werden. Die Höhe der Seite wird nicht verändert.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Explicit breaks
Es kann vorkommen, dass LilyPond direkte \break oder
\pageBreak-Befehl nicht beachtet. Mit folgenden
Einstellungen kann dieses Verhalten ausgeschaltet werden:
\override NonMusicalPaperColumn.line-break-permission = ##f \override NonMusicalPaperColumn.page-break-permission = ##f |
Wenn line-break-permission die Einstellung falsch
(##f) hat, werden Zeilenumbrüche nur an den Befehlen
\break eingefügt und nirgendwo anders. Wenn
page-break-permission die Einstellung falsch
(##f) hat, werden Seitenumbrüche nur an den Befehlen
\pageBreak eingefügt und nirgendwo anders.
\paper { indent = #0 ragged-right = ##t ragged-bottom = ##t } music = \relative { c''8 c c c } \score { \new Staff { \repeat unfold 2 { \music } \break \repeat unfold 4 { \music } \break \repeat unfold 6 { \music } \break \repeat unfold 8 { \music } \pageBreak \repeat unfold 8 { \music } \break \repeat unfold 6 { \music } \break \repeat unfold 4 { \music } \break \repeat unfold 2 { \music } } \layout { \context { \Score \override NonMusicalPaperColumn.line-break-permission = ##f \override NonMusicalPaperColumn.page-break-permission = ##f } } }
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Using an extra voice for breaks
Zeilen- und Seitenumbruchbefehle werden normalerweise direkt zusammen mit den Noten eingegeben.
music = \relative { c''4 c c c }
\score {
\new Staff {
\repeat unfold 2 { \music } \break
\repeat unfold 3 { \music }
}
}
|
Hierdurch sind zwar die Befehle \break und \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:
music = \relative { c''4 c c c } \score { \new Staff << \new Voice { s1 * 2 \break s1 * 3 \break s1 * 6 \break s1 * 5 \break } \new Voice { \repeat unfold 2 { \music } \repeat unfold 3 { \music } \repeat unfold 6 { \music } \repeat unfold 5 { \music } } >> }
Mit dieser Herangehensweise kann der Code insbesondere
dann klarer notiert werden, wenn man Einstellungen der
line-break-system-details-Eigenschaft oder
anderer Eigenschaften von
NonMusicalPaperColumnGrob vornimmt (hierzu auch
Vertikale Abstände).
music = \relative { c''4 c c c } \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 { \music } \repeat unfold 3 { \music } \repeat unfold 6 { \music } \repeat unfold 5 { \music } } >> }
Notationsreferenz: Vertikale Abstände.
Schnipsel: (snippets)Spacing in Abschnitt ‘Spacing’ in Schnipsel.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] |
Dieses Dokument wurde erzeugt von gub am 13. Juli 2020 durch texi2html 1.82.
Andere Sprachen: English, català, español, français, italiano, 日本語.
Über die automatische Sprachauswahl.