X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=ly%2Ftitling-init.ly;h=12bfa4f34072e919b2a38b2e607b47f33bab1554;hb=97a0169312a260933246ab224e4f8b0969871dd5;hp=f4f552b140ba6708402dd8a299bb94807c444c2c;hpb=07f53dbc18c8a8903fc8796029faa3ec3c0e707f;p=lilypond.git diff --git a/ly/titling-init.ly b/ly/titling-init.ly index f4f552b140..12bfa4f340 100644 --- a/ly/titling-init.ly +++ b/ly/titling-init.ly @@ -1,110 +1,181 @@ -\version "2.4.0" +\version "2.16.0" + +#(if (guile-v2) + (use-modules (ice-9 curried-definitions))) slashSeparator = \markup { - \hcenter + \center-align \vcenter \combine \beam #2.0 #0.5 #0.48 \raise #0.7 \beam #2.0 #0.5 #0.48 } tagline = \markup { - \with-url - - %% todo: lilypond.org/music-engraving - #"http://lilypond.org/web/" - \line { - "Music engraving by LilyPond" - #(ly:export (lilypond-version)) - "-" - "www.lilypond.org" + \pad-to-box #'(0 . 0) #'(0 . 3) + { \with-url + + #"http://lilypond.org/" + \line { + + %% 2014 = em dash. + + #(format #f "Music engraving by LilyPond ~a~awww.lilypond.org" + (lilypond-version) + (ly:wide-char->utf-8 #x2014) + ) + } } } +#(define (print-all-headers layout props arg) + (if (eq? (ly:output-def-lookup layout 'print-all-headers) #t) + (interpret-markup layout props arg) + empty-stencil)) + bookTitleMarkup = \markup { - \override #'(baseline-skip . 3) + \override #'(baseline-skip . 3.5) \column { \fill-line { \fromproperty #'header:dedication } + \override #'(baseline-skip . 3.5) \column { - \override #'(baseline-skip . 3.5) - \huge \bigger \bold \fill-line { - \bigger \fromproperty #'header:title + \huge \larger \larger \bold + \fromproperty #'header:title } \fill-line { - \large \smaller \bold - \bigger \fromproperty #'header:subtitle + \large \bold + \fromproperty #'header:subtitle } \fill-line { - \smaller \bold - \fromproperty #'header:subsubtitle + \smaller \bold + \fromproperty #'header:subsubtitle } \fill-line { - \fromproperty #'header:poet - { \large \bold \fromproperty #'header:instrument } - \column { - \fromproperty #'header:composer - \fromproperty #'header:arranger - } + \fromproperty #'header:poet + { \large \bold \fromproperty #'header:instrument } + \fromproperty #'header:composer + } + \fill-line { + \fromproperty #'header:meter + \fromproperty #'header:arranger } } } } -scoreTitleMarkup = \markup { +scoreTitleMarkup = \markup { \column { + \on-the-fly \print-all-headers { \bookTitleMarkup \hspace #1 } \fill-line { \fromproperty #'header:piece \fromproperty #'header:opus } } +} + +%% Book first page and last page predicates +#(define (book-first-page? layout props) + "Return #t iff the current page number, got from @code{props}, is the +book first one." + (= (chain-assoc-get 'page:page-number props -1) + (book-first-page layout props))) + +#(define (book-last-page? layout props) + "Return #t iff the current page number, got from @code{props}, is the +book last one." + (and (chain-assoc-get 'page:is-bookpart-last-page props #f) + (chain-assoc-get 'page:is-last-bookpart props #f))) #(define (first-page layout props arg) - (if (= (chain-assoc-get 'page:page-number props -1) 1) - (interpret-markup layout props arg) - empty-stencil)) + (if (book-first-page? layout props) + (interpret-markup layout props arg) + empty-stencil)) #(define (last-page layout props arg) - (if (chain-assoc-get 'page:last? props #f) - (interpret-markup layout props arg) - empty-stencil)) + (if (book-last-page? layout props) + (interpret-markup layout props arg) + empty-stencil)) #(define (not-first-page layout props arg) - (if (not (= (chain-assoc-get 'page:page-number props -1) 1)) + (if (not (book-first-page? layout props)) + (interpret-markup layout props arg) + empty-stencil)) + +#(define ((on-page nmbr) layout props arg) + (if (= (chain-assoc-get 'page:page-number props -1) nmbr) (interpret-markup layout props arg) empty-stencil)) +%% Bookpart first page and last page predicates +#(define (part-first-page? layout props) + (= (chain-assoc-get 'page:page-number props -1) + (ly:output-def-lookup layout 'first-page-number))) + +#(define (part-last-page? layout props) + (chain-assoc-get 'page:is-bookpart-last-page props #f)) + +#(define (part-first-page layout props arg) + (if (part-first-page? layout props) + (interpret-markup layout props arg) + empty-stencil)) + +#(define (not-part-first-page layout props arg) + (if (not (part-first-page? layout props)) + (interpret-markup layout props arg) + empty-stencil)) + +#(define (part-last-page layout props arg) + (if (part-last-page? layout props) + (interpret-markup layout props arg) + empty-stencil)) + +%% unused #(define (not-single-page layout props arg) - (if (not (and (= (chain-assoc-get 'page:page-number props -1) 1) - (chain-assoc-get 'page:last? props -1))) + (if (not (and (= (chain-assoc-get 'page:page-number props -1) + (ly:output-def-lookup layout 'first-page-number)) + (chain-assoc-get 'page:last? props -1))) (interpret-markup layout props arg) empty-stencil)) +#(define (create-page-number-stencil layout props arg) + (if (eq? (ly:output-def-lookup layout 'print-page-number) #t) + (interpret-markup layout props arg) + empty-stencil)) + +#(define (print-page-number-check-first layout props arg) + (if (or (not (book-first-page? layout props)) + (eq? (ly:output-def-lookup layout 'print-first-page-number) #t)) + (create-page-number-stencil layout props arg) + empty-stencil)) + oddHeaderMarkup = \markup -\on-the-fly #not-single-page \fill-line { "" - \on-the-fly #not-first-page \fromproperty #'header:instrument - \fromproperty #'page:page-number-string + \on-the-fly #not-part-first-page \fromproperty #'header:instrument + \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } +%% evenHeaderMarkup would inherit the value of +%% oddHeaderMarkup if it were not defined here evenHeaderMarkup = \markup \fill-line { - \fromproperty #'page:page-number-string - \fromproperty #'header:instrument + \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string + \on-the-fly #not-part-first-page \fromproperty #'header:instrument "" } oddFooterMarkup = \markup { \column { \fill-line { - - %% Copyright header field only on first page. - \on-the-fly #first-page \fromproperty #'header:copyright + %% Copyright header field only on first page in each bookpart. + \on-the-fly #part-first-page \fromproperty #'header:copyright } \fill-line { - %% Tagline header field only on last page. + %% Tagline header field only on last page in the book. \on-the-fly #last-page \fromproperty #'header:tagline } } } - +%% As long as evenFooterMarkup is unset, it inherits the value of +%% oddFooterMarkup, as if this were declared here: +% evenFooterMarkup = \oddFooterMarkup