Hello Lukas and Harm, > 2020/11/02 19:50、Thomas Morley <thomasmorle...@gmail.com>のメール: > > Am So., 1. Nov. 2020 um 16:58 Uhr schrieb Lukas-Fabian Moser <l...@gmx.de>: >> >> Hi Jun, >> >> Am 01.11.20 um 14:07 schrieb 田村淳: >>> Hello, >>> >>> I’m looking for a “bracket” version of “\parenthesize” function to >>> enclose an articulation or ornamentation mark within a pair of square >>> brackets. I’d like to use parenthesis and brackets to indicate two >>> different types of editorial additions. I achieved the same for >>> dynamics marks by slightly modifying the LSR code “Creating "real" >>> parenthesized dynamics” >>> http://lsr.di.unimi.it/LSR/Item?id=382 >>> http://lsr.di.unimi.it/LSR/Snippet?id=382 >>> Is there an easy way to create “\bracketize” function? >>> >>> Thanks in advance and best regards. >> >> It's not ideal since the X-extent is hardcoded, but as a starting point: >> >> \version "2.20" >> >> bracketify = >> \tweak ParenthesesItem.stencil #ly:text-interface::print >> \tweak ParenthesesItem.font-size -3.7 >> \tweak ParenthesesItem.text \markup \general-align #Y #CENTER { >> \hspace #0.6 \center-align \line { [ \hspace #1 ] } } >> \parenthesize \etc >> >> \relative { >> c'4 \bracketify d \parenthesize e f >> e\bracketify -- >> } >> >> Lukas >> >> > > Here my own take: > > #(define-public (parentheses-item::calc-bracket-stencils grob) > (let* ((parent (ly:grob-parent grob Y)) > (y-extent (ly:grob-extent parent parent Y)) > (details (ly:grob-property grob 'details)) > (thick (assoc-get 'bracket-thickness details 0.1)) > (bracket-vertical-padding > (assoc-get 'bracket-vertical-padding details 0.1)) > (bracket-protrusion > (assoc-get 'bracket-protrusion details 0.25)) > (pad-y-extent (interval-widen y-extent bracket-vertical-padding)) > (lp > (ly:stencil-aligned-to > (ly:stencil-aligned-to > (ly:bracket Y pad-y-extent thick bracket-protrusion) > Y CENTER) > X RIGHT)) > (rp > (ly:stencil-aligned-to > (ly:stencil-aligned-to > (ly:bracket Y pad-y-extent thick (- bracket-protrusion)) > Y CENTER) > X LEFT))) > (list lp rp))) > > > bracketify = > \tweak ParenthesesItem.stencils #parentheses-item::calc-bracket-stencils > %% \tweak ParenthesesItem.padding #0 > %% \tweak ParenthesesItem.details.bracket-vertical-padding #1 > %% \tweak ParenthesesItem.details.bracket-thickness #1 > %% \tweak ParenthesesItem.details.bracket-protrusion #0.5 > \parenthesize \etc > > \relative { > c'4 \bracketify d \parenthesize e f\bracketify -. > e\bracketify -\upbow > } > > Cheers, > Harm
Thanks for your snippets! Harm’s snippet works great for me as I’ve been especially looking for a bracketified trill. Thanks again and best regards, Jun #(define-public (parentheses-item::calc-bracket-stencils grob) (let* ((parent (ly:grob-parent grob Y)) (y-extent (ly:grob-extent parent parent Y)) (details (ly:grob-property grob 'details)) (thick (assoc-get 'bracket-thickness details 0.1)) (bracket-vertical-padding (assoc-get 'bracket-vertical-padding details 0.1)) (bracket-protrusion (assoc-get 'bracket-protrusion details 0.25)) (pad-y-extent (interval-widen y-extent bracket-vertical-padding)) (lp (ly:stencil-aligned-to (ly:stencil-aligned-to (ly:bracket Y pad-y-extent thick bracket-protrusion) Y CENTER) X RIGHT)) (rp (ly:stencil-aligned-to (ly:stencil-aligned-to (ly:bracket Y pad-y-extent thick (- bracket-protrusion)) Y CENTER) X LEFT))) (list lp rp))) bracketify = \tweak ParenthesesItem.stencils #parentheses-item::calc-bracket-stencils % \tweak ParenthesesItem.padding #0 % \tweak ParenthesesItem.details.bracket-vertical-padding #0 \tweak ParenthesesItem.details.bracket-thickness #0.2 % \tweak ParenthesesItem.details.bracket-protrusion #0.5 \parenthesize \etc \relative { c'4 \bracketify d \parenthesize e f\bracketify -. e\bracketify -\upbow d\bracketify\trill c\bracketify\prall b\bracketify\turn a1\bracketify\fermata }