On 16/03/14 03:19, Paul Morris wrote:
Hi all,  Recently I ran into the problem of having more than one page of
prefatory material (a cover page and a table of contents), and I wanted to
start showing page numbers on the first page of music (starting with 1).

Below is the solution I came up with, by borrowing and modifying a function
from the LilyPond source code, shown with a version of the example in the
docs here:
http://lilypond.org/doc/v2.18/Documentation/notation/custom-titles-headers-and-footers#custom-layout-for-headers-and-footers

Is this the best way to do this?  If so would it make sense to add it to the
LSR or possibly add the "on-page-greater-than" function to LilyPond?

-Paul


\version "2.18.0"

% modified version of "on-page" from "titling-init.ly" in LilyPond source
#(define ((on-page-greater-than nmbr) layout props arg)
    (if (> (chain-assoc-get 'page:page-number props -1) nmbr)
        (interpret-markup layout props arg)
        empty-stencil))

\book {
   \paper {
     print-page-number = ##t
     print-first-page-number = ##t
     first-page-number = -1
     oddHeaderMarkup = \markup \null
     evenHeaderMarkup = \markup \null
     oddFooterMarkup = \markup {
       \fill-line {
         \on-the-fly #(on-page-greater-than 0)
         \fromproperty #'page:page-number-string
       }
     }
     evenFooterMarkup = \oddFooterMarkup
   }
   \markup "A prefatory page (cover page)"
   \pageBreak
   \markup "Another prefatory page (table of contents)"
   \pageBreak
   \markup "First page with a page number"
   \score {
     \new Staff { s1 \break s1 \break s1 }
   }
}

I've been using something very similar:

\paper {

#(define (print-positive-page-number layout props arg)

(if (> (chain-assoc-get 'page:page-number props -1) 0)

(create-page-number-stencil layout props arg)

empty-stencil))


%% cf. ly/titling-init.ly

#(define (not-last-page layout props arg)

(if (and (chain-assoc-get 'page:is-bookpart-last-page props #f)

(chain-assoc-get 'page:is-last-bookpart props #f))

empty-stencil

(interpret-markup layout props arg)))


  first-page-number = -1

print-first-page-number = ##f

oddHeaderMarkup = \markup \null

evenHeaderMarkup = \markup \null

oddFooterMarkup = \markup \fill-line {

\column {

\fontsize #-1

\on-the-fly #not-first-page \on-the-fly #not-last-page \on-the-fly #print-positive-page-number

\fromproperty #'page:page-number-string \on-the-fly #last-page \fromproperty #'header:tagline

}

}

evenFooterMarkup = \oddFooterMarkup

}



_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to