Jefferson dos Santos Felix <[EMAIL PROTECTED]> 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
_______________________________________________
lilypond-user mailing list
[EMAIL PROTECTED]
http://lists.gnu.org/mailman/listinfo/lilypond-user