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

Reply via email to