Jump to content

Modify only the current system: Difference between revisions

From LilyPond wiki
No edit summary
m New category
 
Line 28: Line 28:


[[Category:Staff notation]]
[[Category:Staff notation]]
[[Category:Tweaks and overrides]][[Category:Snippet]]
[[Category:Tweaks and overrides]]
[[Category:Snippet]]

Latest revision as of 23:30, 21 November 2025

Starting bars usually are all clones of the first one. The only way to affect one system and not the others is to collect all the grobs using the all-elements property of any grob on the system in question (for example a NoteHead) and filter the target grob, which you can then modify.

\version "2.24"

%% Thanks to David Nalesnik:
%% https://lists.gnu.org/archive/html/lilypond-user/2019-03/msg00205.html

#(define drop-in-on-spanner
   (lambda (grob)
     (let* ((elts (ly:grob-array->list (ly:grob-object (ly:grob-system grob) 'all-elements)))
            (ssb (filter (lambda (e) (grob::has-interface e 'system-start-delimiter-interface))
                         elts)))
       (set! (ly:grob-property (car ssb) 'color) red))))

\new StaffGroup <<
  \new Staff {
    c'1 \break
    \tweak after-line-breaking #drop-in-on-spanner
    c' \break
    c' \break
  }
  \new Staff {
    c' c' c'
  }
>>

\paper { tagline = ##f }