From 9de2869750ca5cc9a1072b5f9e1630a6bc6778e6 Mon Sep 17 00:00:00 2001 From: tux Date: Sun, 29 Oct 2023 22:54:10 +0100 Subject: [PATCH] =?UTF-8?q?erlaube=20Umbr=C3=BCche=20in=20Versen=20nach=20?= =?UTF-8?q?angegebenen=20Texten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- verses_with_chords.ly | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/verses_with_chords.ly b/verses_with_chords.ly index b0c1f92..803c1ad 100644 --- a/verses_with_chords.ly +++ b/verses_with_chords.ly @@ -103,9 +103,24 @@ (interpret-markup layout props (make-size-box-to-box-markup #f #t (make-stanza-raw-markup arg) (make-stanza-raw-markup "x")))) +#(define (handle-custom-newlines custom-verse-breaks text) + (if (null? custom-verse-breaks) + text + (let make-custom-linebreaks + ((break-words custom-verse-breaks) + (newtext (ly:regex-replace (ly:make-regex "\n") text " "))) + (if (null? break-words) + newtext + (make-custom-linebreaks + (cdr break-words) + (ly:regex-replace + (ly:make-regex (string-append "(" (ly:regex-replace (ly:make-regex "(.)") (car break-words) "(?:\\(?" 1 "| *,[^,)]+\\)" 1 ")") "(?: *,[^,)]+\\))?)(.*)$")) + newtext + 1 "\n" 2)))))) + % Kompletten Vers mit Akkorden #(define-markup-command (chordverse layout props stanza verse) (markup? string?) - #:properties ((intraverse-vspace 0)) + #:properties ((intraverse-vspace 0)(custom-verse-breaks '())) "Vers mit Akkorden" (let* ((fromto (chain-assoc-get 'transposition props #f)) (transp (if fromto @@ -116,18 +131,18 @@ (markup #:override `(baseline-skip . ,(+ intraverse-vspace songTextLineHeigth)) #:anchor-x-between #:stanza stanza (make-wrap-newline-markup (ly:regex-replace (ly:make-regex "\\(( *)([^,()]*)( *),([^)]*)\\)") - (ly:regex-replace (ly:make-regex "(([^ \n]*\\([^()]*,[^()]+\\)[^ \n(]*)+)") verse " \\concat { " 1 " } ") + (ly:regex-replace (ly:make-regex "(([^ \n]*\\([^()]*,[^()]+\\)[^ \n(]*)+)") (handle-custom-newlines custom-verse-breaks verse) " \\concat { " 1 " } ") "\\textup \\line { \"" 1 "\" " 2 " \"" 3 "\" } \\score { \\transposable " transp " \\chords { s4 " 4 " } \\layout { \\verselayout } }") ) )))) % Kompletter Vers aus dem Akkorde entfernt werden #(define-markup-command (nochordverse layout props stanza verse) (markup? string?) - #:properties ((intraverse-vspace 0)) + #:properties ((intraverse-vspace 0)(custom-verse-breaks '())) "Vers ohne Akkorde" (interpret-markup layout props (markup #:override `(baseline-skip . ,(+ intraverse-vspace 3.0)) #:anchor-x-between #:stanza stanza - #:wrap-newline (ly:regex-replace (ly:make-regex "\\(([^,]*),([^)]*)\\)") verse 1) + #:wrap-newline (ly:regex-replace (ly:make-regex "\\(([^,]*),([^)]*)\\)") (handle-custom-newlines custom-verse-breaks verse) 1) ) ) )