(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
(x-ext (ly:stencil-extent arg-stencil X))
(y-ext (ly:stencil-extent arg-stencil Y)))
(ly:stencil-add
- (ly:make-stencil
- `(delay-stencil-evaluation
- ,(delay (let* ((table (ly:output-def-lookup layout 'label-page-table))
- (page-number (if (list? table)
- (assoc-get label table)
- #f)))
- (list 'page-link page-number
- `(quote ,x-ext) `(quote ,y-ext)))))
- x-ext
- y-ext)
- arg-stencil)))
-
+ (ly:make-stencil
+ `(delay-stencil-evaluation
+ ,(delay (let* ((table (ly:output-def-lookup layout 'label-page-table))
+ (table-page-number
+ (if (list? table)
+ (assoc-get label table)
+ #f))
+ (first-page-number (book-first-page layout props))
+ (current-page-number
+ (if table-page-number
+ (1+ (- table-page-number first-page-number))
+ #f)))
+ (list 'page-link current-page-number
+ `(quote ,x-ext) `(quote ,y-ext)))))
+ x-ext
+ y-ext)
+ arg-stencil)))
(define-markup-command (beam layout props width slope thickness)
(number? number? number?)
(thickness-offset (cons 0 (* -1 thickness dir)))
(spacing (* -1 flag-spacing factor dir))
(start (cons (- half-stem-thickness) (* half-stem-thickness dir)))
- ;; The points of a round-filled-polygon need to be given in
- ;; clockwise order, otherwise the polygon will be enlarged by
- ;; blot-size*2!
- (points (if stem-up
- (list start
- flag-end
- (offset-add flag-end thickness-offset)
- (offset-add start thickness-offset))
- (list start
- (offset-add start thickness-offset)
- (offset-add flag-end thickness-offset)
- flag-end)))
+ (points (list start
+ flag-end
+ (offset-add flag-end thickness-offset)
+ (offset-add start thickness-offset)))
(stencil (ly:round-filled-polygon points half-stem-thickness))
;; Log for 1/8 is 3, so we need to subtract 3
(flag-stencil (buildflags stencil (- log 3) stencil spacing)))