Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: martinmagtenor am Samstag, 10. November 2012, 22:26
-
Es geht um die vertikalen Abstände zwischen Score-Blöcken.
Es geht um ein "einfaches" Lilypond-Dokument, nicht book/bookpart. Und ich bin mit Lilypond 2.16.0 (seit heute 2.16.1) unterwegs.
Hat man im paper-Abschnitt die Variable print-all-headers auf wahr gesetzt, dann wird zwischen score-Blöcken immer der zugehörige vertikale Abstand (score-markup-spacing) zugefügt, egal ob was auszugeben ist oder nicht.
In einem mehrsätzigen Vokalwerk gibt es auch ein paar Sätze, die aus mehreren score-Blöcken bestehen. Dann steht über dem ersten score-Block der Titel des Stücks (piece) und danach eben nichts aber der unschön große Zwischenraum.
Auf der Suche nach einer Lösung dafür bin ich nicht weitergekommen.
Hier mein kompilierbarer Beispielcode:
\version "2.16.1"
\include "deutsch.ly"
#(set-global-staff-size 18)
\header {
title = "Stück mit mehreren Sätzen"
composer = "Ein Komponist"
copyright = \markup { "Copyright 19xx ©right;" }
} % header
\score {
\new Staff { \relative c' { \repeat unfold 20 d }}
\header {
piece = "Eins"
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 e }}
\header {
piece = "Zwei mit zwei Gruppen"
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 f }}
\header {
title = ##f
piece = ##f
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 e }}
\header {
piece = "Drei"
}
}
\paper {
%% Wenn was unklar ist:
%annotate-spacing = ##t
% Für ©right; und solche Sachen ...
#(include-special-characters)
%% Mehr vertikaler Zwischenraum zwischen Systemen
system-system-spacing = #'((padding . 5) (basic-distance . 1.0))
%% Mehr vertikaler Zwischenraum nach einer Überschrift
markup-system-spacing = #'((padding . 3) (basic-distance . 1.0))
%% unterer Rand wird nicht ausgeglichen
ragged-last-bottom = ##t
ragged-bottom = ##t
%% Wir definieren scoreTitleMarkup anders. Nur den Titel des Stückes
%% zentriert und etwas größer
scoreTitleMarkup = \markup {
\column { \vspace #.5
\on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
\fill-line { \null { \huge \bold \fromproperty #'header:piece } \null }
} % column
} % markup
%% Seitenzahl unten und zentriert
print-page-number = ##t
print-first-page-number = ##t
}
Wie könnte man das bewerkstelligen?
Würde mich über jede Anregung freuen
martinmagtenor
-
hallo!
man muss da schon ziemlich genau hinschauen was man will (ich warte schon lange auf eine klare+übersichtliche darstellung)
versuch mal ob mit score-markup-spacing das gesuchte kommt
ding-dong
-
versuch mal ob mit score-markup-spacing das gesuchte kommt
Genau, mit score-markup-spacing kann man Abstände zwischen zwei Partituren einstellen, "wenn keine Titel-Beschriftung dazwischen kommt", soweit die Anleitung.
Die Crux an der Sache ist im voliegenden Fall, daß Deine Definition von scoreTitleMarkup unter anderem die Befehle \vspace ... und \null enthält, so daß aus Lilypond-Sicht dieses Titel-Markup niemals "leer" ist, denn der Wert von piece ist ja nur ein Teil des Ganzen. Deshalb käme score-markup-spacing nie zum Zuge!
Ich habe mal Dein Beispiel so verändert, daß \null wegfällt (wird nicht benötigt) und \vpace ebenfalls - dies müßte dann durch die Spacing-Variablen abgefangen werden.
\version "2.16.1"
\include "deutsch.ly"
#(set-global-staff-size 18)
\header {
title = "Stück mit mehreren Sätzen"
composer = "Ein Komponist"
copyright = \markup { "Copyright 19xx ©right;" }
} % header
\score {
\new Staff { \relative c' { \repeat unfold 20 d }}
\header {
piece = "Eins"
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 e }}
\header {
piece = "Zwei mit zwei Gruppen"
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 f }}
\header {
title = ##f
piece = ##f
}
}
\score {
\new Staff { \relative c' { \repeat unfold 20 e }}
\header {
piece = "Drei"
}
}
\paper {
%% Wenn was unklar ist:
%annotate-spacing = ##t
% Für ©right; und solche Sachen ...
#(include-special-characters)
%% Mehr vertikaler Zwischenraum zwischen Systemen
system-system-spacing = #'((padding . 5) (basic-distance . 1.0))
%% Mehr vertikaler Zwischenraum nach einer Überschrift
markup-system-spacing = #'((padding . 3) (basic-distance . 1.0))
%% Wenn kein Titel vorhanden ist:
score-system-spacing = #'((padding . 3) (basic-distance . 1.0))
%% unterer Rand wird nicht ausgeglichen
ragged-last-bottom = ##t
ragged-bottom = ##t
%% Wir definieren scoreTitleMarkup anders. Nur den Titel des Stückes
%% zentriert und etwas größer
scoreTitleMarkup = \markup {
\on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
\fill-line { \huge \bold \fromproperty #'header:piece }
} % markup
%% Seitenzahl unten und zentriert
print-page-number = ##t
print-first-page-number = ##t
}
Viele Grüße
Torsten
-
Hallo Torsten,
vorzüglich! Das war im Grunde genau das, was ich gesucht hatte, ohne es richtig benennen zu können. Dieses scoreMarkupTitle war (typisch für einen Anfänger) durch Abschreiben entstanden und dann sieht man diese überflüssigen Sachen (\null) und Nebeneffekte (\column und \vspace) nicht.
Danke
martinmagtenor
-
ich habe ein beispiel in dem es sehr wohl (ohne anpassen des scoreTitleMarkup) funktioniert:
\version "2.17.6"
\paper {
% page-count = #2
% scoreTitleMarkup = \markup {
% \on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
% \fill-line { \huge \bold \fromproperty #'header:piece }
% }
system-system-spacing = #'( (basic-distance . 3)(padding . 1)(minimum-distance . 3)(stretchability . 999))
score-markup-spacing = #'( (basic-distance . 18)(padding . 1)(minimum-distance . 18)(stretchability . 999))
score-system-spacing = #'( (basic-distance . 21 )(padding . 1)(minimum-distance . 21 )(stretchability . 999))
markup-system-spacing = #'( (basic-distance . 18)(padding . 1)(minimum-distance . 18)(stretchability . 999))
}
\header { title = "title" composer = "composer" }
\score { \new Staff { \relative c' { \repeat unfold 20 d }} \header { piece = "Eins" } }
\score { \new Staff { \relative c' { \repeat unfold 20 e }} \header { piece = "Zwei mit zwei Gruppen" } }
\score { \new Staff { \relative c' { \repeat unfold 20 { f } \break \repeat unfold 20 { f } } } \header { title = ##f piece = ##f } }
\score { \new Staff { \relative c' { \repeat unfold 20 e }} \header { piece = "Drei" } }
\score { \new Staff { \relative c' { \repeat unfold 20 d }} \header { piece = "Eins" } } % <----
\score { \new Staff { \relative c' { \repeat unfold 20 e }} \header { piece = "Zwei mit zwei Gruppen" } } % <----
% \score { \new Staff { \relative c' { \repeat unfold 20 { f } \break \repeat unfold 20 { f } } } \header { title = ##f piece = ##f } }
% \score { \new Staff { \relative c' { \repeat unfold 20 e }} \header { piece = "Drei" } }
allerdings geschehen seltsame dinge, wenn man noch mehr scores anfügt (ich habe die scores einfach wiederholt und sukzessive auskommentiert, s. % <---- )
probierts selber aus!
abhilfe kann durch die definition des page-count = erfolgen - allerdings kann es nicht die meinung sein, dass man das selber berechnen muss!
(ich benutze übrigens die version 2.17.6
ding-dong