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!