我如何在不创建空白的情况下加入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 = 25mm
  short-indent = 5mm
}
score {
  << pianoStaff >>
  % This changes nothing:
  % layout { context { Staff RemoveEmptyStaves } }
}

这是输出(PNG图像,85 kb)。

需要注意的一些有趣的事情:

  • 如果我在第13行(标记% ???)上删除s2.*100,或更改Ossia员工渲染物的价值小于12的东西完全错误地。它出现在低音谱号下方,包括CLEF和时间签名,并且位于C的钥匙中(即渲染笔记包括意外)。基本上,看来它未能请注意,ossia工作人员存在并构建了一个全新的一。我怀疑这是因为Ossia工作人员应该延伸超过每个使用的点 - 即当切换员工时上下文,一个人可以"回到过去",但不能前进。我不是理解这一点,但我可以忍受,因为它似乎没有只要启用compressFullBarRests,就会产生内在效果。

  • 我在MWE中包括了纸张尺寸以强制一致不同系统上的尺寸。

  • 正如我在分数中指出的那样,添加RemoveEmptyStaves不会删除空的小仓。

我的问题是:我如何保持Ossia工作人员的渲染此示例(小和高音clef)>所有以前的系统上的空白空间?

emoveEmptystaves不起作用,因为五线谱在钢琴上,因此您必须在 layout块中添加 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对我没有任何意义。我建议您提交一个较小的例子。

相关内容

  • 没有找到相关文章

最新更新