diff --git a/private_includes/book/book_include.ily b/private_includes/book/book_include.ily index 87393e1..9b8b9a7 100644 --- a/private_includes/book/book_include.ily +++ b/private_includes/book/book_include.ily @@ -216,6 +216,25 @@ songs = (end (if (null? (cdr chs)) total (cdadr chs))) (cnt (count-bookmark-songs start end))) (loop (cdr chs) (cons (list start title cnt) acc)))))) + ;; Stellt einer beliebigen Seite (markup-/image-/emptyPage) den Kapitel- + ;; Eintrag (chapter-to-pdf-toc) bei, falls an Position `this-index` ein + ;; Kapitel faellig ist, und entfernt es aus `pending`. So fuehrt die + ;; Kapitel-Referenz zur ersten Seite nach dem \songsChapter -- egal + ;; welcher Seitentyp das ist. Der Eintrag wird als unsichtbares Overlay + ;; (\combine) beigelegt, damit er das Seitenlayout nicht veraendert; + ;; \with-dimensions gibt dem sonst extent-losen pdfmark einen minimalen + ;; Extent, damit er auch auf leeren Seiten nicht verworfen wird. + (chapter-prefixed-markup + (lambda (this-index base-markup) + (if (and (pair? pending) (<= (car (car pending)) this-index)) + (let ((cnt (caddr (car pending))) + (title (cadr (car pending)))) + (set! pending (cdr pending)) + (make-combine-markup + base-markup + (make-with-dimensions-markup '(0 . 0) '(0 . 0.1) + (make-chapter-to-pdf-toc-markup cnt title)))) + base-markup))) (index 0)) (for-each (lambda (songitems) (let ((this-index index)) @@ -224,12 +243,15 @@ songs = (let ((filename (car songitems)) (songvars (cdr songitems))) (if (eq? filename 'emptyPage) - #{ \bookpart { \markup { \null } } #} + #{ \bookpart { \markup { $(chapter-prefixed-markup this-index (make-null-markup)) } } #} (if (eq? filename 'markupPage) - #{ \bookpart { \markup { $(assq-ref songvars 'markup) } } #} + ;; Kapitelanfang auf einer markuppage: Kapitel-Eintrag wird dieser + ;; Seite beigelegt (siehe chapter-prefixed-markup). + #{ \bookpart { \markup { $(chapter-prefixed-markup this-index (assq-ref songvars 'markup)) } } #} (if (eq? filename 'imagePage) - (let ((xsize (assq-ref songvars 'xsize)) - (filename (ly:format "~a/~a" imagePagePath (assq-ref songvars 'filename)))) + (let* ((xsize (assq-ref songvars 'xsize)) + (filename (ly:format "~a/~a" imagePagePath (assq-ref songvars 'filename))) + (img-markup #{ \markup { \pagecenter { \epsfile #X #xsize #filename } } #})) #{ \bookpart { \paper { %{ @@ -243,7 +265,7 @@ songs = last-bottom-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 0)) page-count = 1 } - \markup { \pagecenter { \epsfile #X #xsize #filename } } + \markup { $(chapter-prefixed-markup this-index img-markup) } } #} ) ;; Ist ein Kapitel faellig (Start <= aktuelle Position) und dies ein