如何在不创建空格的情况下包含ossia?

时间:2016-12-29 22:41:37

标签: lilypond

我正在尝试在一个盛大的上层员工之上添加一个ossia员工 员工。在this mailing list post工作,我有 构建了一个几乎做我想要的最小例子。该 问题是整个分数包含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 } }
}

Here is the output (PNG image, 85 KB).

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

  • 如果我在第13行(标记为s2.*100)删除% ???,或更改 ossia工作人员提出的价值小于12 完全不正确。它出现在低音谱号下方,包括 谱号和时间签名,并且在C的键中(即,渲染的 笔记包括意外)。基本上,它似乎没有成功 注意ossia员工存在并构建了一个全新的 一。我怀疑这是因为ossia工作人员应该这样做 延伸到使用它的每个点 - 即,当切换人员时 上下文,人们可以及时回归&#34;但没有前进。我不是真的 明白这一点,但我可以忍受它,因为它似乎没有 只要启用\compressFullBarRests,就会产生内在效果。

  • 我已将纸张尺寸包含在MWE中以强制保持一致 不同系统的尺寸。

  • 正如我在分数中所述,添加\RemoveEmptyStaves并未删除 空的五线谱。

我的问题是:如何让ossia员工保持原样 这个例子(小和高音谱号之上)没有添加 所有以前系统上的空白区域?

1 个答案:

答案 0 :(得分:1)

\ RemoveEmptyStaves无效,因为谱表位于PianoStaff中,因此您必须将\remove "Keep_alive_together_engraver"添加到\ layout块。这是一个略微修改的文档片段的最小示例:

\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对我没有任何意义。我建议你提交一个较小的例子。