diff --git a/basic_format_and_style_settings.ly b/basic_format_and_style_settings.ly index 1036d5b..e1f5ffb 100644 --- a/basic_format_and_style_settings.ly +++ b/basic_format_and_style_settings.ly @@ -24,6 +24,11 @@ markup-system-spacing = #'((basic-distance . 1)) score-markup-spacing = #'((padding . 2)) top-markup-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0)) + refMarkupFormatter = #(lambda (layout props stanzanumbers) + (interpret-markup layout props + (if (null? stanzanumbers) + refString + (ly:format refStringWithNumbers (string-join (map (lambda (stanzanumber) (ly:format "~a." stanzanumber)) stanzanumbers) ", "))))) } generalLayout = \layout { @@ -125,10 +130,15 @@ stanza = #} ) -ref = { - \once \override StanzaNumber.layer = 23 % set this to signal that there is a real stanza and no repeat signs - \set stanza = \refString -} +ref = +#(define-music-function (stanzanumbers lyrics) ((number-list? (list)) ly:music?) +#{ \lyricmode { + \once \override StanzaNumber.layer = 23 % set this to signal that there is a real stanza and no repeat signs + \set stanza = #(make-on-the-fly-markup (lambda (layout props m) ((ly:output-def-lookup layout 'refMarkupFormatter) layout props stanzanumbers)) (make-null-markup)) + #lyrics + } +#} +) % prints a repStart Sign as stanza if the tag 'repeats is kept. % if there was a stanza already set by the stanza function with StanzaNumber.layer = 23 we set that also as stanza. diff --git a/default_style.ly b/default_style.ly index 3f0a621..85b98e1 100644 --- a/default_style.ly +++ b/default_style.ly @@ -18,6 +18,7 @@ lyricSize = 1.6 stanzaFormat = "~a." romanStanzaFormat = "~@r." refString = "Ref.:" +refStringWithNumbers = "Ref. ~a:" % hübsche Wiederholungszeichen für den Liedtext repStart = "𝄆" repStop = "𝄇"