3.2.2 カスタム ヘッダ、フッタ、タイトル


タイトル ブロックのカスタム テキスト フォーマット

標準の \markup コマンドを使って \header ブロックの中にあるヘッダ、フッタ、それにタイトル テキストをカスタマイズすることができます。

\score {
  { s1 }
  \header {
    piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
    subtitle = \markup { \italic "(Excerpt)" }
  }
}

[image of music]

参照

記譜法リファレンス: テキストをフォーマットする


タイトル ブロックのカスタム レイアウト

\header ブロックの中に \markup コマンドを配置することにより、シンプルなテキストをフォーマットすることができます。しかしながら、タイトルの配置を精密に制御することはできません。テキスト フィールドの配置をカスタマイズするには、以下の \paper 変数のどちらか、あるいは両方を変更します:

これらの \markup のデフォルト値を用いた場合のタイトルの配置は book と score のタイトル ブロックのデフォルト レイアウト の中にある例で示しています。

ly/titling-init.ly’ で定義されている scoreTitleMarkup のデフォルト設定は以下のとおりです:

scoreTitleMarkup = \markup { \column {
  \on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
  \fill-line {
    \fromproperty #'header:piece
    \fromproperty #'header:opus
  }
}
}

これは、piece テキスト フィールドと opus テキスト フィールドを同一行の両端に配置します:

\score {
  { s1 }
  \header {
    piece = "PRAELUDIUM I"
    opus = "BWV 846"
  }
}

[image of music]

以下の例では、scoreTitleMarkup を再定義することにより、piece テキスト フィールドを中央に配置して、フォントを大きく、太字にしています。

\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "PRAELUDIUM I"
      opus = "BWV 846"
    }
  }
}

[image of music]

print-all-headers\paper ブロックの中に配置することにより、メイン タイトル ブロックのテキスト フィールドを個々の score タイトル ブロックに表示させることができます。この方法の欠点は、個々の \score ブロックで、最上位の \header ブロックだけに表示させるテキスト フィールドを手動で抑制する必要があることです。タイトル ブロックの説明 を参照してください。

この欠点を回避するには、個々の \score ブロックに表示させたいテキスト フィールドを scoreTitleMarkup 定義に追加します。以下の例では、composer テキスト フィールド (通常、これは bookTitleMarkup に関連付けされています) を scoreTitleMarkup に追加することにより、各 score は異なる作曲者を表示しています:

\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \fontsize #4 \bold \fromproperty #'header:piece
        \fromproperty #'header:composer
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "MENUET"
      composer = "Christian Petzold"
    }
  }
  \score {
    { s1 }
    \header {
      piece = "RONDEAU"
      composer = "François Couperin"
    }
  }
}

[image of music]

あなた自身のカスタム テキスト フィールドを作成して、それをマークアップ定義で参照することもできます。

\book {
  \paper {
    indent = 0\mm
    scoreTitleMarkup = \markup {
      \fill-line {
        \null
        \override #`(direction . ,UP) {
          \dir-column {
            \center-align \fontsize #-1 \bold
              \fromproperty #'header:mycustomtext %% User-defined field
            \center-align \fontsize #4 \bold
              \fromproperty #'header:piece
          }
        }
        \fromproperty #'header:opus
      }
    }
  }
  \header { tagline = ##f }
  \score {
    { s1 }
    \header {
      piece = "FUGA I"
      mycustomtext = "A 4 VOCI" %% User-defined field
      opus = "BWV 846"
    }
  }
}

[image of music]

参照

記譜法リファレンス: タイトル ブロックの説明


ヘッダとフッタのカスタム レイアウト

\header ブロックの中に \markup コマンドを配置することにより、シンプルなテキストをフォーマットすることができます。しかしながら、ヘッダとフッタの配置を精密に制御することはできません。テキスト フィールドの配置をカスタマイズするために、以下の \paper 変数のいずれか、あるいはいくつかを使用します:

\markup コマンド \on-the-fly を用いて、\paper ブロック内部で定義されたヘッダ テキストとフッタ テキストに条件付でマークアップを追加することができます。以下の構文を用います:

variable = \markup {
  ...
  \on-the-fly  #procedure  markup
  ...
}

procedure は、それを保持している \markdup コマンドが評価される度に呼び出されます。procedure はある特定の条件をテストして、条件が真である場合にのみmarkup 引数を解釈します (つまり、表示します)。

様々な条件をテストするためのプロシージャがあらかじめ用意されています:

Procedure name

Condition tested

print-page-number-check-first

このページ番号は表示されるか?

create-page-number-stencil

'print-page-numbers は真か?

print-all-headers

'print-all-headers は真か?

first-page

ブックの最初のページか?

(on-page nmbr)

ページ番号 = nmbr か?

last-page

ブックの最後のページか?

not-first-page

ブックの最初ではないページか?

part-first-page

ブック パートの最初のページか?

part-last-page

ブック パートの最後のページか?

not-single-page

ブック パートのページ数 > 1 か?

以下の例では、ページ番号を各ページの最下段中央に配置しています。まず、oddHeaderMarkupevenHeaderMarkupnull を定義することにより、デフォルト設定を削除します。次に、oddFooterMarkup に中央に配置されたページ番号を再定義します。最後に、evenFooterMarkupoddFooterMarkup を定義することにより、同じレイアウトにします:

\book {
  \paper {
    print-page-number = ##t
    print-first-page-number = ##t
    oddHeaderMarkup = \markup \null
    evenHeaderMarkup = \markup \null
    oddFooterMarkup = \markup {
      \fill-line {
        \on-the-fly #print-page-number-check-first
        \fromproperty #'page:page-number-string
      }
    }
    evenFooterMarkup = \oddFooterMarkup
  }
  \score {
    \new Staff { s1 \break s1 \break s1 }
  }
}

[image of music]

複数の \on-the-fly 条件を ‘and’ 演算子で組み合わせることができます。例えば、

  \on-the-fly #first-page
  \on-the-fly #last-page
  { \markup ... \fromproperty #'header: ... }

これは、出力が単一のページかどうかを判断します。

参照

記譜法リファレンス: タイトル ブロックの説明, book と score のタイトル ブロックのデフォルト レイアウト

インストールされているファイル: ‘../ly/titling-init.ly


他の言語: deutsch
About automatic language selection.

LilyPond — 記譜法リファレンス v2.18.2 (安定版).