lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Numérotation des pages


From: Vincent Gay
Subject: Re: Numérotation des pages
Date: Tue, 4 Jan 2022 10:12:56 +0100
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.4.1

Le 03/01/2022 à 21:25, Vincent Gay a écrit :

Il y a un an presque jour pour jour j'évoquais sur cette liste mon besoin de numéroter les pages de mes recueils de partitions en réinitialisant à 1 le n° de page à chaque bookpart. Pierre Perol-Schneider m'avait alors renvoyé à cette page.

Voici les quelques souci que j'ai avec cette fonction :

../..

La fonction écrite par Thomas Morley a été corrigée sur la liste anglophone par Valentin Petzel, tout fonctionne maintenant parfaitement. Pour ceux que cela intéresse la voici suivie d'un exemple :

\version "2.22.1"
#(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 (reset-part-first-page layout props arg)
"Returns page-number-string, starting every bookpart with page-number 0.
Relying on the extern defined `part-first-pages'.
"
  (set! props (prepend-alist-chain 'part-first-page '(0) props))
  (let* ((real-page-number (chain-assoc-get 'page:page-number props -1))
         (parts-page-number (- real-page-number (car part-first-pages))))
    (if (part-first-page? layout props)
        (set! part-first-pages (cons (1- real-page-number) part-first-pages)))
    (set! props
      (cons
        (list
          (cons 'page:page-number-string (number->string parts-page-number))
          (cons 'page:page-number parts-page-number))
        props))
    (interpret-markup layout props arg)))
#(define ((print-part-first-page-as-one number-type) layout props arg)
  (set! props
    (cons
      (list
        (cons 'page:page-number-string
              (let ((page-number
                     (chain-assoc-get 'page:page-number props -1)))
                ;(if (<= page-number 0) ""
                (cond ((and (eq? number-type 'roman-lower) (> page-number 0))
                       (fancy-format #f "~(~@r~)" page-number))
                      ((and (eq? number-type 'roman-upper) (> page-number 0))
                       (fancy-format #f "~@r" page-number))
                          ((eq? number-type 'arabic)
                           (number->string page-number))
                          (else (number->string page-number)))));)
        (cons 'page:page-number
              (chain-assoc-get 'page:page-number props -1)))
      props))
  (interpret-markup layout props arg))
\paper {
  print-first-page-number = ##t
  oddMarkup =
  #(define-scheme-function (number-type)(symbol?)
    #{
      \markup
        \column {
          \fill-line {
            " "
            \on-the-fly #not-part-first-page \fromproperty #'header:instrument
              %% use in this order:
              \on-the-fly #reset-part-first-page
              \on-the-fly #(print-part-first-page-as-one number-type)
              \on-the-fly #print-page-number-check-first
              \fromproperty #'page:page-number-string
          }
        }
    #})
  evenMarkup =
  #(define-scheme-function (number-type)(symbol?)
    #{
      \markup
        \column {
          \fill-line {
              %% use in this order:
              \on-the-fly #reset-part-first-page
              \on-the-fly #(print-part-first-page-as-one number-type)
              \on-the-fly #print-page-number-check-first
              \fromproperty #'page:page-number-string
            \on-the-fly #not-part-first-page \fromproperty #'header:instrument
            " "
          }
        }
    #})
}

%%%%%%%%%% exemple %%%%%%%%%%%
musique = \relative c'' { \repeat unfold 2 { d1 \pageBreak } }
\book {
  \bookpart {
    \paper {
      oddHeaderMarkup = \oddMarkup #'roman-lower
      evenHeaderMarkup = \evenMarkup #'roman-lower
    }
    \score {
      \musique
    }
  }
  \bookpart {
    \paper {
      print-first-page-number = ##f
      oddHeaderMarkup = \oddMarkup #'arabic
      evenHeaderMarkup = \evenMarkup #'arabic
    }
    \score {
      \musique
    }
        \score {
      \musique
    }
  }
}
-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/

Attachment: OpenPGP_signature
Description: OpenPGP digital signature


reply via email to

[Prev in Thread] Current Thread [Next in Thread]