(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
(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))
(define-markup-command (whiteout-box layout props arg)
(markup?)
#:category other
+ #:properties ((thickness 0))
"
-@cindex adding a rounded rectangular white background to text
+@cindex adding a rectangular white background to text
-Provide a rounded rectangular white background for @var{arg}.
+Provide a rectangular white background for @var{arg}.
@lilypond[verbatim,quote]
\\markup {
\\combine
\\filled-box #'(-1 . 10) #'(-3 . 4) #1
- \\whiteout-box whiteout-box
+ \\override #'(thickness . 1.5) \\whiteout-box whiteout-box
}
@end lilypond"
- (stencil-whiteout-box (interpret-markup layout props arg)))
+ (stencil-whiteout-box
+ (interpret-markup layout props arg)
+ (* thickness
+ (ly:output-def-lookup layout 'line-thickness))))
(define-markup-command (pad-markup layout props amount arg)
(number? markup?)
Print two markups on top of each other.
Note: @code{\\combine} cannot take a list of markups enclosed in
-curly braces as an argument; the follow example will not compile:
-
-@example
-\\combine @{ a list @}
-@end example
+curly braces as an argument; for this purpose use @code{\\overlay} instead.
@lilypond[verbatim,quote]
\\markup {
(s2 (interpret-markup layout props arg2)))
(ly:stencil-add s1 s2)))
+(define-markup-command (overlay layout props args)
+ (markup-list?)
+ #:category align
+ "
+@cindex merging text
+
+Takes a list of markups combining them.
+
+@lilypond[verbatim,quote]
+\\markup {
+ \\fontsize #5
+ \\override #'(thickness . 2)
+ \\overlay {
+ \\draw-line #'(0 . 4)
+ \\arrow-head #Y #DOWN ##f
+ \\translate #'(0 . 4)\\arrow-head #Y #UP ##f
+ }
+}
+@end lilypond"
+ (apply ly:stencil-add (interpret-markup-list layout props args)))
+
;;
;; TODO: should extract baseline-skip from each argument somehow..
;;
(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)))
flag-stencil))
- (let* ((font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic))
+ (let* ((font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic)
+ (font-name . #f))
props)))
(size-factor (magstep font-size))
(blot (ly:output-def-lookup layout 'blot-diameter))
(let* ((font
(ly:paper-get-font layout
- (cons '((font-encoding . fetaMusic)) props)))
+ (cons '((font-encoding . fetaMusic)
+ (font-name . #f))
+ props)))
(rest-glyph-name
(let ((result
(get-glyph-name font