Here's an example that numbers pages with prime numbers. ;-)
Ok, that was just for fun. Here's also a version that skips a specific list of
page numbers.
(IMHO, it would still be better to figure out how to embed your graphic pages
within Lilypond using eps!)
-Curt
From: [email protected]
[mailto:[email protected]] On Behalf Of David
Nalesnik
Sent: Saturday, October 26, 2013 1:14 PM
To: Hwaen Ch'uqi
Cc: EdBeesley; lilypond-user; Trevor Daniels
Subject: Re: Change page number during score
Hi,
>
> You're right, there's no way to set the page number, AFAIK :(
Well, no simple way. It is possible to write a markup function to increment
the page numbers at a certain point.
I retooled a function which does Roman numeral page numbers here:
http://www.mail-archive.com/[email protected]/msg73483.html
The function below takes a range of "skipped pages." So, the example "skips"
page numbers 2 through 5. Thus, the score will be numbered 1, 6, 7...
Hope this helps,
David
%%%%%
\version "2.17.29" % should work with 2.16 too
#(define-markup-command (skip-page-number-range layout props arg) (number-list?)
(let ((page-number (chain-assoc-get 'page:page-number props -1)))
(interpret-markup layout props
(if (>= page-number (car arg))
(number->string (+ page-number (1+ (- (cadr arg) (car arg)))))
(chain-assoc-get 'page:page-number-string props -1)))))
\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 \skip-page-number-range #'(2 5)
}
evenHeaderMarkup = \markup
\fill-line {
\on-the-fly #print-page-number-check-first \skip-page-number-range #'(2 5)
\on-the-fly #not-first-page \fromproperty #'header:instrument
" "
}
}
\score {
\new Staff {
\repeat unfold 6 {
s1
\pageBreak
}
}
}
% Example to use prime numbers for page numbers
\version "2.13.51"
#(define (is-prime x k)
(if (= x k) #t
(if (= (remainder x k) 0) #f
(is-prime x (+ k 1)))))
#(define (nth-prime n next)
(if (= n 1) next
(if (is-prime (+ 1 next) 2)
(nth-prime (- n 1) (+ 1 next))
(nth-prime n (+ 1 next)))))
%%%%
#(define-markup-command (page-number-compute layout props) ()
(let ((page-number (chain-assoc-get 'page:page-number props 0)))
(interpret-markup layout props (format "~a" (nth-prime page-number 2)))))
\header {
title = "Mary Had a Little Lamb"
}
\paper {
print-first-page-number = ##t
oddHeaderMarkup = \markup {
\fill-line {
\larger \on-the-fly
#print-page-number-check-first \page-number-compute
\null
\null
}
}
evenHeaderMarkup = \markup {
\fill-line {
\null
\null
\larger \on-the-fly
#print-page-number-check-first \page-number-compute
}
}
}
rh = \relative c' {
e8 d c d e e e4 \pageBreak
d8 d d4 e8 g g4 \pageBreak
e8 d c d e e e e \pageBreak
d d e d c2 \pageBreak
}
lh = \relative c {
c8 <e g> g, <e' g> c <e g> g, <e' g>
b <f' g> g, <f' g> c <e g> g, <e' g>
c <e g> g, <e' g> c <e g> g, <e' g>
b <f' g> g, <f' g> c <e g> c4
}
\score {
\new PianoStaff <<
\new Staff {
\time 2/4 \key c \major \clef treble
\rh \transpose c d \rh \key bes \major \transpose c bes \rh \bar "|."
}
\new Staff {
\clef bass
\lh \transpose c d \lh \key bes \major \transpose c bes \lh \bar "|."
}
>>
\layout { }
}
\version "2.13.51"
#(define page-number-skip-list '(3 4 7 14))
%%%%
#(define (pages-less skip-list page offset)
(if (null? skip-list) offset
(pages-less (cdr skip-list) page
(+ offset (if (<= (car skip-list) (+ page offset)) 1 0)))))
#(define-markup-command (page-number-compute layout props) ()
(let ((page-number (chain-assoc-get 'page:page-number props 0)))
(interpret-markup layout props
(format "~a"
(+ page-number (pages-less page-number-skip-list page-number 0))))))
\header {
title = "Mary Had a Little Lamb"
}
\paper {
print-first-page-number = ##t
oddHeaderMarkup = \markup
\fill-line {
\null
\on-the-fly #not-part-first-page \fromproperty #'header:instrument
\on-the-fly #print-page-number-check-first \page-number-compute
}
evenHeaderMarkup = \markup
\fill-line {
\on-the-fly #print-page-number-check-first \page-number-compute
\on-the-fly #not-part-first-page \fromproperty #'header:instrument
\null
}
}
rh = \relative c' {
e8 d c d e e e4 \pageBreak
d8 d d4 e8 g g4 \pageBreak
e8 d c d e e e e \pageBreak
d d e d c2 \pageBreak
}
lh = \relative c {
c8 <e g> g, <e' g> c <e g> g, <e' g>
b <f' g> g, <f' g> c <e g> g, <e' g>
c <e g> g, <e' g> c <e g> g, <e' g>
b <f' g> g, <f' g> c <e g> c4
}
\score {
\new PianoStaff <<
\new Staff {
\time 2/4 \key c \major \clef treble
\rh \transpose c d \rh \key bes \major \transpose c bes \rh \bar "|."
}
\new Staff {
\clef bass
\lh \transpose c d \lh \key bes \major \transpose c bes \lh \bar "|."
}
>>
\layout { }
}
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user