[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/
OpenPGP_signature
Description: OpenPGP digital signature