@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
@ignore
-Translation of GIT committish: 5bfe6a7cc623f289518da554f384dc8f092ea424
+Translation of GIT committish: 94ca9e6f8df4f718787266976ee68141d70d4c7c
When revising a translation, copy the HEAD committish of the
version that you are working on. For details, see the Contributors'
Guide, node Updating translation committishes..
@end ignore
-@c \version "2.12.0"
+@c \version "2.13.39"
@node Cambiar los valores por omisión
@chapter Cambiar los valores por omisión
LISP) para aportar la infraestructura. La sobreescritura de las
decisiones de disposición da acceso efectivo a las interioridades del
programa, lo que requiere código de Scheme como entrada. Los
-elementos de Scheme se inauguran dentro de un archivo @code{.ly} con
-el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de
-Scheme} contiene un breve tutorial sobre la introducción de números,
+elementos de Scheme se inauguran dentro de un archivo @file{.ly} con
+el símbolo de cuadradillo @code{#}.@footnote{@rextend{Tutorial de Scheme}
+contiene un breve tutorial sobre la introducción de números,
listas, cadenas y símbolos en Scheme.}
@menu
@rlearning{Contextos y grabadores}.
Archivos de inicio:
-@file{ly/@/engraver@/-init@/.ly},
-@file{ly/@/performer@/-init@/.ly}.
+@file{ly/engraver-init.ly},
+@file{ly/performer-init.ly}.
Fragmentos de código:
@rlsr{Contexts and engravers}.
@menu
* Score. El contexto maestro::
-* Contextos del nivel superior. Contenedores de pentagramas::
+* Contextos del nivel superior. Contenedores de pentagramas::
* Contextos de nivel intermedio. Pentagramas::
* Contextos del nivel más bajo. Voces::
@end menu
Se crea implícitamente una instancia del contexto Score cuando se
procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
-@{@dots{}@}}, o explícitamente cuando se ejecuta una instrucción
-@code{\new Score}.
+@{@dots{}@}}.
@node Contextos del nivel superior. Contenedores de pentagramas
@unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas
@subsection Crear contextos
@translationof Creating contexts
+@c TODO more complete descriptions rather than learning style
+
Para partituras que sólo tienen una voz y un pentagrama, los contextos
se crean automáticamente. Para partituras más complejas, es necesario
crearlos a mano. Existen tres instrucciones que hacen esto.
pentagramas. Cada parte que debe ir en su propio pentagrama, va
precedida de @code{\new Staff}.
-@lilypond[quote,verbatim,relative=2,ragged-right,fragment]
+@lilypond[quote,verbatim,relative=2,ragged-right]
<<
\new Staff { c4 c }
\new Staff { d4 d }
Esta variante se usa con expresiones musicales que se pueden
interpretar en varios niveles. Por ejemplo, la instrucción
-@code{\applyOutput} (véase @rextend{Ejecutar una función sobre todos
-los objetos de la presentación}). Sin una instrucción @code{\context}
+@code{\applyOutput} (véase
+@rextend{Ejecutar una función sobre todos los objetos de la presentación}).
+Sin una instrucción @code{\context}
explícita, normalmente se aplicaría a @code{Voice}
@example
@code{Time_signature_engraver} y @code{Clef_engraver} de un contexto
@code{Staff}:
-@lilypond[quote,relative=1,verbatim,fragment]
+@lilypond[quote,relative=1,verbatim]
<<
\new Staff {
f2 g
@cindex polimétricas, partituras
@cindex compases distintos al mismo tiempo
-@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
-\new Score \with {
- \remove "Timing_translator"
- \remove "Default_bar_line_engraver"
-} <<
+@lilypond[quote,verbatim]
+\score {
+ <<
+ \new Staff \with {
+ \consists "Timing_translator"
+ \consists "Default_bar_line_engraver"
+ } {
+ \time 3/4
+ c4 c c c c c
+ }
\new Staff \with {
\consists "Timing_translator"
\consists "Default_bar_line_engraver"
} {
- \time 3/4
+ \time 2/4
c4 c c c c c
}
- \new Staff \with {
- \consists "Timing_translator"
- \consists "Default_bar_line_engraver"
- } {
- \time 2/4
- c4 c c c c c
- }
>>
+\layout {
+ \context {
+ \Score
+ \remove "Timing_translator"
+ \remove "Default_bar_line_engraver"
+ }
+ }
+}
@end lilypond
@knownissues
aplicarlos a una definición de @code{\context} por referencia a dicha
variable.
-La instrucción @code{\RemoveEmptyStaffContext} sobreescribe nuestros
-ajustes en curso para @code{\Staff}. Si queremos cambiar los valores
-predeterminados para un pentagrama que utilice
-@code{\RemoveEmptyStaffContext}, debe hacerlo después de llamar a
-@code{\RemoveEmptyStaffContext}, o sea
+La instrucción @code{\RemoveEmptyStaves} sobreescribe nuestros ajustes
+en curso para el contexto @code{\Staff}. Si queremos cambiar los
+valores predeterminados para un pentagrama que utilice
+@code{\RemoveEmptyStaves}, debemos hacerlo después de llamar a
+@code{\RemoveEmptyStaves}, o sea
@example
\layout @{
\context @{
- \RemoveEmptyStaffContext
+ \Staff \RemoveEmptyStaves
\override Stem #'thickness = #4.0
@}
Supongamos que queremos mover la indicación de digitación del
fragmento siguiente:
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
c-2
\stemUp
f
Hemos estado hablando de @emph{el} objeto @code{Fingering}, pero
realmente esto no significa mucho. El archivo de inicialización
(véase @rlearning{Otras fuentes de información})
-@file{scm/@/define@/-grobs@/.scm} muestra el alma del @q{objeto},
+@file{scm/define-grobs.scm} muestra el alma del @q{objeto},
@example
(Fingering
(script-priority . 100)
(stencil . ,ly:text-interface::print)
(direction . ,ly:script-interface::calc-direction)
- (font-encoding . fetaNumber)
+ (font-encoding . fetaText)
(font-size . -5) ; don't overlap when next to heads.
(meta . ((class . Item)
(interfaces . (finger-interface
Recordemos que queríamos cambiar la posición del @b{2} en
-@lilypond[quote,fragment,relative=2,verbatim]
+@lilypond[quote,relative=2,verbatim]
c-2
\stemUp
f
Fingering, es decir, antes del @code{c2}, llegamos al siguiente
resultado:
-@lilypond[quote,relative=2,fragment,verbatim]
+@lilypond[quote,relative=2,verbatim]
\once \override Voice.Fingering #'padding = #3
c-2
\stemUp
* La instrucción override::
* La instrucción tweak::
* set frente a override::
+* Modificación de las listas-A::
@end menu
pentagrama actual. Otros pentagramas mantienen su aspecto normal.
Aquí vemos la instrucción en pleno funcionamiento:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\override Staff.Stem #'thickness = #4.0
c4
@code{Voice}. Al añadir @code{\once} se aplica el cambio durante un
solo paso de tiempo.
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
c4
\once \override Stem #'thickness = #4.0
c4
ligaduras o barras, la instrucción @code{\override} se debe ejecutar
en el momento en que se crea el objeto. En este ejemplo:
-@lilypond[quote,fragment,verbatim,relative=2]
+@lilypond[quote,verbatim,relative=2]
\override Slur #'thickness = #3.0
c8[( c
-\override Beam #'thickness = #0.6
+\override Beam #'beam-thickness = #0.6
c8 c])
@end lilypond
si el valor de la propiedad de contexto @code{skipBars} se establece a
@code{#t} (verdadero):
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
R1*2
\set Score.skipBars = ##t
R1*2
contexto actual de nivel más bajo (normalmente @code{ChordNames},
@code{Voice} o @code{Lyrics}). En este ejemplo:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##f
<<
{
nivel más bajo, que en este caso es @code{Voice}, no tendrá ningún
efecto, porque skipBars es una propiedad del contexto @code{Score}.
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
R1*2
\set skipBars = ##t
R1*2
@var{contexto}. Properties that have been set in enclosing contexts will
not be altered by an unset in an enclosed context:
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
\set Score.autoBeaming = ##t
<<
{
Los ajustes que se aplican solamente a un único paso de tiempo se
pueden escribir con @code{\once}, por ejemplo en
-@lilypond[quote,verbatim,relative=2,fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\once \set fontSize = #4.7
c4
los grobs. Las decscripciones de los grobs reciben un nombre en
@code{MayúsculasDeCamello} (empezando en mayúscula). Contienen los
@q{ajustes predeterminados} para un tipo particular de grob, en forma
-de lista asociativa. Consulte @file{scm/@/define@/-grobs@/.scm} para
+de lista asociativa. Consulte @file{scm/define-grobs.scm} para
ver los ajustes de cada descripción de grob. Las descripciones de
grob se modifican con @code{\override}.
sobreescribiendo la propiedad @code{thickness} (grosor) del objeto
@code{Stem} (plica):
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
c4 c
\override Voice.Stem #'thickness = #3.0
c4 c
Si no se ha especificado ningún contexto en la instrucción
@code{\override}, se utiliza el contexto del nivel inferior:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{ \override Staff.Stem #'thickness = #3.0
<<
{
El efecto de una instrucción de sobreescritura @code{\override} se
puede deshacer con @code{\revert}:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
c4
\override Voice.Stem #'thickness = #3.0
c4 c
los grobs del contexto afectado partiendo del momento actual y hacia
adelante:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{
<<
{
Se puede usar @code{\once} con @code{\override} para afectar solamente
al instante de tiempo actual:
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
{
<<
{
elemento de código de la entrada, puede usar la función @code{\tweak},
por ejemplo
-@lilypond[relative=2,verbatim]
+@lilypond[relative=2,verbatim,quote]
< c
\tweak #'color #red
d
El flujo musical que se genera a partir de una sección de un archivo
de entrada (incluido cualquier elemento insertado automáticamente)
-puede examinarse, véase @rextend{Presentación de las expresiones
-musicales}. Esto puede ser de utilidad en la determinación de lo que
+puede examinarse, véase @rextend{Presentación de las expresiones musicales}.
+Esto puede ser de utilidad en la determinación de lo que
puede modificarse por medio de una instrucción @code{\tweak}.
@end ignore
+
+@node Modificación de las listas-A
+@subsection Modificación de las listas-A
+@translationof Modifying alists
+
+Ciertas propiedades configurables por parte del usuario se representan
+internamente como @emph{listas-A} (listas asociativas), que almacenan
+duplas de @emph{claves} y @emph{valores}. La estructura de una
+lista-A es la siguiente:
+
+@example
+'((@var{clave1} . @var{valor1})
+ (@var{clave2} . @var{valor2})
+ (@var{clave3} . @var{valor3})
+ @dots{})
+@end example
+
+Si una lista-A es una propiedad de un grob o una variable de
+@code{\paper}, sus claves se pueden modificar individualmente sin que
+afecte a las otras claves.
+
+Por ejemplo, para reducir el espacio entre pentagramas adyacentes
+dentro de un grupo, use la propiedad @code{staff-staff-spacing}
+del grob @code{StaffGrouper}. La propiedad es una lista-A con cuatro
+claves: @code{padding} (relleno), @code{space} (espacio),
+@code{minimum-distance} (distancia mínima) y @code{stretchability}
+(ampliabilidad). Tres de las cuatro claves tienen valores
+predeterminados en el inicio; éstos se relacionan en la sección
+@qq{Backend} de la Referencia de Funcionamiento Interno
+(véase @rinternals{StaffGrouper}):
+
+@file{scm/define-grobs.scm}:
+
+@example
+'((space . 9) (minimum-distance . 7) (padding . 1))
+@end example
+
+Una forma de acercar los pentagramas entre sí es reducir el valor de
+la clave @code{space} (@code{9}) para que se corresponda con el valor
+de @code{minimum-distance} (@code{7}). Para modificar una única clave
+de forma individual, utilice una @emph{declaración anidada}:
+
+@lilypond[quote,verbatim]
+% default space between staves
+\new PianoStaff <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+
+% reduced space between staves
+\new PianoStaff \with {
+ % this is the nested declaration
+ \override StaffGrouper #'staff-staff-spacing #'space = #7
+} <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+@end lilypond
+
+La utilización de una declaración anidada actualiza la clave
+especificada (como @code{space} en el ejemplo anterior) sin alterar ninguna
+de las otras claves que ya se habían establecido para la misma
+propiedad.
+
+Ahora, supongamos que deseamos que los pentagramas estén tan próximos
+como sea posible sin que se superpongan. La manera más sencilla de
+hacerlo es establecer las cuatro claves de la lista-A a cero. Sin
+embargo, no es necesario escribir cuatro declaraciones anidadas,
+una por cada clave. En lugar de eso, se puede redefinir
+completamente la propiedad con una sola declaración, como una lista-A:
+
+@lilypond[quote,verbatim]
+\new PianoStaff \with {
+ \override StaffGrouper #'staff-staff-spacing =
+ #'((padding . 0)
+ (space . 0)
+ (minimum-distance . 0)
+ (stretchability . 0))
+} <<
+ \new Staff { \clef treble c''1 }
+ \new Staff { \clef bass c1 }
+>>
+@end lilypond
+
+Observe que cualquier clave que no haya sido relacionada
+explícitamente en la definición de la lista-A, será reiniciada a sus
+valores @emph{predeterminados si no se han fijado}. En el caso de
+@code{staff-staff-spacing}, el valor de cualquier clave no fijada se
+reiniciaría a cero (excepto @code{stretchability}, que toma el valor
+de @code{space} si no se fija). Así, las dos declaraciones siguientes
+son equivalentes:
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+ #'((space . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+ #'((padding . 0)
+ (space . 7)
+ (minimum-distance . 0)
+ (stretchability . 7))
+@end example
+
+Una consecuencia de esto (posiblemente no intencionada) es la
+eliminación de cualquier valor predeterminado @emph{inicializado} que
+se establezca en un archivo de inicio y que se carga cada vez que se
+compila un archivo de entrada. En el ejemplo anterior, los valores
+predeterminados inicializados para @code{padding} y
+@code{minimum-distance} (definidos en @file{scm/define-grobs.scm}) se
+reinician a sus valores predeterminados si no se han fijado (cero para
+las dos claves). La definición de una propiedad o variable como una
+lista-A (de cualquier tamaño) siempre reinicia todos los valores de
+clave no establecidos a sus valores predeterminados si no se han
+fijado. Ano ser que este sea el resultado deseado, es más seguro
+actualizar los valores de clave inddividualmente con una declaración
+anidada.
+
+@warning{Las declaraciones anidadas no funcionan para las listas-A de
+propiedades de contexto (como @code{beamExceptions},
+@code{keySignature}, @code{timeSignatureSettings}, etc.). Estas
+propiedades sólo se pueden modificar redefiniéndolas completamente
+como listas-A.}
+
+
@node Conceptos y propiedades útiles
@section Conceptos y propiedades útiles
@translationof Useful concepts and properties
especifican por las sub-listas @code{left-broken} y
@code{right-broken} de @code{bound-details}. Por ejemplo:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
\override Glissando #'breakable = ##t
\override Glissando #'(bound-details right-broken Y) = #-3
c1 \glissando \break
usa para escribir @i{cresc.}, @i{tr} y otros textos sobre los objetos
de extensión horizontales.
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+@lilypond[quote,ragged-right,relative=2,verbatim]
\override TextSpanner #'(bound-details left text)
= \markup { \small \bold Slower }
c2\startTextSpan b c a\stopTextSpan
@code{stencil-align-dir-y} o @code{stencil-offset} se moverá el
símbolo del borde verticalmente con relación al extremo de la línea:
-@lilypond[relative=1,fragment,verbatim]
+@lilypond[relative=1,quote,verbatim]
\override TextSpanner
#'(bound-details left stencil-align-dir-y) = #-2
\override TextSpanner
siguiente barra de compás si @code{to-barline} es verdadero y se
produce una divisoria antes de la siguiente nota.
-@lilypond[verbatim,quote,ragged-right,relative=2,fragment]
+@lilypond[verbatim,quote,ragged-right,relative=2]
\endSpanners
c2 \startTextSpan c2 c2
\endSpanners
He aquí un ejemplo de los distintos estilos de línea disponibles, y
cómo aplicarles ajustes finos.
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@lilypond[relative=2,ragged-right,verbatim,quote]
d2 \glissando d'2
\once \override Glissando #'style = #'dashed-line
d,2 \glissando d'2
computan al vuelo para cada uno de los objetos gráficos, pero es
posible sobreescribirlos:
-@lilypond[relative=2,ragged-right,verbatim,fragment]
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
e2 \glissando f
\once \override Glissando #'(bound-details right Y) = #-2
e2 \glissando f
Archivos de inicio:
-@file{scm/@/define@/-grobs@/.scm}.
+@file{scm/define-grobs.scm}.
Fragmentos de código:
@rlsr{Tweaks and overrides}.
Extender:
-@rextend{Interfaces for programmers}.
+@rextend{Interfaces para programadores}.
Referencia de funcionamiento interno:
@rinternals{All layout objects}.
Los argumentos @code{parser} y @code{location} son necesarios, y se
utilizan en algunas situaciones avanzadas como se encuentra descrito
-en @rextend{Music function syntax}. Para las funciones de
-sustitución, tan sólo hemos de asegurarnos de incluirlos.
+en @rextend{Sintaxis de las funciones musicales}. Para las funciones
+de sustitución, tan sólo hemos de asegurarnos de incluirlos.
También es necesaria la lista de predicados de tipo. Algunos de los
predicados de tipo más comunes que se utilizan en las funciones
\relative c' { c4 d e f \custosNote g }
@end lilypond
-Substitution functions with multiple arguments can be defined:
+Se pueden definir funciones de sustitución con más de un argumento:
@lilypond[quote,verbatim,ragged-right]
tempoPadded =