[Top][All Lists]
[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]