lilypond-user
[Top][All Lists]
Advanced

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

Re: Defining a new markup command (e.g. \lower by a specified amount)


From: Thomas Morley
Subject: Re: Defining a new markup command (e.g. \lower by a specified amount)
Date: Wed, 16 May 2012 02:31:42 +0200

2012/5/15 Philip Thomas <address@hidden>:
> I am having great difficulty getting the hang of defining new markup commands.
>
> The examples given in the Extending
> manual in section 2.2.3 "New markup command definition" are comprehensible to 
> me in their own right, but they aren't
> exactly simple examples, and I have so far failed to adapt definitions found 
> in the scm/define-markup-commands.scm file
> to make my own new commands.
>
> The particular problem that I'm trying to get to grips with at the moment is 
> this:
>
> I
> want to use the \lower command at about 15 places in text in a \markup block 
> (i.e. outside the \score block). The
> \lower command works just fine to get the spacing I want between sections of 
> text (whereas both \override #'(baseline-
> skip . xx) and \vspace #xx have proved quirky). The problem is that I don't 
> at this stage know exactly how much I want
> to lower the text by (\lower #xx). When the overall layout of the score is 
> settled, I would like to experiment with
> different values of N, without having to change each \lower command 
> separately. The solution seemed to me to be to
> define a new markup command (e.g. \dropNextline) which specifies the amount 
> to which the line should be lowered. Then
> my 15 entries could all read \dropNextLine { text text text }, and the 
> experiment would only involve changing the value
> of xx in the define-markup-command code until the overall spacing is correct 
> when judged by the eye. But I'm bu**ered
> if I can get it to work. Sorry if I'm ignorant of something I should have 
> found in the documentation.
>
> I guess I have
> two questions:
>
> (1) How to define a suitable \dropNextLine command?

I'm not sure what the new command should do. A _short_ example would
have been helpful.

Perhaps:

\version "2.15.36"

#(define add-amount 2)

#(define-markup-command (custom-lower layout props amount arg)
  (number? markup?)
  (ly:stencil-translate-axis (interpret-markup layout props arg)
                             (- (* amount add-amount)) Y))
                        
\markup \column {
        "1111"
        \custom-lower #10
        "2222"
        \custom-lower #20
        "3333"
}

Play around with the value of add-amount.

BTW, why do you reject baseline-skip?

>
> (2) Is there an explanation anywhere from which I
> can learn in a graded, structured, way how to define my own markup commands 
> so I don't have to presume repeatedly upon
> the kindness of other users on the forum? Are there some examples which would 
> lead me by the hand a bit more gently,
> starting from the commands scm/define-markup-commands.scm and working them up 
> into a useable result?

Well, starting with manipulating lily-code I found the instruction of
the Extending-manual quite helpful.
Perhaps you find these steps helpful (which I performed, to teach myself) :
1. copy a _simple_ predifined markup-comand in a file
2. rename it
3. test the renamed version. Does it work? If yes, fine. If not, check
all again. No mistake? -> ask the list
4. try to manipulate/add non-invasive properties, perhaps fontsize,
color, rotate etc.
5. If succes, try to code more complicated stuff. If not, don't worry,
try again :) and/or ask the list.

And study all the altered and new defined markup-commands you can catch.

>
> By the way, I
> have found define-music-function code much easier to handle, although I 
> readily admit to being rather a beginner.

Different tools, different rules.
Writing music-functions can be very complicated, too. Depends on what
is intended.

If you found "define-music-function code much easier to handle" you
may want to express your thankfulness to David Kastrup and his great
parser-work.
http://news.lilynet.net/?The-LilyPond-Report-24

>
>
> Cheers, Philip
>

HTH,
  Harm



reply via email to

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