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: Mon, 11 Jul 2022 09:48:01 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0

Le 11/07/2022 à 09:21, Vincent Gay a écrit :
Oui mais... question suivante : le numéro de page est bon mais pas l'emplacement...

Et autant aller au bout de mon idée... Ce que je recherche c'est de fusionner
BookPartPagesNumber.ly (le code pour une numérotation par \bookpart)
la numérotation N° de page / nombre de pages (code ci-dessous)

\paper {
  oddHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \null \concat { \fromproperty #'page:page-number-string "/" \page-ref #'theLastPage "0" "?"} }
  } }
  evenHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \concat { \fromproperty #'page:page-number-string "/" \page-ref #'theLastPage "0" "?"} \null }
  } }
}

qui suppose \label #'theLastPage en fin de score

Je ne sais vraiment pas par quel bout prendre le problème : si je remplace \fromproperty #'page:page-number-string par oddMarkup #'arabic ou evenMarkup #'arabic le "/" \page-ref reste toujours à droite.

Mon essai :

\version "2.22.2"
#(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
  ragged-bottom = ##t
  #(set-paper-size "a6")
  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
           " "
         }
       }
     #})
%     oddHeaderMarkup = \oddMarkup #'arabic
%     evenHeaderMarkup = \evenMarkup #'arabic
    oddHeaderMarkup = \markup {
      \on-the-fly \print-page-number-check-first {
        \fill-line { \null \concat { \oddMarkup #'arabic "/" \page-ref #'theLastPage "0" "?"} }
    } }
    evenHeaderMarkup = \markup {
      \on-the-fly \print-page-number-check-first {
        \fill-line { \concat { \evenMarkup #'arabic "/" \page-ref #'theLastPage "0" "?"} \null }
    } }
}

\header { title = "Essai"  tagline = ##f }
\layout {
  \context { \Score \omit BarNumber }
}

\book {
  \bookpart {
    \score {
      \new Staff \with { instrumentName = "Part 1" }
      { c''1 \pageBreak c''1 \pageBreak c'' \label #'theLastPage }
    }
  }
  \bookpart {
    \paper { first-page-number = #0 }
    \score {
      \new Staff \with { instrumentName = "Part 2" }
      { c''1  \pageBreak c''1 \pageBreak c'' \label #'theLastPage }
    }
  }
}


--
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/




reply via email to

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