> Le 13/07/2021 03:14, David Wright <lily...@lionunicorn.co.uk> a écrit : > > > On Mon 12 Jul 2021 at 16:54:03 (-0700), Flaming Hakama by Elaine wrote: > > > > > > > > > ---------- Forwarded message ---------- > > > From: Jean Abou Samra <j...@abou-samra.fr> > > > To: Werner LEMBERG <w...@gnu.org>, lilyp...@hillvisions.com > > > Cc: m...@archsys.net, lilypond-user@gnu.org > > > Bcc: > > > Date: Mon, 12 Jul 2021 15:01:32 +0200 (CEST) > > > Subject: Re: Move chord name down onto staff? > > > As a matter of style, I'd do it slightly differently: > > > \version "2.23.4" > > > \layout { > > > \context { > > > \Staff > > > \accepts ChordNames > > > \override ChordName.Y-offset = > > > #self-alignment-interface::y-aligned-on-self > > > \override ChordName.self-alignment-Y = #CENTER > > > } > > > } > > > harmony = \chordmode { a1:m s1 f1:m7 s1 } > > > tune = { s1 s1 s1 s1 } > > > > > > \new Staff << > > > \tune > > > \new ChordNames \harmony > > > >> > > > > I'd like to understand if I can use this layout-based approach on a > > per-score basis. > > > > This example, based on the previous approach, has in-staff chords for the > > first score, but normal, above-the-staff chords for the second score. > > > > > > How would one go about using the layout approach to do that? > NR § 4.2.1 The \layout block > explains how to do this. Either attach the \layout to the \score block > or, more flexible, assign it to a variable, and reference the variable > in the score's \layout. The examples in this section show how to > construct the \layout block thus, and § 4.2.2 example "2." shows how > to attach \layout to \score. > > In this manner, you can combine global layout options with > score-specific ones. > > Cheers, > David.
You could also put it in a \with block: \version "2.23.4" melodyHead = \relative c'' { c1 d e f } melodyFours = \relative c'' { g8 a r g r a r4 | b8 8 r4 r2 | g8 a r g r a r4 | bes8 8 r4 r2 } headChords = \chordmode { c1:maj7 | b2:m7.5- e:7 | a:m7 d:7 | g:m7 c:7 | } foursChords = \chordmode { c1:maj7 | b2:m7.5- e:7 | a:m7 d:7 | g:m7 c:7 | } chordsOnStaff = \with { \accepts ChordNames \override ChordName.Y-offset = #self-alignment-interface::y-aligned-on-self \override ChordName.self-alignment-Y = #CENTER } \book { \score { \new StaffGroup << \new Staff \melodyHead \new Staff \with \chordsOnStaff \new ChordNames \headChords >> } \score { << \new ChordNames { \foursChords } \new Staff \melodyFours >> } } And actually, why not define a custom context type: \version "2.23.4" melodyHead = \relative c'' { c1 d e f } melodyFours = \relative c'' { g8 a r g r a r4 | b8 8 r4 r2 | g8 a r g r a r4 | bes8 8 r4 r2 } headChords = \chordmode { c1:maj7 | b2:m7.5- e:7 | a:m7 d:7 | g:m7 c:7 | } foursChords = \chordmode { c1:maj7 | b2:m7.5- e:7 | a:m7 d:7 | g:m7 c:7 | } \layout { \context { \Staff \name StaffChordNames \type Engraver_group \alias Staff \alias ChordNames \consists Chord_name_engraver \denies Voice \override ChordName.Y-offset = #self-alignment-interface::y-aligned-on-self \override ChordName.self-alignment-Y = #CENTER } \inherit-acceptability StaffChordNames Staff } \book { \score { \new StaffGroup << \new Staff \melodyHead \new StaffChordNames \headChords >> } \score { << \new ChordNames { \foursChords } \new Staff \melodyFours >> } } Best, Jean