0

我正在尝试在大员工的上层员工之上添加一个 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 KB)。

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

  • 如果我删除第s2.*10013 行(标记为% ???),或将值更改为小于 12 的任何值,ossia 工作人员的渲染完全不正确。它出现在低音谱号下方,包括谱号和拍号,位于 C 调中(即,呈现的音符包括变音记号)。基本上,它似乎没有注意到ossia员工的存在并建造了一个全新的。我怀疑这是因为 ossia 工作人员应该延伸到使用它的每个点——即,当切换工作人员上下文时,可以“回到过去”但不能向前。我不太明白这一点,但我可以忍受它,因为只要\compressFullBarRests启用它似乎就没有内在的影响。

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

  • 正如我在乐谱中所指出的,添加\RemoveEmptyStaves不会删除空的五线谱。

我的问题是:如何保持 ossia 谱表的呈现方式与本示例中的一样(小且高于高音谱号),而无需在所有以前的系统上添加空白空间?

4

1 回答 1

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

于 2017-01-01T11:08:27.930 回答