]> git.donarmstrong.com Git - lilypond.git/blob - ly/titling-init.ly
Run scripts/auxiliar/update-with-convert-ly.sh
[lilypond.git] / ly / titling-init.ly
1 \version "2.16.0"
2
3 slashSeparator = \markup {
4   \center-align
5   \vcenter \combine
6   \beam #2.0 #0.5 #0.48
7   \raise #0.7 \beam #2.0 #0.5 #0.48
8 }
9
10 tagline = \markup {
11   \with-url
12
13   #"http://lilypond.org/"
14   \line {
15
16     %% 2014 = em dash.
17
18     #(format #f "Music engraving by LilyPond ~a~awww.lilypond.org"
19        (lilypond-version)
20        (ly:wide-char->utf-8 #x2014)
21        )
22   }
23 }
24
25 #(define (print-all-headers layout props arg)
26   (if (eq? (ly:output-def-lookup layout 'print-all-headers) #t)
27    (interpret-markup layout props arg)
28    empty-stencil))
29
30 bookTitleMarkup = \markup {
31   \override #'(baseline-skip . 3.5)
32   \column {
33     \fill-line { \fromproperty #'header:dedication }
34     \override #'(baseline-skip . 3.5)
35     \column {
36       \fill-line {
37         \huge \larger \larger \bold
38         \fromproperty #'header:title
39       }
40       \fill-line {
41         \large \bold
42         \fromproperty #'header:subtitle
43       }
44       \fill-line {
45         \smaller \bold
46         \fromproperty #'header:subsubtitle
47       }
48       \fill-line {
49         \fromproperty #'header:poet
50         { \large \bold \fromproperty #'header:instrument }
51         \fromproperty #'header:composer
52       }
53       \fill-line {
54         \fromproperty #'header:meter
55         \fromproperty #'header:arranger
56       }
57     }
58   }
59 }
60
61 scoreTitleMarkup = \markup { \column {
62   \on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
63   \fill-line {
64     \fromproperty #'header:piece
65     \fromproperty #'header:opus
66   }
67 }
68 }
69
70 %% Book first page and last page predicates
71 #(define (book-first-page? layout props)
72    "Return #t iff the current page number, got from @code{props}, is the
73 book first one."
74    (define (ancestor layout)
75      "Return the topmost layout ancestor"
76      (let ((parent (ly:output-def-parent layout)))
77        (if (not (ly:output-def? parent))
78            layout
79            (ancestor parent))))
80    (= (chain-assoc-get 'page:page-number props -1)
81       (ly:output-def-lookup (ancestor layout) 'first-page-number)))
82
83 #(define (book-last-page? layout props)
84    "Return #t iff the current page number, got from @code{props}, is the
85 book last one."
86    (and (chain-assoc-get 'page:is-bookpart-last-page props #f)
87         (chain-assoc-get 'page:is-last-bookpart props #f)))
88
89 #(define (first-page layout props arg)
90   (if (book-first-page? layout props)
91       (interpret-markup layout props arg)
92       empty-stencil))
93
94 #(define (last-page layout props arg)
95   (if (book-last-page? layout props)
96       (interpret-markup layout props arg)
97       empty-stencil))
98
99 #(define (not-first-page layout props arg)
100   (if (not (book-first-page? layout props))
101       (interpret-markup layout props arg)
102       empty-stencil))
103
104 #(define ((on-page nmbr) layout props arg)
105  (if (= (chain-assoc-get 'page:page-number props -1) nmbr)
106    (interpret-markup layout props arg)
107    empty-stencil))
108
109 %% Bookpart first page and last page predicates
110 #(define (part-first-page layout props arg)
111   (if (= (chain-assoc-get 'page:page-number props -1)
112          (ly:output-def-lookup layout 'first-page-number))
113       (interpret-markup layout props arg)
114       empty-stencil))
115
116 #(define (part-last-page layout props arg)
117   (if (chain-assoc-get 'page:is-bookpart-last-page props #f)
118       (interpret-markup layout props arg)
119       empty-stencil))
120
121 %% unused
122 #(define (not-single-page layout props arg)
123   (if (not (and (= (chain-assoc-get 'page:page-number props -1)
124                    (ly:output-def-lookup layout 'first-page-number))
125                (chain-assoc-get 'page:last? props -1)))
126    (interpret-markup layout props arg)
127    empty-stencil))
128
129 #(define (create-page-number-stencil layout props arg)
130   (if (eq? (ly:output-def-lookup layout 'print-page-number) #t)
131    (interpret-markup layout props arg)
132    empty-stencil))
133
134 #(define (print-page-number-check-first layout props arg)
135   (if (or (not (book-first-page? layout props))
136           (eq? (ly:output-def-lookup layout 'print-first-page-number) #t))
137    (create-page-number-stencil layout props arg)
138    empty-stencil))
139
140 oddHeaderMarkup = \markup
141 \fill-line {
142   %% force the header to take some space, otherwise the
143   %% page layout becomes a complete mess.
144   " "
145   \on-the-fly #not-first-page \fromproperty #'header:instrument
146   \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
147 }
148
149 %% evenHeaderMarkup would inherit the value of
150 %% oddHeaderMarkup if it were not defined here
151 evenHeaderMarkup = \markup
152 \fill-line {
153   \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string
154   \on-the-fly #not-first-page \fromproperty #'header:instrument
155   " "
156 }
157
158 oddFooterMarkup = \markup {
159   \column {
160     \fill-line {
161       %% Copyright header field only on first page.
162       \on-the-fly #first-page \fromproperty #'header:copyright
163     }
164     \fill-line {
165       %% Tagline header field only on last page.
166       \on-the-fly #last-page \fromproperty #'header:tagline
167     }
168   }
169 }
170
171 %% As long as evenFooterMarkup is unset, it inherits the value of
172 %% oddFooterMarkup, as if this were declared here:
173 % evenFooterMarkup = \oddFooterMarkup