\version "2.18.2" startBarre = #(define-event-function (parser location fret-nbr) (markup?) (let* ((mrkp (markup #:upright #:concat (#:lower 0.08 fret-nbr #:hspace 0.3)))) (define (width grob text-string) (let* ((layout (ly:grob-layout grob)) (props (ly:grob-alist-chain grob (ly:output-def-lookup layout 'text-font-defaults)))) (interval-length (ly:stencil-extent (interpret-markup layout props (markup text-string)) X)))) #{ \tweak TextSpanner.after-line-breaking #(lambda (grob) (let* ((mrkp-width (width grob mrkp)) (line-thickness (ly:staff-symbol-line-thickness grob))) (ly:grob-set-nested-property! grob '(bound-details left padding) (+ (/ mrkp-width -4) (* line-thickness 2))))) \tweak TextSpanner.font-size -2 \tweak TextSpanner.style #'line \tweak TextSpanner.bound-details.left.text #mrkp \tweak TextSpanner.bound-details.left.padding 0.25 \tweak TextSpanner.bound-details.left.attach-dir -1 \tweak TextSpanner.bound-details.left-broken.text ##f \tweak TextSpanner.bound-details.left-broken.attach-dir -1 %% adjust the numeric values to fit your needs: \tweak TextSpanner.bound-details.left-broken.padding 1.5 \tweak TextSpanner.bound-details.right-broken.padding 0 \tweak TextSpanner.bound-details.right.padding 0.25 \tweak TextSpanner.bound-details.right.attach-dir 2 \tweak TextSpanner.bound-details.right-broken.text ##f \tweak TextSpanner.bound-details.right.text \markup \with-dimensions #'(0 . 0) #'(-.3 . 0) \draw-line #'(0 . -1) \startTextSpan #})) stopBarre = \stopTextSpan %% Syntax: note \startBarre "text" notes \stopBarre (text = any fret number) %% Example: { \clef "G_8" \key d\minor << { \stemUp a'16[ \startBarre "III" bes d' bes f'8] \stopBarre } \\ { \stemDown d2 } >> }