Hi James, On Wed, Jan 10, 2018 at 5:51 AM, James Opstad <jamesops...@hotmail.com> wrote: > Hello, > > > I have been experimenting with the new output-attributes grob property for > SVG output. For example, the following code creates a group with id="noteC" > around the C notehead. > > > \version "2.19.80" > \pointAndClickOff > \relative c' { > \once \override NoteHead.output-attributes = #'((id . noteC)) > c4 d e f | > } > > How would I include multiple grobs within the same group e.g. all the grobs > associated with a single note (NoteHead, Stem, Accidental etc.)? >
All grobs have pointers to other single grobs or arrays of other grobs. You gain access to these through such functions as ly:grob-parent, ly:grob-object, ly:grob-array, ly:item-get-column. The idea of "multiple grobs within the same group e.g. all the grobs associated with a single note" can prove to be complex since your idea of a grouping is not necesarily LilyPond's. You may have to follow chains of pointers--as I did below to arrive at the Stem grob from NoteHead: i.e, through NoteColumn, the Y-parent of the NoteHead. So here is something quickly hacked together from your code example: \version "2.19.65" \pointAndClickOff \relative c' { \once \override NoteHead.output-attributes = #(lambda (grob) (let* ((acc (ly:grob-object grob 'accidental-grob)) (acc-name (if (ly:grob? acc) (grob::name acc) "none")) ; we need a NoteColumn object for access to other grobs (nc (ly:grob-parent grob Y)) (stem (ly:grob-object nc 'stem)) (stem-name (if (ly:grob? stem) (grob::name stem) "none")) (pc (ly:item-get-column grob)) (pc-name (if (ly:grob? pc) (grob::name pc) "none")) (elts (ly:grob-object pc 'elements))) (display elts) ; just so you see a grob array (list (cons 'id 'noteC) (cons 'accidental acc-name) (cons 'stem stem-name) (cons 'column pc-name)))) c4 d e f | } %%% Here is a link to something you might find useful. It stores data about every grob encountered. https://www.mail-archive.com/lilypond-user@gnu.org/msg117645.html HTH, David _______________________________________________ lilypond-user mailing list lilypond-user@gnu.org https://lists.gnu.org/mailman/listinfo/lilypond-user