%%%%%%%%%%%%%%%%%%%%% %% Correct page linking in pdf %% Thanks Thomas Morley #(define (book-first-page layout props) (define (ancestor layout) "Return the topmost layout ancestor" (let ((parent (ly:output-def-parent layout))) (if (not (ly:output-def? parent)) layout (ancestor parent)))) (ly:output-def-lookup (ancestor layout) 'first-page-number)) #(define-markup-command (with-link layout props label arg) (symbol? markup?) (let* ((arg-stencil (interpret-markup layout props arg)) (x-ext (ly:stencil-extent arg-stencil X)) (y-ext (ly:stencil-extent arg-stencil Y))) (ly:make-stencil `(delay-stencil-evaluation ,(delay (ly:stencil-expr (let* ((table (ly:output-def-lookup layout 'label-page-table)) (first-page-number (book-first-page layout props)) (orig-page-number (if (list? table) (assoc-get label table) #f)) (page-number (+ orig-page-number (+ 1 (* -1 first-page-number) ))) (link-expr (list 'page-link page-number `(quote ,x-ext) `(quote ,y-ext)))) (ly:stencil-add (ly:make-stencil link-expr x-ext y-ext) arg-stencil))))) x-ext y-ext)))