On Sun 18 Oct 2020 at 23:43:18 (+0200), Jean Abou Samra wrote:
>
> Le 18/10/2020 à 17:40, Marc Shepherd a écrit :
> > In a score where "RemoveAllEmptyStaves" is set, a staff will
> > normally not show in a system where it has all rests.
> >
> > Sometimes, you may /want/a staff (temporarily) to appear on a
> > specific system, even though it contains all rests. What’s the
> > command or setting to do this?
> >
> Well, I can't explain the output of:
>
> \version "2.23.0"
>
> showIt = \set Staff.keepAliveInterfaces = #'(rest-interface)
> hideIt = \unset Staff.keepAliveInterfaces
>
> \new Score \with \RemoveAllEmptyStaves
> <<
> {
> R1 R1 R1 \break
> R1 R1 R1 \break
> \showIt
> R1 R1 R1 \break
> \hideIt
> R1 R1 R1 \break
> R1 R1 R1 \break
> }
> {
> \repeat unfold 15 { c'1 }
> }
> >>
>
> I would expect just the third staff to be shown, but in fact the
> second and the fourth are also printed.
>
> Do folks here think this is a bug? Am I missing something?
>
> Anyway, there is this workaround:
>
> \version "2.23.0"
>
> \new Score \with \RemoveAllEmptyStaves
> <<
> {
> R1\break
> << { \oneVoice R1 } \\ { \once \hideNotes c'1 } >> \break
> R1\break
> }
> {
> \repeat unfold 3 { c'1 }
> }I just moved the show/hide away from the line ends, because I don't know precisely when each component of the source is seen/enacted. There may be some look behind/ahead. Cheers, David.
showIt = \set Staff.keepAliveInterfaces = #'(rest-interface)
hideIt = \unset Staff.keepAliveInterfaces
\new Score \with \RemoveAllEmptyStaves
<<
{
R1 R1 R1 \break
R1 R1 R1 \break
R1 \showIt R1 \hideIt R1 \break
R1 R1 R1 \break
R1 R1 R1 \break
}
{
\repeat unfold 15 { c'1 }
}
>>
hide.pdf
Description: Adobe PDF document
