| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Advanced tweaks
Dieser Abschnitt behandelt verschiedene Möglichkeiten, das Aussehen des Notenbildes zu polieren.
| 5.5.1 Objekte ausrichten | ||
| 5.5.2 Vertikale Gruppierung der grafischen Objekte („grob“s) | ||
| 5.5.3 stencils verändern | ||
| 5.5.4 Formen verändern | ||
| 5.5.5 Reine und unreine Container |
Handbuch zum Lernen: (learning)Die Ausgabe verbessern in Abschnitt ‘Die Ausgabe verbessern’ in Handbuch zum Lernen, (learning)Mehr Information in Abschnitt ‘Mehr Information’ in Handbuch zum Lernen.
Notationsreferenz: Die Referenz der Programminterna erklärt, Eigenschaften verändern.
Erweitern: (extending)Schnittstellen für Programmierer in Abschnitt ‘Schnittstellen für Programmierer’ in Extending.
Installierte Dateien: ‘scm/define-grobs.scm’.
Schnipsel: (snippets)Tweaks and overrides in Abschnitt ‘Tweaks and overrides’ in Schnipsel.
Referenz der Interna: (internals)All layout objects in Abschnitt ‘All layout objects’ in Referenz der Interna.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Aligning objects
Graphische Objekte, die das self-alignment-interface und/obder
das side-position-interface unterstützen, können an einem
vorher gesetzten Objekt auf verschiedene Weise ausgerichtet werden.
Eine Liste derartiger Objekte findet sich in
(internals)self-alignment-interface in Abschnitt ‘self-alignment-interface’ in Referenz der Interna und
(internals)side-position-interface in Abschnitt ‘side-position-interface’ in Referenz der Interna.
Alle graphischen Objekte haben einen Referenzpunkt, eine horizontale Ausdehnung und eine vertikale Ausdehnung. Die horizontale Ausdehnung ist ein Zahlenpaar, mit dem die Verschiebung der rechten und linken Ecken ausgehend vom Referenzpunkt angegeben werden, wobei Verschiebungen nach links mit negativen Zahlen notiert werden. Die vertikale Ausdehnung ist ein Zahlenpaar, das die Verschiebung der unteren und oberen Ränder vom Referenzpunkt ausgehend angibt, wobei Verschiebungen nach unten mit negativen Zahlen notiert werden.
Die Position eines Objektes auf dem Notensystem wird mit Werten
von X-offset und Y-offset angegeben. Der Wert von
X-offset gibt die Verschiebung von der X-Koordinate des
Referenzpunkts des Elternobjektes an, der Wert von Y-offset
die Verschiebung ausgehend von der Mittellinie des Notensystemes.
Die Werte von X-offset und Y-offset können direkt
bestimmt werden oder durch Prozeduren errechnet werden, sodass
eine Ausrichtung mit dem Elternobjekt erreicht werden kann.
Achtung: Viele Objekte brauchen besondere Überlegungen zu ihrer
Position, weshalb in manchen Fällen manuell gesetzte Werte von
X-offset oder Y-offset ignoriert oder verändert
werden können, obwohl das Objekt das
self-alignment-interface unterstützt. Wenn man X-offset
oder Y-offset auf einen festen Wert setzt, wird die entsprechende
self-alignment-Eigenschaft ignoriert.
Ein Versetzungszeichen beispielsweise kann vertikal durch Veränderung
von Y-offset verschoben werden, aber Änderungen von
X-offset haben keine Auswirkung.
Übungszeichen können an trennbaren Objekten (wie Taktstrichen,
Schlüsseln, Taktarten und Tonartvorzeichen) ausgerichtet werden.
In break-aligned-interface finden sich besondere Eigenschaften,
mit denen Übungszeichen an derartigen Objekten ausgerichtet werden können.
Notationshandbuch:
Benutzung des break-alignable-interface.
Erweitern: (extending)Callback functions in Abschnitt ‘Callback functions’ in Extending.
X-offset und Y-offset direkt setzen | ||
Das side-position-interface benutzen | ||
Das self-alignment-interface benutzen | ||
Benutzung des break-alignable-interface |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
X-offset und Y-offset direkt setzen@translationof Setting X-offset and Y-offset directly
Numerische Werte können den X-offset- und Y-offset-Eigenschaften
vieler Objekte zugewiesen werden. Das folgende Beispiel zeigt
drei Noten mit der Standardposition von Fingersatzanweisungen
und die Positionen, wenn X-offset und Y-offset
verändert werden.
a'-3 a' -\tweak X-offset #0 -\tweak Y-offset #0 -3 a' -\tweak X-offset #-1 -\tweak Y-offset #1 -3
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
side-position-interface benutzen@translationof Using the side-position-interface
Ein Objekt, das die side-position-interface-Schnittstelle
unterstützt, kann neben sein Elternobjekt gesetzt werden,
sodass zwei definierte Enden der Objekte sich berühren.
Das Objekt kann über, unter, rechts oder links vom
Ursprungsobjekt positioniert werden. Das Ursprungsobjekt
kann nicht definiert werden: es ergibt sich aus der Reihenfolge
der Objekte in der Eingabe. Die meisten Objekte haben
einen Notenkopf als Ursprung assoziiert.
Die Werte von side-axis und direction bestimmen,
wo das Objekt platziert werden soll, wie in der Tabelle
zu sehen:
side-axis- | direction- | |
|---|---|---|
| Eigenschaft | Eigenschaft | Platzierung |
0 | -1 | links |
0 | 1 | rechts |
1 | -1 | unten |
1 | 1 | oben |
Wenn side-axis gleich 0 ist, sollte X-offset
auf die Prozedur ly:side-position-interface::x-aligned-side
gesetzt werden. Diese Prozedur errechnet den richtigen Wert für
X-offset, sodass das Objekt auf der rechten oder linken
Seite des Ursprungs angeordnet wird, entsprechend dem Wert
der direction-Eigenschaft.
Wenn side-axis gleich 1 ist, sollte Y-offset
auf die Prozedur ly:side-position-interface::y-aligned-side
gesetzt werden. Diese Prozedur errechnet den richtigen Wert für
Y-offset, sodass das Objekt über oder unter dem Ursprungsobjekt
angeordnet wird, entsprechend dem Wert der direction-Eigenschaft.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
self-alignment-interface benutzen@translationof Using the self-alignment-interface
Selbstausrichtende Objekte horizontal
Die horizontale Ausrichtung eines Objektes, das die
self-alignment-interface-(Selbstausrichtungs)-Schnittstelle
unterstützt, wird durch den Wert von self-alignment-X
kontrolliert, vorausgesetzt die Eigenschaft X-offset des
Objektes ist auf ly:self-alignment-interface::x-aligned-on-self
gesetzt. self-alignment-X kann eine beliebige reale
Zahl zugewiesen werden, in Einheiten der Hälfte der
X-Gesamtausdehnung des Objekts. Negative Werte verschieben
das Objekt nach rechts, positive nach links. Ein Wert von
0 zentriert das Objekt auf dem Referenzpunkt des
Ursprungs, ein Wert von -1 richtet die linke Ecke des
Objekts am Referenzpunkt des Ursprungsobjektes aus, ein
Wert von 1 richtet die rechte Ecke des Objektes am
Referenzpunkt des Ursprungsobjektes aus. Die Symbole
LEFT, CENTER und RIGHT können anstelle
von -1, 0 und 1 eingesetzt werden.
Normalerweise würde der \override-Befehl benutzt werden, um
die Werte von self-alignment-X zu verändern, aber der
\tweak-Befehl kann benutzen, um verschiedene Anmerkungen
an einer einzigen Note auszurichten:
a' -\tweak self-alignment-X #-1 ^"left-aligned" -\tweak self-alignment-X #0 ^"center-aligned" -\tweak self-alignment-X #RIGHT ^"right-aligned" -\tweak self-alignment-X #-2.5 ^"aligned further to the right"
Objekte vertikal automatisch ausrichten
Objekte können auf ähnliche Weise auch vertikal aneinander
ausgerichtet werden, wenn ihre Y-offset-Eigenschaft
auf ly:self-alignment-interface::y-aligned-on-self
gesetzt ist. Oft greifen jedoch auch andere Mechanismen
bei der vertikalen Ausrichtung ein: Der Wert von
Y-offset ist nur eine der Variablen, die für die
Berechnung benutzt werden. Darum ist es kompliziert, den
Wert für einige Objekte richtig anzupassen. Die Einheiten
sind Halbe der vertikalen Ausdehnung des Objektes, welche
normalerweise recht klein ist, sodass ziemlich große Werte
erforderlich sein können. Der Wert -1 richtet die
untere Kante des Objekts am Referenzpunkt des Ursprungsobjektes
aus, der Wert 0 richtet die Mitte des Objekts am
Referenzpunkt des Ursprungsobjektes aus und der Wert 1
richtet die Oberkante des Objektes am Referenzpunkt des
Ursprungsobjektes aus. Die Symbole DOWN, CENTER
und UP können anstelle von -1, 0
und 1 benutzt werden.
Automatische Ausrichtung in beide Richtungen
Indem sowohl X-offset als auch Y-offset eingestellt
werden, kann ein Objekt gleichzeitig in beiden Richtungen ausgerichtet
werden.
Das folgende Beispiel zeigt, wie man eine Fingersatzanweisung so ausrichtet, dass sie nah am Notenkopf bleibt.
a' -\tweak self-alignment-X #0.5 % move horizontally left -\tweak Y-offset #ly:self-alignment-interface::y-aligned-on-self -\tweak self-alignment-Y #-1 % move vertically up -3 % third finger
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
break-alignable-interface@translationof Using the break-alignable-interface
Übungszeichen und Taktzahlen können an Notationsobjekten (ausschließlich
Taktstriche) ausgerichtet werden. Zu diesen Objekten gehören
ambitus, breathing-sign, clef, custos,
staff-bar, left-edge, key-cancellation,
key-signature und time-signature.
Standardmäßig werden Übungszeichen und Taktzahlen horizontal über dem Objekt zentriert:
% The RehearsalMark will be centered above the Clef \override Score.RehearsalMark.break-align-symbols = #'(clef) \key a \major \clef treble \mark "↓" e1 % The RehearsalMark will be centered above the TimeSignature \override Score.RehearsalMark.break-align-symbols = #'(time-signature) \key a \major \clef treble \time 3/4 \mark "↓" e2. % The rehearsal mark will be centered above the Breath Mark \override Score.RehearsalMark.break-align-symbols = #'(breathing-sign) \key a \major \clef treble \time 4/4 e1 \breathe \mark "↓"
Eine Liste von möglichen Objekten zur Ausrichtung kann definiert
werden. Wenn eins dieser Objekte an der aktuellen Stelle unsichtbar
ist (etwa durch Einstellung von break-visibility oder die
expliziten Sichtbarkeitseinstellungen von Taktart und Vorzeichen),
werden Übungszeichen und Taktzahlen an dem ersten Objekt in der
Liste ausgerichtet, dass sichtbar ist. Wenn keine Objekte in der
Liste sichtbar sind, wird das Objekt am Taktstrich ausgerichtet.
Wenn der Taktstrich unsichtbar ist, wird das Objekt an der Stelle
ausgerichtet, an der sich der Taktstrich befinden würde.
% The RehearsalMark will be centered above the Key Signature \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e1 % The RehearsalMark will be centered above the Clef \set Staff.explicitKeySignatureVisibility = #all-invisible \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef bass \mark "↓" gis,,1 % The rehearsal mark will be centered above the Bar Line \set Staff.explicitKeySignatureVisibility = #all-invisible \set Staff.explicitClefVisibility = #all-invisible \override Score.RehearsalMark.break-align-symbols = #'(key-signature clef) \key a \major \clef treble \mark "↓" e''1
Die Ausrichtung des Übungszeichen relativ zum Notationsobjekt kann verändert werden, wie das nächste Beispiel zeigt. In einer Partitur mit vielen Systemen würde man diese Einstellung für alle Systeme vornehmen.
% The RehearsalMark will be centered above the KeySignature \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \key a \major \clef treble \time 4/4 \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the KeySignature \once \override Score.KeySignature.break-align-anchor-alignment = #LEFT \mark "↓" \key a \major e1 % The RehearsalMark will be aligned with the right edge of the KeySignature \once \override Score.KeySignature.break-align-anchor-alignment = #RIGHT \key a \major \mark "↓" e1
Das Übungszeichen kann auch nach rechts oder links um einen beliebigen Wert verschoben werden. Die Einheiten sind in Notenlinienzwischenräumen:
% The RehearsalMark will be aligned with the left edge of the KeySignature % and then shifted right by 3.5 staff-spaces \override Score.RehearsalMark.break-align-symbols = #'(key-signature) \once \override Score.KeySignature.break-align-anchor = #3.5 \key a \major \mark "↓" e1 % The RehearsalMark will be aligned with the left edge of the KeySignature % and then shifted left by 2 staff-spaces \once \override Score.KeySignature.break-align-anchor = #-2 \key a \major \mark "↓" e1
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Vertical grouping of grobs
Die graphischen Objekte VerticalAlignment und
VerticalAxisGroup funktionieren zusammen.
VerticalAxisGroup gruppiert unterschiedliche Objekte
wie Notensysteme, Gesangstext usw. zusammen.
VerticalAlignment richtet die unterschiedlichen
Objektgruppen dann aneinander aus. Es gibt normalerweise
nur ein VerticalAlignment in einer Partitur, aber
jedes Notensystem, Gesangstext usw. hat eine eigene
VerticalAxisGroup.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Modifying stencils
Alle Layout-Objekte haben eine stencil-(Stempel-)Eigenschaft,
die ein Teil von grob-interface ist. Diese Eigenschaft
ist normalerweise als eine Funktion definiert, die auf das jeweilige
Objekt angepasst ist und das Symbol erstellt, dass dann im Druckbild
erscheint. Beispielsweise die Standardeinstellung für die
stencil-Eigenschaft von MultiMeasureRest
(Ganztaktpausenobjekt) ist ly:multi-measure-rest::print.
Das Standardsymbol für jedes Objekt kann ersetzt werden, indem man
die stencil-Eigenschaft verändert, sodass sie auf eine
andere, speziell geschriebene Prozedur verweist. Das erfordert
einen hohen Grad an Kenntnis der LilyPond-Interna, aber es gibt
einen einfacheren Weg, mit dem man oft vergleichbarere Ergebnisse
erzielen kann.
Dieser Weg besteht darin, die stencil-Eigenschaft auf die
Prozedur zu verweisen, die Text ausgibt: ly:text-interface::print
und eine text-Eigenschaft zu dem Objekt hinzuzufügen,
in welcher dann die Textbeschriftung definiert wird, mit der
das entsprechende Symbol dargestellt wird. Aufgrund der
Flexibilität der Textbeschriftung ist hier sehr viel möglich.
Siehe zu Details insbesondere
Graphische Notation innerhalb einer Textbeschriftung.
Das folgende Beispiel zeigt diese Methode, indem das Symbol der Notenköpfe in ein Kreuz innerhalb eines Kreises umgewandelt wird.
XinO = { \once \override NoteHead.stencil = #ly:text-interface::print \once \override NoteHead.text = \markup { \combine \halign #-0.7 \draw-circle #0.85 #0.2 ##f \musicglyph "noteheads.s2cross" } } \relative { a' a \XinO a a }
Alle Schriftzeichen in der Feta-Glyphe können
mit dem \musicglyph-Befehl erreicht werden.
Siehe auch Die Emmentaler-Schriftart.
Notationsreferenz: Graphische Notation innerhalb einer Textbeschriftung, Text formatieren, Textbeschriftungsbefehle, Die Emmentaler-Schriftart.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Modifying shapes
| Bögen verändern |
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Modifying ties and slurs
Binde-, Legato- und Phrasierungsbögen werden als Bézierkurven dritter Ordnung gezeichnet. Wenn die Form eines automatischen Bogens nicht optimal ist, kann sie manuell verändert werdne, indem man die vier erforderlichen Kontrollpunkte angibt.
Bézierkurven dritter Ordnung (auch als quadratische Bézierkurven bezeichnet) werden durch vier Kontrollpunkte definiert. Der erste und vierte Kontrollpunkt geben Beginn und Ende der Kurve an. Die zwei Punkte dazwischen werden benutzt, um die Form der Kurve zu bestimmen. Im Internet gibt es Animationen, die illustrieren, wie eine derartige Kurve gezeichnet wird, aber die folgende Beschreibung kann hilfreich sein. Die Kurve beginnt am ersten Kontrollpunkt in Richtung des zweiten, wobei sie sich schrittweise krümmt um zum dritten Kontrollpunkt zu gelangen, von wo aus sie sich weiter zum vierten Punkt hin krümmt. Die Form der Kurve wird vollständig von den vier Punkten definiert.
Hier ein Beispiel eines Falles, in dem der Bogen nicht optimal
erscheint, und wo auch \tieDown das Problem nicht
lösen würde.
<< { e'1~ 1 } \\ \relative { r4 <g' c,> <g c,> <g c,> } >>
Eine Möglichkeit, diesen Bogen zu verbessern, ist es, seine Kontrollpunkte manuell zu verändern:
Die Koordinaten von Bézierkontrollpunkten werden in Notenlinienzwischenräumen angegeben. Die X-Achse ist relativ zum Referenzpunkt der Note, an die der Bogen angefügt wird, und die Y-Achse relativ zur Mittellinie des Notensystems. Die Koordinaten werden als eine Liste von vier Paaren an realen Dezimalzahlen eingegeben. Eine Möglichkeit ist es, die Koordinaten der zwei Endpunkte zu schätzen und dann die zwei Zwischenpunkte zu erraten. Die optimalen Werte können nur durch Ausprobieren gefunden werden.
Es lohnt sich daran zu denken, dass eine symmetrische Kurve symmetrische Kontrollpunkte benötigt, und dass Bézierkurven die nützliche Eigenschaft haben, dass eine Transformation der Kurve wie eine Übersetzung, Drehung oder Skalierung der Kurve erreicht werden kann, indem man die gleiche Skalierung auf die Kontrollpunkte anwendet.
In dem obigen Beispiel geben folgende Werte einen zufriedenstellenden Bogen – Achtung: der Befehl muss direkt vor dem Beginn der Note gesetzt werden, an die der (Binde-)Bogen angehängt wird.
<< { \once \override Tie.control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) e1~ 1 } \\ { r4 <g c,> <g c,> <g c,> } >>
Es ist nicht möglich, die Form von Bögen anhand ihrer
control-points-Eigenschaft zu verändern, wenn
mehrere Binde- oder Legatobögen zum gleichen musikalischen Moment
auftreten, nicht einmal mit dem \tweak-Befehl. Die Eigenschaft
tie-configuration von TieColumn kann jedoch verändert
werden, sodass Startlinie und Richtung wie benötigt platziert werden.
Referenz der Interna: (internals)TieColumn in Abschnitt ‘TieColumn’ in Referenz der Interna.
| [ < ] | [ > ] | [ << ] | [ Nach oben ] | [ >> ] | [Anfang] | [Inhalt] | [Index] | [ ? ] |
@translationof Unpure-pure containers
Unreine und reine Container (engl. unpure/pure containers) sind
nützlich, wenn man die Berechnungen der Platzierungen für die
Y-Achse verändern will, insbesondere für Y-offset
und Y-extent. Mit diesen Containern kann die Veränderung
durch eine Scheme-Funktion anstelle einer direkten Zahl oder eines
Paares vorgenommen werden.
Für bestimmte Grobs basiert die Eigenschaft Y-extent auf
der stencil-Eigenschaft. Wenn diese mit \override
verändert werden soll, braucht man eine zusätzliche Veränderung
von Y-extent mit einem unreinen-reinen Container. Wenn eine
Funktion Y-offset und/oder Y-extent verändert, wird
angenommen, dass dadurch Zeilenumbruchsberechnungen zu früh während
der Kompilation aufgerufen werden. Die Funktion wird also überhaupt
nicht ausgewertet (und gibt also normalerweise den Wert ‘0’ oder
‘'(0 . 0)’ zurück), wodurch sich Zusammenstöße ergeben können.
Eine „saubere“ Funktion beeinflusst keine Eigeschaften, Objekte
oder Grob-Suizide, weshalb ihre Werte, die sich auf Y-axis
beziehen, richtig berechnet werden.
Es gibt zuzeit etwa 30 Funktionen, die schon als „sauber“ erachtet werden, und unsaubere-saubere Container sind eine Möglichkeit, auch Funktionen, die sich nicht auf dieser Liste befinden, als „sauber“ zu markieren. Die „saubere“ Funktion wird ausgewertet, bevor Seitenumbruch stattfindet, sodass die horizontale Platzierung „rechtzeitig“ stattfindet. Die „unsaubere“ Funktion wird dann nach dem Seitenumbruch ausgewertet.
Achtung: Da es schwierig ist, immer sicher zu sein, welche Funktionen sich
auf dieser Liste befinden, wird empfohlen, dass die selbsterstellten
„sauberen“ Funktionen nicht die Grobs Beam oder VerticalAlignment
einsetzen.
Ein unsauberer-sauberer Container wird wie folgend erstellt:
(ly:make-unpure-pure-container f0 f1)
wobei f0 eine Fuktion ist, die n Arguments braucht
(n >= 1) und deren erstes Argument immer der Grob sein muss.
Das ist die Funktion, die das eigentliche Resultat ausgibt. f1
ist die Funktion, die als „sauber“ bezeichnet wird, und braucht n + 2
Argumente. Wiederum muss das erste Argument immer der Grob sein, aber
das erste und zweite Argument sind „Beginn-“ und „Endeargumente“.
start (Beginn) und end (Ende) sind absichtlich
nur Platzhalter, die nur für die Strecker gelten (etwa Hairpin oder
Beam), die unterschiedliche Höhenberechnungen je nach beginnender und
endender Note ausgeben können.
Der Rest sind andere Argumente für die erste Funktion (es können auch Null sein, wenn n = 1).
Die Ergebnisse der zweiten Funktion werden als Näherungswert des benötigten Wertes benutzt, welche dann von der ersten Funktion eingesetzt wird, um den wirklichen Wert auszugeben, mit dem dann sehr viel später im Layoutprozess die Platzierung justiert werden soll.
#(define (square-line-circle-space grob) (let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch)) (notename (ly:pitch-notename pitch))) (if (= 0 (modulo notename 2)) (make-circle-stencil 0.5 0.0 #t) (make-filled-box-stencil '(0 . 1.0) '(-0.5 . 0.5))))) squareLineCircleSpace = { \override NoteHead.stencil = #square-line-circle-space } smartSquareLineCircleSpace = { \squareLineCircleSpace \override NoteHead.Y-extent = #(ly:make-unpure-pure-container ly:grob::stencil-height (lambda (grob start end) (ly:grob::stencil-height grob))) } \new Voice \with { \remove "Stem_engraver" } \relative c'' { \squareLineCircleSpace cis4 ces disis d \smartSquareLineCircleSpace cis4 ces disis d }
Im ersten Takt weiß die Layoutmaschine ohne den unsauberen-sauberen Container nicht die Breite des Notenkopfes und lässt ihn deshalb mit den Versetzungszeichen zusammenstoßen. Im zweiten Takt, mit unreinen-reinen Containern, weiß die Layoutmaschine die Breite des Notenkopfes und vermeidet den Zusammenstoßf, indem die Zeile entsprechend verlängert wird.
Normalerweise können für eine einfache Berechnungen fast identische Funktionen für den „unsauberen“ und „sauberen“ Teil benutzt werden, indem nur die Zahl der Argumente und die Reichweite der Funktion verändert wird.
Achtung: Wenn eine Funktion als „sauber“ bezeichnet ist und das aber nicht ist, können unerwartete Ergebnisse auftreten.
| [ < ] | [ > ] | [ << ] | [ 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.