[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Numérotation des pages
From: |
Vincent Gay |
Subject: |
Numérotation des pages |
Date: |
Sun, 10 Jul 2022 10:27:53 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.10.0 |
Bonjour à toutes et à tous
Pierre Perol-Schneider m'avait donné une astuce pour redémarrer la
numérotation des pages à chaque \bookpart. Cela fonctionnait à
merveille. Mais ça ne fonctionne plus !
J'ai ré-essayé avec des fichiers datant de quelques mois (28/12/2021)
compilés en 2.22.1 et recompilés aujourd'hui en 2.22.2 sans modifier la
moindre ligne de code : pas de message d'erreur mais aucun résultat !
Si quelque bonne âme peut m'expliquer
voici un exemple "minimaliste" :
\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
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
" "
}
}
#})
}
\header { title = "Essai numérotation bookparts" }
\book {
\bookpart {
\score {
\new Staff \with { instrumentName = "Part 1" }
{ c''1 }
}
}
\bookpart {
\score {
\new Staff \with { instrumentName = "Part 2" }
{ c''1 }
}
}
}
--
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/
- Numérotation des pages,
Vincent Gay <=
Re: Numérotation des pages, Jean Abou Samra, 2022/07/12