Deutsches Lilypond Forum (Archiv)
Allgemein => Fragen zu Funktionen => Thema gestartet von: mxordn am Mittwoch, 29. Juli 2015, 20:15
-
Ist es möglich Seitenzahlen innerhalb einer \book {}-Umgebung zurückzusetzen?
Ich habe ein book und diverse bookparts. Mein Wunsch wäre dass jeder bookpart wieder neu mit Seite 1 beginnt. Ich bin für jegliche Hilfe dankbar. Die lilypond Hilfe und im Forum bin ich bisher leider nicht fündig geworden.
-
Hallo mxordn,
herzlich willkommen hier im Forum.
Zum Thema, LilyPond bietet leider keine Möglichkeit Seitenzahlen für bookparts zurückzusetzen, afaik.
Aber man kann ja Berechnungen anstellen ;)
Im Code unten brauche ich dafür allerdings eine externe Variabel, programmiertechnisch ist das nicht so dolle...
Aber zumindest im Minimalbeispiel klappt es, der Praxistest steht natürlich noch aus.
\version "2.19.24"
#(define part-first-pages '(0))
#(define (part-first-page? layout props)
(= (chain-assoc-get 'page:page-number props -1)
(ly:output-def-lookup layout 'first-page-number)))
#(define (print-part-first-page-as-one layout props arg)
(if (part-first-page? layout props)
(set! part-first-pages
(cons (1- (chain-assoc-get 'page:page-number props -1))
part-first-pages)))
(set! props
(cons
(list
(cons 'page:page-number-string
(number->string
(- (chain-assoc-get 'page:page-number props -1)
(car part-first-pages))))
(cons 'page:page-number
(- (chain-assoc-get 'page:page-number props -1)
(car part-first-pages))))
props))
(interpret-markup layout props arg))
\paper {
oddHeaderMarkup = \markup
\fill-line {
" "
\on-the-fly #not-part-first-page \fromproperty #'header:instrument
\on-the-fly #print-page-number-check-first
\on-the-fly #print-part-first-page-as-one
\fromproperty #'page:page-number-string
}
evenHeaderMarkup = \markup
\fill-line {
\on-the-fly #print-page-number-check-first
\on-the-fly #print-part-first-page-as-one
\fromproperty #'page:page-number-string
\on-the-fly #not-part-first-page \fromproperty #'header:instrument
" "
}
}
%%%%%%%%%%%%%%%%%%
%% EXAMPLE
%%%%%%%%%%%%%%%%%%
#(set-default-paper-size "a6")
\book {
\bookpart {
\markup "first bookpart"
\repeat unfold 3 { c''1 \pageBreak }
}
\bookpart {
\markup "second bookpart"
\repeat unfold 2 { d''1 \pageBreak }
}
\bookpart {
\markup "third bookpart"
\repeat unfold 4 { e''1 \pageBreak }
}
\bookpart {
\markup "fourth bookpart"
\repeat unfold 5 { f''1 \pageBreak }
}
}
HTH,
Harm
-
Hallo Harm6,
das hilft absolut! Vielen Dank für die Antwort und den Code, auf den ich selbst nie gekommen wäre :). Ich bin noch in der großen Lernphase, was die Syntax und Prgrammstruktur von lilypond angeht.
Die "Berechnungen" tun jedenfalls genau das, was sie sollen :), übrigens auch unter Version 2.18.2. Wäre das nicht generll ein feature für die \Paper-Umgebung innerhalb eines \bookparts?
Herzliche Grüße!