1 % DO NOT EDIT this file manually; it is automatically
2 % generated from Documentation/snippets/new
3 % Make any changes in Documentation/snippets/new/
4 % and then run scripts/auxiliar/makelsr.py
6 % This file is in the public domain.
7 %% Note: this file works from version 2.14.0
11 %% Translation of GIT committish: 6977ddc9a3b63ea810eaecb864269c7d847ccf98
14 Al trabajar con los callbacks de un grob, puede ser de mucha ayuda
15 entender el @qq{árbol genealógico} de un grob. La mayor parte de los
16 grobs tienen @qq{padres} que influyen en el posicionamiento del grob.
17 los padres X e Y influyen en las posiciones horizontal y vertical del
18 grob, respectivamente. Además, cada pade puede tener padres a su vez.
21 Por desgracia, existen varios aspectos de la genealogía de un grob que
22 pueden llevar a confusión:
27 @item Los tipos de padre que tiene un grob pueden depender del
30 @item Para ciertos grobs, los padres X e Y son el mismo.
32 @item Un @qq{ancestro} concreto puede estar relacionado con un grob de
35 @item El concepto de @qq{generaciones} es engañoso.
40 Por ejemplo, el grob @code{System} puede ser tanto un padre (sobre el
41 lado Y) como un abuelo (dos veces en el lado X) de un grob
42 @code{VerticalAlignment}.
45 Este macro imprime, en la consola, una representación textual de la
46 genealogía de un grob.
49 Cuando se llama de esta forma
53 \\once \\override NoteHead #'before-line-breaking = #display-ancestry
59 Se genera la siguiente salida:
63 ------------------------------------
65 NoteHead X,Y: NoteColumn
69 X: NonMusicalPaperColumn
72 X: NonMusicalPaperColumn
79 doctitlees = "Imprimir el árbol genealógico de un grob"
81 lsrtags = "tweaks-and-overrides"
84 When working with grob callbacks, it can be helpful to understand a
85 grob's @qq{ancestry}. Most grobs have @qq{parents} which influence the
86 positioning of the grob. X- and Y-parents influence the horizontal and
87 vertical positions for the grob, respectively. Additionally, each
88 parent may have parents of its own.
91 Unfortunately, there are several aspects of a grob's ancestry that can
98 The types of parents a grob has may depend on context.
101 For some grobs, the X- and Y-parents are the same.
104 A particular @qq{ancestor} may be related to a grob in multiple ways.
107 The concept of @qq{generations} is misleading.
112 For example, the @code{System} grob can be both parent (on the Y-side)
113 and grandparent (twice on the X-side) to a @code{VerticalAlignment}
117 This macro prints (to the console) a textual representation of a grob's
125 \\once \\override NoteHead #'before-line-breaking = #display-ancestry
131 The following output is generated:
135 ------------------------------------
137 NoteHead X,Y: NoteColumn
141 X: NonMusicalPaperColumn
144 X: NonMusicalPaperColumn
151 doctitle = "Displaying grob ancestry"
155 #(define (grob-name grob)
157 (assoc-ref (ly:grob-property grob 'meta) 'name)
160 #(define (get-ancestry grob)
161 (if (not (null? (ly:grob-parent grob X)))
162 (list (grob-name grob)
163 (get-ancestry (ly:grob-parent grob X))
164 (get-ancestry (ly:grob-parent grob Y)))
167 #(define (format-ancestry lst padding)
169 (symbol->string (car lst))
172 (if (list? (cadr lst))
173 (format-ancestry (cadr lst) (+ padding 3))
174 (symbol->string (cadr lst))))
176 (if (list? (caddr lst))
177 (format-ancestry (caddr lst) (+ padding 3))
178 (symbol->string (caddr lst)))))
179 (if (equal? X-ancestry Y-ancestry)
182 (make-string padding #\space)
184 (if (list? (cadr lst))
185 (format-ancestry (cadr lst) (+ padding 5))
186 (symbol->string (cadr lst))))
189 (make-string padding #\space)
192 (make-string padding #\space)
197 #(define (display-ancestry grob)
200 (format #f "~3&~a~2%" (make-string 36 #\-))
201 (format-ancestry (get-ancestry grob) 0)
205 \once \override NoteHead #'before-line-breaking = #display-ancestry
207 \once \override Accidental #'before-line-breaking = #display-ancestry
208 \once \override Arpeggio #'before-line-breaking = #display-ancestry