(This is for Aaron (and anyone who shows interest...) Hi Aaron,
I need a little fix on the wonderful function you implemented. As you can see, in case of dynamic, the box has a little unwanted overlay. How we could avoid this? Thanks, Best P %%%% \version "2.19.83" #(define (box-stencil stencil thickness padding color expand?) "Add a box around @var{stencil}, producing a new stencil." (define (css-style-padding padding) ;; padding => (top right bottom left) (cond ((or (null? padding) (eqv? #f padding)) '(0 0 0 0)) ((number? padding) (make-list 4 padding)) ((number-pair? padding) (list (car padding) (cdr padding) (car padding) (cdr padding))) ((and (number-list? padding) (<= (length padding) 4)) (case (length padding) ((1) (make-list 4 (first padding))) ((2) (list (first padding) (second padding) (first padding) (second padding))) ((3) (list (first padding) (second padding) (third padding) (second padding))) (else padding))) (else (begin (ly:warning "Ignoring invalid padding: ~a" padding) '(0 0 0 0))))) (let* ((padding (css-style-padding padding)) (padding-top (first padding)) (padding-right (second padding)) (padding-bottom (third padding)) (padding-left (fourth padding)) (x-ext-orig (ly:stencil-extent stencil X)) (y-ext-orig (ly:stencil-extent stencil Y)) (x-ext-inner (cons (- (interval-start x-ext-orig) padding-left) (+ (interval-end x-ext-orig) padding-right))) (y-ext-inner (cons (- (interval-start y-ext-orig) padding-bottom) (+ (interval-end y-ext-orig) padding-top))) (x-ext-outer (interval-widen x-ext-inner thickness)) (y-ext-outer (interval-widen y-ext-inner thickness)) (x-ext-new (if expand? x-ext-outer x-ext-orig)) (y-ext-new (if expand? y-ext-outer y-ext-orig)) (x-rule (make-filled-box-stencil (cons 0 thickness) y-ext-inner)) (y-rule (make-filled-box-stencil x-ext-outer (cons 0 thickness))) (box (stencil-with-color (ly:stencil-add (ly:stencil-translate-axis y-rule (interval-end y-ext-inner) Y) (ly:stencil-translate-axis x-rule (interval-end x-ext-inner) X) (ly:stencil-translate-axis y-rule (interval-start y-ext-outer) Y) (ly:stencil-translate-axis x-rule (interval-start x-ext-outer) X)) color))) (ly:make-stencil (ly:stencil-expr (ly:stencil-add stencil box)) x-ext-new y-ext-new))) #(define* (make-stencil-boxer thickness padding callback #:optional (color red) (expand? #t)) "Return function that adds a box around the grob passed as argument." (lambda (grob) (box-stencil (callback grob) thickness padding color expand?))) { \override DynamicText.stencil = #(make-stencil-boxer 0.4 0 ly:text-interface::print) c'_\mf } %%%%