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

Reply via email to