[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: \bracketize?
From: |
Thomas Morley |
Subject: |
Re: \bracketize? |
Date: |
Mon, 2 Nov 2020 11:50:35 +0100 |
Am So., 1. Nov. 2020 um 16:58 Uhr schrieb Lukas-Fabian Moser <lfm@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