X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=Documentation%2Fuser%2Fprogramming-interface.itely;h=91019af07bc0d977893e83c12a5dbe40310e0d2b;hb=6ccfd4eb63825bd294af654572068c1c1af13c70;hp=b0b6ba9a09c9005fc77c533cea702017aec837f0;hpb=de451af43aef0220738bfdd5329f0685bdaba3d2;p=lilypond.git diff --git a/Documentation/user/programming-interface.itely b/Documentation/user/programming-interface.itely index b0b6ba9a09..91019af07b 100644 --- a/Documentation/user/programming-interface.itely +++ b/Documentation/user/programming-interface.itely @@ -7,7 +7,7 @@ version that you are working on. See TRANSLATION for details. @end ignore -@c \version "2.11.61" +@c \version "2.12.0" @node Interfaces for programmers @chapter Interfaces for programmers @@ -17,13 +17,13 @@ not familiar with Scheme, you may wish to read our @rlearning{Scheme tutorial}. @menu -* Music functions:: -* Programmer interfaces:: -* Building complicated functions:: -* Markup programmer interface:: -* Contexts for programmers:: +* Music functions:: +* Programmer interfaces:: +* Building complicated functions:: +* Markup programmer interface:: +* Contexts for programmers:: * Scheme procedures as properties:: -* Using Scheme code instead of \tweak:: +* Using Scheme code instead of \tweak:: * Difficult tweaks:: @end menu @@ -34,13 +34,13 @@ not familiar with Scheme, you may wish to read our This section discusses how to create music functions within LilyPond. @menu -* Overview of music functions:: -* Simple substitution functions:: -* Paired substitution functions:: -* Mathematics in functions:: -* Void functions:: -* Functions without arguments:: -* Overview of available music functions:: +* Overview of music functions:: +* Simple substitution functions:: +* Paired substitution functions:: +* Mathematics in functions:: +* Void functions:: +* Functions without arguments:: +* Overview of available music functions:: @end menu @node Overview of music functions @@ -51,8 +51,8 @@ code is easy. The general form of these functions is @example function = -#(define-music-function (parser location @var{var1} @var{var2}... ) - (@var{var1-type?} @var{var2-type?}...) +#(define-music-function (parser location @var{var1} @var{var2}...@var{vari}... ) + (@var{var1-type?} @var{var2-type?}...@var{vari-type?}...) #@{ @emph{...music...} #@}) @@ -62,10 +62,10 @@ function = where @multitable @columnfractions .33 .66 -@item @var{argi} @tab @var{i}th variable -@item @var{argi-type?} @tab type of variable +@item @var{vari} @tab @var{i}th variable +@item @var{vari-type?} @tab type of @var{i}th variable @item @var{...music...} @tab normal LilyPond input, using - variables as @code{#$var1}. + variables as @code{#$var1}, etc. @end multitable There following input types may be used as variables @@ -74,7 +74,7 @@ other documentation specifically about Scheme for more variable types. @multitable @columnfractions .33 .66 -@headitem Input type @tab @var{argi-type?} notation +@headitem Input type @tab @var{vari-type?} notation @item Integer @tab @code{integer?} @item Float (decimal number) @tab @code{number?} @item Text string @tab @code{string?} @@ -83,9 +83,9 @@ variable types. @item A pair of variables @tab @code{pair?} @end multitable -The @code{parser} and @code{location} argument are mandatory, +The @code{parser} and @code{location} arguments are mandatory, and are used in some advanced situations. The @code{parser} -argument is used to access to the value of another LilyPond +argument is used to gain access to the value of another LilyPond variable. The @code{location} argument is used to set the @q{origin} of the music expression that is built by the music function, so that in case of a syntax error LilyPond @@ -297,8 +297,8 @@ This section contains information about mixing LilyPond and Scheme. @menu -* Input variables and Scheme:: -* Internal music representation:: +* Input variables and Scheme:: +* Internal music representation:: @end menu @@ -360,7 +360,7 @@ traLaLa = { c'4 d'4 } { \twice } @end lilypond -Due to parser lookahead +@c Due to parser lookahead In this example, the assignment happens after parser has verified that nothing interesting happens after @code{traLaLa = @{ ... @}}. Without @@ -374,8 +374,9 @@ wrapping a Scheme value in the function @code{ly:export}, a Scheme value is interpreted as if it were entered in LilyPond syntax. Instead of defining @code{\twice}, the example above could also have been written as + @example -@dots{} +... @{ #(ly:export (make-sequential-music (list newLa))) @} @end example @@ -438,7 +439,7 @@ under @rinternals{Music properties}. A compound music expression is a music object that contains other music objects in its properties. A list of objects can be stored in the @code{elements} property of a music object, or a single @q{child} -music object in the @code{element} object. For example, +music object in the @code{element} property. For example, @rinternals{SequentialMusic} has its children in @code{elements}, and @rinternals{GraceMusic} has its single argument in @code{element}. The body of a repeat is stored in the @code{element} @@ -849,10 +850,10 @@ Markups are implemented as special Scheme functions which produce a Stencil object given a number of arguments. @menu -* Markup construction in Scheme:: -* How markups work internally:: -* New markup command definition:: -* New markup list command definition:: +* Markup construction in Scheme:: +* How markups work internally:: +* New markup command definition:: +* New markup list command definition:: @end menu @@ -865,14 +866,14 @@ The @code{markup} macro builds markup expressions in Scheme while providing a LilyPond-like syntax. For example, @example (markup #:column (#:line (#:bold #:italic "hello" #:raise 0.4 "world") - #:bigger #:line ("foo" "bar" "baz"))) + #:larger #:line ("foo" "bar" "baz"))) @end example @noindent is equivalent to: @example \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @} - \bigger \line @{ foo bar baz @} @} + \larger \line @{ foo bar baz @} @} @end example @noindent @@ -1181,7 +1182,7 @@ indented. The indent width is taken from the @code{props} argument. @example #(define-markup-list-command (paragraph layout props args) (markup-list?) (let ((indent (chain-assoc-get 'par-indent props 2))) - (interpret-markup-list layout props + (interpret-markup-list layout props (make-justified-lines-markup-list (cons (make-hspace-markup indent) args))))) @end example @@ -1222,8 +1223,8 @@ This new markup list command can be used as follows: @section Contexts for programmers @menu -* Context evaluation:: -* Running a function on all layout objects:: +* Context evaluation:: +* Running a function on all layout objects:: @end menu @node Context evaluation @@ -1321,7 +1322,7 @@ In this case, the procedure is executed as soon as the value of the property is requested during the formatting process. Most of the typesetting engine is driven by such callbacks. -Properties that typically use callbacks include +Properties that typically use callbacks include @table @code @item stencil @@ -1498,7 +1499,7 @@ and @code{PaperColumn}. They can be changed with the @end example Note, however, that @code{\override}, applied to -@code{NoteMusicalPaperColumn} and @code{PaperColumn}, still works as +@code{NonMusicalPaperColumn} and @code{PaperColumn}, still works as expected within @code{\context} blocks. @end itemize