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