X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;ds=sidebyside;f=Documentation%2Fde%2Fnotation%2Fchanging-defaults.itely;h=c3cce8cd6c5c3208d6f182f5707015ca23967447;hb=70914e508fe4d9bdde80aeead8a5013491bd2b6e;hp=7296df52b8d600638230d9dbe8ec0b88ba76547d;hpb=e1a149d0cc60b02e86209387958f4028567dd366;p=lilypond.git diff --git a/Documentation/de/notation/changing-defaults.itely b/Documentation/de/notation/changing-defaults.itely index 7296df52b8..c3cce8cd6c 100644 --- a/Documentation/de/notation/changing-defaults.itely +++ b/Documentation/de/notation/changing-defaults.itely @@ -1,14 +1,14 @@ @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*- @ignore - Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213 + Translation of GIT committish: c1df40da9f8b2794e173583c363f9e736e5531bd When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' Guide, node Updating translation committishes.. @end ignore -@c \version "2.12.0" +@c \version "2.15.20" @c Translators: Till Paala @@ -35,7 +35,7 @@ Die definitive Beschreibung der unterschiedlichen Einstellmöglichenkeiten findet sich in einem eigenen Dokument: @rinternalsnamed{Top,der Referenz der Interna}. Diese Referenz zeigt alle Variablen, Funktionen und Optionen, die in LilyPond möglich sind. Es existiert als ein HTML-Dokumente, das -sich +sich @c leave the @uref as one long line. @uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,on@/-line}, aber auch lokal in das LilyPond-Dokumentationspaket integriert lesen lässt. @@ -44,8 +44,8 @@ Intern benutzt LilyPond Scheme (ein LISP-Dialekt), um eine Infrastruktur zur Verfügung zu stellen. Wenn Layoutentscheidungen verändert werden sollen, müssen auf die programminternen Prozesse zugegriffen werden, wozu Scheme-Code benötigt wird. Scheme-Abschnitte werden in einer -LilyPond-Quelldatei mit einer Raute @code{#} begonnen (siehe auch -@rlearning{Scheme-Übung}). +LilyPond-Quelldatei mit einer Raute@tie{}@code{#} begonnen.@footnote{@rextend{Scheme-Übung} enthält eine kurze Übung, wie +man Zahlen, Listen, Zeichenketten und Symbole in Scheme notiert.} @menu @@ -72,7 +72,7 @@ verändern kann. * Umgebungs-Plugins verändern:: * Die Standardeinstellungen von Kontexten ändern:: * Neue Kontexte definieren:: -* Kontexte aneinander ausrichten:: +* Reihenfolge des Kontextlayouts:: @end menu @@ -81,8 +81,8 @@ Handbuch zum Lernen: @rlearning{Kontexte und Engraver}. Installierte Dateien: -@file{ly/@/engraver@/-init@/.ly}, -@file{ly/@/performer@/-init@/.ly}. +@file{ly/engraver-init.ly}, +@file{ly/performer-init.ly}. Schnipsel: @rlsr{Contexts and engravers}. @@ -117,8 +117,7 @@ dafür, dass Elemente wie Schlüssel und Taktart- oder Tonartbezeichnungen Ein @code{Score}-Kontext wird eingerichtet, wenn eine @code{\score @{@dots{}@}} oder @code{\layout @{@dots{}@}}-Umgebung -interpretiert wird, oder explizit mit dem @code{\new Score}-Befehl. - +interpretiert wird. @node Oberste Kontexte -- Container für Systeme @unnumberedsubsubsec Oberste Kontexte -- Container für Systeme @@ -286,7 +285,7 @@ Eine praktische Anwendung von @code{\new} ist eine Partitur mit vielen Systemen. Jede Stimme wird auf einem eigenen System notiert, das mit @code{\new Staff} begonnen wird. -@lilypond[quote,verbatim,relative=2,ragged-right,fragment] +@lilypond[quote,verbatim,relative=2,ragged-right] << \new Staff { c4 c } \new Staff { d4 d } @@ -435,7 +434,7 @@ angetroffen wird, wobei @code{<<...>>}-Konstruktionen ignoriert werden. Jeder Kontext kann am Leben gehalten werden, indem man sicherstellt -dass er zu jedem musikalischen Moment etwas zu tun hat. +dass er zu jedem musikalischen Moment etwas zu tun hat. @code{Staff}-Kontexte werden am Leben gehalten, indem man sicherstellt, dass eine der enthaltenen Stimmen am Leben bleibt. Eine Möglichkeit, das zu erreichen, ist es, unsichtbare Pause zu jeder Stimme @@ -570,7 +569,7 @@ Notationskontexte (wie @code{Score} oder @code{Staff}) speichern nicht nur Eigenschaften, sie enthalten auch Plugins (@qq{engraver} genannt), die die einzelnen Notationselemente erstellen. Ein @code{Voice}-Kontext enthält beispielsweise einen -@code{Note_head_engraver}, der die Notenköpfe erstellt, und ein +@code{Note_heads_engraver}, der die Notenköpfe erstellt, und ein @code{Staff}-Kontext einen @code{Key_signature_engraver}, der die Vorzeichen erstellt. @@ -618,7 +617,7 @@ Es folgt ein einfaches Beispiel, in dem der @code{Clef_engraver} (Engraver für den Schlüssel) aus dem @code{Staff}-Kontext entfernt werden: -@lilypond[quote,relative=1,verbatim,fragment] +@lilypond[quote,relative=1,verbatim] << \new Staff { f2 g @@ -652,26 +651,32 @@ jedes System eine unterschiedliche Taktart hat: @cindex Taktarten, mehrere in Partitur @cindex Taktarten, unterschiedliche per System -@lilypond[quote,relative=1,ragged-right,verbatim,fragment] -\new Score \with { - \remove "Timing_translator" - \remove "Default_bar_line_engraver" -} << +@lilypond[quote,verbatim] +\score { + << + \new Staff \with { + \consists "Timing_translator" + \consists "Default_bar_line_engraver" + } { + \time 3/4 + c4 c c c c c + } \new Staff \with { \consists "Timing_translator" \consists "Default_bar_line_engraver" } { - \time 3/4 + \time 2/4 c4 c c c c c } - \new Staff \with { - \consists "Timing_translator" - \consists "Default_bar_line_engraver" - } { - \time 2/4 - c4 c c c c c - } >> +\layout { + \context { + \Score + \remove "Timing_translator" + \remove "Default_bar_line_engraver" + } + } +} @end lilypond @knownissues @@ -731,28 +736,49 @@ sich auf alle Systeme in dieser Partitur erstrecken sollen. Veränderungen können auch für den @code{Score}- oder alle @code{Voice}-Kontexte auf gleiche Weise vorgenommen werden. -@knownissues +Kontextänderungen können in eine Variable geschrieben werden und dann +einer @code{\context}-Definition zu gewiesen werden, indem man der +Veränderung ein @code{\with} voranstellt: -Es ist nicht möglich, Kontextänderungen als Variable zu definieren und -sie dann in der @code{\context}-Definition anzuwenden, indem man die -Variable aufruft. +@lilypond[quote,verbatim] +blubb = \with { + fontSize = #-4 + \override Stem #'thickness = #4.0 + \remove "Time_signature_engraver" +} -Der Befehl @code{\RemoveEmptyStaffContext} überschreibt die -aktuellen Einstellungen für @code{Staff}. Wenn die Einstellungen -für Systeme verändert werden sollen, die @code{\RemoveEmptyStaffContext} -benutzen, müssen die Veränderungen gemacht werden, nachdem -@code{\RemoveEmptyStaffContext} aufgerufen wurde, etwa: +bla = \with { + fontSize = #3 + \override Stem #'thickness = #-2.0 +} -@example -\layout @{ - \context @{ - \RemoveEmptyStaffContext +melody = \relative c'' { + a4 a a a | + a4 a a a | +} - \override Stem #'thickness = #4.0 - @} -@} -@end example +\score { + << + \new Staff << + \melody + s1*0^"Small, thicker stems, no time signature" + >> + \new Staff \bla << + \melody + s1*0^"Different" + >> + >> + \layout { + \context { + \Staff + \blubb + } + } +} +@end lilypond + @c TODO: add \with in here. + @node Neue Kontexte definieren @subsection Neue Kontexte definieren @@ -797,6 +823,7 @@ in Jazzmusik anzuzeigen. squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice } \context { \Staff @@ -866,6 +893,7 @@ Die Noten sehen wie ein Querstrich aus und haben keine Hälse: @example \override NoteHead #'style = #'slash \override Stem #'transparent = ##t +\override Flag #'transparent = ##t @end example Alle diese Engraver müssen zusammenarbeiten, und das wird erreicht mit @@ -888,6 +916,7 @@ Alles zusammen haben wir folgende Einstellungen: squashedPosition = #0 \override NoteHead #'style = #'slash \override Stem #'transparent = ##t + \override Flag #'transparent = ##t \alias Voice @} @end example @@ -946,82 +975,75 @@ notiert werden: @end example -@node Kontexte aneinander ausrichten -@subsection Kontexte aneinander ausrichten -@translationof Aligning contexts - -Neue Kontexte können über oder unter existierenden ausgerichtet -werden. Das kann nützlich sein, wenn man eine Chorparitur -oder Ossia schreiben will: - -@cindex Ossia - -@funindex alignAboveContext -@funindex alignBelowContext - -@lilypond[quote,ragged-right] -ossia = { f4 f f f } -\score{ - \relative c' \new Staff = "main" { - c4 c c c - << - \new Staff \with { alignAboveContext = #"main" } \ossia - { d8 f d f d f d f } - >> - } -} -@end lilypond - -@cindex verschachtelte Kontexte -@cindex Kontexte, verschachtelt +@node Reihenfolge des Kontextlayouts +@subsection Reihenfolge des Kontextlayouts +@translationof Context layout order +@cindex Kontext, Layoutreihenfolge @funindex \accepts -@funindex accepts @funindex \denies -@funindex denies -Kontexte wie @code{PianoStaff} können andere Kontexte innerhalb -enthalten. Kontexte, die als innere Kontexte akzeptiert werden, -werden in einer @qq{accepts}-Liste für den bestimmten Kontext -definiert. Kontexte, die sich nicht in dieser Liste finden, -werden unter den äußeren Kontext gesetzt. Der -@code{PianoStaff}-Kontext etwa akzeptiert die Kontexte @code{Staff} -und @code{FiguredBass} innerhalb, aber beispielsweise keinen -@code{Lyrics}-(Gesangstext)-Kontext. In dem folgenden Beispiel -wird deshalb der Gesangstext unter das gesamte Klaviersystem -gesetzt, anstatt zwischen die beiden Notensysteme zu kommen: +Kontexte werden in einer Systemgruppe normalerweise von oben nach +unten positioniert in der Reihenfolge, wie sie in der Quelldatei +auftreten. Wenn Kontext verschachtelt ewrden, enthält der äußere +Kontexte geschachtelte innere Kontexte, wie in der Quelldatei +angegeben, vorausgesetzt, die inneren Kontexte befinden sich auch +in der @qq{accepts}-Liste. Geschachtelte Kontexte, die nicht +in dieser @qq{accepts}-Liste enthalten sind, werden unterhalb +des äußeren Kontextes neu positioniert, anstatt innerhalb von ihm +gesetzt zu werden. + +Die @qq{accepts}-Liste eines Kontextes kann mit dem Befehlen +@code{\accepts} und @code{\denies} verändert werden. @code{\accepts} +fügt einen Kontext zur @qq{accepts}-Liste, und @code{\denies} +entfernt einen Kontext aus der Liste. Akkordbezeichnungen sollen +beispielsweise normalerweise nicht innerhalb eines @code{Staff}-Kontextes +geschachtelt werden, sodass der @code{ChordNames}-Kontext nicht +automatisch in der @qq{accepts}-Liste des @code{Staff}-Kontextes +geführt ist. Wenn er aber benötigt wird, kann er hinzugefügt werden: -@lilypond[verbatim,quote,relative=1] -\new PianoStaff -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> +} @end lilypond -Die @qq{accepts}-Liste eines Kontextes kann verändert werden, so -dass sie weitere innere Kontexte akzeptiert. Wenn also der -Gesangstext als Teil eines Klaviersystems gesetzt werden soll, -müsste man schreiben: - -@lilypond[verbatim,quote,relative=1] -\new PianoStaff \with { \accepts Lyrics } -<< - \new Staff { e4 d c2 } - \addlyrics { Three blind mice } +@lilypond[verbatim,quote] +\score { \new Staff { - \clef "bass" - { c,1 } + c' d' e' f' + \chords { d1:m7 b1:min7.5- } } ->> + \layout { + \context { + \Staff + \accepts "ChordNames" + } + } +} @end lilypond -Das Gegenteil von @code{\accepts} ist @code{\denies}; es bedeutet, -dass ein Kontext aus der @code{\accepts}-Liste gestrichen wird. +@code{\denies} wird vorrangig eingesetzt, wenn ein neuer Kontext +basierend auf einem existierenden erstellt wird, aber sein +Schachtelungsverhalten sich unterscheidet. Der +@code{VaticanaStaff}-Kontext beispielsweise basiert auf dem +@code{Staff}-Kontext, hat aber den @code{VaticanaVoice}-Kontext +anstellt des @code{Voice}-Kontexts in seiner @qq{accepts}-Liste. + +Zur Erinnerung: ein Kontext wird automatisch erstellt, wenn ein +Befehl auftritt, der in den aktuellen Kontexten nicht enthalten +sein kann. Dass kann zu unerwarteten neuen Systemgruppen oder Partituren +führen. + +@seealso +Handbuch zur Benutzung: +@rprogram{Ein zusätzliches System erscheint}. + +Installierte Dateien: +@file{ly/engraver-init.ly}. @node Die Referenz der Programminterna erklärt @@ -1049,7 +1071,7 @@ darum sind auch die Beispiele dieses Abschnittes nicht Folgende Aufgabe wird bearbeitet: Der Fingersatz aus dem Beispiel unten soll verändert werden: -@lilypond[quote,fragment,relative=2,verbatim] +@lilypond[quote,relative=2,verbatim] c-2 \stemUp f @@ -1207,7 +1229,7 @@ Eigenschaften}), andere aber können verändert werden. Es wurde immer von einem @code{Fingering}-Objekt gesprochen, aber eigentlich handelt es sich nicht um sehr viel. Die Initialisierungsdatei -@file{scm/@/define@/-grobs@/.scm} zeigt den Inhalt dieses @qq{Objekts} +@file{scm/define-grobs.scm} zeigt den Inhalt dieses @qq{Objekts} (zu Information, wo diese Dateien sich finden siehe @rlearning{Mehr Information}): @@ -1222,7 +1244,7 @@ eigentlich handelt es sich nicht um sehr viel. Die Initialisierungsdatei (script-priority . 100) (stencil . ,ly:text-interface::print) (direction . ,ly:script-interface::calc-direction) - (font-encoding . fetaNumber) + (font-encoding . fetaText) (font-size . -5) ; don't overlap when next to heads. (meta . ((class . Item) (interfaces . (finger-interface @@ -1246,7 +1268,7 @@ Referenz der Interna ist direkt aus diesen Anweisungen generiert. Die Position der @b{2} aus dem Beispiel unten soll also geändert werden: -@lilypond[quote,fragment,relative=2,verbatim] +@lilypond[quote,relative=2,verbatim] c-2 \stemUp f @@ -1290,7 +1312,7 @@ fügt drei Notenlinienzwischenräume zwischen die Zahl und den Notenkopf: Wenn dieser Befehl in den Quelltext eingefügt wird, bevor der Fingersatz notiert ist, erhält man folgendes: -@lilypond[quote,relative=2,fragment,verbatim] +@lilypond[quote,relative=2,verbatim] \once \override Voice.Fingering #'padding = #3 c-2 \stemUp @@ -1320,22 +1342,22 @@ folgen bestimmten Regeln: @item Scheme-Funktionen: ly:plus-scheme-stil - + @item Musikalische Ereignisse, Musikklassen und Musikeigenschaften: wie-scheme-funktionen @item Grob-Schnittstellen: scheme-stil - + @item backend-Eigenschaften: scheme-stil (aber X und Y) - + @item Kontexte: Großbuchstabe, oder GroßbuchstabeZwischenWörtern (CamelCase) @item Kontext-Eigenschaften: kleinbuchstabeMitFolgendenGroßbuchstaben - + @item Engraver: Großbuchstabe_gefolgt_von_kleinbuchstaben_mit_unterstrichen @end itemize @@ -1353,6 +1375,7 @@ folgen bestimmten Regeln: * Der override-Befehl:: * Der tweak-Befehl:: * set versus override:: +* Alisten verändern:: @end menu @@ -1385,7 +1408,7 @@ Die Syntax hierzu lautet: @var{Bezeichnung} ist die Bezeichnung eines graphischen Objekts, -wie @code{Stem} (Hals) oder @code{NoteHead} (Notenkopf), und +wie @code{Stem} (Hals) oder @code{NoteHead} (Notenkopf), und @var{Eigenschaft} ist eine interne Variable des Formatierungssystems (eine @qq{Grob-Eigenschaft} oder @qq{Layout-Eigenschaft}). Diese Eigenschaft ist ein Symbol, muss also mit einem Anführungsstrich @@ -1407,7 +1430,7 @@ Befehl den Kontext @code{Staff} angibt, wirkt er sich nur auf das gerade aktuelle Notensystem aus. Andere Systeme behalten ihr normales Aussehen. Hier ein Beispiel mit diesem Befehl: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] c4 \override Staff.Stem #'thickness = #4.0 c4 @@ -1425,7 +1448,7 @@ Kontext ausgelassen werden, wobei dann immer implizit der @code{Voice}-Kontext angenommen wird. Mit einem zusätzlichen @code{\once} wirkt sich die Änderung nur einmal aus: -@lilypond[quote,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] c4 \once \override Stem #'thickness = #4.0 c4 @@ -1438,10 +1461,10 @@ ein Bogen verändert werden soll, muss der @code{\override}-Befehl schon geschrieben werden, bevor das Objekt begonnen wird. In dem folgenden Beispiel -@lilypond[quote,fragment,verbatim,relative=2] +@lilypond[quote,verbatim,relative=2] \override Slur #'thickness = #3.0 c8[( c -\override Beam #'thickness = #0.6 +\override Beam #'beam-thickness = #0.6 c8 c]) @end lilypond @@ -1516,7 +1539,7 @@ wird der @code{\set}-Befehl eingesetzt: \set @var{Kontext}.@var{Eigenschaft} = #@var{Wert} @end example -@var{Wert} ist ein Scheme-Objekt, weshalb ihm @code{#} vorangestellt +@var{Wert} ist ein Scheme-Objekt, weshalb ihm@tie{}@code{#} vorangestellt werden muss. Kontexteigenschaften werden üblicherweise mit @code{kleinGroßbuchstabe} @@ -1532,7 +1555,7 @@ Mehrtaktpausen etwa können in einen Takt zusammengefasst werden, wenn die Kontexteigenschaft @code{skipBars} (Takte überspringen) auf @code{#t} (wahr) gesetzt wird: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] R1*2 \set Score.skipBars = ##t R1*2 @@ -1543,7 +1566,7 @@ der Befehl auf den gerade aktiven unterstmöglichen Kontext, üblicherweise @code{ChordNames}, @code{Voice} oder @code{Lyrics}. -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] \set Score.autoBeaming = ##f << { @@ -1567,7 +1590,7 @@ keine Auswirkung, weil er sich auf den @code{Voice}-Kontext bezieht, die Eigenschaft sich aber im @code{Score}-Kontext befindet: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] R1*2 \set skipBars = ##t R1*2 @@ -1593,7 +1616,7 @@ entfernt werden. Dieser Befehl macht nur Einstellungen im richtigen Kontext rückgängig. Wenn also im @code{Staff}-Kontext die Bebalkung ausgeschaltet wird: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] \set Score.autoBeaming = ##t << { @@ -1624,7 +1647,7 @@ verhalten sich gleich, wenn die gegenwärtige Basis der Einstellungen, die nur einmal vorgenommen werden sollen, können mit @code{\once} notiert werden, etwa: -@lilypond[quote,verbatim,relative=2,fragment] +@lilypond[quote,verbatim,relative=2] c4 \once \set fontSize = #4.7 c4 @@ -1662,7 +1685,7 @@ Internals Reference: Es gibt eine besondere Art von Kontexteigenschaft: die Grob-Beschreibung. Grob-Beschreibungen werden mit @code{GroßGroßbuchstabe} benannt. Sie enthalten @qq{Standardeinstellungen} für ein bestimmtes Grob als eine -assoziative Liste. Siehe @file{scm/@/define@/-grobs@/.scm} für die +assoziative Liste. Siehe @file{scm/define-grobs.scm} für die Einstellungen aller Grob-Beschreibungen. Grob-Beschreibungen werden mit @code{\override} verändert. @@ -1689,7 +1712,7 @@ Grunde, die Eigenschaften mit Callback-Fuktionen auszurechnen. Beispielsweise kann die Dicke eines Notenhalses verändert werden, indem man die @code{thickness}-Eigenschaft des @code{Stem}-Objekts verändert: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote, verbatim, relative=2] c4 c \override Voice.Stem #'thickness = #3.0 c4 c @@ -1698,7 +1721,7 @@ c4 c Wenn kein Kontext angegeben wird, wird der tiefste aktuelle Kontext benutzt: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote, verbatim, relative=2] { \override Staff.Stem #'thickness = #3.0 << { @@ -1723,7 +1746,7 @@ benutzt: Die Auswirkungen von @code{\override} können mit @code{\revert} wieder rückgängig gemacht werden: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote, verbatim, relative=2] c4 \override Voice.Stem #'thickness = #3.0 c4 c @@ -1734,7 +1757,7 @@ c4 Die Auswirkungen von @code{\override} und @code{\revert} wirken sich auf alle Grobs im entsprechenden Kontext aber der Stelle aus, an der sie gesetzt werden: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote, verbatim, relative=2] { << { @@ -1761,7 +1784,7 @@ Grobs im entsprechenden Kontext aber der Stelle aus, an der sie gesetzt werden: @code{\once} kann zusammen mit @code{\override} benutzt werden, um nur den aktuellen Zeitwert zu verändern: -@lilypond[quote, verbatim, relative=2, fragment] +@lilypond[quote, verbatim, relative=2] { << { @@ -1792,11 +1815,12 @@ um nur den aktuellen Zeitwert zu verändern: Viele Eigenschaften können unabhängig von der Art der Daten, die sie enthalten, ausgeschaltet werden, indem man sie als @qq{falsch} -(@code{##f}) definiert. Dadurch wird diese Eigenschaft von LilyPond +(@code{#f}) definiert. Dadurch wird diese Eigenschaft von LilyPond ignoriert. Das ist insbesondere nützlich, wenn man Grob-Eigenschaften ausschalten will, die Probleme verursachen. @end ignore + @seealso Referenz der Interna: @@ -2001,7 +2025,7 @@ wird der erste Bogen verändert, der in der Eingabedatei auftritt. @subsection @code{\\set} versus @code{\\override} @translationof set versus override -TODO: überflüssig? +@c TODO: überflüssig? @ignore Es wurden zwei unterschiedliche Methoden vorgestellt, mit denen @@ -2026,7 +2050,7 @@ Elementbeschreibung. Diese Eigenschaften werden mit @code{GroßGroß} benannt (beginnen also auch mit einem Großbuchstaben). Sie beinhalten die Standardeinstellungen für die besagten graphischen Objekte in Form einer -Assosiationsliste. Siehe auch die Datei @file{scm/@/define@/-grobs@/.scm} +Assosiationsliste. Siehe auch die Datei @file{scm/define-grobs.scm} für ein Beispiel zu diesen Einstellungen. Elementbeschreibungen können mit dem Befehl @code{\override} verändert werden. @@ -2059,6 +2083,125 @@ die spezielle Form (die mit @code{\set} verändert wird) erstellt. @end ignore +@node Alisten verändern +@subsection Alisten verändern +@translationof Modifying alists + +Einige vom Benutzer einstellbare Eigenschaften sind intern als +@emph{alists} (Assoziative Listen) dargestellt, die Paare von +Schlüsseln und Werten speichern. Die Struktur einer Aliste ist: + +@example +'((@var{Schlüssel1} . @var{Wert1}) + (@var{Schlüssel2} . @var{Wert2}) + (@var{Schlüssel3} . @var{Wert3}) + @dots{}) +@end example + +Wenn eine Aliste eine Grob-Eigenschaft oder eine Variable der +@code{\paper}-Umgebung ist, können ihre Schlüssel einzeln verändert +werden, ohne andere Schlüssel zu beeinflussen. + +Um beispielsweise den Freiraum zwischen benachbarten Systemen +in einer Systemgruppe zu verkleinern, kann man die +@code{staff-staff-spacing}-Eigenschaft des ++@code{StaffGrouper}-Grobs benutzen. Die Eigenschaft ist eine +Aliste mit vier Schlüsseln: : @code{basic-distance} (Grund-Abstand), +@code{minimum-distance} (minimaler Abstand), @code{padding} (Verschiebung) +und @code{stretchability} (Dehnbarkeit). Die Standardwerte dieser +Eigenschaft finden sich im Abschnitt @qq{Backend} der Referenz der +Interna (siehe @rinternals{StaffGrouper}): + +@example +'((basic-distance . 9) + (minimum-distance . 7) + (padding . 1) + (stretchability . 5)) +@end example + +Eine Möglichkeit, die Systemen dichter zueinander zu zwingen, +ist es, der Wert des @code{basic-distance}-Schlüssels (@code{9}) zu +verändern, sodass der den gleichen Wert wie +@code{minimum-distance} (@code{7}) hat. Um einen einzelnen +Schlüssel zu verändern, wird ein geschachtelter Aufruf benutzt: + +@lilypond[quote,verbatim] +% default space between staves +\new PianoStaff << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> + +% reduced space between staves +\new PianoStaff \with { + % this is the nested declaration + \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7 +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +Wenn man diese Art des geschachtelten Aufrufs einsetzt, wird der +spezifische Schlüssel (@code{basic-distance} im obigen Beispiel) verändert, +ohne dass sich andere Wert für die gleiche Eigenschaft ändern würden. + +Nun sollen die Systeme so dicht wie möglich gesetzt werden, ohne das +Überlappungen vorkommen. Die einfachste Möglichkeit, das zu tun, wäre +es, alle vier Wert auf 0 zu setzen. Man muss jedoch nicht vier +Werte definieren, sondern die Eigenschaft +kann mit einem Aufruf als Aliste vollständig verändert werden: + +@lilypond[quote,verbatim] +\new PianoStaff \with { + \override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 0) + (minimum-distance . 0) + (padding . 0) + (stretchability . 0)) +} << + \new Staff { \clef treble c''1 } + \new Staff { \clef bass c1 } +>> +@end lilypond + +Dabei sollte beachtet werden, dass alle Schlüssel, die bei dieser +Weise des Aufrufs nicht explizit aufgelistet sind, auf den Standardwert +gesetzt werden, den sie hätten, wenn sie nicht definiert werden. +Im Falle von @code{staff-staff-spacing} würden alle nicht genannten +Schlüsselwerte auf 0 gesetzt (außer @code{stretchability}, welche immer +den Wert von @code{space} hat, wenn sie nicht definiert ist). Somit sind +folgende Aufrufe äquivalent: + +@example +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7)) + +\override StaffGrouper #'staff-staff-spacing = + #'((basic-distance . 7) + (minimum-distance . 0) + (padding . 0) + (stretchability . 7)) +@end example + +Eine möglicherweise ungewollte Konsequenz hiervon ist, dass alle +Standardwerte, die etwa in einer Initialisierungsdatei +zu Beginn einer LilyPond-Partitur geladen werden, nach dem Aufruf +rückgängig gemacht werden. Im obigen Beispiel werden die +initialisierten Standardwerte für @code{padding} und @code{minimum-distance} +(definiert in @file{scm/define-grobs.scm}) auf den Standard zurückgesetzt, +den sie uninitialisiert hätten (0 in beiden Fällen). Wenn eine Eigenschaft oder +Variable in Form einer Aliste (jeder Größe) definiert wird, werden +immer alle Schlüsselwerte auf den uninitialisierten Zustand zurückgesetzt. +Es ist also sicherer, geschachtelte Aufrufe zu benutzen, wenn man nicht +bewusst alle Werte zurücksetzen will. + +@warning{Geschachtelte Aufrufe funktionieren nicht mit +Kontexteigenschaften (wie etwa @code{beamExceptions}, @code{keySignature}, +@code{timeSignatureSettings}, usw.) Diese Eigenschaften können +nur verändert werden, indem man sie vollständig als Alisten umdefiniert.} + + @node Nützliche Konzepte und Eigenschaften @section Nützliche Konzepte und Eigenschaften @translationof Useful concepts and properties @@ -2066,7 +2209,6 @@ die spezielle Form (die mit @code{\set} verändert wird) erstellt. @menu * Eingabe-Modi:: * Richtung und Platzierung:: -* Reihenfolge des Kontextlayouts:: * Abstände und Maße:: * Eigenschaften des Staff-Symbols:: * Strecker:: @@ -2141,7 +2283,7 @@ den @code{\fret-diagram}-Befehl einsetzt (siehe Man erreicht ihn mit dem Befehl @code{\lyricmode}. Die Eingabe wird entsprechend der Syntax für Silben eines Gesangstextes -interpretiert, wobei optional Dauern und verknüpfte +interpretiert, wobei optional Dauern und verknüpfte Gesangstextveränderer möglich sind, siehe @ref{Notation von Gesang}. Der Gesangstextmodus wird auch durch den Befehl @code{\addlyrics} @@ -2153,7 +2295,7 @@ nachfolgenden Gesangstext mit der vorhergehenden Musik verknüpft. Man erreicht ihn mit dem Befehl @code{\markup}. Die Eingabe wird entsprechend der Syntax für Textbeschriftung interpretiert, siehe -@ref{Text markup commands}. +@ref{Textbeschriftungsbefehle}. @c silly work-around for texinfo broken-ness @c (@strong{Note...} causes a spurious cross-reference in Info) @@ -2219,8 +2361,8 @@ benutzen) normalerweise weggelassen werden. In diesem Fall wird @item @code{\markup}-(Textbeschriftungs-)Befehlen @item @code{\tag}-Befehlen @item Textbeschriftungen in reiner Textform, wie etwa @code{-"string"} -@item Fingersatzanweisungen: @code{-1} -@item Abkürzungen von Artikulationen, wie @code{-.}, @code{->}, @code{--} +@item Fingersatzanweisungen: @w{@code{-1}} +@item Abkürzungen von Artikulationen, wie @w{@code{-.}}, @w{@code{->}}, @w{@code{--}} @end itemize Ausrichtungsmarkierer haben nur eine Auswirkung auf die nächste Note: @@ -2240,10 +2382,10 @@ Die Position oder Richtung vieler Layoutobjekte wird von der Der Wert der @code{direction}-Eigenschaft kann auf den Wert @code{1} gesetzt werden, was gleichbedeutend mit @qq{nach oben} -bzw. @qq{oberhalb} ist, oder auf den Wert @code{-1}, was +bzw. @qq{oberhalb} ist, oder auf den Wert @w{@code{-1}}, was @qq{nach unten} bzw. @qq{unterhalb} bedeutet. Die Symbole @code{UP} und @code{DOWN} können anstelle von @code{1} -und @code{-1} benutzt werden. Die Standardausrichtung kann +und @w{@code{-1}} benutzt werden. Die Standardausrichtung kann angegeben werden, indem @code{direction} auf den Wert @code{0} oder @code{CENTER} gesetzt wird. In vielen Fällen bestehen auch vordefinierte Befehle, mit denen die Ausrichtung @@ -2261,7 +2403,7 @@ In wenigen Fällen, von denen Arpeggio das einzige häufiger vorkommende Beispiel darstellt, entscheidet der Wert von @code{direction}, ob das Objekt auf der rechten oder linken Seite das Ursprungsobjektes ausgegeben wird. In diesem Fall -bedeutet @code{-1} oder @code{LEFT} @qq{auf der linken Seite} +bedeutet @w{@code{-1}} oder @code{LEFT} @qq{auf der linken Seite} und @code{1} oder @code{RIGHT} @qq{auf der rechten Seite}. @code{0} oder @code{CENTER} bedeutet @qq{benutze Standardausrichtung}. @@ -2279,36 +2421,6 @@ c2( c) @end lilypond -@node Reihenfolge des Kontextlayouts -@subsection Reihenfolge des Kontextlayouts -@translationof Context layout order - -@cindex Kontexte, Reihenfolge - -Kontexte werden normalerweise in einer Notensystemgruppe dargestellt, -von oben nach unten in der Reihenfolge, in der sie -in der Eingabedatei auftreten. Wenn Kontexte verschachtelt sind, -enthält der äußere Kontext die inneren geschachtelten Kontexte, -wie in der Eingabedatei angegeben, vorausgesetzt die inneren -Kontexte befinden sich in der @qq{accepts}-Liste des äußeren -Kontextes. Verschachtelte Kontexte, die nicht in dieser Liste -auftauchen, werden neu unter den äußeren Kontext angeordnet, anstatt -dass sie innerhalb dieses Kontextes gesetzt werden. - -Es ist wichtig zu erinnern, dass ein Kontext implizit erstellt -werden kann, wenn ein Befehl vorkommt und kein passender Kontext -zur Verfügung steht, um den Befehl auszuführen. Dadurch können -unerwartet neue Systeme oder Partituren erstellt werden. - -Die Standardreihenfolge, in der die Kontexte gesetzt werden und -die @qq{accepts}-Liste können geändert werden, siehe auch -@ref{Aligning contexts}. - -@seealso -Handbuch zum Lernen -@rlearning{An extra staff appears}. - - @node Abstände und Maße @subsection Abstände und Maße @translationof Distances and measurements @@ -2334,7 +2446,7 @@ eines Zolls). Abstände des Seitenlayouts können auch in skalierbaren Einheiten (siehe folgenden Absatz) definiert werden, indem man den Befehl @code{\staff-space} an die Zahl hängt. Das Seitenlayout ist genauer beschrieben in -@ref{Seitenformatierung}. +@ref{Seitenlayout}. Skalierbare Abstände werden immer in Einheiten von Notenlinienabständen angegeben, oder seltener in halben @@ -2375,7 +2487,7 @@ Handbuch zum Lernen: @rlearning{Länge und Dicke von Objekten}. Notationsreferenz: -@ref{Seitenformatierung}, +@ref{Seitenlayout}, @ref{Die Notensystemgröße einstellen}. @@ -2600,7 +2712,7 @@ Im Fall eines Zeilenumbruchs werden die Werte der Endpunkte in den Unterlisten @code{left-broken} bzw. @code{right-broken} von @code{bound-details} abgelegt. Zum Beispiel: -@lilypond[relative=2,ragged-right,verbatim,fragment] +@lilypond[relative=2,ragged-right,verbatim,quote] \override Glissando #'breakable = ##t \override Glissando #'(bound-details right-broken Y) = #-3 c1 \glissando \break @@ -2624,7 +2736,7 @@ ist sein Wert mit 0 definiert. @item attach-dir Das entscheidet, wo die Linie auf der X-Achse beginnt und endet, -relativ zum Elternobjekt. Ein Wert @code{-1} (oder +relativ zum Elternobjekt. Ein Wert @w{@code{-1}} (oder @code{LEFT}) lässt die Linie an der linken Seite der Noten beginnen/enden, mit der sie verknüpft ist. @@ -2645,7 +2757,7 @@ Das ist eine Textbeschriftung, die ausgewertet wird und die um @i{cresc.}, @i{tr} oder andere Texte an horizontale Strecker zu setzen. -@lilypond[quote,ragged-right,fragment,relative=2,verbatim] +@lilypond[quote,ragged-right,relative=2,verbatim] \override TextSpanner #'(bound-details left text) = \markup { \small \bold Slower } c2\startTextSpan b c a\stopTextSpan @@ -2661,7 +2773,7 @@ definiert) zentriert, ausgegeben. Wenn entweder gesetzt werden, wird das Symbol am Rand vertikal entsprechend des Endpunktes der Linie verschoben: -@lilypond[relative=1,fragment,verbatim] +@lilypond[relative=1,quote,verbatim] \override TextSpanner #'(bound-details left stencil-align-dir-y) = #-2 \override TextSpanner @@ -2676,7 +2788,7 @@ c4^\startTextSpan c c c \stopTextSpan Dabei sollte beachtet werden, dass negative Werte das Objekt nach @emph{oben} verschieben, anders als man erwarten könnte, -weil der Wert @code{-1} oder @code{DOWN} bedeutet, dass +weil der Wert @w{@code{-1}} oder @code{DOWN} bedeutet, dass die @emph{Unterkante} des Textes mit der Streckerlinie ausgerichtet wird. Ein Wert @code{1} oder @code{UP} richtet die Oberkante des Textes mit der Streckerlinie aus. @@ -2700,7 +2812,7 @@ einer Note beendet, oder am nächsten Taktstrich, wenn @code{to-barline} auf wahr gesetzt ist und eine Taktlinie vor der nächsten Note erscheint. -@lilypond[verbatim,quote,ragged-right,relative=2,fragment] +@lilypond[verbatim,quote,ragged-right,relative=2] \endSpanners c2 \startTextSpan c2 c2 \endSpanners @@ -2846,7 +2958,7 @@ Im oberen Beispiel wird der weiße Schlüssel, der einen Wert von @code{1} für @code{layer} hat, nach den Notenlinien gesetzt (die einen Wert von @code{0} für @code{layer} haben) und überschneidet sie also. Um das zu ändern, muss dem @code{Clef}-Objekt -(Notenschlüssel) ein niedrigerer Wert, etwa @code{-1}, gegeben +(Notenschlüssel) ein niedrigerer Wert, etwa @w{@code{-1}}, gegeben werden, sodass es früher gesetzt wird: @lilypond[quote,verbatim,relative=2] @@ -2893,7 +3005,7 @@ wird. Oder, genauer gesagt, vor einem Zeilenumbruch, an Stellen, wo kein Zeilenumbruch auftritt oder nach einem Zeilenumbruch. Die acht möglichen Kombinationen können auch durch vordefinierte -Funktionen bestimmt werden, welche in der Datei @file{scm/@/output@/-lib@/.scm} +Funktionen bestimmt werden, welche in der Datei @file{scm/output-lib.scm} definiert sind. Die letzten drei Spalten der folgenden Tabelle zeigen an, ob das Layout-Objekt an einer bestimmten Position sichtbar sein wird oder nicht: @@ -3094,10 +3206,10 @@ auftreten. Das kleine Oktavierungssymbol von oktavierten Notenschlüsseln wird durch das @code{OctavateEight}-Layout-Objekt erstellt. -Seine Sichtbarkeit wird unabhängig vom @code{Clef}-Objekt -bestimmt, sodass notwendige Veränderungen von @code{break-visibility} -sowohl für @code{Clef} als auch für @code{OctavateEight} vorgenommen -werden müssen, damit derartige Schlüssel entfernt werden. +Seine Sichtbarkeit wird automatisch vom @code{Clef}-Objekt +geerbt, sodass Veränderungen von @code{break-visibility} +des @code{OctavateEight}-Layout-Objekts nicht auch noch +für unsichtbare Schlüssel zusätzlich vorgenommen werden müssen. Bei expliziten Schlüsseländerungn kontrolliert die @code{explicitClefVisibility}-Eigenschaft wohl das @@ -3129,7 +3241,7 @@ im gewünschten Linienstil. Hier einige Beispiele, welche Linienstile möglich sind und wie sie verändert werden können: -@lilypond[relative=2,ragged-right,verbatim,fragment] +@lilypond[relative=2,ragged-right,verbatim,quote] d2 \glissando d'2 \once \override Glissando #'style = #'dashed-line d,2 \glissando d'2 @@ -3145,15 +3257,15 @@ Die Position der Endpunkte des Streckers werden in Realzeit für jedes graphische Objekt errechnet, aber es ist möglich, sie manuell vorzugeben: -@c FIXME Complete -@lilypond[relative=2,ragged-right,verbatim,fragment] +@c TODO Complete +@lilypond[relative=2,ragged-right,verbatim,quote] e2 \glissando f \once \override Glissando #'(bound-details right Y) = #-2 e2 \glissando f @end lilypond Der Wert von @code{Y} wird für den rechten Endpunkt auf -@code{-2} gesetzt. Die linke Seite kann ähnlich angepasst +@w{@code{-2}} gesetzt. Die linke Seite kann ähnlich angepasst werden, indem man @code{left} anstelle von @code{right} angibt. Wenn @code{Y} nicht gesetzt ist, wird der Wert ausgehend von @@ -3263,7 +3375,7 @@ Notationsreferenz: @ref{Schnittstellen für Programmierer}. Installierte Dateien: -@file{scm/@/define@/-grobs@/.scm}. +@file{scm/define-grobs.scm}. Schnipsel: @rlsr{Tweaks and overrides}. @@ -3419,12 +3531,12 @@ 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 @code{0} zentriert das Objekt auf dem Referenzpunkt des -Ursprungs, ein Wert von @code{-1} richtet die linke Ecke des +Ursprungs, ein Wert von @w{@code{-1}} richtet die linke Ecke des Objekts am Referenzpunkt des Ursprungsobjektes aus, ein Wert von @code{1} richtet die rechte Ecke des Objektes am Referenzpunkt des Ursprungsobjektes aus. Die Symbole @code{LEFT}, @code{CENTER} und @code{RIGHT} können anstelle -von @code{-1, 0, 1} eingesetzt werden. +von @w{@code{-1}}, @code{0} und @code{1} eingesetzt werden. Normalerweise würde der @code{\override}-Befehl benutzt werden, um die Werte von @code{self-alignment-X} zu verändern, aber der @@ -3456,14 +3568,14 @@ 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 @code{-1} richtet die +erforderlich sein können. Der Wert @w{@code{-1}} richtet die untere Kante des Objekts am Referenzpunkt des Ursprungsobjektes aus, der Wert @code{0} richtet die Mitte des Objekts am Referenzpunkt des Ursprungsobjektes aus und der Wert @code{1} richtet die Oberkante des Objektes am Referenzpunkt des Ursprungsobjektes aus. Die Symbole @code{DOWN}, @code{CENTER} -und @code{UP} können anstelle von @code{-1, 0, 1} benutzt -werden. +und @code{UP} können anstelle von @w{@code{-1}}, @code{0} +und @code{1} benutzt werden. @emph{Automatische Ausrichtung in beide Richtungen} @@ -3678,7 +3790,7 @@ Siehe auch @ref{Die Feta-Schriftart}. Notationsreferenz: @ref{Graphische Notation innerhalb einer Textbeschriftung}, @ref{Text formatieren}, -@ref{Text markup commands}, +@ref{Textbeschriftungsbefehle}, @ref{Die Feta-Schriftart}. @@ -3725,7 +3837,7 @@ lösen würde. @lilypond[verbatim,quote,relative=1] << - { e1 ~ e } + { e1~ e } \\ { r4 } >> @@ -3762,10 +3874,10 @@ wird. { \once \override Tie #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1)) - e1 ~ e1 + e1~ e1 } \\ - { r4 4 } + { r4 } >> @end lilypond @@ -3773,8 +3885,14 @@ wird. Es ist nicht möglich, die Form von Bögen anhand ihrer @code{control-points}-Eigenschaft zu verändern, wenn -mehr als ein Bogen zum gleichen musikalischen Moment -auftritt, nicht einmal mit dem @code{\tweak}-Befehl. +mehrere Binde- oder Legatobögen zum gleichen musikalischen Moment +auftreten, nicht einmal mit dem @code{\tweak}-Befehl. Die Eigenschaft +@code{tie-configuration} von @code{TieColumn} kann jedoch verändert +werden, sodass Startlinie und Richtung wie benötigt platziert werden. + +@seealso +Referenz der Interna: +@rinternals{TieColumn}. @@ -3827,11 +3945,12 @@ wobei den Wert @code{#t} ausgibt. @item @code{@var{@dots{}Noten@dots{}}} -@tab normale LilyPond-Eingab, wobei @code{$} benutzt wird, um +@tab normale LilyPond-Eingabe, wobei @code{$} (wenn nur LilyPond-Konstruktionen +erlaubt sind) oder @code{#} (um es als Scheme-Wert oder Argument einer +musikalischen Funktionen einzusetzen) benutzt wird, um Argumente zu referenzieren (etwa @samp{$Arg1}). @end multitable - Die @code{parser} und @code{location}-Argumente sind zwingend und werden in einigen fortgeschrittenen Situationen benutzt, wie sie im @qq{Erweitern}-Handbuch beschrieben werden (siehe @@ -3846,7 +3965,9 @@ benutzt werden, sind: @example boolean? cheap-list? @emph{(benutze anstelle von }@q{list?}@emph{ für schnelleres Kompilieren)} +ly:duration? ly:music? +ly:pitch? markup? number? pair? @@ -3875,7 +3996,7 @@ Installierte Dateien: @node Beispiele der Ersetzungsfunktionen -@subsection Beispiele der Ersetzungsfunktionen +@subsection Beispiele der Ersetzungsfunktionen @translationof Substitution function examples Dieser Abschnitt zeigt einige Beispiele von Ersetzungsfunktionen. @@ -3891,7 +4012,7 @@ padText = (parser location padding) (number?) #{ - \once \override TextScript #'padding = $padding + \once \override TextScript #'padding = #padding #}) \relative c''' { @@ -3934,8 +4055,8 @@ tempoPadded = (parser location padding tempotext) (number? string?) #{ - \once \override Score.MetronomeMark #'padding = $padding - \tempo \markup { \bold $tempotext } + \once \override Score.MetronomeMark #'padding = #padding + \tempo \markup { \bold #tempotext } #}) \relative c'' {