Compare commits
	
		
			1 Commits
		
	
	
		
			d6774670f3
			...
			tocSubtitl
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
| 
						 | 
					db57e6d5c4 | 
@@ -1,7 +1,6 @@
 | 
			
		||||
\language "deutsch"
 | 
			
		||||
 | 
			
		||||
\include "default_author_style.ly"
 | 
			
		||||
\include "default_songinfo_style.ly"
 | 
			
		||||
\include "styles.ly"
 | 
			
		||||
\include #(ly:format "styles/~a.ly" songStyle)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -8,16 +8,6 @@ klamm = #(define-music-function (parser location chords) (ly:music?)
 | 
			
		||||
	\set chordNameFunction = #ignatzek-chord-names
 | 
			
		||||
#})
 | 
			
		||||
 | 
			
		||||
repeats-around-chords =
 | 
			
		||||
#(define-music-function (parser location chords) (ly:music?)
 | 
			
		||||
#{
 | 
			
		||||
  \once \set noChordSymbol = \markup { \normal-text \repStart }
 | 
			
		||||
  r4
 | 
			
		||||
	$chords
 | 
			
		||||
  \once \set noChordSymbol = \markup { \normal-text \repStop }
 | 
			
		||||
  r4
 | 
			
		||||
#})
 | 
			
		||||
 | 
			
		||||
bchord =
 | 
			
		||||
#(define-music-function (parser location chords) (ly:music?)
 | 
			
		||||
#{
 | 
			
		||||
@@ -81,7 +71,7 @@ generalLayout = \layout {
 | 
			
		||||
    \semiGermanChords
 | 
			
		||||
    \override ChordName.font-size = \songScoreChordFontSize
 | 
			
		||||
    \override ChordName.font-series = \songChordFontSeries
 | 
			
		||||
    \override ChordName.font-family = #'serif
 | 
			
		||||
    \override ChordName.font-family = #'sans
 | 
			
		||||
    chordNameLowercaseMinor = ##t
 | 
			
		||||
    chordChanges = ##t
 | 
			
		||||
    % eigenen chordRootNamer damit F# = Fis und Gb = Ges (also alteration ausgeschrieben)
 | 
			
		||||
@@ -94,6 +84,14 @@ generalLayout = \layout {
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
verseChordLayout = \layout {
 | 
			
		||||
  \generalLayout
 | 
			
		||||
  \context {
 | 
			
		||||
    \ChordNames
 | 
			
		||||
    \override ChordName.font-size = \songTextChordFontSize
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
% Akkord mit Bunddiagramm anzeigen
 | 
			
		||||
#(define-markup-command (fret-chord layout props fret chord) (string? string?)
 | 
			
		||||
   (interpret-markup layout props
 | 
			
		||||
 
 | 
			
		||||
@@ -1,33 +0,0 @@
 | 
			
		||||
\paper {
 | 
			
		||||
  songinfoMarkup =
 | 
			
		||||
    #(make-on-the-fly-markup
 | 
			
		||||
      (lambda (layout props m)
 | 
			
		||||
        (let ((blockwidth (* (chain-assoc-get 'header:songinfo-size-factor props 0.9) (ly:output-def-lookup layout 'line-width)))
 | 
			
		||||
              (between-poet-and-composer-markup (chain-assoc-get 'header:between-poet-and-composer-markup props (make-hspace-markup 3)))
 | 
			
		||||
              (poet-maybe-with-composer (chain-assoc-get 'songinfo:poet-maybe-with-composer props #f))
 | 
			
		||||
              (composer (chain-assoc-get 'songinfo:composer props #f))
 | 
			
		||||
              (copyright (chain-assoc-get 'songinfo:copyright props #f))
 | 
			
		||||
              (infotext (chain-assoc-get 'songinfo:infotext props #f))
 | 
			
		||||
              (translation (chain-assoc-get 'songinfo:translation props #f))
 | 
			
		||||
              (spelling (chain-assoc-get 'songinfo:spelling props #f))
 | 
			
		||||
              (year_text (chain-assoc-get 'songinfo:year_text props #f))
 | 
			
		||||
              (year_melody (chain-assoc-get 'songinfo:year_melody props #f)))
 | 
			
		||||
          (interpret-markup layout props
 | 
			
		||||
            (markup
 | 
			
		||||
              #:override '(baseline-skip . 3.0)
 | 
			
		||||
              #:override `(line-width . ,blockwidth)
 | 
			
		||||
              #:fontsize songInfoFontSize
 | 
			
		||||
              #:sans
 | 
			
		||||
              (make-justify-markup (list
 | 
			
		||||
                (if poet-maybe-with-composer (markup
 | 
			
		||||
                  (if year_text (make-concat-markup (list poet-maybe-with-composer ", " year_text)) poet-maybe-with-composer) between-poet-and-composer-markup) "")
 | 
			
		||||
                (if composer (if year_melody (make-concat-markup (list composer ", " year_melody)) composer) "")
 | 
			
		||||
                (make-justify-string-markup (string-append
 | 
			
		||||
                  (if copyright (string-append "© " copyright) "")
 | 
			
		||||
                  (if infotext (string-append "\n\n" infotext) "")
 | 
			
		||||
                  (if translation (string-append "\n\nÜbersetzung: " translation) "")
 | 
			
		||||
                  (if spelling (string-append "\n\nAussprache: " spelling) "")
 | 
			
		||||
              ))))))))
 | 
			
		||||
      (make-null-markup)
 | 
			
		||||
    )
 | 
			
		||||
}
 | 
			
		||||
@@ -33,33 +33,32 @@
 | 
			
		||||
           (composerId (chain-assoc-get 'header:composerId props (if songId (songinfo-from songId "composer") #f)))
 | 
			
		||||
           (poet-and-composer-same (equal? poetId composerId)))
 | 
			
		||||
      (let (
 | 
			
		||||
            (infotext (chain-assoc-get 'header:infotext props (chain-assoc-get 'header:songinfo props #f)))
 | 
			
		||||
            (poet-maybe-with-composer (chain-assoc-get 'header:poet props (if poetId (if poet-and-composer-same (format-poet-and-composer poetId) (format-poet poetId)) #f)))
 | 
			
		||||
            (blockwidth (* (chain-assoc-get 'header:songinfo-size-factor props 0.9) (ly:output-def-lookup layout 'line-width)))
 | 
			
		||||
            (infotext (chain-assoc-get 'header:songinfo props #f))
 | 
			
		||||
            (poet (chain-assoc-get 'header:poet props (if poetId (if poet-and-composer-same (format-poet-and-composer poetId) (format-poet poetId)) #f)))
 | 
			
		||||
            (composer (chain-assoc-get 'header:composer props (if (and composerId (not poet-and-composer-same)) (format-composer composerId) #f)))
 | 
			
		||||
            (copyright (chain-assoc-get 'header:copyright props #f))
 | 
			
		||||
            (translation (chain-assoc-get 'header:translation props #f))
 | 
			
		||||
            (spelling (chain-assoc-get 'header:spelling props #f))
 | 
			
		||||
            (year_text (chain-assoc-get 'header:year_text props #f))
 | 
			
		||||
            (year_melody (chain-assoc-get 'header:year_melody props #f)))
 | 
			
		||||
            (markup
 | 
			
		||||
              #:override (cons 'songinfo:poet-maybe-with-composer
 | 
			
		||||
                (if (and poet-maybe-with-composer (not (and (string? poet-maybe-with-composer) (string-null? poet-maybe-with-composer)))) poet-maybe-with-composer #f))
 | 
			
		||||
              #:override (cons 'songinfo:composer
 | 
			
		||||
                (if (and composer (not (and (string? composer) (string-null? composer)))) composer #f))
 | 
			
		||||
              #:override (cons 'songinfo:copyright
 | 
			
		||||
                (if (and copyright (not (and (string? copyright) (string-null? copyright)))) copyright #f))
 | 
			
		||||
              #:override (cons 'songinfo:infotext
 | 
			
		||||
                (if (and infotext (not (and (string? infotext) (string-null? infotext)))) infotext #f))
 | 
			
		||||
              #:override (cons 'songinfo:translation
 | 
			
		||||
                (if (and translation (not (and (string? translation) (string-null? translation)))) translation #f))
 | 
			
		||||
              #:override (cons 'songinfo:spelling
 | 
			
		||||
                (if (and spelling (not (and (string? spelling) (string-null? spelling)))) spelling #f))
 | 
			
		||||
              #:override (cons 'songinfo:year_text
 | 
			
		||||
                (if (and year_text (not (and (string? year_text) (string-null? year_text)))) year_text #f))
 | 
			
		||||
              #:override (cons 'songinfo:year_melody
 | 
			
		||||
                (if (and year_melody (not (and (string? year_melody) (string-null? year_melody)))) year_melody #f))
 | 
			
		||||
              (ly:output-def-lookup layout 'songinfoMarkup)
 | 
			
		||||
            (poet-and-composer-stacked (chain-assoc-get 'header:poet-and-composer-stacked props songInfoPoetAndComposerStacked))
 | 
			
		||||
            (between-poet-and-composer-markup (chain-assoc-get 'header:between-poet-and-composer-markup props (make-hspace-markup 3)))
 | 
			
		||||
            (copyright (chain-assoc-get 'header:copyright props #f)))
 | 
			
		||||
            (markup #:override '(baseline-skip . 3.0) (
 | 
			
		||||
                make-fontsize-markup songInfoFontSize
 | 
			
		||||
                (make-sans-markup
 | 
			
		||||
                ;%\override #'(line-width . 92) \wordwrap-field #symbol
 | 
			
		||||
                (make-column-markup (list
 | 
			
		||||
                  (make-line-markup
 | 
			
		||||
                   (list
 | 
			
		||||
                    (if (and poet (not (and (string? poet) (string-null? poet)))) (markup poet between-poet-and-composer-markup) "")
 | 
			
		||||
                    (if (and composer (not poet-and-composer-stacked)) composer ""))
 | 
			
		||||
                  )
 | 
			
		||||
                  (if (and composer poet-and-composer-stacked) (make-line-markup (list composer)) "")
 | 
			
		||||
                  (make-override-markup `(line-width . ,blockwidth) (make-justify-string-markup (string-append
 | 
			
		||||
                    (if (and copyright (not (and (string? copyright) (string-null? copyright)))) (ly:format "© ~a\n\n" copyright) "")
 | 
			
		||||
                    (if infotext infotext "")
 | 
			
		||||
                  )))
 | 
			
		||||
                )))
 | 
			
		||||
              )
 | 
			
		||||
            )
 | 
			
		||||
          ))
 | 
			
		||||
      (make-null-markup)))
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -3,15 +3,6 @@
 | 
			
		||||
 | 
			
		||||
MUSIC = { \transposable \MUSIC }
 | 
			
		||||
 | 
			
		||||
verselayout = \layout {
 | 
			
		||||
  \LAYOUT
 | 
			
		||||
  \context {
 | 
			
		||||
    \ChordNames
 | 
			
		||||
    \override ChordName.font-size = \songTextChordFontSize
 | 
			
		||||
  }
 | 
			
		||||
}
 | 
			
		||||
TEXT = \markuplist { \override #`(verselayout . verselayout) \TEXT }
 | 
			
		||||
 | 
			
		||||
% nur Output wenn noStandaloneOutput auf false steht
 | 
			
		||||
output = #(if (not noStandaloneOutput)
 | 
			
		||||
#{
 | 
			
		||||
 
 | 
			
		||||
@@ -9,6 +9,7 @@ songTextChordAlignment = #'left
 | 
			
		||||
songScoreChordFontSize = 3
 | 
			
		||||
songTextChordFontSize = 2
 | 
			
		||||
songTextLineHeigth = 5.5
 | 
			
		||||
songInfoPoetAndComposerStacked = ##f
 | 
			
		||||
songTocColumns = 3
 | 
			
		||||
globalSize = 15
 | 
			
		||||
lyricSize = 1.6
 | 
			
		||||
@@ -9,6 +9,7 @@ songTextChordAlignment = #'center
 | 
			
		||||
songScoreChordFontSize = 0
 | 
			
		||||
songTextChordFontSize = \songScoreChordFontSize
 | 
			
		||||
songTextLineHeigth = 5
 | 
			
		||||
songInfoPoetAndComposerStacked = ##f
 | 
			
		||||
songTocColumns = 3
 | 
			
		||||
globalSize = 15
 | 
			
		||||
lyricSize = 1.6
 | 
			
		||||
@@ -9,6 +9,7 @@ songTextChordAlignment = #'left
 | 
			
		||||
songScoreChordFontSize = 2
 | 
			
		||||
songTextChordFontSize = 2
 | 
			
		||||
songTextLineHeigth = 5.3
 | 
			
		||||
songInfoPoetAndComposerStacked = ##t
 | 
			
		||||
songTocColumns = 2
 | 
			
		||||
globalSize = 14
 | 
			
		||||
lyricSize = 1.6
 | 
			
		||||
@@ -1,3 +1,5 @@
 | 
			
		||||
\include "../lilypond-custom-includes/toc_config.ly"
 | 
			
		||||
 | 
			
		||||
% embed all category images in postscript once
 | 
			
		||||
#(define-markup-list-command (embed-category-images layout props)()
 | 
			
		||||
   (map (lambda (category)
 | 
			
		||||
@@ -171,6 +173,11 @@
 | 
			
		||||
                           (cdr revlist)))))))))
 | 
			
		||||
 | 
			
		||||
\paper {
 | 
			
		||||
  indexTitleMarkup = \tocSubtitleText
 | 
			
		||||
  categoryTitleMarkup = \markup \column {
 | 
			
		||||
    \fontsize #5 \sans \bold \fill-line { \null \fromproperty #'index:text \null }
 | 
			
		||||
    \vspace #1
 | 
			
		||||
  }
 | 
			
		||||
  indexItemMarkup = \markup \with-link-symbol-ref #'index:label {
 | 
			
		||||
    \index-item-with-pattern
 | 
			
		||||
  }
 | 
			
		||||
@@ -184,7 +191,29 @@
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
%{
 | 
			
		||||
#(define-markup-list-command (index layout props) ()
 | 
			
		||||
  ( _i "Outputs an alphabetical sorted index, using the paper
 | 
			
		||||
  variable @code{indexTitleMarkup} for its title, then the list of
 | 
			
		||||
  lines built using the @code{indexItem} music function
 | 
			
		||||
  Usage: @code{\\markuplines \\index}" )
 | 
			
		||||
  (cons (interpret-markup layout (cons (list (cons 'index:text "Inhaltsverzeichnis")) props)
 | 
			
		||||
        (ly:output-def-lookup layout 'indexTitleMarkup))
 | 
			
		||||
    (space-lines (chain-assoc-get 'baseline-skip props)
 | 
			
		||||
        (map (lambda (index-item)
 | 
			
		||||
         (let ((label (car index-item))
 | 
			
		||||
         (index-markup (cadr index-item))
 | 
			
		||||
         (text (caddr index-item)))
 | 
			
		||||
           (interpret-markup
 | 
			
		||||
             layout
 | 
			
		||||
             (cons (list (cons 'index:page
 | 
			
		||||
              (markup #:page-ref label "XXX" "?"))
 | 
			
		||||
             (cons 'index:text text)
 | 
			
		||||
             (cons 'index:label label))
 | 
			
		||||
             props)
 | 
			
		||||
             (ly:output-def-lookup layout index-markup))))
 | 
			
		||||
       (index-items)))))
 | 
			
		||||
%}
 | 
			
		||||
#(define (prepare-item-markup items layout)
 | 
			
		||||
   (map (lambda (index-item)
 | 
			
		||||
         (let ((label (car index-item))
 | 
			
		||||
@@ -196,18 +225,33 @@
 | 
			
		||||
             (ly:output-def-lookup layout index-markup))))
 | 
			
		||||
       (items)))
 | 
			
		||||
 | 
			
		||||
#(define-markup-list-command (index-in-columns-with-title layout props index-type title-markup) (symbol? markup?)
 | 
			
		||||
  ( _i "Outputs index alphabetical sorted or in categories" )
 | 
			
		||||
    (let ((items (case index-type
 | 
			
		||||
            ((alphabetical) index-items)
 | 
			
		||||
            ((categories) category-index-items)))
 | 
			
		||||
          (title (interpret-markup layout props title-markup)))
 | 
			
		||||
 | 
			
		||||
#(define-markup-list-command (colindex layout props) ()
 | 
			
		||||
  ( _i "Outputs an alphabetical sorted index, using the paper
 | 
			
		||||
  variable @code{indexTitleMarkup} for its title, then the list of
 | 
			
		||||
  lines built using the @code{indexItem} music function
 | 
			
		||||
  Usage: @code{\\markuplines \\index}" )
 | 
			
		||||
      (let ((title (interpret-markup layout (cons (list (cons 'index:text "Inhaltsverzeichnis")) props)
 | 
			
		||||
        (ly:output-def-lookup layout 'indexTitleMarkup))))
 | 
			
		||||
        (cons title
 | 
			
		||||
  (interpret-markup-list layout props
 | 
			
		||||
    (make-columnlayout-markup-list songTocColumns 2
 | 
			
		||||
      (let ((h (- (ly:output-def-lookup layout 'paper-height) 12)))
 | 
			
		||||
        (cons (- h (interval-length (ly:stencil-extent title Y))) h))
 | 
			
		||||
          (prepare-item-markup items layout))))))
 | 
			
		||||
      (prepare-item-markup index-items layout))))))
 | 
			
		||||
 | 
			
		||||
#(define-markup-list-command (categoryindex layout props) ()
 | 
			
		||||
  ( _i "Outputs categorized song titles" )
 | 
			
		||||
    (if (null-list? (category-index-items))
 | 
			
		||||
        (list)
 | 
			
		||||
      (let ((title (interpret-markup layout (cons (list (cons 'index:text "Inhaltsverzeichnis nach Kategorien")) props)
 | 
			
		||||
        (ly:output-def-lookup layout 'categoryTitleMarkup))))
 | 
			
		||||
        (cons title
 | 
			
		||||
  (interpret-markup-list layout props
 | 
			
		||||
    (make-columnlayout-markup-list songTocColumns 2
 | 
			
		||||
      (let ((h (- (ly:output-def-lookup layout 'paper-height) 12)))
 | 
			
		||||
        (cons (- h (interval-length (ly:stencil-extent title Y))) h))
 | 
			
		||||
      (prepare-item-markup category-index-items layout)))))))
 | 
			
		||||
 | 
			
		||||
indexItem =
 | 
			
		||||
#(define-music-function (parser location sorttext text) (string? markup?)
 | 
			
		||||
@@ -219,6 +263,18 @@ indexSection =
 | 
			
		||||
   "Add a section line to the alphabetical index, using @code{indexSectionMarkup} paper variable markup. This can be used to divide the alphabetical index into different sections, for example one section for each first letter."
 | 
			
		||||
   (add-index-item! 'indexSectionMarkup text sorttext))
 | 
			
		||||
 | 
			
		||||
%{
 | 
			
		||||
addTitleToTOC = #(define-music-function (parser location title) (string?)
 | 
			
		||||
  #{
 | 
			
		||||
    \indexItem #title \markup { #title }
 | 
			
		||||
  #})
 | 
			
		||||
 | 
			
		||||
addAltTitleToTOC = #(define-music-function (parser location title) (string?)
 | 
			
		||||
  #{
 | 
			
		||||
    \indexItem #title \markup { \italic #title }
 | 
			
		||||
  #})
 | 
			
		||||
%}
 | 
			
		||||
 | 
			
		||||
#(define (extract-var-from-module module sym)
 | 
			
		||||
  (let ((variableref (assoc-ref module sym)))
 | 
			
		||||
    (if variableref (variable-ref variableref) #f))
 | 
			
		||||
 
 | 
			
		||||
@@ -5,7 +5,7 @@
 | 
			
		||||
     #{ \markup { \column {
 | 
			
		||||
     $(let ((verse-markup-string (
 | 
			
		||||
        string-append "\\line { "
 | 
			
		||||
          (ly:regex-replace (ly:make-regex "\r?\n") text " } \\line { ")
 | 
			
		||||
          (ly:regex-replace (ly:make-regex "\n") text " } \\line { ")
 | 
			
		||||
          " \\size-box-to-box ##f ##t \"\" \"Agj\" }" )))
 | 
			
		||||
       (ly:parser-include-string verse-markup-string))
 | 
			
		||||
     }}#}
 | 
			
		||||
@@ -66,18 +66,17 @@
 | 
			
		||||
% Text über Text mittig darstellen
 | 
			
		||||
#(define-markup-command (textup layout props text uptext) (markup? markup?)
 | 
			
		||||
   "Markup über Text mittig darstellen."
 | 
			
		||||
   (let ((verselayout (chain-assoc-get 'verselayout props generalLayout)))
 | 
			
		||||
   (interpret-markup layout props
 | 
			
		||||
     #{\markup {
 | 
			
		||||
       \size-box-to-box-style-dependent ##t ##f
 | 
			
		||||
         \general-align #X #LEFT \override #`(direction . ,UP) \override #'(baseline-skip . 1.0) \dir-column \chord-alignment-style-dependent {
 | 
			
		||||
           \pad-to-box #'(0 . 0) #'(0 . 2.0) { #text }
 | 
			
		||||
           \size-box-to-box ##f ##t #uptext \score { \chords { g4:m a } \layout { \verselayout } }
 | 
			
		||||
           \size-box-to-box ##f ##t #uptext \score { \chords { g4:m a } \layout { \generalLayout } }
 | 
			
		||||
         }
 | 
			
		||||
         #text
 | 
			
		||||
       }
 | 
			
		||||
     #}
 | 
			
		||||
   )))
 | 
			
		||||
   ))
 | 
			
		||||
 | 
			
		||||
#(define-markup-command (anchor-x-between layout props arga argb)
 | 
			
		||||
   (markup? markup?)
 | 
			
		||||
@@ -89,60 +88,43 @@
 | 
			
		||||
 | 
			
		||||
#(define-markup-command (stanza-raw layout props arg)
 | 
			
		||||
   (markup?)
 | 
			
		||||
   (let ((verselayout (chain-assoc-get 'verselayout props generalLayout)))
 | 
			
		||||
   (interpret-markup layout props
 | 
			
		||||
     (if (and (string? arg) (string-null? arg))
 | 
			
		||||
         " "
 | 
			
		||||
         #{\markup
 | 
			
		||||
           \score { \new Lyrics { \lyricmode { \set stanza = #arg "" } } \layout { \verselayout } }
 | 
			
		||||
           \score { \new Lyrics { \lyricmode { \set stanza = #arg "" } } \layout { \generalLayout } }
 | 
			
		||||
         #}
 | 
			
		||||
     ))))
 | 
			
		||||
     )))
 | 
			
		||||
 | 
			
		||||
#(define-markup-command (stanza layout props arg)
 | 
			
		||||
   (markup?)
 | 
			
		||||
   (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 "\r?\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)(custom-verse-breaks '()))
 | 
			
		||||
   #:properties ((intraverse-vspace 0))
 | 
			
		||||
   "Vers mit Akkorden"
 | 
			
		||||
   (let* ((fromto (chain-assoc-get 'transposition props #f))
 | 
			
		||||
          (transp (if fromto
 | 
			
		||||
                    (string-append "\\transpose " (car fromto) " " (cdr fromto))
 | 
			
		||||
                    ""))
 | 
			
		||||
          (verselayout (chain-assoc-get 'verselayout props generalLayout)))
 | 
			
		||||
                    "")))
 | 
			
		||||
   (interpret-markup layout props
 | 
			
		||||
     (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(]*)+)") (handle-custom-newlines custom-verse-breaks verse) " \\concat { " 1 " } ")
 | 
			
		||||
                "\\textup \\line { \"" 1 "\" " 2 " \"" 3 "\" } \\score { \\transposable " transp " \\chords { s4 " 4 " } \\layout { \\verselayout } }")
 | 
			
		||||
                 (ly:regex-replace (ly:make-regex "(([^ \n]*\\([^()]*,[^()]+\\)[^ \n(]*)+)") verse " \\concat { " 1 " } ")
 | 
			
		||||
                "\\textup \\line { \"" 1 "\" " 2 " \"" 3 "\" } \\score { \\transposable " transp " \\chords { s4 " 4 " } \\layout { \\verseChordLayout } }")
 | 
			
		||||
                )
 | 
			
		||||
     ))))
 | 
			
		||||
 | 
			
		||||
% Kompletter Vers aus dem Akkorde entfernt werden
 | 
			
		||||
#(define-markup-command (nochordverse layout props stanza verse) (markup? string?)
 | 
			
		||||
   #:properties ((intraverse-vspace 0)(custom-verse-breaks '()))
 | 
			
		||||
   #:properties ((intraverse-vspace 0))
 | 
			
		||||
   "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 "\\(([^,]*),([^)]*)\\)") (handle-custom-newlines custom-verse-breaks verse) 1)
 | 
			
		||||
           #:wrap-newline (ly:regex-replace (ly:make-regex "\\(([^,]*),([^)]*)\\)") verse 1)
 | 
			
		||||
     )
 | 
			
		||||
   )
 | 
			
		||||
)
 | 
			
		||||
@@ -160,25 +142,26 @@
 | 
			
		||||
                 (verse-hspace 1)
 | 
			
		||||
                 (verse-ordering-horizontal #f))
 | 
			
		||||
   "Gruppiere Strophen in einem Markup auf Wunsch spaltenweise"
 | 
			
		||||
   (define (add-markup-between-elements reverses markup-between elements)
 | 
			
		||||
     ((if reverses fold fold-right) (lambda (element filled-list)
 | 
			
		||||
              (cons element (if (null? filled-list) '() (cons markup-between filled-list))))
 | 
			
		||||
        '() elements))
 | 
			
		||||
   (let* ((column-item-count (ceiling (/ (length versegroup) verse-cols)))
 | 
			
		||||
          (column-data (make-list verse-cols)))
 | 
			
		||||
    (let columnize-list ((index 0) (items versegroup))
 | 
			
		||||
      (if (not (null? items))
 | 
			
		||||
        (let* ((column-index (if verse-ordering-horizontal
 | 
			
		||||
   (let ((h (make-hash-table verse-cols))
 | 
			
		||||
         (index 0)
 | 
			
		||||
         (column-item-count (ceiling (/ (length versegroup) verse-cols))))
 | 
			
		||||
     (for-each (lambda (el)
 | 
			
		||||
        (let ((i (if verse-ordering-horizontal
 | 
			
		||||
                     (modulo index verse-cols)
 | 
			
		||||
                                 (floor (/ index column-item-count))))
 | 
			
		||||
               (column-markups (list-ref column-data column-index)))
 | 
			
		||||
          (list-set! column-data column-index (cons (car items) column-markups))
 | 
			
		||||
          (columnize-list (+ index 1) (cdr items)))))
 | 
			
		||||
                     (floor (/ index column-item-count)))))
 | 
			
		||||
         (hashv-set! h i (cons el (hashv-ref h i (list)))) (set! index (+ index 1))))
 | 
			
		||||
       versegroup)
 | 
			
		||||
     (interpret-markup layout props
 | 
			
		||||
      (make-fill-line-markup (list (make-verseformat-markup (make-line-markup
 | 
			
		||||
        (add-markup-between-elements #f
 | 
			
		||||
          (make-hspace-markup verse-hspace)
 | 
			
		||||
          (map (lambda (column-markups)
 | 
			
		||||
              (make-column-markup
 | 
			
		||||
                (add-markup-between-elements #t (make-vspace-markup verse-vspace) column-markups)))
 | 
			
		||||
            column-data)))))))))
 | 
			
		||||
       (make-fill-line-markup (cons (make-verseformat-markup (make-line-markup
 | 
			
		||||
         (reverse (hash-fold (lambda (key value l)
 | 
			
		||||
             (cons (make-column-markup
 | 
			
		||||
                       (fold (lambda (v verses)
 | 
			
		||||
                          (cons v (if (null? verses)
 | 
			
		||||
                                      verses
 | 
			
		||||
                                      (cons (make-vspace-markup verse-vspace) verses))))
 | 
			
		||||
                        (list) value))
 | 
			
		||||
                    (if (null-list? l)
 | 
			
		||||
                        l
 | 
			
		||||
                        (cons (make-hspace-markup verse-hspace) l))))
 | 
			
		||||
           (list) h))))
 | 
			
		||||
                                (list))))))
 | 
			
		||||
		Reference in New Issue
	
	Block a user