And thanks again to the Scheme-master Aaron.

One last thing:

how can I arrange that function so to obtain output-attributes =
output-attributes + id ?

For example: if output-attributes is (('a' . 'aa') ('i' . 'ii'))  it must
become:    (('a' . 'aa') ('i' . 'ii') ('id' . 'foobar_1'))




On Wed, Dec 18, 2019 at 2:07 AM Aaron Hill <lilyp...@hillvisions.com> wrote:

> On 2019-12-17 4:21 pm, Paolo Prete wrote:
> > Hi Stefano,
> >
> > unfortunately, it doesn't increment the counter globally, and the two
> > ids
> > in the SVG file are identical
>
> You will need to define a music function so that the (serial) procedure
> is called on each occurrence.  Here's an option that rolls in the
> counter logic:
>
> %%%%
> \version "2.19.83"
>
> token = #(let* ((ctr 0) (ctr! (lambda () (set! ctr (1+ ctr)) ctr)))
>    (define-music-function (mus) (ly:music?)
>      (let ((id (format #f "foobar_~a" (ctr!))))
>        #{ \tweak output-attributes #`((id . ,id)) #mus #})))
>
> \relative { c'4 d8 -\token [ e ] f -\token [ g ] c,4 }
> %%%%
>
>
> -- Aaron Hill
>
>

Reply via email to