diff --git a/private_includes/base/basic_format_and_style_settings.ily b/private_includes/base/basic_format_and_style_settings.ily index c634ed6..f0756b9 100644 --- a/private_includes/base/basic_format_and_style_settings.ily +++ b/private_includes/base/basic_format_and_style_settings.ily @@ -134,18 +134,23 @@ override-stanza = #} ) +#(define (handle-stanza-numbers context numbers number-formater) + (let* ((stanzanumbers (ly:assoc-get 'custom-stanzanumber-override (ly:assoc-get 'details (ly:context-grob-definition context 'StanzaNumber) '()) numbers)) + (stanza-style (ly:assoc-get 'style (ly:context-grob-definition context 'StanzaNumber))) + (roman-format (lambda (stanzanumber) (format #f "~@r" stanzanumber)))) + (ly:context-set-property! context 'stanza + (number-formater + (if (eq? stanza-style 'roman) + (map roman-format stanzanumbers) + stanzanumbers))))) + #(define (stanza . stanzanumbers) #{ \once \override StanzaNumber.details.custom-realstanza = ##t % set this to signal that there is a real stanza and no repeat signs \applyContext #(lambda (context) - (let* ((stanzanumbers-override (ly:assoc-get 'custom-stanzanumber-override (ly:assoc-get 'details (ly:context-grob-definition context 'StanzaNumber) '()) #f)) - (stanza-style (ly:assoc-get 'style (ly:context-grob-definition context 'StanzaNumber))) - (stanza-format (lambda (stanzanumber) (format #f (if (eq? stanza-style 'roman) romanStanzaFormat stanzaFormat) stanzanumber)))) - (ly:context-set-property! context 'stanza - (string-join (map stanza-format - (if stanzanumbers-override stanzanumbers-override stanzanumbers)) - ", ")))) + (handle-stanza-numbers context stanzanumbers + (lambda (numbers) (string-join (map (lambda (n) (format #f stanzaFormat n)) numbers) ", ")))) #} ) @@ -153,7 +158,14 @@ ref = #(define-music-function (stanzanumbers lyrics) ((number-list? (list)) ly:music?) #{ \lyricmode { \once \override StanzaNumber.details.custom-realstanza = ##t % 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)) + \applyContext + #(lambda (context) + (handle-stanza-numbers context stanzanumbers + (lambda (numbers) + (make-on-the-fly-markup + (lambda (layout props m) + ((ly:output-def-lookup layout 'refMarkupFormatter) layout props numbers)) + (make-null-markup))))) #lyrics } #} diff --git a/private_includes/base/default_style.ily b/private_includes/base/default_style.ily index 9bf7eb7..7ed5ec9 100644 --- a/private_includes/base/default_style.ily +++ b/private_includes/base/default_style.ily @@ -16,7 +16,6 @@ songTocColumns = 3 globalSize = 15 lyricSize = 1.6 stanzaFormat = "~a." -romanStanzaFormat = "~@r." refString = "Ref.:" refStringWithNumbers = "Ref. ~a:" % hübsche Wiederholungszeichen für den Liedtext