Lilypond:可变分页符惩罚

时间:2019-01-13 00:08:28

标签: lilypond

在使用Lilypond时,我经常会遇到相同的问题:假设我有四个分数(每个分数3-4行)可以容纳在两页中,但不一定是一页。

我拒绝将分页符限制在分数之内。如果可能,我希望所有分数都在同一页面上。但是,当不可能时,我希望在第一和第二个乐谱之间进行分页。如果这也不可能,请在第二个和第三个之间。而且只有在第三和第四之间确实有必要的时候。也就是说,按照优先顺序, // Wait for all threads to finish for(std::thread& t : threads) { t.detach(); } 代表分页符:

  • 1 2 3 4 |
  • 1 | 2 3 4
  • 1 2 | 3 4
  • 1 2 3 | 4

有没有一种方法可以实现,而无需尝试并且添加页面会使我自己打乱?也许通过使分页符惩罚在每个分数之后按递增顺序排列(但仍小于添加新页的惩罚)?

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

您应该使用ly:page-turn-breaking(请参阅文档中的Optimal page turning)。为了获得最佳控制,您可能还必须与\pageTurn, \noPageTurn, \allowPageTurn一起玩。

这是一个最小的例子:

\version "2.19.82"

\header {
  title = "Page turn breaking"
}

\paper {
  % The default page breaking will make Score 1 end at beginning of page 2.
  % The following option prevents this and keeps Score 1 all in the first page.
  page-breaking = #ly:page-turn-breaking
}

\score {
  \header { piece = "Score 1" }
  \new Staff {
    \clef "treble_8"
    \repeat unfold 14 { c'1*4 }
  }
  \layout {
    indent = 0
    system-count = 14
  }
}

\score {
  \header { piece = "Score 2" }
  \new Staff {
    \clef "treble_8"
    \repeat unfold 13 { e'2 f }
  }
  \layout {
    indent = 0
    system-count = 13
  }
}