3.2.2 Eigene Kopf- und Fußzeilen sowie Titel


Angepasste Textformatierung für Titelumgebungen

Standard-\markup-Befehle können eingesetzt werden, um jeglichen Text in Titeln, Kopf- und Fußzeilen innerhalb der \header-Umgebung zu verändern.

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

[image of music]

Siehe auch

Notationsreferenz: Text formatieren.


Angepasstes Layout für Titelumgebungen

\markup-Befehle in der \header-Umgebung sind sinnvoll für einfaches Formatieren von Text, aber sie gewähren keine genaue Kontrolle über die Positionierung von Titeln. Um die Positionierung von Titeltextfeldern vorzunehmen, eignen sich beide oder eine von folgenden Variablen (die man in der \paper-Umgebung einsetzen muss):

Die Positionierung von Titeln, wenn die Standardeinstellung dieser Variablen benützt werden, wird anhand einem Beispiel gezeigt in Standardlayout von book- und Partitur-Titelumgebungen.

Die Standardeinstellungen von scoreTitleMarkup, wie in der Datei ‘ly/titling-init.ly’ definiert, sind:

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

Dadurch werden die Textfelder piece (Stück) und opus an den gegenüberliegenden Enden der gleichen Zeile platziert:

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

[image of music]

Das folgende Beispiel verändert die Einstellungen von scoreTitleMarkup, sodass das Textfeld piece zentriert wird und in fetter, größerer Schrift erscheint.

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

[image of music]

Textfelder, die normalerweise nur im Haupttitel ausgegeben werden, können auch in die Titel einzelner Partituren aufgenommen werden, indem man print-all-headers in die \paper-Umgebung einfügt. Ein Nachteil dieser Methode ist, dass Textfelder, die tatsächlich nur im Haupttitel erscheinen sollen, manuell für jede Partitur unterdrückt werden müssen. Siehe auch Wie funktioniert die Titel-Umgebung?.

Um das zu vermeiden, kann das gewünschte Feld zur Definition von scoreTitleMarkup hinzugefügt werden. Im folgenden Beispiel wird das Komponistenfeld (composer) (normalerweise mit bookTitleMarkup assoziiert) zu scoreTitleMarkup hinzugefügt, sodass jede Partitur einen eigenen Komponisten haben kann.

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

[image of music]

Es ist auch möglich, eigene Textfelder zu erstellen und dann auf sie in der Beschriftungsdefinition zu verweisen:

\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 {
    \header {
      piece = "FUGA I"
      mycustomtext = "A 4 VOCI" %% User-defined field
      opus = "BWV 846"
    }
    { s1 }
  }
}

[image of music]

Siehe auch

Notationsreferenz: Wie funktioniert die Titel-Umgebung?.


Angepasstes Layout für Kopf- und Fußzeilen

\markup-Befehle in der \header-Umgebung sind nützlich um einfachen Text zu formatieren, erlauben aber keine Kontrolle über die Positionierung von Kopf- und Fußzeilen. Um die Positionierung der Textfelder zu ändern, eignen sich beide oder eine von folgenden Variablen (die man in der \paper-Umgebung einsetzen muss):

Der \markup-Befehl \on-the-fly kann eingesetzt werden, um Beschriftung anhand einer Bedingung zu Kopf- und Fußzeilentext innerhalb der \paper-Umgebung hinzuzufügen. Hierzu wird folgende Syntax eingesetzt:

Variable = \markup {
  ...
  \on-the-fly  #Prozedur  Beschriftung
  ...
}

Die Prozedur wird jedes mal aufgerufen, wenn dar \markup-Befehl, auf den sie sich auswirkt, ausgewertet wird. Die Prozedur sollte nach einer bestimmten Bedingung fragen und das Beschriftung-Argument ausführen (also setzen), wenn diese Bedinung wahr ist.

Eine Anzahl von fertigen Prozeduren, um verschiedene Bedinungen zu testen, werden bereitgestellt:

Prozedurbezeichnung

Getestete Bedinung

print-page-number-check-first

sollte diese Seitenzahl gesetzt werden?

create-page-number-stencil

’print-page-numbers wahr?

print-all-headers

’print-all-headers wahr?

first-page

erste Seite im Buch?

(on-page nmbr)

Seitenzahl = nmbr?

last-page

letzte Seite im Buch?

not-first-page

nicht erste Seite im Buch?

part-first-page

erste Seite im book part?

part-last-page

letzte Seite im book part?

not-single-page

Seiten im book part > 1?

Das folgende Beispiel zentriert die Seitenzahlen unten auf jeder Seite. Zuerst werden die Standardeinstellungen von oddHeaderMarkup und evenHeaderMarkup entfernt, indem sie als „Null“-Beschriftung definiert werden. Dann wird oddFooterMarkup mit zentrierter Seitennummer neu definiert. Schließlich erhält evenFooterMarkup die selbe Layoutdefinition wie \oddFooterMarkup:

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

[image of music]

Verschiedene \on-the-fly-Bedingungen können mit dem Operator „UND“ verknüpft werden, beispielsweise bestimmt

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

ob es sich um eine einzelne Seite bei der Ausgabe handelt.

Siehe auch

Notationsreferenz: Wie funktioniert die Titel-Umgebung?, Standardlayout von book- und Partitur-Titelumgebungen.

Installierte Dateien: ‘../ly/titling-init.ly’.


LilyPond – Notationsreferenz v2.23.82 (Entwicklungszweig).