Am 03.12.2015 um 16:57 schrieb Urs Liska: > > > Am 03.12.2015 um 16:24 schrieb Urs Liska: >> >> >> Am 03.12.2015 um 16:19 schrieb Graham King: >>> On Thu, 2015-12-03 at 15:12 +0100, Urs Liska wrote: >>>> >>>> >>>> Am 03.12.2015 um 15:04 schrieb Graham King: >>>> >>>>> I'm trying to enclose some lyrics within square brackets but, for >>>>> reasons too tedious to trouble the list with*, I'd like to >>>>> parameterise the brackets using the \foo and \fooEnd constructs in >>>>> the following pseudocode. Is there a way to do this without >>>>> causing "[" and "]" to be set as separate syllables? >>>>> >>>>> hopefully, >>>>> -- Graham >>>> >>>> HTH: >>>> >>>> \version "2.19.21" >>>> >>>> theNotes = { >>>> \relative { e''1 d c } >>>> } >>>> >>>> brack = >>>> #(define-scheme-function (parser location syllable)(string?) >>>> (format "[~a]" syllable)) >>>> >>>> theWords = \lyricmode { >>>> Three \brack blind mice, >>>> } >>>> >>>> \score >>>> { >>>> \new StaffGroup >>>> << >>>> \new Voice = "voice" \theNotes >>>> \new Lyrics \lyricsto "voice" \theWords >>>> >> >>>> } >>>> >>>> >>>> Urs >>> >>> Thanks Urs. >>> >>> I'm hoping to preserve the \prefixOperator bunch of text >>> \postfixOperator syntax, so that the operator definition can be >>> swapped simply for other things that use that syntax, such as: >>> foo = \override LyricText.color = #red >>> fooEnd = \revert LyricText.color >>> >>> I could adapt your suggestion if I could think of a way to feed the >>> previous syllable of underlay to \fooEnd >> >> So you need a way to also say >> >> Three \start deaf and blind \end mice >> >> to give you >> Three [deaf and blind] mice >> ? >> >> Then you simply need three functions: >> \foo (= start) >> \bar (= end) >> \foobar (for a single syllable). >> >> I think you can adjust my proposal for start/end-only situations easily. > > 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] > > Urs
So, for your original request this should work: \version "2.19.21" start = #(define-scheme-function (parser location syllable)(markup?) (format "[~a" syllable)) end = #(define-scheme-function (parser location syllable)(markup?) (format "~a]" syllable)) wrap = #(define-scheme-function (parser location syllable)(markup?) (format "[~a]" syllable)) 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 >> } But when you also want to do other stuff like coloring it won't because I don't know how to write a function that returns an override (a music expression) *and* a string (for the lyrics) at the same time. Although this must be pretty standard functionality, I think ... >> >> Urs >>> >>> >>> >>> _______________________________________________ >>> lilypond-user mailing list >>> lilypond-user@gnu.org >>> https://lists.gnu.org/mailman/listinfo/lilypond-user >> >> >> >> _______________________________________________ >> lilypond-user mailing list >> lilypond-user@gnu.org >> https://lists.gnu.org/mailman/listinfo/lilypond-user > > > > _______________________________________________ > lilypond-user mailing list > lilypond-user@gnu.org > https://lists.gnu.org/mailman/listinfo/lilypond-user
_______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user