LilyPond教程(15)——文字记号与文字样式调整

除了谱表和音符,乐谱中通常也有不少文字。本篇主要讨论LilyPond中如何插入文字,并进行样式调整。请读者留意,本篇开始将适用于LilyPond 2.24.1,如有冲突请查阅旧版手册

本篇的学习要点有:

  • 熟悉\markup {...}模块的输入,懂得简单调整字体等样式。
  • 知道\markup {...}可用于乐谱何种位置。

1 \markup {...}模块

针对乐谱中绝大部分的文字信息,LilyPond都采用\markup {...}模块来进行处理。

1.1 基本构成与简单样式调整

\markup {...} 中填入的内容可参照歌词模式\lyricmode {...},中间可以填入任意文本信息。

对文本进行样式调整的代码一般形如\markup { \样式指令 内容 },需要注意的是,样式指令只对后面一个单位的文本有用(文本单位的概念见2.3节,在这里可以暂时理解为“一个单词”),如果需要对多个单位起作用,要么使用双引号括起,即\markup { \样式指令 “内容1 内容2” },要么使用大括号括起,即\markup { \样式指令 {内容1 内容2} }。下面是一些常用的样式指令:

  • 加粗\bold
  • 斜体\italic
  • 力度记号(加粗斜体)\dynamic (只对f,m,p,r,s,z字母组成的文本有用)
  • 下划线 \underline
  • 加框 \box
  • 大小 \tiny\small\large\huge (依次从小到大)若想具体调整字体大小,采用\fontsize #xxxx可正可负且#不可忽略,\fontsize #-2表示调小两个字号,\fontsize #3表示调大三个字号。也可以使用\smaller\larger,它们表示将比它前面的文本小一号或大一号
  • 颜色 \with-color “颜色”

不同的样式指令可以叠加,更多的样式指令可查看官方文档

下面的例子展示了该如何使用样式指令:

\markup {
  These are \italic examples of \underline LilyPond \with-color "red" markups.
  Markup commands can be \bold \box nested. 
}

\markup {
  \huge {Words can be grouped by quotes or brackets.}
}

在这里插入图片描述

1.2 多行文本输入

对于多行输入,可参考下列模板:

\markup {
	\对齐方式 {
		\line { ... }
		\line { ... }
		\line { ... }
		...
	}
}

其中,对齐方式有:

  • 左对齐\column\left-column
  • 居中对齐\center-column
  • 右对齐\right-column

关于每一行的内容,有几点需要注意:

  • \line {...}是必须的。如果直接大括号括起,LilyPond仍然无法分辨何处断行,而会每一行安排一单位文本(其实也可以换成用双引号括起,但个人不支持这种方法)。
  • 这里的对齐方式是根据最长一行的文本调整的,而不是全页面调整。
  • 样式指令在多行内容中仍然适用。
  • 空行可以使用\null

下面是一个示例:

\markup {
  \center-column{
    \line{first line}
    \null
    \line{ \underline {second line}}
    \line{ \bold third line}
  }
}

在这里插入图片描述

2 \markup {...}指令的用途

2.1 表情记号,并调整它的位置

关于\markup {...}作表情记号,已在系列教程第九篇做了简单介绍。这里着重介绍如何调整它在谱中的位置。表情记号的位置统一通过样式指令来调整:

  • \hspace #xx表示表情记号相对于音符右移xx个单位,这里xx可正可负。
  • \raise #xx表示上移xx个单位(仅当表情置于上方时有用),\lower #xx表示下移xx个单位(仅当表情置于下方时有用)。
  • \translate #'(xx . yy)表示左移xx个单位,并上移yy个单位。yy可正可负,但yy为正只对表情置于上方时有用,yy为负时只对表情置于下方时有用。

需要注意的有以下几点:

  • \hspace #xx实际上是指插入xx个空格,比如\markup { A \hspace #3 B }表示A,B之间插入了三个空格。**它会被当成是一个单位文本,而不是样式指令。**它与其他字体样式等指令配合使用须尤其注意。但\translate确实是样式指令,可以与其他样式指令嵌套使用。
  • 表情记号也可以使用多行文本。也可以探索一下**\vspace #xx配合多行文本 **来调整上下位置,详见官方文档
  • \p,\f等强弱记号不被视为文本,无法放入\markup {...}之中。如果要调整强弱记号的位置,需将\f写成\dynamic f

下面是一个例子:

\score {
  \relative c' {
    \time 4/4
    c d^\markup{ \italic \translate #'(-2 . 2) poco  } e f
  }
}
\markup {
  we set five \bold \hspace #5 blanks. \hspace #2 \bold Bold ones.
}

在这里插入图片描述

2.2 乐谱抬头和谱表乐器名

乐谱抬头\header {...}与谱表乐器名都可以使用\markup {...}进行特殊的文本设置,参考下面的示例:

\header {
  title = "New Song"
  subtitle = \markup {from \italic {symphony No.} }
  composer = \markup {
    \right-column {
      \line {Composer A}
      \line {Composer B}
    }
  }
}

\score {
  \new Staff \with{
      instrumentName = \markup {
        \right-column {
          \line{Soprano}
          \line{Alto}
        }
      }
    }
    \relative c' {
      \time 4/4
      << {g' f g c} \\ {c, d e f} >>
    }
}

在这里插入图片描述

2.3 单独的文段输入

LilyPond也同时支持单独的文本输入,比如作曲家或音乐的介绍,歌剧的大意、歌词发音注释等都可以直接在LilyPond排版。

在此之前,我们需要强调一下\markup {...}是如何安排文本的:

  • 与歌词模式一样,每一个被空格隔开的单词将被视为“一个单位”。如\markup { A B }被视为两个单位AB,而\markup { "A B" }被视为一个单位A B
  • LilyPond会将\markup {...}中的各单位文本从左至右依次排列,在不做特殊调整的情况下,会不顾页面一路排下去,不会自动换行
  • 除开最基本的单位文本,每个\column {...}等括起的多行文本也视为一个单位。
  • \line {...}括起的整体视为一个单位。
  • \hspace #xx\vspace #xx视为一个单位。
  • 样式指令对后一个文本单位有用。样式指令后使用大括号{...}括起的文本全体不视为一个单位。但用双引号括起时,"..."括起的整段文本看成一个单位。

可见下面的示例,文本会直接往右溢出:

\markup {
  \bold \column {
    \line {first line}
    \line {second line}
  }
  \hspace #4
  \italic \larger {thrid line}
  \underline Here's a verrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrry long sentence.
}

在这里插入图片描述

针对长文本,LilyPond提供了样式指令\wordwrap {...}\justify {...},它会自动将里面的内容分行排版,这样可以省去长文本的排版麻烦。下面是官方手册的示例:

\markup {
  \column {
    \line \bold { Acto I }
    \wordwrap \italic {
      (La escena representa el corral de una casa de
      gitanos en el Albaicín de Granada.  Al fondo una
      puerta por la que se ve el negro interior de
      una Fragua, iluminado por los rojos resplandores
      del fuego.)
    }
    \hspace #0

    \line \bold { Acto II }
    \override #'(line-width . 50)
    \justify \italic {
      (Calle de Granada.  Fachada de la casa de Carmela
      y su hermano Manuel con grandes ventanas abiertas
      a través de las que se ve el patio
      donde se celebra una alegre fiesta)
    }
  }
}

在这里插入图片描述
使用中注意下面几点:

  • \wordwrap\justify之前使用\override #'(line-width . xx)确定行宽,LilyPond默认按整页排版。
  • \wordwrap {...}\justify {...}括起的文本全体视为一个单位
  • \wordwrap {...}\justify {...}换行不分词,即是说一行末尾塞不下的词会放到第二行。

2.4 \fill-line {...}\fill-with-pattern

\fill-line {...}\fill-with-pattern {...}是乐谱中特别常用的排版利器。

\fill-line {...}会将大括号内的各单位文本两边对齐(也叫分散对齐)。
比如下面的歌词注释示例:

\markup {
  \fill-line {
    \column {
      \line { O sacrum convivium }
      \line { in quo Christus sumitur, }
      \line { recolitur memoria passionis ejus, }
      \line { mens impletur gratia, }
      \line { futurae gloriae nobis pignus datur. }
      \line { Amen. }
    }
    \column \italic {
      \line { O sacred feast }
      \line { in which Christ is received, }
      \line { the memory of His Passion is renewed, }
      \line { the mind is filled with grace, }
      \line { and a pledge of future glory is given to us. }
      \line { Amen. }
    }
  }
}

在这里插入图片描述
(注意体会上述示例代码中加入\hspace #1的作用。)

\fill-with-pattern则用于制作目录,它的使用格式是\fill-with-pattern 疏密度 靠左/靠右 填充样式 左文本 右文本。比如\fill-with-pattern #1 #RIGHT . "Act I" 1表示:

  • 疏密度是1,数字越大则安排得越疏,否则越密。疏密度支持小数
  • .表示用句点.填充中间的空白,也可以使用其他的字符,甚至用\markup {...}重新定义一个样式
  • #RIGHT表示填入的句点靠右,类似地可以使用#LEFT#CENTER
  • 左文本为Act I,右文本为1,注意这里左右文本都必须保证是一个单位文本,可以使用其他样式指令调整字体或大小。这里使用了双引号来将Act I包成一个单位,也可以使用\line {...}

另外,在\fill-with-pattern之前也可以使用\override #'(line-width . xx)以确定行宽。

下面的示例给出了一个比较复杂的目录,囊括了前面提到的问题。

\markup {
  \fill-line {
    \override #'(line-width . 50)
    \column {
      \fill-with-pattern #1 #CENTER . "Dou Jose" \italic Tenor
      \fill-with-pattern #1 #CENTER . Esamillo \italic Baritone
    }
    \override #'(line-width . 50)
    \column {
      \fill-with-pattern #1 #CENTER . Carmen \italic Mezzo-Soprano
      \fill-with-pattern #1 #CENTER . Micaela \italic Soprano
    }
  }
}

在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值