Mehrere Lieder auf eine Seite
This commit is contained in:
1 parent
809100b2f3
commit
2359a7c5ae
7 files changed
+243
-43
No files matched your search
@@ -187,20 +187,24 @@ songs =
|
||||
;; Lieder duerfen als Kapitel-Kinder gezaehlt werden -- sonst wird die
|
||||
;; /Count zu hoch und der erste Folgeeintrag (z.B. ein spaeteres Kapitel)
|
||||
;; rutscht faelschlich als Kind mit hinein.
|
||||
(emits-bookmark?
|
||||
;; Eingebettete Lieder (embedded_songs.ily) haben jeweils ein eigenes
|
||||
;; Lesezeichen, daher die Anzahl statt eines Booleans.
|
||||
(bookmark-count
|
||||
(lambda (e)
|
||||
(and (not (eq? (car e) 'emptyPage))
|
||||
(not (eq? (car e) 'imagePage))
|
||||
(not (eq? (car e) 'markupPage))
|
||||
(let ((vars (extract-and-check-vars-from-header
|
||||
(assq-ref (cdr e) 'header) '(title starttext))))
|
||||
(if (or (assq-ref vars 'title) (assq-ref vars 'starttext)) #t #f)))))
|
||||
(if (or (eq? (car e) 'emptyPage)
|
||||
(eq? (car e) 'imagePage)
|
||||
(eq? (car e) 'markupPage))
|
||||
0
|
||||
(let* ((headermodule (ly:book-header (assq-ref (cdr e) 'header)))
|
||||
(vars (extract-and-check-vars-from-module headermodule '(title starttext))))
|
||||
(+ (if (or (assq-ref vars 'title) (assq-ref vars 'starttext)) 1 0)
|
||||
(count song-pdf-bookmark-title (embedded-songs-of-header headermodule)))))))
|
||||
(count-bookmark-songs
|
||||
(lambda (start end)
|
||||
(let loop ((i 0) (l ordered) (c 0))
|
||||
(cond ((or (null? l) (>= i end)) c)
|
||||
((< i start) (loop (+ i 1) (cdr l) c))
|
||||
(else (loop (+ i 1) (cdr l) (if (emits-bookmark? (car l)) (+ c 1) c)))))))
|
||||
(else (loop (+ i 1) (cdr l) (+ c (bookmark-count (car l)))))))))
|
||||
;; chapters: (title . start-index). start-index = Anzahl der song-list-
|
||||
;; Eintraege beim Aufruf von songsChapter = Index in `ordered`, ab dem
|
||||
;; das Kapitel beginnt.
|
||||
@@ -300,12 +304,23 @@ songs =
|
||||
(music (assq-ref songvars 'music))
|
||||
(layout (assq-ref songvars 'layout))
|
||||
(text-pages (assq-ref songvars 'text-pages))
|
||||
(label (assq-ref songvars 'label)))
|
||||
(label (assq-ref songvars 'label))
|
||||
(toc-music (header-module-to-toc! (ly:book-header header) label)))
|
||||
(set! song-number newnumber)
|
||||
;; Eingebettete Lieder: eigene Liednummer, gleiche Seite (label)
|
||||
(for-each
|
||||
(lambda (song)
|
||||
(let ((tocheader (make-module)))
|
||||
(set! song-number (+ 1 song-number))
|
||||
(ly:module-copy tocheader song)
|
||||
(module-define! tocheader 'songnumber (number->string song-number))
|
||||
(module-define! tocheader 'chapterref current-chapter)
|
||||
(header-module-to-toc! tocheader label)))
|
||||
(embedded-songs-of-header (ly:book-header header)))
|
||||
#{
|
||||
\bookpart {
|
||||
$header
|
||||
\headerToTOC #header #label
|
||||
$toc-music
|
||||
\score { $music \layout { $layout songfilename = $(symbol->string filename) } }
|
||||
$(add-text-pages text-pages)
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user