lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: footnotes to lyrics


From: Mogens Lemvig Hansen
Subject: RE: footnotes to lyrics
Date: Wed, 3 Aug 2022 16:03:35 -0700

Thou Goodest, that is complicated.

Yet, at the same time,

Duh! That is obviously how one can place the footnote mark where it needs to go.

 

Thank you, especially for the springs-and-rods; that would have caused me a lot of grief.

 

Regards,

Mogens

 

From: Jean Abou Samra
Sent: August 3, 2022 5:50
To: Mogens Lemvig Hansen; lilypond-user@gnu.org
Subject: Re: footnotes to lyrics

 

 

> Le 01/08/2022 16:51 CEST, Mogens Lemvig Hansen <mogens@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

 


reply via email to

[Prev in Thread] Current Thread [Next in Thread]