文档整体结构
本节概述了整个文档如何由一行一行一行的指令构成。
行的结构
指令、分割线与注释
所有行在第一轮处理时全部被令牌化(Tokenize),因此下面所说的符号,双引号引起的字符串内都不算。
- 除了空格外,仅由
-
或=
中的一种字符构成的行,解析为分割线。=
构成的分割线为章节分割线。-
构成的分割线为碎片分割线。
- 每行中第一个
//
以及其后的所有文本都会被作为注释并被忽略掉。 - 指令行规则如下:
- 由一个单词开头,含有至少一个
:
,就是指令行。第一个冒号作为头部和内容的分界线。 - 如果头部满足
<单词>[<任意内容>]:
的格式,方括号内会被作为属性。
- 由一个单词开头,含有至少一个
软折行
在一行的末尾添加反斜杠 \
(反斜杠后不能再有空格),下一行会被认为是这一行内容的延续,像这样:
谨慎使用
大多数情况下,这个特性只应该用于渲染属性行上。如果你需要在音符或歌词行上用到,请考虑一下碎片是否写得太长了,如果是这样,应当进行拆分。
文档的结构
第零层:文档
文档头包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
Dt | DocTitle | 标题 | - | Dt | 文本 | - |
Dp | DocPrescript | 左上角属性 | - | Dp | 文本 | - |
Dv | DocVersion | 右上角版本号 | - | Dv | 文本 | - |
Ds | DocSubtitle | 副标题 | - | Ds | 文本 | - |
Da | DocAuthor | 作者 | - | - | 文本 | 可选 |
Df | DocFootnote | 尾注 | - | - | 文本 | - |
Dl | DescenderLeft | 页脚左侧文本 | - | Dl | 文本 | - |
Dr | DescenderRight | 页脚右侧文本 | - | Dr | 文本 | - |
P | Props | 音乐属性 | 1 | P | 空格分割 | - |
Pi | PropsImplicit | 音乐属性(不显示) | 1 | P | 空格分割 | - |
Rp | RenderProps | 渲染属性 | - | Rp | 空格分割 | - |
- 文档头中所有指令的属性均直接作为文本处理。
- 目前,尾注文本
Df
会显示在整个乐谱的末尾(这一行为未来可能改变),因此也可以添加在整个文档最后,而不必在开头。 最低版本:Sparks NMN 1.14.16
提示
如果你不明白这里在说什么,请确保你看过教程部分的第一节。
第一层:章节
文本章节
包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
T | Text | 文本标注 | - | - | 文本 | - |
S | Section | 文段标题 | - | S | 文本 | - |
Srp | SectionRenderProps | 渲染属性 | - | Srp | 文本 | - |
音乐章节
章节头包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
S | Section | 文段标题 | - | S | 文本 | - |
Srp | SectionRenderProps | 渲染属性 | - | Srp | 文本 | - |
Sp | SectionProps | 音乐属性 | - | Sp | 空格分割 | - |
第二层:碎片
碎片头包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
B | Break | 此前强制换行 | - | B | - | - |
J | Jumper | 跳房子 | - | J | 令牌化 | - |
Frp | FragmentRenderProps | 渲染属性 | - | Frp | 空格分割 | - |
注意
渲染属性 Frp
中只有 n
是有效的,其他属性会被忽略。
第三层:声部
声部头包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
N | Notes | 音符序列 | 1 | N | 令牌化 | 可选 |
Na | NotesAccompany | 鼓点音符序列 | 1 | N | 令牌化 | 可选 |
Nc | NotesCompact | 紧凑音符序列 | 1 | N | 令牌化 | 可选 |
A | Annotation | 标记符号 | - | - | 令牌化 | 可选 |
注意
声部头中,N
或 Na
应该写在最前面。然而,每个碎片第一个声部的标记符号行 A
也可以写在 N
或 Na
,有时这种写法是比较直观的。
第四层:歌词行
歌词行包含这些指令:
命令头 | 全称 | 说明 | 必须 | 唯一 | 内容 | 属性 |
---|---|---|---|---|---|---|
L | Lyric | 歌词(手动分割) | 1 | L | 令牌化 | 可选 |
Lc | LyricChar | 歌词(字基) | 1 | L | 令牌化 | 可选 |
Lw | LyricWord | 歌词(词基) | 1 | L | 令牌化 | 可选 |
Ns | NotesSubstitute | 替代小节 | - | - | 令牌化 | 可选 |
A | Annotation | 标记符号 | - | - | 令牌化 | 可选 |
La | LyricAnnotation | 标记型歌词 | - | La | 令牌化 | - |
注意
歌词行中,L
Lc
或 Lw
应该写在最前面。