+%% Book first page and last page predicates
+#(define (book-first-page? layout props)
+ "Return #t iff the current page number, got from @code{props}, is the
+book first one."
+ (define (ancestor layout)
+ "Return the topmost layout ancestor"
+ (let ((parent (ly:output-def-parent layout)))
+ (if (not (ly:output-def? parent))
+ layout
+ (ancestor parent))))
+ (= (chain-assoc-get 'page:page-number props -1)
+ (ly:output-def-lookup (ancestor layout) 'first-page-number)))
+
+#(define (book-last-page? layout props)
+ "Return #t iff the current page number, got from @code{props}, is the
+book last one."
+ (and (chain-assoc-get 'page:is-bookpart-last-page props #f)
+ (chain-assoc-get 'page:is-last-bookpart props #f)))
+