2016-12-29 137 views
0

我正在嘗試在grand 工作人員的上層工作人員上面添加一個奧西亞員工。從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).

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

  • 如果我刪除s2.*100在13號線(標記爲% ???),或將 的值更改爲小於12的任何值,ossia員工呈現 完全不正確。它出現在低音譜號的下面,包括 譜號和拍號,並且在C的琴鍵中(即,演奏的 音符包括偶然音符)。基本上,它似乎沒有 通知ossia工作人員存在,並已構建了一個全新的 之一。我懷疑這是因爲我們的工作人員應該延伸到每個使用它的地方 - 也就是說,當切換工作人員的情境時,人們可以「返回」時間,但不能前進。我並不真的 瞭解這一點,但我可以忍受它,因爲只要啓用\compressFullBarRests,似乎沒有 固有效果。

  • 我已經在MWE中包含紙張尺寸,以在不同的系統上強制維持一致的 尺寸。

  • 正如我在評分中所指出的,加入\RemoveEmptyStaves並不會刪除 的空杖。

我的問題是:我怎能呈現ossia的工作人員,因爲它在 這個例子(小,高音譜號以上)確實沒有以前所有系統添加 空的空間?

回答

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對我沒有任何意義。我建議你提交一個更小的例子。

+0

嗨fedelibre。我感謝您的幫助。感謝您的回答,我能夠找到一個令人滿意的解決方案。幾點意見。首先,間隔休息的目的是讓我可以通過在其他評分流程(如我的例子)中設置'\ context Staff ='ossia''來寫出ossia,而不是手動插入正確的休息次數,以將ossia推進到確切的期望位置(如同你的)。其次,您的示例沒有正確顯示ossia,因爲它包含了系統中出現ossia的所有酒吧的額外空白度量。例如,(1/2) – wchargin

+0

(2/2)如果您將'\ break'移動到前一行,那麼在ossia的內容之前會有一個額外的空欄。 (請參考原始文章中呈現的圖像鏈接。)這是我原始示例中的'\ startStaff'和'\ stopStaff'命令的用途。第三,我很抱歉我的MWE很大。現在我有了一個工作解決方案,我可以看到(例如)低音譜號確實不是必需的。畢竟,我對此一無所知,因爲它畢竟是'PianoStaff'。事後看來,所有事情都變得更加容易! :-)這是我最小的解決方案:https://gist.github.com/wchargin/db8f3ff0129686dafe87045f90c8bf5f – wchargin

相關問題