From 3e89af67bc6a9e3fd5d9a28db256608ac79510e0 Mon Sep 17 00:00:00 2001
From: Thomas Morley <thomasmorley65@gmail.com>
Date: Fri, 14 Aug 2015 01:32:22 +0200
Subject: [PATCH] input/regression/bookparts.ly fails at PDF conversion stage

issue 4554

fixes \with-link
let it look at the first page number of the entire book
---
 ly/titling-init.ly             |  8 +-------
 scm/define-markup-commands.scm | 13 +++++++++++--
 2 files changed, 12 insertions(+), 9 deletions(-)

diff --git a/ly/titling-init.ly b/ly/titling-init.ly
index eb9ced5375..f397ad6bd9 100644
--- a/ly/titling-init.ly
+++ b/ly/titling-init.ly
@@ -76,14 +76,8 @@ scoreTitleMarkup = \markup { \column {
 #(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)))
+      (book-first-page layout props)))
 
 #(define (book-last-page? layout props)
    "Return #t iff the current page number, got from @code{props}, is the
diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm
index 363977da9b..0022d721fc 100644
--- a/scm/define-markup-commands.scm
+++ b/scm/define-markup-commands.scm
@@ -509,6 +509,16 @@ in the PDF backend.
 
     (ly:stencil-add (ly:make-stencil link-expr xextent yextent) stil)))
 
+(define-public (book-first-page layout props)
+  "Return the @code{'first-page-number} of the entire book"
+  (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?)
   #:category other
@@ -536,8 +546,7 @@ only works in the PDF backend.
                           (if (list? table)
                               (assoc-get label table)
                               #f))
-                        (first-page-number
-                          (ly:output-def-lookup layout 'first-page-number))
+                        (first-page-number (book-first-page layout props))
                         (current-page-number
                           (if table-page-number
                               (1+ (- table-page-number first-page-number))
-- 
2.39.5