1 ;;;; titling.scm -- titling functions
3 ;;;; source file of the GNU LilyPond music typesetter
5 ;;;; (c) 2004 Jan Nieuwenhuizen <janneke@gnu.org>
6 ;;;; Han-Wen Nienhuys <hanwen@cs.uu.nl>
8 (define-public (page-properties layout)
9 (list (append `((linewidth . ,(ly:paper-get-number
11 (ly:output-def-lookup layout 'text-font-defaults))))
16 (define-public ((marked-up-title what) layout scopes)
17 "Read variables WHAT from SCOPES, and interpret it as markup. The
18 PROPS argument will include variables set in SCOPES (prefixed with
23 (let ((x (ly:modules-lookup scopes sym)))
24 (if (markup? x) x #f)))
27 ((alists (map ly:module->alist scopes))
35 (symbol->string (car entry))))
40 (props (append prefixed-alist
41 (page-properties layout)))
47 (interpret-markup layout props markup)
48 (ly:make-stencil '() '(1 . -1) '(1 . -1)))
52 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
55 (define-public (default-book-title layout scopes)
56 "Generate book title from header strings."
60 (let ((x (ly:modules-lookup scopes sym)))
61 (if (markup? x) x "")))
63 (markup? (ly:modules-lookup scopes sym)))
65 (let ((props (page-properties layout)))
74 (list (markup #:fill-line
75 (#:normalsize (get 'dedication))))
80 (#:huge #:bigger #:bigger #:bigger #:bigger #:bold
83 (if (or (has 'subtitle) (has 'subsubtitle))
90 (#:large #:bigger #:bigger #:bold (get 'subtitle)))
91 (markup #:fill-line (#:bigger #:bigger #:bold
93 (markup #:override '(baseline-skip . 5)
101 (make-override-markup
102 '(baseline-skip . 2.5)
105 (if (or (has 'poet) (has 'composer))
106 (list (markup #:fill-line
107 (#:bigger (get 'poet)
108 #:large #:bigger #:caps
111 (if (or (has 'texttranslator) (has 'opus))
115 (#:bigger (get 'texttranslator) #:bigger (get 'opus))))
117 (if (or (has 'meter) (has 'arranger))
120 (#:bigger (get 'meter) #:bigger (get 'arranger))))
122 (if (has 'instrument)
125 (markup #:fill-line (#:large #:bigger (get 'instrument))))
127 ;;; piece is done in the score-title
130 ;;; (markup #:fill-line (#:large #:bigger #:caps (get 'piece) "")))
135 (define-public (default-user-title layout markup)
136 "Generate book title from header markup."
138 (let ((props (page-properties layout))
139 (baseline-skip (chain-assoc-get 'baseline-skip props 2)) )
140 (stack-lines DOWN 0 BASELINE-SKIP
141 (list (interpret-markup layout props markup))))))
143 (define-public (default-score-title layout scopes)
144 "Generate score title from header strings."
147 (let ((x (ly:modules-lookup scopes sym)))
148 (if (markup? x) x "")))
151 (markup? (ly:modules-lookup scopes sym)))
153 (let ((props (page-properties layout)))
156 (make-override-markup
164 ;; todo: figure out if and what should be here?
165 ;;(list (markup #:fill-line ("" (get 'opus))))
169 (markup #:fill-line (#:large #:bigger (get 'piece) "")))
172 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;