lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Getting an override into a markup function


From: Thomas Morley
Subject: Re: Getting an override into a markup function
Date: Sat, 26 Sep 2015 01:34:08 +0200

2015-09-26 0:42 GMT+02:00 Simon Albrecht <address@hidden>:
> On 25.09.2015 23:10, Thomas Morley wrote:
>>
>> 2015-09-25 12:28 GMT+02:00 Malte Meyn <address@hidden>:
>>>
>>>
>>> Am 25.09.2015 um 10:58 schrieb Urs Liska:
>>>>
>>>> {
>>>>     \override TextScript.self-alignment-X = #LEFT
>>>>     c'2 ^\markup \rotate #90 "This is a long markup" c
>>>> }
>>>>
>>> You could use an event function:
>>>
>>> %%%%%
>>> \version "2.19.27"
>>>
>>> verticalText =
>>> #(define-event-function (text) (markup?)
>>>     #{
>>>       -\tweak TextScript.self-alignment-X #LEFT
>>>       -\markup \rotate #90 #text
>>>     #})
>>>
>>> {
>>>    c'2^\verticalText \markup \italic "This is a long markup" c
>>>    c'2\verticalText "This is a long text" c
>>> }
>>> %%%%%
>>
>>
>>
>> Using \override or \tweak or an event-function will not work for
>> markups at toplevel and/or if not the entire markup is rotated, see:
>>
>> \markup {
>>      "ab"
>>      \rotate #90 "------|------"
>>      "xy"
>> }
>>
>>
>> Hence I wrote 'my-rotate':
>>
>>
>> #(define-markup-command (my-rotate layout props ang arg)
>>    (number? markup?)
>>    (let* ((stil (interpret-markup layout props arg))
>>           (stil-x-length (interval-length (ly:stencil-extent stil X)))
>>           (stil-y-length (interval-length (ly:stencil-extent stil Y))))
>>      (ly:stencil-rotate stil ang (/ stil-y-length -2) (/ stil-x-length
>> -2))))
>
>
> I also wrote a markup function for this (several hours ago, then I forgot to
> actually send it hereā€¦).
> This is just a modification of the original \rotate definition from the code
> base, adding another argument to specify the reference point used by
> ly:stencil-rotate. Choose your favouriteā€¦
>
> Yours, Simon

Actually, my proposal could be regarded as a special case of yours :)

Best,
  Harm



reply via email to

[Prev in Thread] Current Thread [Next in Thread]