LilyPond Benutzerhandbuch: 4.1.2 Papierformat und automatische Skalierung

### 4.1.2 Papierformat und automatische Skalierung

#### Das Papierformat einstellen

Zwei Funktionen ermöglichen es, die Papiergröße zu ändern: `set-default-paper-size` und `set-paper-size`. `set-default-paper-size` muss auf der obersten Ebene in der Quelldatei gesetzt werden, `set-paper-size` hingegen muss sich in einer `\paper`-Umgebung befinden:

>     #(set-default-paper-size "a4")

>     \paper {
>       #(set-paper-size "a4")
>     }

Auf oberster Ebene kann `set-default-paper-size` überall vor der ersten `\paper`-Umgebung aufgerufen werden. Innerhalb einer `\paper`-Umgebung ist der beste Platz für `set-paper-size` gleich am Anfang, über der Liste der Variablen-Definitionen. Der Grund dafür wird behandelt in Automatische Skalierung auf ein Papierformat

`set-default-paper-size` bestimmt die Größe aller Seiten, während `set-paper-size` nur die Seitengröße für die Seiten definiert, auf die sich die aktuelle `\paper`-Umgebung bezieht. Wenn die `\paper`-Umgebung gleich am Anfang der Datei steht, bezieht sich die Papiergröße auf alle Seiten, wenn sie aber innerhalb einer `\book`-Umgebung definiert wird, nur auf die Seiten innerhalb dieses Buches.

Die normalen Papierformate sind definiert, u.A. `a4`, `letter`, `legal` und `11x17` (auch als Tabloit bekannt). Sehr viel mehr Formate sind unterstützt. Einzelheiten finden sich in der Datei ‘`scm/paper.scm`’ in der Definition von `paper-alist`.

Achtung: Das Standardformat ist `a4`.

Weitere Papierformate können hinzugefügt werden, indem die Definition von `paper-alist` in der Datei ‘`scm/paper.scm`’ verändert wird. Derartige Änderungen werden jedoch bei einer Aktualisierung des Programmes überschrieben.

Wenn das Symbol `'landscape` als Argument an die Funktion `set-default-paper-size` gehängt wird, werden die Seiten um 90° gedreht und die Notensysteme entsprechend breiter gesetzt.

>     #(set-default-paper-size "a6" 'landscape)

#### Siehe auch

Notationsreferenz: Automatische Skalierung auf ein Papierformat.

Installierte Dateien: ‘`scm/paper.scm`’.

#### Automatische Skalierung auf ein Papierformat

Wenn das Papierformat mit einer der Scheme-Funktionen (`set-default-paper-size` oder `set-paper-size`) geändert wird, werden die Werte einiger `\paper`-Variablen automatisch an die neue Größe angepasst. Um die automatische Skalierung für eine bestimmte Variable zu umgehen, kann die Variable definiert werden, nachdem man das Papierformat angegeben hat. Es sollte beachtet werden, dass die automatische Anpassung nicht ausgelöst wird, wenn man nur die `paper-height` oder `paper-width`-Variablen verändert, obwohl `paper-width` andere Werte beeinflussen kann (das muss von der automatischen Skalierung unterschieden werden und wird unten behandelt). Die Funktionen `set-default-paper-size` und `set-paper-size` werden behandelt in Das Papierformat einstellen.

Die vertikalen Dimensionen, die durch die automatische Skalierung verändert werden sind: `top-margin` und `bottom-margin` (siehe Vertikale `\paper`-Variablen mit festen Abständen). Die horizontalen Dimensionen, die durch die automatische Skalierung verändert werden, sind `left-margin`, `right-margin`, `inner-margin`, `outer-margin`, `binding-offset`, `indent` und `short-indent` (siehe \paper-Variablen für horizontale Abstände).

Die Standardwerte für diese Dimensionen sind in ‘`ly/paper-defaults-init.ly`’ definiert, wobei interne Variablen mit den Bezeichnungen `top-margin-default`, `bottom-margin-default`, usw. benutzt werden. Das sind die Werte für die Standardpapiergröße `a4`. Zum Vergleich: `a4` hat Werte von `297\mm` für `paper-height` und `210\mm` für `paper-width`.

#### Siehe auch

Notationsreferenz: Vertikale `\paper`-Variablen mit festen Abständen, \paper-Variablen für horizontale Abstände.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’, ‘`scm/paper.scm`’.

#### Vertikale `\paper`-Variablen mit festen Abständen

Achtung: Einige `\paper`-Dimensionen werden automatisch nach Papierformat skaliert, was zu ungewolltem Verhalten führen kann. Siehe Automatische Skalierung auf ein Papierformat.

Standardwerte (vor der Skalierung) sind definiert in ‘`ly/paper-defaults-init.ly`’.

`paper-height`

  Die Höhe der Seite, standardmäßig nicht definiert. Die automatische Skalierung einiger vertikalen Dimensionen wird hiervon nicht betroffen.

`top-margin`

  Der Rand zwischen dem oberen Ende der Seite und dem oberen Ende des bedruckbaren Bereichs. Wenn das Papierformat verändert wurde, wird der Standardwert dieser Dimension entsprechend skaliert.

`bottom-margin`

  Der Rand zwischen dem unteren Ende der Seite und dem unteren Ende des bedruckbaren Bereichs. Wenn das Papierformat verändert wurde, wird der Standardwert dieser Dimension entsprechend skaliert.

`ragged-bottom`

  Wenn auf wahr gesetzt, werden die Systeme nicht vertikal bis zum unteren Seitenrand verteilt. Sollte auf wahr gesetzt sein für Stücke, die nur ein bis zwei Notensystemgruppen pro Seite haben, etwa Orchesterpartituren.

`ragged-last-bottom`

  Wenn auf falsch gesetzt, werden die Systeme vertikal auf der letzten Seite verteilt. Bei Stücken, die grob zwei oder mehr Seiten füllen, sollten es auf wahr gesetzt werden. Hiermit wird auch die letzte Seite von Teilen eines `\book`, die mit `\bookpart` erstellt sind, beeinflusst.

#### Siehe auch

Notationsreferenz: Automatische Skalierung auf ein Papierformat.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’.

Schnipsel: Spacing.

#### Bekannte Probleme und Warnungen

Die Titel (aus der `\header`-Umgebung) werden als Systemgruppe behandelt, sodass `ragged-bottom` und `ragged-last-bottom` auch zusätzlichen Abstand zwischen den Titel und dem ersten System einer Paritur einfügt.

#### Vertikale `\paper`-Variablen mit flexiblen Abständen

In den meisten Fällen bietet es sich an, dass die vertikalen Abstände zwischen bestimmten Objekten (wie Ränder, Titel, Notensystemgruppen und einzelne Partituren) flexibel gehalten werden, sodass sie je nach Situation gedehnt oder komprimiert werden können. Es gibt eine Anzahl von Variablen für die `\paper`-Umgebung, mit denen man das Dehnungsverhalten dieser Dimensionen beeinflussen kann. Sie finden sich unten aufgelistet.

Dabei sollte beachtet werden, dass die Variablen, die in diesem Abschnitt behandelt werden, nicht die Platzierung und das Dehnungsverhalten von Notensystemen innerhalb der einzelnen Systemgruppen behandelt. Die Dehnung zwischen Notensystemen wird mit Grob-Eigenschaften kontrolliert, deren Einstellungen normalerweise innerhalb der `\score`-Umgebung vorgenommen werden, und nicht innerhalb der `\paper`-Umgebung. Siehe auch Flexible vertikale Abstände in Systemgruppen.

#### Struktur der Alisten für flexible vertikale Abstände

Jede der flexiblen vertikalen Abstandsvariablen ist eine Aliste (eine assoziative Liste), die vier Schlüssel (engl. key) enthält:

- `basic-distance` (Grund-Abstand) – der vertikale Abstand, gemessen in Systemzwischenräumen, zwischen den Referenzpunkten zweier Elemente, wenn keine Zusammenstöße vorkommen würden und keine Dehnung oder Kompression stattfindet. Der Referenzpunkt einer (Titel-)Beschriftung (auf höchster Ebene) ist sein höchster Punkt und der Referenzpunkt einer Systemgruppe ist der vertikale Mittelpunkt des nächsten `StaffSymbol` – sogar wenn eine Nicht-Notensystemzeile (wie etwa ein `Lyrics`-Kontext) dazwischen kommt. Werte für `basic-distance`, die weniger als entweder `padding` oder `minimum-distance` sind, haben keine Bedeutung, weil der sich daraus ergebende Abstand niemals weniger als entweder `padding` oder `minimum-distance` ergibt.
- `minimum-distance` (minimaler Abstand) – der kleinste erlaubte vertikale Abstand, gemessen in Systemzwischenräumen, zwischen den Referenzpunkten der zwei Elemente, wenn Kompression stattfindet. Werte für `minimum-distance`, die geringer als `padding` sind, haben keine Bedeutung, weil der sich daraus ergebende Abstand niemals weniger als `padding` ergibt.
- `padding` (Verschiebung) – der minimal benötigte vertikale blanke Freiraum zwischen den Bounding-Boxen (oder Skyline) der zwei Objekten, gemessen in Notenlinienabständen.
- `stretchability` (Dehnbarkeit) – ein einheitsloses Maß der Leichtigkeit, mit der sich die Dimension dehnen lässt (ohne dass Zusammenstöße auftreten). Wenn es null ist, wird der Abstand nicht gedehnt (außer ein Zusammenstoß würde auftreten), wenn es positiv ist, hängt die Wichtigkeit der Dehnbarkeit eines bestimmten Objekts nur noch von seiner Beziehung zu dem Wert des anderen Objekts ab. Beispielsweise wennn eine Dimension die doppelte Dehnbarkeit als die andere hat, wird sie auch zweimal so einfach gedehnt. Werte sollten nicht-negativ und reale Zahlen sein. Der Wert `+inf.0` ruft einen `programming_error` hervor und wird ignoriert, aber `1.0e7` kann für einen so gut wie unendlich dehnbaren Abstand eingesetzt werden. Wenn der Wert nicht gesetzt wird, ist der Standardwert der von `basic-distance`. Die Wahrscheinlichkeit einer Dimension, sich zu verkleinern, kann man nicht direkt beeinflussen, sondern sie ergibt sich aus (`space` - `minimum-distance`).

Wenn eine Seite einen nicht ausgeglichenen unteren Rand hat, ist der resultierende Abstand der größte von:

- `basic-distance`,
- `minimum-distance` und
- `padding` plus der kleinste nötige Abstand, um Zusammenstöße zu vermeiden.

Spezifische Methoden, um Alisten zu verändern, werden behandelt in Alisten verändern. Das folgende Beispiel demonstriert beide Arten, wie diese Alisten verändert werden können. Der erste Aufruf verändert nur einen Schlüsselwert einzeln, während der zweite die Variable vollständig neu definiert:

>     \paper {
>       system-system-spacing #'basic-distance = #8
>       score-system-spacing =
>         #'((basic-distance . 12)
>            (minimum-distance . 6)
>            (padding . 1)
>            (stretchability . 12))
>     }

#### Liste der flexiblen vertikalen Abstandsvariblen in `\paper`

Die Bezeichnungen dieser Variablen entsprechen dem Format `obere-untere-platzierung`, wobei `obere` und `untere` die zu platzierenden Elemente darstellen. Jeder Abstand wird zwischen den Referenzpunkten der beiden Elemente gemessen (siehe Beschreibung der Alistenstruktur oben). In diesen Variablenbezeichnungen bedeutet ‚`markup`‘ (Beschriftung) sowohl Titelbeschriftungen (`bookTitleMarkup` oder `scoreTitleMarkup`) als auch Beschriftungen auf höchster Ebene (siehe Die Dateistruktur). Alle Entfernungen werden in Systemzwischenräumen gemessen.

Standardwerte sind in ‘`ly/paper-defaults-init.ly`’ definiert.

`markup-system-spacing`

  der Abstand zwischen einer (Titel-)Beschriftung (auf höchster Ebene) und der darauf folgenden Systemgruppe.

`score-markup-spacing`

  der Abstand zwischen dem letzten System einer Partitur und der darauf folgenden (Titel-)Beschriftung (auf höchster Ebene).

`score-system-spacing`

  der Abstand zwischen dem letzten System einer Partitur und dem ersten System der folgenden Partitur, wenn keine (Titel-)Beschriftung (auf höchster Ebene) dazwischen vorkommt.

`system-system-spacing`

  der Abstand zwischen zwei Systemgruppen der selben Partitur.

`markup-markup-spacing`

  der Abstand zwischen zwei (Titel-)Beschriftungen (auf höchster Ebene).

`last-bottom-spacing`

  der Abstand vom letzten System oder Beschriftung auf höchster Ebene auf einer Seite zum unteren Rand des bedruckbaren Bereichs (also bis zum Anfang des unteren Randes).

`top-system-spacing`

  der Abstand zwischen dem oberen Rand des bedruckbaren Bereichs (also dem Ende des oberen Rands) und dem ersten System auf der Seite, wenn keine (Titel-)Beschriftung (auf höchster Ebene) dazwischen kommt.

`top-markup-spacing`

  der Abstand vom oberen Rand des bedruckbaren Bereichs (also dem Ende des oberen Randes) zur ersten (Titel-)Beschriftung (auf höchster Ebene) auf einer Seite, wenn keine Systemgruppe dazwischen kommt.

#### Siehe auch

Notationsreferenz: Flexible vertikale Abstände in Systemgruppen.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’.

Schnipsel: Spacing.

#### \paper-Variablen für horizontale Abstände

Achtung: Einige `\paper`-Dimensionen werden automatische entsprechend dem Papierformat skaliert und können deshalb ungewollte Resultate haben. Siehe Automatische Skalierung auf ein Papierformat.

#### \paper-Variablen für Breite und Ränder

Standardwerte (vor der Skalierung), die hier nicht aufgelistet sind, finden sich in ‘`ly/paper-defaults-init.ly`’.

`paper-width`

  Die Breide der Seite, standardmäßig nicht definiert. Während `paper-width` keine Auswirkungen auf die automatische Skalierung einiger horizontaler Dimensionen hat, beeinflusst es dennoch die `line-width`-Variable. Wenn sowohl `paper-width` als auch `line-width` definiert sind, dann werden auch `left-margin` und `right-margin` aktualisiert. Siehe auch `check-consistency`.

`line-width`

  Die horizontale Ausdehnung der Notenlinien in nicht-eingerückten, Systemen mit Ausgleich zum rechten Rand, entspricht `(paper-width - left-margin - right-margin)` wenn nicht definiert. Wenn `line-width` definiert ist und sowohl `left-margin` als auch `right-margin` nicht definiert sind, dann werden die Ränder aktualisiert, sodass die Systeme mittig auf der Seite zentriert werden. Siehe auch `check-consistency`. Diese Variable kann auch in der `\layout`-Umgebung definiert werden.

`left-margin`

  Der Rand zwischen der linken Papierkante und dem Beginn der Systeme ohne Einrückungen. Wenn das Papierformat verändert wird, wird auch der Standardwert dieser Dimension entsprechend skaliert. Wenn `left-margin` nicht definiert ist und sowohl `line-width` als auch `right-margin` definiert sind, dann wird `left-margin` auf den Wert `(paper-width - line-width - right-margin)` gesetzt. Wenn nur `line-width` definiert ist, dann werden beide Ränder auf den Wert `((paper-width - line-width) / 2)` gesetzt und die Systeme demzufolge auf der Seite zentriert. Siehe auch `check-consistency`.

`right-margin`

  Der Rand zwischen der rechten Papierkante und dem Ende der Systeme mit Randausgleich („Blocksatz“). Wenn das Papierformat geändert wird, wird auch der Standardwert dieser Dimension entsprechend skaliert. Wenn `right-margin` nicht definiert ist und sowohl `line-width` als auch `left-margin` definiert sind, dann wird `right-margin` auf den Wert `(paper-width - line-width - left-margin)` gesetzt. Wenn nur `line-width` definiert ist, dann werden beide Ränder auf den Wert `((paper-width - line-width) / 2)` gesetzt und die Systeme demzufolge auf der Seite zentriert. Siehe auch `check-consistency`.

`check-consistency`

  Wenn wahr, wird eine Warnung ausgegeben, sollten `left-margin`, `line-width` und `right-margin` zusammen nicht exakt den Wert von `paper-width` ergeben, und die Werte (außer `paper-width`) mit ihren Standardwerten belegt (wenn nötig auf das entsprechende Papierformat skaliert). Wenn falsch werden derartige Inkonsistenzen ignoriert und die Systeme dürfen auch über den Seitenrand hinausragen.

`ragged-right`

  Wenn wahr, werden Notensysteme nicht über die gesamte Zeilenbreite gestreckt, sondern sie enden horizontal entsprechend den enthaltenen Noten. Standard: `#t` (wahr) für Partituren mit einem System und `#f` (falsch) für Partituren mit zwei oder mehr Systemen. Diese Variable kann auch in der `\layout`-Umgebung definiert werden.

`ragged-last`

  Wenn wahr, wird das letzte Notensystem einer Partitur nicht über die gesamte Zeilenbreite gestreckt, sondern es endet horizontal entsprechend den enthaltenen Noten. Standard: `#f` (falsch). Diese Variable kann auch in der `\layout`-Umgebung definiert werden.

#### Siehe auch

Notationsreferenz: Automatische Skalierung auf ein Papierformat.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’.

#### `\paper`-Variablen für zweiseitigen Satz

Standardwerte (vor der Skalierung) sind definiert in ‘`ly/paper-defaults-init.ly`’.

`two-sided`

  Wenn auf wahr (`##t`) gesetzt, werden `inner-margin`, `outer-margin` und `binding-offset` zusammen benutzt, um die Ränder der Seite in Abhängigkeit von einer geraden oder ungeraden Seitennummer zu errechnen. Damit werden die Werte von `left-margin` und `right-margin` überschrieben. Standard: `##f`.

`inner-margin`

  Der Rand, den alle Seiten auf der Innenseite haben, wenn sie Teil eines Buches (`\book`) sind. Wenn das Papierformat verändert wird, wird der Standardwert dieser Dimension entsprechend skaliert. Funktioniert nur, wenn `two-sided` wahr ist.

`outer-margin`

  Der Rand, den alle Seiten auf der Außenseite haben, wenn sie Teil eines Buches sind. Wenn das Papierformat verändert wird, wird der Standardwert dieser Dimension entsprechend skaliert. Funktioniert nur, wenn `two-sided` wahr ist.

`binding-offset`

  Der Wert, um welchen `inner-margin` erhöht wird, um sicherzugehen, dass nichts in der Bindung verschwindet. Wenn das Papierformat verändert wird, wird der Standardwert dieser Dimension entsprechend skaliert. Funktioniert nur, wenn `two-sided` wahr ist.

#### Siehe auch

Notationsreferenz: Automatische Skalierung auf ein Papierformat.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’.

#### `\paper`-Variablen für Verschiebungen und Einrückungen

Standardwerte (vor der Skalierung), die hier nicht aufgeführt sind, sind definiert in ‘`ly/paper-defaults-init.ly`’.

`horizontal-shift`

  Der Wert, um den alle Systeme (und auch Überschriften und Systemtrenner) nach rechts verschoben werden. Standard: `0.0\mm`.

`indent`

  Der Einzug für das erste System einer Partitur. Wenn das Papierformat verändert wird, wird der Standardwert dieser Dimension entsprechend skaliert. Diese Variable kann auch in der `\layout`-Umgebung definiert werden.

`short-indent`

  Der Einzug für alle Systeme einer Partitur ausschließlich das erste System. Wenn das Papierformat verändert wird, wird der Standardwert dieser Dimension entsprechend skaliert. Diese Variable kann auch in der `\layout`-Umgebung definiert werden.

#### Siehe auch

Notationsreferenz: Automatische Skalierung auf ein Papierformat.

Installierte Dateien: ‘`ly/paper-defaults-init.ly`’.

Schnipsel: Spacing.

Andere Sprachen: English, español, français, 日本語.

#### LilyPond – Notationsreferenz