From 19d0e8e1a9cee3444ec4915b1d2d116e67f5b3f7 Mon Sep 17 00:00:00 2001 From: Simon Albrecht Date: Wed, 27 Jan 2016 18:25:47 +0000 Subject: [PATCH] Add RemoveAllEmptyStaves command Issue 4744 It has been noted several times that we should have a companion for RemoveEmptyStaves and to also set remove-first to ##t. A doc snippet, removing-the-first-empty-line.ly, has become obsolete with these changes. Contains commits: Add missing word in changes.tely Add changes entry for RemoveEmptyStavesAll Use RemoveEmptyStavesAll for ossia example in Notation Reference This rewrites documentation for RemoveEmptyStaves and adds information on the newly added RemoveEmptyStavesAll. Add RemoveEmptyStavesAll command Introduce a new context modification identifier, RemoveEmptyStavesAll, to complement RemoveEmptyStaves. It sets both the remove-empty and remove-first properties of VerticalAxisGroup to ##t. --- Documentation/changes.tely | 7 +++- Documentation/notation/staff.itely | 57 +++++++++++------------------- ly/context-mods-init.ly | 8 +++++ 3 files changed, 35 insertions(+), 37 deletions(-) diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 2a265ce914..00e53b5e88 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -93,9 +93,14 @@ Customizing is possible with overrides of @code{thickness}, @code{angularity}, } @end lilypond +@item +A new command, @code{\RemoveAllEmptyStaves}, has been made available, which +acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty +staves on the first system in a score. + @item Markup-commands @code{\undertie} and @code{\overtie} are now available, as well -the generic markup-command @code{\tie}. +as the generic markup-command @code{\tie}. @lilypond[quote,verbatim] \markup { \undertie "undertied" diff --git a/Documentation/notation/staff.itely b/Documentation/notation/staff.itely index db5d5ebab8..1a2f07566d 100644 --- a/Documentation/notation/staff.itely +++ b/Documentation/notation/staff.itely @@ -669,11 +669,11 @@ example. @end lilypond -Using the @code{\Staff \RemoveEmptyStaves} command to create ossia +Using the @code{\RemoveAllEmptyStaves} command to create ossia staves may be used as an alternative. This method is most convenient when ossia staves occur immediately following a line break. For more information about -@code{\Staff \RemoveEmptyStaves}, see @ref{Hiding staves}. +@code{\RemoveAllEmptyStaves}, see @ref{Hiding staves}. @lilypond[verbatim,quote,ragged-right] << @@ -681,6 +681,7 @@ break. For more information about \remove "Time_signature_engraver" \hide Clef \magnifyStaff #2/3 + \RemoveAllEmptyStaves } \relative { R1*3 c''4 e8 d c2 @@ -694,13 +695,6 @@ break. For more information about e4 d c2 } >> - -\layout { - \context { - \Staff \RemoveEmptyStaves - \override VerticalAxisGroup.remove-first = ##t - } -} @end lilypond @@ -737,10 +731,14 @@ Internals Reference: @cindex Frenched staff @cindex staff, hiding @cindex staff, empty -@cindex hiding of staves +@cindex hiding staves +@cindex hiding ancient staves +@cindex hiding rhythmic staves +@cindex hiding vaticana staves @cindex empty staves @funindex \RemoveEmptyStaves +@funindex \RemoveAllEmptyStaves @funindex Staff_symbol_engraver @funindex \stopStaff @funindex stopStaff @@ -758,11 +756,14 @@ alternative, @code{\stopStaff} may be used. @end lilypond -Empty staves can be hidden by setting the -@code{\Staff \RemoveEmptyStaves} command in the @code{\layout} -block. In orchestral scores, this style is known as @q{Frenched -Score}. By default, this command hides and removes all empty -staves in a score except for those in the first system. +Empty staves can be hidden (for a so-called @q{Frenched Score}) +by applying the @code{\RemoveEmptyStaves} command on a context, which +can be done globally (in a @code{\layout} block) as well as for +specific staves only (in a @code{\with} block). This command removes +all empty staves in a score except for those in the first system. If +you want those in the first system to be hidden also, use +@code{\RemoveAllEmptyStaves}. Supported contexts are @code{Staff}, +@code{RhythmicStaff} and @code{VaticanaStaff}. @warning{A staff is considered empty when it contains only multi-measure rests, rests, skips, spacer rests, or a combination of these @@ -771,7 +772,8 @@ elements.} @lilypond[verbatim,quote,ragged-right] \layout { \context { - \Staff \RemoveEmptyStaves + \Staff + \RemoveEmptyStaves } } @@ -792,32 +794,15 @@ elements.} @cindex ossia @noindent -@code{\Staff \RemoveEmptyStaves} can also be used to create ossia +@code{\RemoveAllEmptyStaves} can also be used to create ossia sections for a staff. For details, see @ref{Ossia staves}. -@cindex hiding ancient staves -@cindex hiding rhythmic staves - -@funindex \RemoveEmptyStaves - -The @code{\VaticanaStaff \RemoveEmptyStaves} command may be used to -hide empty staves in ancient music contexts. Similarly, -@code{\RhythmicStaff \RemoveEmptyStaves} may be used to hide empty -@code{RhythmicStaff} contexts. - @predefined -@code{\Staff \RemoveEmptyStaves}, -@code{\VaticanaStaff \RemoveEmptyStaves}, -@code{\RhythmicStaff \RemoveEmptyStaves}. +@code{\RemoveEmptyStaves}, +@code{\RemoveAllEmptyStaves}. @endpredefined - -@snippets - -@lilypondfile[verbatim,quote,texidoc,doctitle] -{removing-the-first-empty-line.ly} - @seealso Music Glossary: @rglos{Frenched staff}. diff --git a/ly/context-mods-init.ly b/ly/context-mods-init.ly index 24b8ce0558..a4064f4b32 100644 --- a/ly/context-mods-init.ly +++ b/ly/context-mods-init.ly @@ -24,6 +24,14 @@ RemoveEmptyStaves = \with { to the list of interfaces set by @code{keepAliveInterfaces}." } +RemoveAllEmptyStaves = \with { + \override VerticalAxisGroup.remove-empty = ##t + \override VerticalAxisGroup.remove-first = ##t + \description "Remove staves which are considered to be empty according +to the list of interfaces set by @code{keepAliveInterfaces}, including those +in the first system." +} + inherit-acceptability = #(define-void-function (to from) (symbol? symbol?) -- 2.39.2