Hi,
On Thu, Dec 3, 2015 at 10:35 AM, Urs Liska <[email protected]> wrote:
>
>
> Am 03.12.2015 um 17:30 schrieb Graham King:
>
> On Thu, 2015-12-03 at 17:12 +0100, Urs Liska wrote:
>
>
>
> Am 03.12.2015 um 17:10 schrieb Graham King:
>
> On Thu, 2015-12-03 at 16:57 +0100, Urs Liska wrote:
>
> Ah, forgot: the ending function would also have to be written before the
> syllable, so
>
> Three \foo deaf and \bar blind mice are \foobar alive.
>
> should return
>
> Three [deaf and blind] mice are [alive]
>
> Uh, no. I'd like it to return
> Three [deaf and] blind mice are [alive]
>
> That's the bit I'm struggling with.
>
>
> You can't do that (I think). But I don't see a problem with writing the
> function before the syllable.
> Or what am I missing?
>
> I've got a lot of music with
>
> foo = \override LyricText.font-shape = #'italic
> bar = \revert LyricText.font-shape
>
> and I'd like to redefine foo and bar to replace the italics with
> [bracketed text]. And to switch between italics and brackets easily.
>
>
> To achieve that it doesn't matter if the function is placed before or
> after the syllable.
> Your function has to merge the syllable with the surrounding (be it a
> bracket or an \override) anyway, so you can handle the pre-/postfix issue
> within the function itself.
>
> But as I wrote in another reply (with full code example) I don't know how
> to mix music and lyrics inside that function. But surely someone else can
> help with that.
>
>
This looks too hideous to be the right way, but...
\version "2.19.21"
start =
#(define-scheme-function (parser location syllable)(markup?)
(format "[~a" syllable))
start =
#(define-scheme-function (parser location)()
(ly:parser-include-string "\\override LyricText.color = #red"))
end =
#(define-scheme-function (parser location syllable)(markup?)
(format "~a]" syllable))
end =
#(define-scheme-function (parser location syllable)(markup?)
(ly:parser-include-string "\\revert LyricText.color")
syllable)
wrap =
#(define-scheme-function (parser location syllable)(markup?)
(format "[~a]" syllable))
wrap =
#(define-scheme-function (parser location) ()
(ly:parser-include-string "\\once \\override LyricText.color = #red"))
theNotes = {
\relative { e''1 d c d e }
}
theWords = \lyricmode {
Three \start blind \end mice are \wrap alive
}
\score
{
\new StaffGroup
<<
\new Voice = "voice" \theNotes
\new Lyrics \lyricsto "voice" \theWords
>>
}
%%
David
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user