跳到主要内容

多片段、大段文本

本节中,我们讲讲如何在一份文档中混排多个乐谱片段。这或许是一个不太常用的功能,但是如果你的文档标题是《基础节奏练习》,这显然是有用的,因为这里面的不同的乐谱片段可能会有不同的乐理属性。

你还可以在乐谱片段之间添加文字说明。

tl;dr

  • 使用章节分割线 ==== 分割多个独立的章节。
  • 章节头部可添加 S: 开头的行表示标题。
  • 章节头部可添加 Sp: 开头的行表示章节的乐理属性。
  • 将全局乐理属性行开头的 P: 改为 Pi: 即可将其隐藏。
  • 章节中若有 T: 开头的文本行,将会被作为纯文本章节。文本章节不能包含曲谱、标题或乐理属性。

章节与章节分割线

就像先前用 --- 分割碎片一样,用 ====(等号组成的分割线)可以分割章节。这样分割的两个曲谱片段就会成为毫不相干的两个部分。例如,如果将之前《小星星》乐谱中的三个碎片用这种分割线来处理:

可以看到,这么一来,每个「碎片」都会从 1 重新开始编号,并且它们之间的间距比之前更大了。事实上,原来的三行乐谱已经被分成了三个独立的乐谱片段。而这样的片段称为章节

不妨试一试在某行的最后一个音后面添加一个 ~ 后缀,你会发现它不再能与后面行中的音符建立连音线,因为它们属于不同章节。

同样地,为了美观,第一个章节前也可以添加章节分割线,但是最后一个章节之后不能。

音乐章节的标题与属性

每个乐谱章节之前都可以有一个方框框起的标题,只需要在章节开头通过 S:Section: 的缩写,section 这个名称是历史遗留问题)开头行指定即可。为了代码美观,也可以在其后面添加一条碎片分割线 --- 将其与后面的曲谱行隔开。

在编辑器的预览中点击这个标题,会将光标定位到 S: 开头的行的行首。

每个章节还可以有自己的乐理属性,来覆盖全局的乐理属性。要指定章节的乐理属性,在开头添加 Sp:SectionProps: 的缩写)开头的行即可。比如这份《基础音准与节奏练习》。

章节的乐理属性不一定需要有章节标题才能显示。如果去掉章节标题,属性仍然会单独显示出来。

在这个例子中,由于每个章节都指定了自己的乐理属性,最上面的全局乐理属性显得有些多余。将 P: 改为 Pi:PropsImplicit: 的缩写)就可以将其隐藏。

常见错误

全局乐理属性可以隐藏,但不可以去掉,否则会导致整个文档直接被认为无效。

编辑体验 - 多章节

编辑器还有一些专为多章节乐谱设计的特性。

章节标题跳转

对于有标题的章节,在预览中点击章节标题,即可在代码中定位到该标题。

在音效试听界面中选择章节

不同乐谱章节被认为是相互独立,并且可能没有关联的,因此在音效试听中,它们不会被串起来播放。通过进度区的选择框可以选择要试听的章节。

通过「 可视化点选」来点选小节,也会自动转到其所属的章节。

文本章节

除了乐谱外,章节的内容还可以是文本。文本行以 T:Text: 的缩写)开头。下面的例子来自歌曲《小女孩的诅咒》

与音乐章节类似,文本章节也可以使用 S: 指定标题。

提示

文本到达页面右端就会自动换行,因此一个 T: 开头的文本行其实可以写很多东西。如果代码中一行的内容过长以至于难以编辑,可以使用软折行方法进行处理——当一行末尾是 \ 字符时,这个 \ 字符会被忽略,并且下一行会被当成这一行的延续。

常见错误

一个章节不能既有文本又有乐谱。那样会导致解析器给出一个错误并忽略它。

文本对齐

上面的例子中,我们希望四行念白的词对齐,而 (白) 显示在它们左侧。

最简单的方法是为后三行添加前导空格,但是若直接添加,这些前导空格会被忽略。此时,可以在每行最前面加上一个 | 符号,这样 | 会被忽略,但是 | 之后前导空格将会显示。

使用空格来对齐仍然是不准确且不优雅的。还可以利用制表符 \t

制表符的缺点在于,对于非等宽字体,字符宽度与制表位的宽度难以比较和控制。对于这种需要悬挂缩进的情况,Sparks NMN 提供了另一种解决方法——在行首添加 | 字符后,你可以在文本行中再插入一个 > 字符标定一处对齐点。一个文本章节中,所有包含对齐点的行会在对齐点处对齐。 新增于 1.15.4

接下来...

接下来我们玩点花的——在音符上标注各种奇奇怪怪的奏法记号,以及添加装饰音符。