2016-05-05 15:53 GMT+02:00 Thomas Morley <thomasmorle...@gmail.com>: > Hi Andrew, > > 2016-05-05 5:57 GMT+02:00 Andrew Bernard <andrew.bern...@gmail.com>: >> David Nalesnik and various others I think have written scheme to allow you >> to skip a range of numbers when page numbering, or to give a direct list of >> page numbers to be used. > > Right now I don't remember such code. Just to refresh my memory, > please provide a link. > >> I want to be able to specify something like this >> list to only have the specified ranges printed, all in one continous score >> (yes, there is a use case for this!). >> >> ((1 24) (52 64) (70 80) (100 110)) >> >> Of course, alternatively you could have list of ranges to skip rather than >> include. > > > How about: > > \version "2.19.36" > > #(define-markup-command > (page-range-fromproperty layout props page-ranges symbol) > (list? symbol?) > > (define (my-nmbrs rngs) > (append-map (lambda (e) (iota (- (last e) (- (car e) 1)) (car e) 1)) > rngs)) > > (let ((m (chain-assoc-get symbol props)) > (page-nmbr (chain-assoc-get 'page:page-number props -1))) > (if (markup? m) > ;; prevent infinite loops by clearing the interpreted property: > (interpret-markup > layout > (cons > (list (cons symbol `(,property-recursive-markup ,symbol))) > props) > (if (and (string? m) > (number? (string->number m)) > (= (string->number m) page-nmbr)) > (format #f "~a" > (let ((my-ranges (my-nmbrs page-ranges))) > ;; if entries from `page-ranges' are done, fall back to > ;; usual page-numbering > (if (> (length my-ranges) (1- page-nmbr)) > (list-ref my-ranges (1- page-nmbr)) > page-nmbr))) > m)) > empty-stencil))) > > #(define ranges '((1 24) (52 64) (70 80) (100 110))) > > \paper { > oddHeaderMarkup = \markup > \fill-line { > "" > \on-the-fly #not-part-first-page \fromproperty #'header:instrument > \on-the-fly #print-page-number-check-first > \page-range-fromproperty #ranges #'page:page-number-string > } > > %% evenHeaderMarkup would inherit the value of > %% oddHeaderMarkup if it were not defined here > evenHeaderMarkup = \markup > \fill-line { > \on-the-fly #print-page-number-check-first > \page-range-fromproperty #ranges #'page:page-number-string > \on-the-fly #not-part-first-page \fromproperty #'header:instrument > "" > } > } > > > \new Staff \repeat unfold 70 { c''1 \pageBreak } > > > HTH, > Harm
Limitation: doesn't work with: page-number-type = #'roman-upper Could probably be made working. You need that? Cheers, Harm _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user