lilypond-user
[Top][All Lists]
Advanced

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

Re: Multiple place number skip ranges


From: David Nalesnik
Subject: Re: Multiple place number skip ranges
Date: Thu, 5 May 2016 17:55:49 -0500

Correction for cases when you have more pages than you specified ranges for:

On Thu, May 5, 2016 at 9:18 AM, David Nalesnik <address@hidden> wrote:


> \version "2.19.30"
>
>
> #(define (my-nmbrs rngs)
>    (append-map (lambda (e) (iota (- (last e) (- (car e) 1)) (car e) 1)) rngs))
>
> #(define-markup-command (use-page-number-ranges layout props arg)
>    (number-list?)
>    (let ((page-number (chain-assoc-get 'page:page-number props -1)))
>      (interpret-markup layout props
>        (if (< page-number (length arg))
>            (number->string (list-ref arg (1- page-number)))
>            (chain-assoc-get 'page:page-number-string props -1)))))

#(define-markup-command (use-page-number-ranges layout props ls)
   (number-list?)
   (let ((page-number (chain-assoc-get 'page:page-number props -1))
         (len (length ls)))
     (interpret-markup layout props
       (number->string
        (if (< page-number len)
            (list-ref ls (1- page-number))
            (+ page-number (- (last ls) len)))))))

>
> \paper {
>   print-first-page-number = ##t
>   print-page-number = ##t
>   oddHeaderMarkup = \markup
>   \fill-line {
>     " "
>     \on-the-fly #not-first-page \fromproperty #'header:instrument
>     \on-the-fly #print-page-number-check-first \use-page-number-ranges
>     #(my-nmbrs '((1) (3 5) (7 10)))
>   }
>   evenHeaderMarkup = \markup
>   \fill-line {
>     \on-the-fly #print-page-number-check-first \use-page-number-ranges
>     #(my-nmbrs '((1) (3 5) (7 10)))
>     \on-the-fly #not-first-page \fromproperty #'header:instrument
>     " "
>   }
> }
>
> \score {
>   \new Staff {
>     \repeat unfold 15 {
>       s1
>       \pageBreak
>     }
>   }
> }



reply via email to

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