+ (define (ancestor layout)
+ "Return the topmost layout ancestor"
+ (let ((parent (ly:output-def-parent layout)))
+ (if (not (ly:output-def? parent))
+ layout
+ (ancestor parent))))
+ (if (not (= (chain-assoc-get 'page:page-number props -1)
+ (ly:output-def-lookup (ancestor layout) 'first-page-number)))
+ (interpret-markup layout props arg)
+ empty-stencil))
+
+%% Bookpart first page and last page predicates
+#(define (part-first-page layout props arg)
+ (if (= (chain-assoc-get 'page:page-number props -1)
+ (ly:output-def-lookup layout 'first-page-number))
+ (interpret-markup layout props arg)
+ empty-stencil))
+
+#(define (part-last-page layout props arg)
+ (if (chain-assoc-get 'page:is-bookpart-last-page props #f)
+ (interpret-markup layout props arg)
+ empty-stencil))
+
+%% unused
+#(define (not-single-page layout props arg)
+ (if (not (and (= (chain-assoc-get 'page:page-number props -1)
+ (ly:output-def-lookup layout 'first-page-number))
+ (chain-assoc-get 'page:last? props -1)))