• Willkommen im Forum „Archiviertes Lilypond Forum (2017)“.
 

Dies ist das Archiv des alten Forums (bis März 2017). Das aktuelle Forum ist unter lilypondforum.de zu finden.
This is the archive of the old forum (until March 2017). You can find the current forum at lilypondforum.de.

Hauptmenü

Seitenzahlen innerhalb eines \book {} zurücksetzen

Begonnen von mxordn, Mittwoch, 29. Juli 2015, 20:15

Vorheriges Thema - Nächstes Thema

mxordn

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.

harm6

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

mxordn

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!