lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Align composer name tag


From: Jefferson dos Santos Felix
Subject: Re: Align composer name tag
Date: Sun, 14 Nov 2004 13:44:19 -0200

Thanks, Nicolas, for the code, but I think this is very complicated
for me... I solve the problem using other tag, like arranger, or opus,
to place the year....

--
jEfF_[Feliks]


On Sun, 14 Nov 2004 12:09:53 +0100, Nicolas Sceaux
<address@hidden> wrote:
> Jefferson dos Santos Felix <address@hidden> writes:
> 
> 
> 
> > I try to put the composer's year of birth and death below his name,
> > right-aligned, but I can't do it.
> > See the attempt below:
> >
> > \version "2.4.1"
> > \header
> > {
> >       title = "A Title Song"
> >       composer = \markup \column <{"Composer Name"}  {\right-align 
> > "(1900-1950)"}>
> >       poet = "J.S.F."
> > }
> > \score {c'}
> >
> > Is anything wrong?
> >
> > Thaks,
> 
> I don't know if this is a good advice as it is a bit extreme, but,
> supposing that you can write Scheme code:
> 
> You can define your own titling style if you want.
> Just write a `my-book-title' function (see `default-book-title' in
> scm/titling.scm for inspiration) and register it in the \layout
> block. You can do the same for score titling (see
> `default-score-title').
> 
> \layout {
>   ...
>   #(define-public book-title my-book-title)
>   #(define-public score-title my-score-title)
>   ...
> }
> 
> For instance, the following functions define the titles of an
> opera. Note that it uses custom keywords in \header blocks, such as
> act, scene, etc. (sorry for the very long lines.)
> 
> #(defmacro with-keyword-accessor (scopes . body)
>    "Locally define two functions, `get' and `has', for
> accessing keyword in `scopes'."
>    (let ((gscopes (gensym "scopes")))
>      `(let ((,gscopes scopes))
>         (define (get sym)
>           (let ((x (ly:modules-lookup ,gscopes sym)))
>             (if (markup? x) x "")))
>         (define (has sym)
>           (markup? (ly:modules-lookup ,gscopes sym)))
>         ,@body)))
> #(defmacro when-keyword (keyword . body)
>    (let ((gmarkup (gensym "markup")))
>      `(if (has ,keyword)
>           (let ((,gmarkup (let ((it (get ,keyword)))
>                             ,@body)))
>             (list ,gmarkup))
>           '())))
> 
> #(define-public (opera-book-title layout scopes)
>    "Generate book title from header strings.
> Keywords are title, subtitle, composer, librettist, edition, opus, date"
>    (with-keyword-accessor
>     scopes
>     (let ((props (page-properties layout)))
>       (interpret-markup
>        layout props
>        (markup #:override '(baseline-skip . 4)
>                (make-column-markup (append (when-keyword 'composer
>                                                          (markup #:fill-line 
> (#:large #:bigger #:bigger #:bigger
>                                                                               
>         #:bigger #:bigger #:bigger #:italic it)
>                                                                  #:column ("" 
> "" "")))
>                                            (when-keyword 'title
>                                                          (markup #:fill-line 
> (#:huge #:bigger #:bigger #:bigger
>                                                                               
>        #:bigger #:bigger #:bigger #:bigger #:bigger #:bold it)
>                                                                  #:column ("" 
> "")))
>                                            (when-keyword 'subtitle
>                                                          (markup #:fill-line 
> (#:large #:bigger #:bigger #:bigger #:bigger #:bigger #:bigger #:bold it)
>                                                                  #:column ("" 
> "" "")))
>                                            (when-keyword 'edition
>                                                          (markup #:fill-line 
> (#:large #:bigger #:bigger #:left-align it)
>                                                                  #:column ("" 
> "" "" "")))
>                                            ;; TODO: other keywords.
>                                            )))))))
> 
> #(define-public (opera-score-title layout scopes)
>    "Generate score title from header strings.
> Keywords are act, scene, scenedescr, piece."
>    (with-keyword-accessor
>     scopes
>     (let ((props (page-properties layout)))
>       (interpret-markup
>        layout props
>        (markup #:override '(baseline-skip . 4)
>                (make-column-markup (append (when-keyword 'act
>                                                          (markup #:fill-line 
> (#:huge #:bigger #:bigger #:bigger #:bigger #:bold it)
>                                                                  #:column ("" 
> "" "")))
>                                            (when-keyword 'scene
>                                                          (markup #:fill-line 
> (#:large #:bigger it)))
>                                            (when-keyword 'scenedescr
>                                                          (markup #:fill-line 
> (#:left-align it)))
>                                            (when-keyword 'piece
>                                                          (markup #:column ("" 
> #:fill-line (#:large #:bigger it) ""))))))))))
> 
> Then it can be used like that:
> 
> \layout {
>   #(define-public book-title opera-book-title)
>   #(define-public score-title opera-score-title)
> }
> 
> \header {
>     title = "GIULIO CESARE"
>     subtitle = "in Egitto"
>     composer = "George Frideric Haendel"
>     edition = \markup \center-align <
>         { From the Deutsche Händelgesellschaft Edition }
>         { Edited by }
>         { Frideric Chrysander }>
>     tagline = "LilyPond, mutopia, public domain, etc."
>     copyright = "Public Domain"
> }
> 
> ...
> 
> \score {
>     \header {
>         act="ATTO PRIMO"
>         scene="SCENA I."
>         scenedescr=\markup \center-align <
>             { Campagna d'Egitto con antico ponte sopra un ramo del Nilo. }
>             { \caps {Giulio Cesare} e \caps Curio che passano il ponte con 
> seguito. } >
>         piece = "CORO."
>     }
> 
>    ...
> }
> 
> 
> nicolas
> 
> 


-- 
jEfF_[Feliks]




reply via email to

[Prev in Thread] Current Thread [Next in Thread]