bug-lilypond
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

BUG? VerticalAxisGroup #'next-staff-spacing and \RemoveEmptyStaffContext


From: Xavier Scheuer
Subject: BUG? VerticalAxisGroup #'next-staff-spacing and \RemoveEmptyStaffContext
Date: Sat, 5 Jun 2010 16:54:49 +0200

Hi Joe!

We have had a discussion on the LilyPond French Users mailing lists
about the new vertical spacing system.[1]
Thanks again for this powerful system.

Jean-François was using
  \override VerticalAxisGroup #'next-staff-spacing
in the last Staff of a "group" to define a bigger space between, for
example, two groups (woodwinds and brass instruments).
But this bigger space disappears (in the same time as the Staff) when
this Staff is empty and we use \RemoveEmptyStaffContext .

I advised him to use
  \override StaffGrouper #'after-last-staff-spacing
instead, thinking that would solve the problem, since I thought
StaffGrouper would check _at each moment_ which Staff is *effectively* the
last one.

But apparently I was wrong, it seems that StaffGrouper determines which
Staff is the last of the "group" _at the beginning_ and then assume
this Staff will always stay the last one of the group, which is false
if this Staff has been removed by \RemoveEmptyStaffContext (in this
case another Staff is the last of the group and there should be a
bigger space between this last Staff and the next group).

I hope this is understandable, I have added a "minimal example" below.


%% \override StaffGrouper #'after-last-staff-spacing
%% does not work properly with \RemoveEmptyStaffContext
%%
%% there should be a bigger space between "G1 3" and "G2 1" in the
%% 2nd and 3rd systems.

\version "2.13.23"

#(set-global-staff-size 16)

\paper {
  system-separator-markup = \slashSeparator
}

\layout {
  \context {
    \RemoveEmptyStaffContext
  }
}

breaks = {
  s1*8 \break
  s1*8 \break
  s1*8 \break
}

patternA = \relative c' {
  \repeat unfold 8 c1
  \repeat unfold 8 c1
  \repeat unfold 8 c1
}

patternB = \relative c' {
  \repeat unfold 8 c1
  \repeat unfold 8 R1
  \repeat unfold 8 R1
}

\score {
  <<
    \new StaffGroup = "G1" \with {
      \override StaffGrouper #'after-last-staff-spacing #'space = #20
      % doesn't work with \RemoveEmptyStaffContext
      % there should be a bigger space between "G1 3" and "G2 1" in the
      % 2nd and 3rd systems.
    }
    <<
      \new Staff \with {
        instrumentName = #"G1 1"
        shortInstrumentName = #"G1 1"
      } { << \patternA \breaks >> }
      \new Staff \with {
        instrumentName = #"G1 2"
        shortInstrumentName = #"G1 2"
      } { \patternB }
      \new Staff \with {
        instrumentName = #"G1 3"
        shortInstrumentName = #"G1 3"
      } { \patternA }
      \new Staff \with {
        instrumentName = #"G1 4"
        shortInstrumentName = #"G1 4"
      } { \patternB }
    >>
    \new StaffGroup = "G2" <<
      \new Staff \with {
        instrumentName = #"G2 1"
        shortInstrumentName = #"G2 1"
      } { \patternA }
      \new Staff \with {
        instrumentName = #"G2 2"
        shortInstrumentName = #"G2 2"
      } { \patternA }
    >>
  >>
}


Cheers,
Xavier

________________

[1] Well, actually we have had more than one thread about this, it's a
    quite "popular" subject (i.e. people have many questions / problems
    to understand it correctly right now).

--
Xavier Scheuer <address@hidden>



reply via email to

[Prev in Thread] Current Thread [Next in Thread]