> Le 01/08/2022 16:51 CEST, Mogens Lemvig Hansen <mog...@kayju.com> a écrit : > > > How do I get a footnote to lyrics – is it even possible. In the example > below, “Sing” doesn’t get a footnote mark, “this doesn’t” vanishes, and no > error message is given. > > \version "2.23.11" > > \markup { Some \auto-footnote regular "this works" text. } > > \score { > { c d e f g } > \addlyrics { \markup { \auto-footnote Sing "this doesn't" } an -- oth -- er > song. } > }
It's quite more complicated, but possible. There are two ways to add footnotes: the \footnote music function, and the \footnote and \auto-footnote markup commands. Yes, there are two different things called \footnote. If you write \footnote outside of \markup, it's the music function -- \relative and \transpose are examples of music functions. On the other hand, if you use \footnote in \markup, you get the \footnote markup command, which is similar to \auto-footnote. It's a known limitation of the implementation of footnotes that you can't use the \footnote and \auto-footnote markup commands to add a footnote in markup if this markup is embedded in music, like you are doing with the lyric word. They can only be used in standalone markup. Within music, you need to use the \footnote music function, which adds a footnote around an arbitrary grob (= graphical object = layout object). The grob you want to annotate here is LyricText, so the syntax is \footnote #'(x . y) "footnote text" LyricText Note that \footnote also supports another syntax: \footnote #'(x . y) "footnote text" <event> but in this case, the event would have to be your lyric text "Sing", and there's no way to distinguish this from the first case, so LilyPond would choose the first interpretation and complain that "Sing" isn't a grob. So, for a LyricText, you have no choice but to use the first (\override-like) form. Furthermore, the \footnote music function adds a line between the grob and the footnote mark by default, you need to suppress it by overriding annotation-line to ##f. You also need to place the footnote mark well. The problem here is the #'(x . y) offset is not sufficient for your case since giving a positive y value makes the footnote mark aligned to the top of the text, which is already too high. So, you need to override the {X,Y}-attachment properties. TL;DR: this is how I'd do it: \version "2.23.11" \markup { Some \auto-footnote regular "this works" text. } \score { { c d e f g } \addlyrics { %% Remove line between lyric text and "2" mark. \once \override Footnote.annotation-line = ##f %% Set alignment of "2" mark. \once \override Footnote.X-attachment = #RIGHT \once \override Footnote.text-alignment-X = #LEFT \once \override Footnote.Y-attachment = #0.5 %% Make some space for the footnote. \once \override LyricSpace.minimum-length = 6.5 %% See https://lilypond.org/doc/v2.23/Documentation/notation/spanners.html#setting-minimum-lengths-for-spanners \once \override LyricSpace.springs-and-rods = #ly:spanner::set-spacing-rods \footnote #'(0 . 0) "this also works" LyricText Sing an -- oth -- er song. } } Best, Jean