1 ;;;; page-layout.scm -- page layout functions
3 ;;;; source file of the GNU LilyPond music typesetter
5 ;;;; (c) 2004 Jan Nieuwenhuizen <janneke@gnu.org>
8 (define (ly:modules-lookup modules sym)
9 (let ((v (module-variable (car modules) sym)))
10 (if (and v (variable-bound? v) (variable-ref v))
12 (if (module? (cdr modules)) (ly:modules-lookup (cdr modules) sym)))))
15 (define-public (book-title paper scopes)
16 "Generate book title from header strings."
19 (let ((x (ly:modules-lookup scopes sym)))
20 (if (and x (not (unspecified? x))) x "")))
22 (let ((props (list (append `((linewidth . ,(ly:paper-get-number
24 (font-family . roman))
25 (ly:paper-lookup paper 'font-defaults)))))
30 (#:override '(baseline-skip . 4)
33 (#:normalsize (get 'dedication))
35 (#:huge #:bigger #:bigger #:bigger #:bigger #:bold (get 'title))
36 #:override '(baseline-skip . 3)
39 (#:large #:bigger #:bigger #:bold (get 'subtitle))
40 #:fill-line (#:bigger #:bigger #:bold (get 'subsubtitle)))
41 #:override '(baseline-skip . 5)
43 #:override '(baseline-skip . 2.5)
46 (#:bigger (get 'poet) #:large #:bigger #:caps (get 'composer))
47 #:fill-line (#:bigger (get 'texttranslator) #:bigger (get 'opus))
49 (#:bigger (get 'meter) #:bigger (get 'arranger))
51 #:fill-line (#:large #:bigger (get 'instrument))
53 #:fill-line (#:large #:bigger #:caps (get 'piece) ""))))))))
55 (define-public (user-title paper markup)
56 "Generate book title from header markup."
58 (let ((BASELINE-SKIP 2)
59 (props (list (append `((linewidth . ,(ly:paper-get-number
61 (font-family . roman))
62 (ly:paper-lookup paper 'font-defaults)))))
63 (stack-lines DOWN 0 BASELINE-SKIP
64 (list (interpret-markup paper props markup))))))
66 (define-public (score-title paper scopes)
67 "Generate score title from header strings."
70 (let ((x (ly:modules-lookup scopes sym)))
71 (if (and x (not (unspecified? x))) x "")))
73 (let ((props (list (append `((linewidth . ,(ly:paper-get-number
75 (font-family . roman))
76 (ly:paper-lookup paper 'font-defaults)))))
82 (#:override '(baseline-skip . 4)
86 #:fill-line (#:large #:bigger #:caps (get 'piece) "")))))))
88 (define-public (make-header paper page-number)
89 (let ((props (list (append `((linewidth . ,(ly:paper-get-number
91 (font-family . roman))
92 (ly:paper-lookup paper 'font-defaults)))))
94 (interpret-markup paper props
95 (markup #:fill-line ("" (number->string page-number))))))
98 (define-public (make-footer paper page-number)
99 (let ((props (list (append `((linewidth . ,(ly:paper-get-number
101 (font-family . roman))
102 (ly:paper-lookup paper 'font-defaults)))))
104 (interpret-markup paper props
105 (markup #:fill-line ("" (number->string page-number))))))