制作乐谱,很多时候毕竟是为了能印刷出来。学习页面设置是必要的,本篇将解决LilyPond的页面设置问题。
本篇的学习要点有:
- 如何设置页面大小、页边距和页码
- 如何合理安排谱表的音符疏密,如何强制换行
1 页面设置模块 \paper {...}
LilyPond的页面设置都是在\paper {...}
中完成的,它是一个与\header {...}
和 \score {...}
同级的指令。即是说,它与\score {...}
并列,但不能含在\score {...}
里面。
一般完整的带页面设置的LilyPond代码模板如下:
\version "2.20.0"
\language english
\header {
... %标题设置
}
\paper {
... %页面设置
}
... %自定义乐谱/歌词部分
\score {
... %乐谱部分
}
事实上,\paper {...}
,\score {...}
和\header {...}
可以随意调换顺序,所以才说他们是“同级的指令”。不过个人建议\score {...}
放在最后,这比较符合从全局到细节的思维方式。
页面设置模块\paper {...}
主要负责如下功能:
- 页面大小设置
- 页边距设置
- 页眉、页脚、页码和标题格式设置
2 页面设置
下面的示例提供了本篇中提到的语句或属性
...
\paper {
paper-height = 297\mm %页面高度
paper-width = 210\mm %页面宽度
% #(set-paper-size "a4") %设置纸张大小
top-margin = 10\mm %上边距
bottom-margin = 10\mm %下边距
left-margin = 10\mm %左边距
right-margin = 10\mm %右边距
% two-sided = ##t %双面打印模式
% inner-margin = 20\mm %内边距
% outer-margin = 10\mm %外边距
% print-page-number = ##f %关闭页码
print-first-page-number = ##t %打开第一页页码
page-number-type = “arabic” %页码格式
first-page-number = 11 %设置第一页页码
}
...
2.1 页面大小
LilyPond的默认页面大小是A4,如果需要其他大小,使用指令#(set-paper-size "大小")
,它必须放在\paper {...}
中。下面是几点要注意的:
- 页面大小用字符串表示,如
"a3"
、"b4"
。LilyPond可以识别的纸张大小有这些。 - LilyPond如果需要改变纸张方向,在字符串后加
landscape
,如"a3landscape","letterlandscape"等。LilyPond默认的纸张方向是纵向。
如需其他自定义页面大小,使用paper-height
(页面高度)和paper-width
(页面宽度)属性。可用的长度单位有\mm
(毫米)、\cm
(厘米)、\pt
(像素)和\in
(英寸)。比如,将页面高度设置为210mm,应写指令paper-height = 210\mm
。
2.2 页边距
LilyPond可以自由地控制四个方向的边距。所用到的属性分别为:
- 上边距:
top-margin
(默认5mm) - 下边距:
bottom-margin
(默认6mm) - 左边距:
left-margin
(默认10mm) - 右边距:
right-margin
(默认10mm)
如果准备双面打印,设置统一的左右边距有时不能满足需要(比如设置左边距10mm,右边距20mm,双面打印就会出问题)。LilyPond同样提供了解决方案。
首先,使用下面语句打开双面打印开关:two-sided = ##t
便可使用下列属性设置边距:
- 内边距:
inner-margin
(默认10mm) - 外边距:
outer-margin
(默认20mm)
即是说,如果只设置为双面打印,奇数页的左边距设置为10mm,右边距设置为20mm;偶数页的左边距设置为20mm,左边距设置为10mm。如此一来,装订起来之后,“里面”的空间就统一设置为10mm,"外面"的空间就统一设置为20mm。
2.3 页码
LilyPond支持多种形式的页码设置,下面的属性跟页码设置有关:
print-page-number
:若设置为##f
,则关闭页码显示。这一属性默认为##t
,即默认显示页码。print-first-page-number
:若设置为##t
,则第一页也显示页码。这一属性默认为##f
,即默认不显示第一页页码。page-number-type
:设置页码格式,支持"roman-lower"
(小写罗马数字)、"roman-upper"
(大写罗马数字)和"arabic"
(阿拉伯数字)。页码默认为阿拉伯数字。first-page-number
:设置第一页的页码,有时候我们需要第一页的页码从某一页开始,此时就需要用到这个属性。如first-page-number = 11
表示乐谱的页码从第11页开始。
3 音符疏密设置与强制换行
3.1 音符疏密设置
有时候乐谱上的音符疏密安排不尽如人意,我们可以在\layout {...}
中设定如下参数:
...
\score {
\layout {
\context {
\Score proportionalNotationDuration = #(ly:make-moment 1/8)
}
}
...
}
我们只关注上面的一个分数1/8
,这个分数的分母越大,LilyPond会把音符安排得疏一些。如果你觉得当前音符安排得过密,可以设置为1/14
。
它不是一种简单的缩放,而跟比例记谱法有关,在此我暂时不详细介绍其工作原理。
3.2 强制换行
有时候LilyPond安排的换行不太理想,这时使用\break
可以强制换行,它在旋律片段中使用。观察下面示例:
\relative c' {
c4 c c c | c c c c | \break
c4 c c c | c4 c c c |
}
得到的乐谱如下:
如果没有\break
,上面的示例应当用一行就能显示。
下篇将会关注LilyPond的和弦代号标记。