]> git.donarmstrong.com Git - lilypond.git/blob - scm/page-layout.scm
* Documentation/user/changing-defaults.itely (Creating contexts):
[lilypond.git] / scm / page-layout.scm
1 ;;;; page-layout.scm -- page layout functions
2 ;;;;
3 ;;;;  source file of the GNU LilyPond music typesetter
4 ;;;; 
5 ;;;; (c) 2004 Jan Nieuwenhuizen <janneke@gnu.org>
6
7
8 (define-public (page-properties paper)
9   (list (append `((linewidth . ,(ly:paper-get-number
10                                  paper 'linewidth)))
11                 (ly:output-def-lookup paper 'text-font-defaults))))
12
13 (define-public (plain-header paper page-number)
14   (let ((props (page-properties paper) ))
15     (interpret-markup paper props
16                       (markup #:fill-line
17                               ("" #:bold (number->string page-number))))))
18
19 (define-public (plain-footer paper page-number)
20   (let ((props (page-properties paper)))
21
22     (interpret-markup paper props
23                       (markup #:fill-line ("" (number->string page-number))))))
24
25
26 (define TAGLINE
27   (string-append "Engraved by LilyPond (version " (lilypond-version) ")"))
28
29 (define-public (TAGLINE-or-tagline-from-header paper scopes)
30   (let* ((props (page-properties paper))
31          (tagline-var (ly:modules-lookup scopes 'tagline))
32          (tagline (if (markup? tagline-var) tagline-var TAGLINE)))
33
34     (cond ((string? tagline)
35            (if (not (equal? tagline ""))
36                (interpret-markup paper props
37                                  (markup #:fill-line (tagline "")))))
38           ((markup? tagline) (interpret-markup paper props tagline)))))
39
40 (define-public (copyright-from-header paper scopes)
41   (let ((props (page-properties paper))
42         (copyright (ly:modules-lookup scopes 'copyright)))
43     
44     (cond ((string? copyright)
45            (if (not (equal? copyright ""))
46                (interpret-markup paper props
47                                  (markup #:fill-line (copyright "")))))
48           ((markup? copyright) (interpret-markup paper props copyright)))))
49
50
51 ;;;;;;;;;;;;;;;;;;
52 ; titling.
53 (define-public (default-book-title paper scopes)
54   "Generate book title from header strings."
55
56   
57   (define (get sym)
58     (let ((x (ly:modules-lookup scopes sym)))
59       (if (markup? x) x "")))
60   (define (has sym)
61     (markup?  (ly:modules-lookup scopes sym)))
62   
63   (let ((props (page-properties paper)))
64     
65     (interpret-markup
66      paper props
67      (make-override-markup
68        '(baseline-skip . 4)
69        (make-column-markup
70         (append
71          (if (has 'dedication)
72              (list (markup #:fill-line
73                      (#:normalsize (get 'dedication))))
74              '())
75          
76          (if (has 'title)
77             (list (markup (#:fill-line
78                            (#:huge #:bigger #:bigger #:bigger #:bigger #:bold (get 'title)))))
79             '())
80
81          (if (or (has 'subtitle) (has 'subsubtitle))
82              (list
83               (make-override-markup
84                '(baseline-skip . 3)
85               (make-column-markup
86                (list
87                (markup #:fill-line
88                        (#:large #:bigger #:bigger #:bold (get 'subtitle)))
89                (markup #:fill-line (#:bigger #:bigger #:bold (get 'subsubtitle)))
90                (markup #:override '(baseline-skip . 5)
91                        #:column ("")))
92
93                ))
94              )
95              '())
96          
97          (list
98           (make-override-markup
99           '(baseline-skip . 2.5)
100           (make-column-markup
101             (append
102              (if (or (has 'poet) (has 'composer))
103                 (list (markup #:fill-line
104                               (#:bigger (get 'poet) #:large #:bigger #:caps (get 'composer))))
105                 '())
106              (if (or (has 'texttranslator) (has 'opus))
107                  (list
108                   (markup 
109                    #:fill-line (#:bigger (get 'texttranslator) #:bigger (get 'opus))))
110                  '())
111              (if (or (has 'meter) (has 'arranger))
112                  (list
113                   (markup #:fill-line
114                           (#:bigger (get 'meter) #:bigger (get 'arranger))))
115                  '())
116
117              (if (has 'instrument)
118                  (list ""
119                        (markup #:fill-line (#:large #:bigger (get 'instrument))))
120                  '())
121
122              ;; piece is done in the score-title  
123 ;            (if (has 'piece)
124 ;                (list ""
125 ;                      (markup #:fill-line (#:large #:bigger #:caps (get 'piece) "")))
126 ;                '())
127              
128              )))))))
129      )))
130              
131   
132 (define-public (default-user-title paper markup)
133   "Generate book title from header markup."
134   (if (markup? markup)
135       (let ((props (page-properties paper))
136             (baseline-skip (chain-assoc-get 'baseline-skip props 2)) )
137         (stack-lines DOWN 0 BASELINE-SKIP
138                      (list (interpret-markup paper props markup))))))
139
140 (define-public (default-score-title paper scopes)
141   "Generate score title from header strings."
142   
143   (define (get sym)
144     (let ((x (ly:modules-lookup scopes sym)))
145       (if (markup? x) x "")))
146   
147   (define (has sym)
148     (markup? (ly:modules-lookup scopes sym)))
149   
150   (let ((props (page-properties paper)))
151     
152     (interpret-markup
153      paper props
154       (make-override-markup
155        '(baseline-skip . 4)
156        (make-column-markup
157         (append
158          (if (has 'opus)
159              (list (markup #:fill-line ("" (get 'opus))))
160              '())
161          (if (has 'piece)
162              (list (markup #:fill-line (#:large #:bigger #:caps (get 'piece) "")))
163              '()))
164         
165         )))))
166
167
168
169 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
170 ;;;;;;;;;;;;;;;;;;;;;;;;;NEW;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
171 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
172