On Thu, Dec 3, 2015 at 10:54 AM, David Nalesnik <[email protected]>
wrote:

> 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...
>

 Yes, my sense was right

Maybe I'm missing something, but wouldn't the following suffice?

\version "2.19.21"

start =
#(define-scheme-function (parser location syllable)(markup?)
   (format "[~a" syllable))

start = \override LyricText.color = #red

end =
#(define-scheme-function (parser location syllable)(markup?)
   (format "~a]" syllable))

end = \revert LyricText.color

wrap =
#(define-scheme-function (parser location syllable)(markup?)
   (format "[~a]" syllable))

wrap = \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
  >>
}

(Just comment out the definitions you don't want.)

--David
_______________________________________________
lilypond-user mailing list
[email protected]
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to