我正在尝试在大员工的上层员工之上添加一个 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 } }
}
一些有趣的事情需要注意:
如果我删除第
s2.*100
13 行(标记为% ???
),或将值更改为小于 12 的任何值,ossia 工作人员的渲染完全不正确。它出现在低音谱号下方,包括谱号和拍号,位于 C 调中(即,呈现的音符包括变音记号)。基本上,它似乎没有注意到ossia
员工的存在并建造了一个全新的。我怀疑这是因为 ossia 工作人员应该延伸到使用它的每个点——即,当切换工作人员上下文时,可以“回到过去”但不能向前。我不太明白这一点,但我可以忍受它,因为只要\compressFullBarRests
启用它似乎就没有内在的影响。我在 MWE 中包含了纸张尺寸,以强制不同系统上的尺寸保持一致。
正如我在乐谱中所指出的,添加
\RemoveEmptyStaves
不会删除空的五线谱。
我的问题是:如何保持 ossia 谱表的呈现方式与本示例中的一样(小且高于高音谱号),而无需在所有以前的系统上添加空白空间?