Schlüssel verschieben

Begonnen von Hilflos-im-Code, Mittwoch, 20. Oktober 2021, 10:58

« vorheriges - nächstes »

Hilflos-im-Code

\version "2.23.0"
\language "deutsch"

  {  \clef "treble_8" \time  2/4    c'8    [h8] s8 \appoggiatura d'8 c'8  \stopStaff  s2   \startStaff
     
  \override Staff.Clef.X-offset = #-1
      \once \override Staff.BarLine.break-visibility = ##(#f #f #f)
     \override Staff.Clef.full-size-change = ##t
     
      \set Staff.forceClef = ##t
       
\time 2/4   c'8  [ d'8 ]  d'16 [ (c'32 d') c'16 d'] \bar "|." }


Ich wäre glücklich, wenn ich den Violinschlüssel so verschieben könnte, sodass

  • links vom zweiten Notenschlüssel die Notenzeile etwas überstehen würde und
  • rechts vom zweiten Notenschlüssel  der Abstand zwischen Schlüssel und Taktangabe korrekt wäre.

Auf \override Staff.Clef.Y-offset  reagiert der Notenschlüssel. Auf X nicht.

harm6

Das Problem entsteht weil
\once \override Staff.BarLine.break-visibility = ##(#f #f #f)
den stencil nicht aber das grob selbst unterdrückt.
Also gelten nach wie vor die spacing-Werte vom Clef zur BarLine zur Note. Hier zuviel.
\stop/startStaff produziert die Lücke im StaffSymbol. Sie endet direkt vorm Taktstrich bzw den Elementen der BreakAlignGroup die noch vor der BarLine stehen. Hier resultiert das in zu wenig Platz vorm neuen NotenSchlüssel.

Um zu einem besseren Ergebis zu kommen ändere die Reihenfolge in der die Elemente der BreakAlignGroup gedruckt werden (via BreakAlignment.break-align-orders).
Dann funktionieren die defaults wieder und es sind imho keine weiteren Anpassungen nötig.

Solange \startStaff nicht auf einen Zeilenumbruch fällt:


\version "2.23.0"
\language "deutsch"


  \clef "treble_8"
  \time  2/4   
  c'8 h8 s8 \appoggiatura d'8 c'8 
  \stopStaff 
  s2   
  \startStaff
     
  \override Staff.Clef.full-size-change = ##t
  \once \override Score.BreakAlignment.break-align-orders =
    #(make-vector 3 '(left-edge
                      cue-end-clef
                      ambitus
                      breathing-sign
                      staff-bar
                      clef
                      cue-clef
                      key-cancellation
                      key-signature
                      time-signature
                      custos))
       
  \set Staff.forceClef = ##t
 
  \bar ""
       
  \time 2/4   
  c'8 d'8  d'16( c'32 d') c'16 d'
  \bar "|."
}


Falls doch muß man BreakAlignment.break-align-orders ausführlicher schreiben. In diesem Fall meld' Dich nochmal.

HTH,
  Harm

Hilflos-im-Code

Danke. Funktioniert wunderbar.

Die Situation ist bei einem ein kurzen Codaschnipsel entstanden. Wenn der Schnipsel noch in die letzte Zeile soll, dann braucht man einen Leertakt. Kann/soll er in eine extra Zeile, also Zeilenumbruch muss man nicht mit \stop-startStaff arbeiten, weil man dann keine Lücke in der Notenzeile braucht.