Как я могу включить Ossia без создания пустого пространства?
Я пытаюсь добавить посох оссии над верхним посохом великого посоха. Работая с этим постом в списке рассылки, я создал минимальный пример, который почти делает то, что я хочу. Проблема заключается в том, что весь счет содержит пустое место для персонала ossia, даже в системах, где нет ossia.
Вот пример (действительно, мелодичная композиция):
\version "2.18.2"
ossia = \new Staff = "ossia" \with {
\remove "Time_signature_engraver"
fontSize = #-2
\override StaffSymbol #'staff-space = #(magstep -2)
\override Clef #'transparent = ##t
\override KeySignature #'stencil = ##f
} {
\key b \major
\override Staff.BarLine #'allow-span-bar = ##f
\stopStaff
s2.*100 % ???
}
treble = \new Staff = "treble" {
\clef treble
\key b \major
\relative c' {
\repeat unfold 10 { b8 cis dis fis dis cis }
b4 dis fis |
b4
<<
{ dis, fis }
\context Staff = "ossia" {
\startStaff \tuplet 3/2 { dis8 b dis } fis4 \stopStaff
}
>> |
b2. |
}
}
bass = \new Staff = "bass" {
\clef bass
\key b \major
\relative c {
\repeat unfold 12 { fis,4 fis4 fis4 | }
b2.
}
}
pianoStaff = \new PianoStaff {
\compressFullBarRests
\time 3/4
<<
\ossia
\treble
\bass
>>
}
\paper {
#(set-paper-size "letter")
indent = 25\mm
short-indent = 5\mm
}
\score {
<< \pianoStaff >>
% This changes nothing:
% \layout { \context { \Staff \RemoveEmptyStaves } }
}
Вот вывод (PNG-изображение, 85 КБ).
Некоторые интересные вещи, чтобы отметить:
Если я удалю
s2.*100
в строке 13 (отмечено% ???
), или измените значение на что-то меньше 12, персонал ossia отображает совершенно неправильно. Он появляется под басовым ключом, включает в себя ключ и временную подпись и находится в ключе C (т. Е. Визуализированные ноты включают случайные). По сути, похоже, что он не заметил, чтоossia
Персонал существует и создал новый. Я подозреваю, что это связано с тем, что персонал ossia должен проходить дальше каждой точки, где он используется, то есть при смене контекста персонала можно идти "назад во времени", но не вперед. Я не очень понимаю это, но я могу с этим смириться, так как это, кажется, не имеет внутреннего эффекта, пока\compressFullBarRests
включен.Я включил размер бумаги в MWE, чтобы обеспечить согласованные размеры в разных системах.
Как я отметил в счете, добавив
\RemoveEmptyStaves
не удаляет пустые посохи.
Мой вопрос: как я могу сохранить визуализацию персонала ossia, как это делается в этом примере (маленький и над скрипичным ключом), не добавляя пустое место во всех предыдущих системах?
1 ответ
\RemoveEmptyStaves не работает, потому что посохи находятся в PianoStaff, поэтому вы должны добавить \remove "Keep_alive_together_engraver"
в блок макета. Вот минимальный пример слегка измененного фрагмента документации:
\version "2.18.2"
\new PianoStaff
<<
\new Staff = "ossia" \with {
\remove "Time_signature_engraver"
\hide Clef
fontSize = #-3
\override StaffSymbol.staff-space = #(magstep -3)
\override StaffSymbol.thickness = #(magstep -3)
} \relative c'' {
R1*3
c4 e8 d c2
}
\new Staff \relative c' {
c4 b c2
e4 f e2
g4 a g2 \break
c4 b c2
g4 a g2
e4 d c2
}
>>
\layout {
\context {
\Staff \RemoveEmptyStaves
\override VerticalAxisGroup.remove-first = ##t
}
\context {
\PianoStaff
\remove "Keep_alive_together_engraver"
}
}
Ваш пример довольно большой, а не настоящий MWE. s2.*100
не имеет никакого смысла для меня. Я предлагаю вам представить меньший пример.