]> git.donarmstrong.com Git - lilypond.git/blobdiff - Documentation/es/notation/changing-defaults.itely
Doc-es: mark updated files, except texidocs.
[lilypond.git] / Documentation / es / notation / changing-defaults.itely
index 32cc0191901fe6c382ed6afff08a1754e9015d2a..a2573401f1e50f3ebfd1c7987ae6af0c933ab358 100644 (file)
@@ -1,14 +1,14 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 
 @ignore
-Translation of GIT committish: 10bd5cc93870ac4b884b8cb938cfc6a19c768097
+Translation of GIT committish: 26a079ca2393d053315ef8dbef626c897dc9645a
 
     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.13.36"
+@c \version "2.16.0"
 
 @node Cambiar los valores por omisión
 @chapter Cambiar los valores por omisión
@@ -34,15 +34,15 @@ Dicho manual relaciona todas
 las variables, funciones y opciones que se encuentran disponibles en
 LilyPond.  Está escrito como un documento HTML, que se puede encontrar
 @c leave the @uref as one long line.
-@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,en línea},
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/internals/,en@tie{}línea},
 pero que también va incluido en el paquete de la documentación de LilyPond.
 
 Internamente, LilyPond utiliza el lenguaje Scheme (un dialecto de
 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}
+elementos de Scheme se inauguran dentro de un archivo @file{.ly} con
+el símbolo de cuadradillo@tie{}@code{#}.@footnote{@rextend{Tutorial de Scheme}
 contiene un breve tutorial sobre la introducción de números,
 listas, cadenas y símbolos en Scheme.}
 
@@ -69,17 +69,16 @@ Esta sección explica qué son los contextos y cómo modificarlos.
 * Modificar los complementos (plug-ins) de contexto::
 * Cambiar los valores por omisión de los contextos::
 * Definir contextos nuevos::
-* Alinear los contextos::
+* Orden de disposición de los contextos::
 @end menu
 
-
 @seealso
 Manual de aprendizaje:
 @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}.
@@ -97,11 +96,12 @@ Los contextos se disponen de forma jerárquica:
 
 @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
 
+
 @node Score. El contexto maestro
 @unnumberedsubsubsec Score. El contexto maestro
 @translationof Score - the master of all contexts
@@ -116,6 +116,7 @@ Se crea implícitamente una instancia del contexto Score cuando se
 procesa un bloque @code{\score @{@dots{}@}} o @code{\layout
 @{@dots{}@}}.
 
+
 @node Contextos del nivel superior. Contenedores de pentagramas
 @unnumberedsubsubsec Contextos del nivel superior: contenedores de pentagramas
 @translationof Top-level contexts - staff containers
@@ -144,6 +145,7 @@ se conectan verticalmente.
 Igual que @code{GrandStaff}, pero contempla la posibilidad de poner el
 nombre del instrumento a la izquierda del sistema.
 
+
 @node Contextos de nivel intermedio. Pentagramas
 @unnumberedsubsubsec Contextos de nivel intermedio. Pentagramas
 @translationof Intermediate-level contexts - staves
@@ -270,7 +272,7 @@ Una aplicación práctica de @code{\new} es una partitura con muchos
 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 }
@@ -382,6 +384,7 @@ Para que se interprete dentro de los niveles de @code{Score} o
 
 @end itemize
 
+
 @node Mantener vivos los contextos
 @subsection Mantener vivos los contextos
 @translationof Keeping contexts alive
@@ -549,9 +552,9 @@ Los contextos de notación (como @code{Score} y @code{Staff}) no sólo
 almacenan propiedades, también contienen «plug-ins» o complementos
 llamados @q{grabadores} que crean elementos de notación.  Por ejemplo,
 el contexto @code{Voice} contiene un grabador
-@code{Note_head_engraver} que crea las cabezas de nota y el contexto
-@code{Staff} contiene un grabador @code{Key_signature_engraver} que
-crea la indicación de compás.
+@code{Note_heads_engraver} que crea las cabezas de nota y el contexto
+@code{Staff} contiene un grabador @code{Key_engraver} que
+crea la armadura.
 
 Para ver una descripción completa de todos y cada uno de los
 complementos, consulte
@@ -596,7 +599,7 @@ ejemplo sencillo que suprime los grabadores
 @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
@@ -660,82 +663,348 @@ compás independiente.
 
 @knownissues
 
-Normalmente, el orden en que se especifican los grabadores no tiene
-importancia, pero en algunos casos especiales sí la tiene, por ejemplo
-donde un grabador escribe una propiedad y otro la lee, o donde un
-grabador crea un groby otro debe procesarlo.  El orden en que los
-grabadores se especifican es el orden en que se llaman para realizar
-su tarea de procesamiento.
+El orden en que los grabadores se especifican es el orden en que se
+llaman para realizar su tarea de procesamiento.  Normalmente, el orden
+en que se especifican los grabadores no tiene importancia, pero en
+algunos casos especiales sí la tiene, por ejemplo donde un grabador
+escribe una propiedad y otro la lee, o donde un grabador crea un groby
+otro debe procesarlo.
+
+Las siguientes ordenaciones son importantes:
+
+@itemize
+@item
+el grabador de compases @code{Bar_engraver} debe ir normalmente en
+primer lugar,
+
+@item
+el grabador de digitaciones @code{New_fingering_engraver} debe ir
+antes del grabador @code{Script_column_engraver} de columnas de
+inscripciones,
+
+@item
+el @code{Timing_translator} debe ir antes del grabador de números de
+compás @code{Bar_number_engraver}.
+
+@end itemize
+
+@seealso
+Archivos instalados:
+@file{ly/engraver-init.ly}.
 
-Las siguientes ordenaciones son importantes: el grabador de compases
-@code{Bar_engraver} debe ir normalmente en primer lugar, y el grabador
-de digitaciones @code{New_fingering_engraver} debe ir antes del
-grabador @code{Script_column_engraver} de columnas de inscripciones.
-Podría haber otros que tengan dependencias de ordenación.
 
 @node Cambiar los valores por omisión de los contextos
 @subsection Cambiar los valores por omisión de los contextos
 @translationof Changing context default settings
 
-Los ajustes de contexto que están preparados para usarse de forma
-predeterminada en los contextos @code{Score}, @code{Staff} y
-@code{Voice}, se pueden especificar dentro de un bloque
-@code{\layout}, como se ilustra en el ejemplo siguiente.  El bloque
-@code{\layout} se debe colocar dentro del bloque @code{\score} en que
-se quiere que haga efecto, pero fuera de la música.
+@cindex predeterminadas, cambio de propiedades de contexto
+@cindex contexto, cambiar propiedades predeterminadas de
+
+Se pueden cambiar las propiedades de contexto y de grob con las
+instrucciones @code{\set} y @code{\override}, tal y como se describe
+en @ref{Modificar las propiedades}.  Estas instrucciones crean eventos
+musicales, haciendo que los cambios tengan efecto en el punto temporal
+en que la música se está procesando.
+
+Por contra, esta sección explica la forma de cambiarlos valores
+@emph{predeterminados} de las propiedades de contexto y de grob en el
+momento en que se crea el contexto.  Existen dos formas de hacerlo.
+Una modifica los valores predeterminados en todos los contextos de un
+tipo dado, y el otro modifica los valores predeterminados solamente en
+una instancia concreta de un contexto.
+
+@menu
+* Cambiar todos los contextos del mismo tipo::
+* Cambiar solamente un contexto determinado::
+* Orden de precedencia::
+@end menu
 
-Observe que la propia instrucción @code{\set} y el contexto se deben
-omitir cuando se especifican de esta manera los valores de contexto
-predeterminados:
+@node Cambiar todos los contextos del mismo tipo
+@unnumberedsubsubsec Cambiar todos los contextos del mismo tipo
+@translationof Changing all contexts of the same type
+
+@cindex \context dentro de un bloque \layout
+@funindex \context
+@funindex \layout
+
+Los ajustes de contexto que se han de usar de forma predeterminada
+dentro de @code{Score}, @code{Staff}, @code{Voice} y otros contextos
+se pueden especificar en un bloque @code{\context} dentro de cualquier
+bloque @code{\layout}.  El bloque @code{\layout} se debe colocar
+dentro del bloque @code{\score} al que se aplica, después de la
+música.
+
+@example
+\layout @{
+  \context @{
+    \Voice
+    [ajustes de contexto para todos los contextos Voice]
+  @}
+  \context @{
+    \Staff
+    [ajustes de contexto para todos los contextos Staff]
+  @}
+@}
+@end example
+
+Se pueden especificar los siguientes tipos de ajustes:
+
+@itemize
+@item
+Una instrucción @code{\override}, pero omitiendo el nombre del contexto
 
 @lilypond[quote,verbatim]
 \score {
   \relative c'' {
-    a4^"Really small, thicker stems, no time signature" a a a
-    a a a a
+    a4^"Thicker stems" a a a
+    a4 a a\ff a
   }
   \layout {
     \context {
       \Staff
-      fontSize = #-4
       \override Stem #'thickness = #4.0
-      \remove "Time_signature_engraver"
     }
   }
 }
 @end lilypond
 
-En este ejemplo, la instrucción @code{\Staff} especifica que los
-ajustes siguientes se apliquen a todos los pentagramas dentro del
-bloque de partitura.
+@item
+Estableciendo una propiedad de contexto directamente
+
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Smaller font" a a a
+    a4 a a\ff a
+  }
+  \layout {
+    \context {
+      \Staff
+      fontSize = #-4
+    }
+  }
+}
+@end lilypond
+
+@item
+Una instrucción predefinida tal como @code{\dynamicUp} o una expresión
+musical como @code{\accidentalStyle "dodecaphonic"}
 
-Se pueden realizar de forma similar modificaciones al contexto
-@code{Score} o a todos los contextos @code{Voice}.
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Dynamics above" a a a
+    a4 a a\ff a
+  }
+  \layout {
+    \context {
+      \Voice
+      \dynamicUp
+    }
+    \context {
+      \Staff
+      \accidentalStyle "dodecaphonic"
+    }
+  }
+}
+@end lilypond
 
-@knownissues
+@item
+Una variable definida por el usuario que contenga un bloque
+@code{\with}; para ver detalles acerca del bloque @code{\with},
+consulte @ref{Cambiar solamente un contexto determinado}.
 
-No es posible recolectar cambios de contexto dentro de una variable y
-aplicarlos a una definición de @code{\context} por referencia a dicha
-variable.
+@lilypond[quote,verbatim]
+StaffDefaults = \with {
+  fontSize = #-4
+}
 
-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
+\score {
+  \new Staff {
+    \relative c'' {
+      a4^"Smaller font" a a a
+      a4 a a a
+    }
+  }
+  \layout {
+    \context {
+      \Staff
+      \StaffDefaults
+    }
+  }
+}
+@end lilypond
 
-@example
-\layout @{
-  \context @{
-    \Staff \RemoveEmptyStaves
+@end itemize
 
-    \override Stem #'thickness = #4.0
-  @}
+Las instrucciones de ajuste de propiedades se pueden disponer dentro
+de un bloque @code{\layout} sin que estén encerradas en un bloque
+@code{\context}.  Tales ajustes son equivalentes a incluir las mismas
+instrucciones de ajuste de propiedades al comienzo de cada uno de los
+contextos del tipo especificado.  Si no se especifica ningún contexto,
+@emph{todos y cada uno} de los contextos del nivel inferior quedan
+afectados, véase @ref{Contextos del nivel más bajo. Voces}.  La
+sintaxis de una instrucción de ajuste de propiedades dentro de un
+bloque @code{\layout} es la misma que si la misma instrucción
+estuviera escrita en el propio flujo musical.
+
+@lilypond[quote,verbatim]
+\score {
+  \new Staff {
+    \relative c'' {
+      a4^"Smaller font" a a a
+      a4 a a a
+    }
+  }
+  \layout {
+    \accidentalStyle "dodecaphonic"
+    \set fontSize = #-4
+    \override Voice.Stem #'thickness = #4.0
+  }
+}
+@end lilypond
+
+
+@node Cambiar solamente un contexto determinado
+@unnumberedsubsubsec Cambiar solamente un contexto determinado
+@translationof Changing just one specific context
+
+@cindex \with
+@funindex \with
+
+Las propiedades de contexto de una única instancia de contexto pueden
+cambiarse dentro de un bloque @code{\with}.  Todas las demás
+instancias de contexto del mismo tipo retienen los ajustes
+predeterminados que LilyPond tiene programados y que se modifican por
+parte de cualquier bloque @code{\layout} que se encuentre dentro del
+ámbito.  El bloque @code{\with} se debe situar inmediatamente después
+de las instrucciones @code{\new} @var{context-type}:
+
+@example
+\new Staff
+\with @{
+  [ajustes de contexto para esta única instancia de contexto]
+@} @{
+...
 @}
 @end example
 
-@c TODO: add \with in here.
+Se pueden especificar los siguientes tipos de ajustes:
+
+@itemize
+@item
+Una instrucción @code{\override}, pero omitiendo el nombre del
+contexto
+
+@lilypond[quote,verbatim]
+\score {
+  \new Staff {
+    \new Voice
+    \with {
+      \override Stem #'thickness = #4.0
+    }
+    {
+      \relative c'' {
+        a4^"Thick stems" a a a
+        a4 a a a
+      }
+    }
+  }
+}
+@end lilypond
+
+@item
+Estableciendo una propiedad de contexto directamente
+
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff {
+      \relative c'' {
+        a4^"Default font" a a a
+        a4 a a a
+      }
+    }
+    \new Staff
+    \with {
+      fontSize = #-4
+    } {
+      \relative c'' {
+        a4^"Smaller font" a a a
+        a4 a a a
+      }
+    }
+  >>
+}
+@end lilypond
+
+@item
+Una instrucción predefinida tal como @code{\dynamicUp}
+
+@lilypond[quote,verbatim]
+\score {
+  <<
+    \new Staff {
+      \new Voice {
+        \relative c'' {
+          a4^"Dynamics below" a a a
+          a4 a a\ff a
+        }
+      }
+    }
+    \new Staff
+    \with { \accidentalStyle "dodecaphonic" }
+    {
+      \new Voice
+      \with { \dynamicUp }
+      {
+        \relative c'' {
+          a4^"Dynamics above" a a a
+          a4 a a\ff a
+        }
+      }
+    }
+  >>
+}
+@end lilypond
+
+@end itemize
+
+@node Orden de precedencia
+@unnumberedsubsubsec Orden de precedencia
+@translationof Order of precedence
+
+El valor de una propiedad que se aplica en un momento determinado se
+determina de la siguiente forma:
 
+@itemize
+@item
+si está en efecto una instrucción @code{\override} o @code{\set}
+dentro del flujo musical, se usa dicho valor,
+
+@item
+de lo contrario, se usa el valor predeterminado tomado de un enunciado
+@code{\with} en las instrucciones de inicio del contexto,
+
+@item
+de lo contrario, se usa el valor tomado del bloque @code{\context} más
+reciente que corresponda dentro de los bloques @code{\layout},
+
+@item
+de lo contrario se usa el valor predeterminado que LilyPond lleva
+preprogramado.
+@end itemize
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Modificar las propiedades de los contextos}.
+
+Referencia de la notación:
+@ref{Explicación de los contextos},
+@ref{Contextos del nivel más bajo. Voces},
+@ref{La instrucción set},
+@ref{La instrucción override},
+@ref{El bloque \layout}.
 
 
 @node Definir contextos nuevos
@@ -780,6 +1049,7 @@ de jazz,
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 }
 \context { \Staff
@@ -848,6 +1118,7 @@ Las notas parecen barras inclinadas y no tienen plica:
 @example
 \override NoteHead #'style = #'slash
 \override Stem #'transparent = ##t
+\override Flag #'transparent = ##t
 @end example
 
 Todos estos añadidos tienen que cooperar, y esto se consigue con un
@@ -870,6 +1141,7 @@ Al juntarlo todo, obtenemos
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 @}
 @end example
@@ -923,85 +1195,122 @@ puede escribir como
 @end example
 
 
-@node Alinear los contextos
-@subsection Alinear los contextos
-@translationof Aligning contexts
-
-Los contextos nuevos se pueden alinear por encima o por debajo de
-otros contextos existentes.  Esto podría ser de utilidad al preparar
-un pentagrama vocal (@rlearning{Conjuntos vocales}) y en el ossia,
-
-@cindex ossia
-@funindex alignAboveContext
-@funindex alignBelowContext
-
-@lilypond[quote,ragged-right]
-ossia = { f4 f f f }
-\score{
-  \relative c' \new Staff = "main" {
-    c4 c c c
-    <<
-      \new Staff \with { alignAboveContext = #"main" } \ossia
-      { d8 f d f d f d f }
-    >>
-  }
-}
-@end lilypond
-
-@cindex nested contexts
-@cindex contexts, nested
+@node Orden de disposición de los contextos
+@subsection Orden de disposición de los contextos
+@translationof Context layout order
 
+@cindex contextos, orden de disposición
 @funindex \accepts
 @funindex \denies
 
-Los contextos como @code{PianoStaff} pueden llevar dentro otros
-contextos anidados.  Los contextos que se pueden aceptar para su
-anidamiento están definidos por la lista @qq{accepts} (acepta) de un
-contexto.  Los contextos que no están en esta lista se colocan debajo
-del contexto exterior en la partitura impresa.  Por ejemplo, el
-contexto @code{PianoStaff} está definido para que acepte contextos
-@code{Staff} y @code{FiguredBass} de forma predeterminada, pero no un
-contexto @code{Lyrics}, por ejemplo.  Así pues, en la siguiente
-estructura la letra se sitúa debajo del sistema de piano en lugar de
-colocarse entre los dos pentagramas:
+Los contextos se disponen en un sistema normalmente desde arriba hacia
+abajo en el orden en que se encuentran en el archivo de entrada.
+Cuando los contextos se anidan unos dentro de otros, el contexto
+exterior incluye a los contextos anidados tal y como se especifica en
+el archivo de entrada, siempre y cuando los contextos interiores estén
+incluidos en la lista @qq{accepts} del contexto externo.  Los
+contextos anidados que no está nincluidos en la lista @qq{accepts} del
+contexto externo se recolocan debajo del contexto externo en lugar de
+anidarse dentro de él.
 
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff
-<<
-  \new Staff { e4 d c2 }
-  \addlyrics { Three blind mice }
+La lista @qq{accepts} de un contexto se puede cambiar con las
+instrucciones @code{\accepts} (acepta) y @code{\denies} (niega).
+@code{\accepts} añade un contexto a la lista @qq{accepts} y
+@code{\denies} elimina un contexto de la lista.  Por ejemplo,
+normalmente no sería deseable que los acordes de cifrado americano
+estuvieran anidados dentro de un contexto @code{Staff}, por lo que el
+contexto @code{ChordNames} no se incluye de forma predeterminada
+dentro de la lista @qq{accepts} del contexto @code{Staff}, pero podría
+hacerse si fuera necesario:
+
+@lilypond[verbatim,quote]
+\score {
   \new Staff {
-    \clef "bass"
-    { c,1 }
+    c' d' e' f'
+    \chords { d1:m7 b1:min7.5- }
   }
->>
+}
 @end lilypond
 
-La lista @qq{accepts} de un contexto se puede modificar para que
-incluya contextos anidados adicionales, y así si quisiéramos que la
-letra apareciese entre los dos pentagramas podríamos usar:
-
-@lilypond[verbatim,quote,relative=1]
-\new PianoStaff \with { \accepts Lyrics }
-<<
-  \new Staff { e4 d c2 }
-  \addlyrics { Three blind mice }
+@lilypond[verbatim,quote]
+\score {
   \new Staff {
-    \clef "bass"
-    { c,1 }
+    c' d' e' f'
+    \chords { d1:m7 b1:min7.5- }
   }
->>
+  \layout {
+    \context {
+      \Staff
+      \accepts "ChordNames"
+    }
+  }
+}
 @end lilypond
 
-Lo contrario de @code{\accepts} (acepta) es @code{\denies} (deniega);
-esto suprime un contexto de la lista @qq{accepts}.
+@code{\denies} se usa principalmente cuando un contexto nuevo se está
+basando en otro, pero los anidamientos requeridos difieren.  Por
+ejemplo, el contexto @code{VaticanaStaff} está basado en el contexto
+@code{Staff}, pero con el contexto @code{VaticanaVoice} sustituido por
+el contexto @code{Voice} en la lista @qq{accepts}.
+
+Observe que discretamente se crea un contexto de forma implícita si se
+encuentra una instrucción donde no hay un contexto apropiado para
+contenerlo.  Esto puede dar lugar a pentagramas o partituras nuevos no
+esperados.
+
+@cindex alignAboveContext
+@cindex alignBelowContext
+@funindex alignAboveContext
+@funindex alignBelowContext
+
+En ocasiones se necesita que un contexto exista durante un breve
+intervalo de tiempo, siendo un buen ejemplo el contexto de pentagrama
+de un ossia.  Esto se consigue normalmente mediante la introducción de
+la definición del contexto en el lugar apropiado en paralelo con la
+sección correspondiente de la música principal.  De forma
+predeterminada, el contexto tempral se coloca debajo de todos los
+contextos existentes.  Para reposicionallo por encima del contexto que
+tenga el nombre @qq{principal}, debería definirse de esta forma:
+
+@example
+@code{\new Staff \with @{ alignAboveContext = #"principal" @} }
+@end example
+
+Se presenta una situación similar cuando se posiciona un contexto
+temporal de letra de una canción dentro de una disposición de varios
+pentagramas tal como @code{ChoirStaff}, por ejemplo, cuando se añade
+una segunda estrofa a una sección que se repite.  De forma
+predeterminada, el contexto temporal de letra se coloca debajo de los
+pentagramas inferiores.  Mediante la definición del contexto temporal
+de letra con @code{alignBelowContext} se puede posicionar
+correctamente debajo del contexto de letra con nombre que contiene el
+texto de la primera estrofa.
+
+En diversos lugares pueden verse ejemplos que muestran esta
+recolocación de contextos temporales: véase
+@rlearning{Anidado de expresiones musicales},
+@ref{Modificación de pentagramas sueltos} y
+@ref{Técnicas específicas para la letra}.
+
+@seealso
+Manual de aprendizaje:
+@rlearning{Anidado de expresiones musicales}.
+
+Referencia de la notación:
+@ref{Modificación de pentagramas sueltos},
+@ref{Técnicas específicas para la letra}.
+
+Manual de utilización del programa:
+@rprogram{Aparece un pentagrama de más}.
+
+Archivos instalados:
+@file{ly/engraver-init.ly}.
 
 
 @node Explicación del Manual de referencia de funcionamiento interno
 @section Explicación del Manual de referencia de funcionamiento interno
 @translationof Explaining the Internals Reference
 
-
 @menu
 * Navegar por la referencia del programa::
 * Interfaces de la presentación::
@@ -1018,7 +1327,7 @@ esto suprime un contexto de la lista @qq{accepts}.
 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
@@ -1167,7 +1476,7 @@ pueden modificar.
 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
@@ -1205,7 +1514,7 @@ definición.
 
 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
@@ -1253,7 +1562,7 @@ Al insertar esta instrucción antes de que se haya creado el objeto
 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
@@ -1296,6 +1605,7 @@ Preguntas aún sin respuesta
 @end itemize
 @end ignore
 
+
 @node Modificar las propiedades
 @section Modificar las propiedades
 @translationof Modifying properties
@@ -1306,6 +1616,7 @@ Preguntas aún sin respuesta
 * La instrucción override::
 * La instrucción tweak::
 * set frente a override::
+* Modificación de las listas-A::
 @end menu
 
 
@@ -1320,7 +1631,7 @@ ajustes, se puede alterar la apariencia de los objetos.
 
 Existen dos tipos diferentes de propiedades almacenadas en los
 contextos: las propiedades de contexto y las propiedades de grob.  Las
-prpopiedades de contexto son propiedades que se aplican al contexto
+propiedades de contexto son propiedades que se aplican al contexto
 como un todo y controlan la forma en que el propio contexto se
 imprime.  Por contra, las propiedades de grob se aplican a los tipos
 de grob específicos que se imprimirán dentro del contexto.
@@ -1359,7 +1670,7 @@ instrucción especifica como contexto a @code{Staff}, sólo se aplica al
 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
@@ -1376,7 +1687,7 @@ omitir, ocasionando que se utilice el contexto predeterminado
 @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
@@ -1388,7 +1699,7 @@ Por tanto, al alterar objetos @emph{Spanner} «de extensión» como
 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 #'beam-thickness = #0.6
@@ -1437,9 +1748,7 @@ Referencia de funcionamiento interno:
 @rinternals{RevertProperty},
 @rinternals{PropertySet}.
 
-
 @knownissues
-
 El «back-end» o motor de salida no es muy estricto en la comprobación
 de tipos de las propiedades de objetos.  Las referencias cíclicas en
 valores Scheme de propiedades pueden producir cuelgues o salidas
@@ -1464,7 +1773,7 @@ paso de interpretación.  Se consigue insertando la instrucción
 @end example
 
 @var{valor} es un objeto de Scheme, razón por la que va precedido del
-carácter almohadilla, @code{#}.
+carácter almohadilla,@tie{}@code{#}.
 
 El nombre de las propiedades de contexto suele ir en minúsculas con
 mayúscula en medio.  Controlan sobre todo la traducción de la música a
@@ -1480,7 +1789,7 @@ Por ejemplo, los silencios multicompás se combinan en un solo compás
 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
@@ -1490,7 +1799,7 @@ Si se omite el argumento @var{context}, entonces se utiliza el
 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
 <<
   {
@@ -1512,7 +1821,7 @@ valor de la propiedad @code{skipBars} del contexto predeterminado del
 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
@@ -1536,7 +1845,7 @@ elimina la definición solamente si está establecida dentro de
 @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
 <<
   {
@@ -1567,7 +1876,7 @@ son equivalentes si el contexto inferior en curso es @code{Voice}.
 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
@@ -1586,15 +1895,14 @@ usuario.
 @end ifnothtml
 
 @seealso
-
 Referencia de funcionamiento interno:
 @rinternals{Tunable context properties}.
 
-
 @cindex grob, propiedades de
 @cindex propiedades de grob
 @funindex \override
 
+
 @node La instrucción override
 @subsection La instrucción @code{\override}
 @translationof The override command
@@ -1603,7 +1911,7 @@ Existe un tipo especial de propiedad de contexto: la descripción de
 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}.
 
@@ -1635,7 +1943,7 @@ Por ejemplo, podemos aumentar el grosor de la plica de una figura
 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
@@ -1644,7 +1952,7 @@ 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
   <<
     {
@@ -1665,7 +1973,7 @@ Si no se ha especificado ningún contexto en la instrucción
 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
@@ -1677,7 +1985,7 @@ Los efectos de @code{\override} y @code{\revert} se aplican a todos
 los grobs del contexto afectado partiendo del momento actual y hacia
 adelante:
 
-@lilypond[quote, verbatim, relative=2, fragment]
+@lilypond[quote,verbatim,relative=2]
 {
   <<
     {
@@ -1699,7 +2007,7 @@ adelante:
 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]
 {
   <<
     {
@@ -1750,7 +2058,7 @@ instrucciones de la forma
 
 Para muchas propiedades, independientemente del tipo de datos de la
 propiedad, si se establece el valor de la propiedad a falso
-(@code{##f}) se producirá su desactivación, ocasionando que LilyPond
+(@code{#f}) se producirá su desactivación, ocasionando que LilyPond
 ignore por completo dicha propiedad.  Esto es especialmente útil para
 «apagar» propiedades de grobs (objetos gráficos) que de otra manera
 causarían problemas.
@@ -1760,10 +2068,10 @@ manual de notación y en la referencia de funcionamiento interno.
 @end ignore
 
 @seealso
-
 Referencia de funcionamiento interno:
 @rinternals{Backend}
 
+
 @node La instrucción tweak
 @subsection La instrucción @code{\tweak}
 @translationof The tweak command
@@ -1779,11 +2087,12 @@ a todos los grobs del contexto afectado.  Esto se consigue con la
 instrucción @code{\tweak}, que tiene la sintaxis siguiente:
 
 @example
-\tweak #'@code{propiedad-del-grob} #@code{valor}
+\tweak @var{objeto-de-presentación} #'@var{propiedad-del-grob} @var{valor}
 @end example
 
-La instrucción @code{\tweak} se aplica al objeto que viene
-inmediatamente después de @code{valor} dentro del flujo musical.
+Es opcional especificar el @var{objeto-de-presentación}.  La
+instrucción @code{\tweak} se aplica al objeto musical que viene
+inmediatamente después de @var{valor} dentro del flujo musical.
 
 @ignore
 En ocasiones es posible tomar un atajo para realizar el ajuste fino de
@@ -1791,7 +2100,7 @@ los objetos gráficos.  Para objetos que resultan directamente de un
 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
@@ -1883,32 +2192,42 @@ c-\tweak #'thickness #5 ( d e f)
 
 Para que funcione la instrucción @code{\tweak}, debe permanecer
 adyacente al objeto al que se ha de aplicar después de que el código
-de entrada se ha convertido a un flujo musical.  A veces, LilyPond
-puede insertar elementos adicionales dentro del flujo de música
-durante el proceso de análisis sintáctico.  Por ejemplo, cuando una
-nota que no es parte explícita de un acorde se coloca dentro de un
-acorde por parte de LilyPond de manera que las notas que se pretenden
-modificar con @code{\tweak} se deben poner dentro de una construcción
-de acorde:
+de entrada se ha convertido a un flujo musical.  El trucaje de un
+acorde completo no hace nada porque su evento musical actúa solamente
+como un contenedor, y todos los objetos de presentación se crean a
+partir de eventos dentro del @code{EventChord}:
 
 @lilypond[relative=2,verbatim,quote]
 \tweak #'color #red c4
-<\tweak #'color #red c>4
+\tweak #'color #red <c e>4
+<\tweak #'color #red c e>4
 @end lilypond
 
-La instrucción @code{\tweak} no se puede usar para modificar ningún
-elemento que no aparezca explícitamente en el código de entrada.
-Concretamente, no se puede usar para modificar plicas, barras o
-alteraciones directamente, porque éstos se generan posteriormente por
-parte de las cabezas de las notas, más que por elementos musicales del
-flujo de entrada.  Tampoco se puede usar @code{\tweak} para modificar
-las claves ni las indicaciones de compás, porque se separarán de
-cualquier instrucción @code{\tweak} que aparezca en el flujo de
-entrada debido a la inserción automática de los elementos adicionales
-que se requieren para especificar el contexto.
+La instrucción @code{\tweak} sencilla no se puede usar para modificar
+ningún objeto que no se haya creado directamente a partir de la entrada.
+Concretamente, no afecta a las plicas, barras automáticas ni
+alteraciones, porque éstos se generan posteriormente por
+parte de objetos de presentación @code{NoteHead}
+más que por elementos musicales del
+flujo de entrada.
 
-También se pueden escribir varias instrucciones @code{\tweak} antes de
-un elemento notacional, y todas ellas le afectan:
+Tales objetos de presencaión creados indirectamente se pueden trucar
+usando la forma explícita de la instrucción @code{\tweak}:
+
+@lilypond[relative=2,verbatim,quote]
+\tweak Stem #'color #red
+\tweak Beam #'color #green c8 e
+<c e \tweak Accidental #'font-size #-3 ges>4
+@end lilypond
+
+No se puede usar @code{\tweak} para modificar las claves o las
+indicaciones de compás, porque éstos se separan de cualquier
+instrucción @code{\tweak} precedente dentro del flujo de entrada
+merced a la inserción automática de elementos adicionales que se
+requieren para especificar el contexto.
+
+Se pueden colocar varias instrucciones @code{\tweak} antes de un
+elemento de notación; todos le afectan:
 
 @lilypond[verbatim,quote,relative=1]
 c
@@ -1926,7 +2245,6 @@ 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}.
 
-
 @seealso
 Manual de aprendizaje:
 @rlearning{Métodos de trucaje}.
@@ -1934,27 +2252,22 @@ Manual de aprendizaje:
 Manual de extensión:
 @rextend{Presentación de las expresiones musicales}.
 
-
 @knownissues
 
-@cindex trucos en una variable
-La instrucción @code{\tweak} no se puede usar dentro de una variable.
-
-@cindex trucos en la letra
-Las instrucciones @code{\tweak} no se pueden usar dentro del modo
-@code{\lyricmode}.
-
 @cindex trucar puntos de control
 @cindex control, trucar puntos de
 
-La instrucción @code{\tweak} solamente se aplica a la primera de
-varias ligaduras generadas dentro de un acorde.
+No se puede usar la instrucción @code{\tweak} para modificar los
+puntos de control de una sola de varias ligaduras de unión dentro de
+un acorde, aparte de la primera que se encuentre en el código de
+entrada.
+
 
 @node set frente a override
 @subsection @code{\set} frente a @code{\override}
 @translationof set versus override
 
-HACER: probablemente esta sección es innecesaria.
+@c HACER: probablemente esta sección es innecesaria.
 
 @ignore
 We have seen two methods of changing properties: @code{\set} and
@@ -1968,6 +2281,133 @@ property (modified with @code{\set}) was created.
 
 @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{basic-distance} (distancia básica),
+@code{minimum-distance} (distancia mínima), @code{padding} (relleno)
+y @code{stretchability} (ampliabilidad).
+Los ajustes estándar para esta propiedad
+se relacionan en la sección
+@qq{Backend} de la Referencia de Funcionamiento Interno
+(véase @rinternals{StaffGrouper}):
+
+@example
+'((basic-distance . 9)
+  (minimum-distance . 7)
+  (padding . 1)
+  (stretchability . 5))
+@end example
+
+Una forma de acercar los pentagramas entre sí es reducir el valor de
+la clave @code{basic-distance} (@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 #'basic-distance = #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{basic-distance} 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 =
+    #'((basic-distance . 0)
+       (minimum-distance . 0)
+       (padding . 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{basic-distance} si no se fija).  Así, las dos declaraciones
+siguientes son equivalentes:
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7)
+     (minimum-distance . 0)
+     (padding . 0)
+     (stretchability . 7))
+@end example
+
+Una consecuencia de esto (posiblemente no intencionada) es la
+eliminación de cualquier valor estándar 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 ajustes estándar 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
+individualmente 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
@@ -1976,7 +2416,6 @@ property (modified with @code{\set}) was created.
 @menu
 * Modos de entrada::
 * Dirección y posición::
-* Orden de disposición de los contextos::
 * Distancias y medidas::
 * Propiedades del símbolo del pentagrama::
 * Objetos de extensión::
@@ -1985,6 +2424,7 @@ property (modified with @code{\set}) was created.
 * Rotación de objetos::
 @end menu
 
+
 @node Modos de entrada
 @subsection Modos de entrada
 @translationof Input modes
@@ -2089,7 +2529,6 @@ interpretar dichas indicaciones:
 @end lilypond
 
 
-
 @node Dirección y posición
 @subsection Dirección y posición
 @translationof Direction and placement
@@ -2112,34 +2551,22 @@ dirección de las plicas (como las ligaduras o los acentos).
 
 @c TODO Add table showing these
 
-@strong{Disposición de contexto}
-
-Los contextos se colocan dentro de un sistema de arriba a abajo en el
-orden en que se encuentran.  Sin embargo, observe que se crea un
-contexto implícitamente si se encuentra una instrucción cuando no está
-disponible un contexto apropiado para contenerla.
-
-@c TODO Add example ?
-
-Se pude cambiar el orden predeterminado en que los contextos se
-presentan, véase @ref{Alinear los contextos}
-
-@strong{Indicadores de dirección de las articulaciones}
-
-Al añadir articulaciones a notas se puede omitir normalmente el
-indicador de dirección, @code{^} (que significa @qq{arriba}), @code{_}
-(que significa @qq{abajo}) o @code{-} (que significa @qq{usar la
-dirección predeterminada}), en cuyo caso se supone el predeterminado
-@code{-}.  Pero se necesita un indicador de dirección @strong{siempre}
-antes de:
+Se puede sobreescribir la acción predeterminada mediante el prefijado
+de la articulación por un @emph{indicacor de dirección}.  Están
+disponibles tres indicadores de dirección: @code{^} (que significa
+@qq{arriba}), @code{_} (que significa @qq{abajo}) o @code{-} (que
+significa @qq{usar la dirección predeterminada}).  El indicador de
+dirección se puede normalmente omitir, en cuyo caso se supone el
+indicador predeterminado @code{-}, pero se necesita un indicador de
+dirección @strong{siempre} antes de:
 
 @itemize
 @item las instrucciones @code{\tweak}
 @item las instrucciones @code{\markup}
 @item las instrucciones @code{\tag}
 @item los marcados de cadena, p.ej. -"cadena"
-@item las instrucciones de digitación, p.ej. @code{-1}
-@item las abreviaturas de articulación, p.ej. @code{-.}, @code{->}, @code{--}
+@item las instrucciones de digitación, p.ej. @w{@code{-1}}
+@item las abreviaturas de articulación, p.ej. @w{@code{-.}}, @w{@code{->}}, @w{@code{--}}
 @end itemize
 
 Estas indicaciones afectan sólo a la nota siguiente.
@@ -2158,27 +2585,28 @@ controlada por la propiedad @code{direction}.
 
 El valor de la propiedad @code{direction} se puede establecer al valor
 @code{1}, con el significado de @qq{hacia arriba} o @qq{encima}, o a
-@code{-1}, con el significado de @qq{hacia abajo} o @qq{debajo}.  Se
-pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
-@code{1} y @code{-1} respectivamente.  La dirección predeterminada se
-puede especificar estableciendo @code{direction} a @code{0} ó a
+@w{@code{-1}}, con el significado de @qq{hacia abajo} o @qq{debajo}.
+Se pueden usar los símbolos @code{UP} y @code{DOWN} en sustitución de
+@code{1} y @w{@code{-1}} respectivamente.  La dirección predeterminada
+se puede especificar estableciendo @code{direction} a @code{0} ó a
 @code{CENTER}.  De forma alternativa, en muchos casos existen
 instrucciones predefinidas para especificar la dirección.  Todas ellas
 son de la forma:
 
-@noindent
-@code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
+@example
+@code{\xxxUp}, @code{\xxxDown} o @code{\xxxNeutral}
+@end example
 
 @noindent
-donde @code{xxxNeutral} significa @qq{utilizar la dirección
+donde @code{\xxxNeutral} significa @qq{utilizar la dirección
 predeterminada}.  Véase @rlearning{Objetos interiores al pentagrama}.
 
-En alguna que otra ocasión, con el único ejemplo usual del arpegio, el
-valor de la propiedad @code{direction} especifica si el objeto se debe
+En alguna que otra ocasión como en el arpegio, el
+valor de la propiedad @code{direction} puede especificar si el objeto se debe
 colocar a la izquierda o a la derecha del objeto padre.  En este caso
-@code{-1} ó @code{LEFT} significan @qq{a la izquierda} y @code{1} ó
-@code{RIGHT} significan @qq{a la derecha}.  @code{0} ó @code{CENTER}
-significan @qq{utilizar la dirección predeterminada}, como antes.
+@w{@code{-1}} ó @code{LEFT} significan @qq{a la izquierda} y @code{1}
+ó @code{RIGHT} significan @qq{a la derecha}.  @code{0} ó @code{CENTER}
+significan @qq{utilizar la dirección predeterminada}.
 
 Estas indicaciones afectan a todas las notas hasta que son canceladas.
 
@@ -2191,35 +2619,17 @@ c2( c)
 c2( c)
 @end lilypond
 
+En música polifónica, en general es mejor especificar una voz explícita
+que cambiar la dirección de un objeto.  Para ver más información,
+véase @ref{Varias voces}.
 
-@node Orden de disposición de los contextos
-@subsection Orden de disposición de los contextos
-@translationof Context layout order
-
-@cindex contextos, orden de disposición
-
-Los contextos se disponen en un sistema normalmente desde arriba hacia
-abajo en el orden en que se encuentran en el archivo de entrada.
-Cuando los contextos se anidan unos dentro de otros, el contexto
-exterior incluye a los contextos anidados tal y como se especifica en
-el archivo de entrada, siempre y cuando los contextos interiores estén
-incluidos en la lista @qq{accepts} del contexto externo.  Los
-contextos anidados que no está nincluidos en la lista @qq{accepts} del
-contexto externo se recolocan debajo del contexto externo en lugar de
-anidarse dentro de él.
+@seealso
+Manual de aprendizaje:
+@rlearning{Objetos interiores al pentagrama}.
 
-Observe que discretamente se crea un contexto de forma implícita si se
-encuentra una instrucción donde no hay un contexto apropiado para
-contenerlo.  Esto puede dar lugar a pentagramas o partituras nuevos no
-esperados.
+Referencia de la notación:
+@ref{Varias voces}.
 
-El orden predeterminado en que los contextos se disponen, así como la
-lista @qq{accepts}, pueden cambiarse; véase @ref{Alinear los
-contextos}.
-
-@seealso
-Manual de utilización del programa:
-@rprogram{Aparece un pentagrama de más}.
 
 @node Distancias y medidas
 @subsection Distancias y medidas
@@ -2243,8 +2653,8 @@ cantidad, @code{\mm}, @code{\cm}, @code{\in}@tie{}(pulgadas), o
 @code{\pt}@tie{}(puntos, 1/72.27 pulgadas).  Las distancias de diseño
 de página se pueden especificar también en unidades escalables (véase
 el párrafo siguiente) adjuntando @code{\staff-space} a la cantidad.
-La disposición de página se describe en detalle en @ref{Formateo de
-las páginas}.
+La disposición de página se describe en detalle en
+@ref{Disposición de la página}.
 
 Las distancias escaladas siempre se especifican en unidades de un
 espacio del pentagrama o, más raramente, medio espacio del pentagrama.
@@ -2274,13 +2684,12 @@ convertir de un cambio en el tamaño de la fuente al cambio equivalente
 en @code{staff-space}.  Para ver una explicación y un ejemplo de su
 utilización, consulte @rlearning{Longitud y grosor de los objetos}.
 
-
 @seealso
 Manual de aprendizaje:
 @rlearning{Longitud y grosor de los objetos}.
 
 Referencia de la notación:
-@ref{Formateo de las páginas},
+@ref{Disposición de la página},
 @ref{Establecer el tamaño del pentagrama}.
 
 
@@ -2541,7 +2950,7 @@ trinos, está inamoviblemente codificado como 0.
 
 @item attach-dir (dirección de anclaje)
 Determina dónde comienza y termina la línea en la dirección X, con
-relación al objeto ancla.  Sí, un valor de @code{-1} (o @code{LEFT},
+relación al objeto ancla.  Sí, un valor de @w{@code{-1}} (o @code{LEFT},
 izquierda) hace que la línea comience o termine en el lado izquierdo
 de la cabeza de la nota a la que está anclado.
 
@@ -2559,7 +2968,7 @@ Es un elemento de marcado que se evalúa para dar lugar al sello.  Se
 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
@@ -2587,7 +2996,7 @@ c4^\startTextSpan c c c \stopTextSpan
 @end lilypond
 
 Observe que los valores negativos mueven el texto @emph{hacia arriba},
-al contrario de lo que podría esperarse, pues el valor de @code{-1} o
+al contrario de lo que podría esperarse, pues el valor de @w{@code{-1}} o
 @code{DOWN} (abajo) significa alinear el borde @emph{inferior} del
 texto con la línea de extensión.  Un valor de @code{1} o @code{UP}
 (arriba) alinea el borde superior del texto con la línea extensora.
@@ -2609,7 +3018,7 @@ continuación.  Se termina después de una nota exactamente, o en la
 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
@@ -2619,7 +3028,6 @@ c2 \< c2 c2
 Si se usa @code{\endSpanners} no es necesario cerrar \startTextSpan
 con \stopTextSpan, ni cerrar los reguladores con @code{\!}.
 
-
 @seealso
 Referencia de funcionamiento interno:
 @rinternals{TextSpanner},
@@ -2643,7 +3051,8 @@ volver transparentes, se pueden pintar de blanco, o se puede
 sobreescribir su propiedad @code{break-visibility}.  Las tres primeras
 se aplican a todos los objetos de presentación; la última sólo a unos
 pocos: los objetos @emph{divisibles}.  El Manual de aprendizaje
-introduce estas cuatro técnicas, véase @rlearning{Visibilidad y color de los objetos}.
+introduce estas cuatro técnicas,
+véase @rlearning{Visibilidad y color de los objetos}.
 
 Hay también algunas otras técnicas que son específicas de ciertos
 objetos de presentación.  Se estudian bajo Consideraciones especiales.
@@ -2677,6 +3086,7 @@ a a
 a a a
 @end lilypond
 
+
 @node Hacer transparentes los objetos
 @unnumberedsubsubsec Hacer transparentes los objetos
 @translationof Making objects transparent
@@ -2694,6 +3104,7 @@ a4 a
 a a
 @end lilypond
 
+
 @node Pintar los objetos de blanco
 @unnumberedsubsubsec Pintar los objetos de blanco
 @translationof Painting objects white
@@ -2736,8 +3147,8 @@ En el ejemplo de arriba, la clave blanca, con un valor @code{layer}
 predeterminado de @code{1}, se dibuja después de las líneas del
 pentagrama (valor @code{layer} predeterminado de @code{0}),
 sobreimpresionándolas.  Para cambiarlo, se debe dar al objeto
-@code{Clef} un valor de @code{layer} más bajo, digamos @code{-1}, para
-que se dibuje antes:
+@code{Clef} un valor de @code{layer} más bajo, digamos @w{@code{-1}},
+para que se dibuje antes:
 
 @lilypond[quote,verbatim,relative=2]
 \override Staff.Clef #'color = #white
@@ -2745,6 +3156,7 @@ que se dibuje antes:
 a1
 @end lilypond
 
+
 @node Uso de break-visibility (visibilidad en el salto)
 @unnumberedsubsubsec Uso de break-visibility (visibilidad en el salto)
 @translationof Using break-visibility
@@ -2787,7 +3199,7 @@ combinaciones mediante funciones predefinidas cuya definición está en
 los objetos de presentación serán visibles en las posiciones que se
 muestran en el encabezamiento de cada columna:
 
-@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {yes} {yes} {yes}
+@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {Antes del} {Si no hay} {Después del}
 @headitem Forma                   @tab Forma                  @tab Antes del @tab Si no hay    @tab Después del
 @headitem de función              @tab de vector              @tab salto     @tab salto        @tab salto
 
@@ -2861,6 +3273,7 @@ imprimirlas y all-invisible para suprimirlas.
 @item OctavateEight: véase más abajo
 @end itemize
 
+
 @node Consideraciones especiales
 @unnumberedsubsubsec Consideraciones especiales
 @translationof Special considerations
@@ -2968,17 +3381,16 @@ explícitas.
 
 El pequeño símbolo de octava sobre las claves en octava alta o baja se
 produce por parte del objeto @code{OctavateEight}.  Su visibilidad se
-controla independientemente de la del objeto @code{Clef}, así que es
+hereda automáticamente de la del objeto @code{Clef}, así que no es
 necesario aplicar las sobreescrituras correspondientes
-@code{break-visibility} tanto a los objetos @code{Clef} como
-@code{OctavateEight} para suprimir completamente estos símbolos de
-clave al comienzo de cada línea.
+@code{break-visibility} a los objetos
+@code{OctavateEight} para suprimir los símbolos de octavación
+para las claves invisibles.
 
 Para los cambios de clave explícitos, la propiedad
 @code{explicitClefVisibility} controla tanto el símbolo de clave como
 el símbolo de octava asociado.
 
-
 @seealso
 Manual de aprendizaje:
 @rlearning{Visibilidad y color de los objetos}
@@ -3019,13 +3431,14 @@ Las posiciones de los puntos extremos del objeto de extensión se
 computan al vuelo para cada uno de los objetos gráficos, pero es
 posible sobreescribirlos:
 
+@c TODO Complete
 @lilypond[relative=2,ragged-right,verbatim,quote]
 e2 \glissando f
 \once \override Glissando #'(bound-details right Y) = #-2
 e2 \glissando f
 @end lilypond
 
-El valor de @code{Y} está establecido a @code{-2} para el extremo
+El valor de @code{Y} está establecido a @w{@code{-2}} para el extremo
 derecho.  El lado izquierdo se puede ajustar de forma similar
 especificando @code{left} en vez de @code{right}.
 
@@ -3081,6 +3494,7 @@ g4\< e' d' f\!
 g,,4\< e' d' f\!
 @end lilypond
 
+
 @node Rotación de elementos de marcado
 @unnumberedsubsubsec Rotación de elementos de marcado
 @translationof Rotating markup
@@ -3103,6 +3517,7 @@ des^\markup { \rotate #30 "a D-Flat" }
 fis^\markup { \rotate #30 "an F-Sharp" }
 @end lilypond
 
+
 @node Trucos avanzados
 @section Trucos avanzados
 @translationof Advanced tweaks
@@ -3115,9 +3530,9 @@ ajustes finos a la apariencia de la partitura impresa.
 * Agrupación vertical de objetos gráficos::
 * Modificación de los sellos::
 * Modificación de las formas::
+* Contenedores unpure-pure::
 @end menu
 
-
 @seealso
 Manual de aprendizaje:
 @rlearning{Trucar la salida},
@@ -3127,16 +3542,15 @@ Referencia de la notación:
 @ref{Explicación del Manual de referencia de funcionamiento interno},
 @ref{Modificar las propiedades}.
 
+Manual de extensión:
+@rextend{Interfaces para programadores}.
 
 Archivos de inicio:
-@file{scm/@/define@/-grobs@/.scm}.
+@file{scm/define-grobs.scm}.
 
 Fragmentos de código:
 @rlsr{Tweaks and overrides}.
 
-Extender:
-@rextend{Interfaces para programadores}.
-
 Referencia de funcionamiento interno:
 @rinternals{All layout objects}.
 
@@ -3190,7 +3604,10 @@ propiedades especiales que se encuentran en
 de ensayo sobre dichos objetos.
 
 @seealso
-@ref{Uso del break-alignable-interface},
+Referencia de la notación:
+@ref{Uso del break-alignable-interface}.
+
+Manual de extensión:
 @rextend{Funciones de callback}.
 
 @menu
@@ -3200,6 +3617,7 @@ de ensayo sobre dichos objetos.
 * Uso del break-alignable-interface::
 @end menu
 
+
 @node Establecer directamente X-offset e Y-offset
 @unnumberedsubsubsec Establecer directamente @code{X-offset} y @code{Y-offset}
 @translationof Setting X-offset and Y-offset directly
@@ -3223,6 +3641,7 @@ a
 
 @c TODO write more
 
+
 @node Uso del side-position-interface
 @unnumberedsubsubsec Uso del @code{side-position-interface}
 @translationof Using the side-position-interface
@@ -3244,9 +3663,9 @@ determinan dónde colocar el objeto, como sigue:
 @headitem @code{side-axis}  @tab @code{direction}  @tab
 @headitem propiedad         @tab propiedad         @tab colocación
 
-@item     @code{0}          @tab @code{-1}         @tab izquierda
+@item     @code{0}          @tab @w{@code{-1}}         @tab izquierda
 @item     @code{0}          @tab @code{1}          @tab derecha
-@item     @code{1}          @tab @code{-1}         @tab debajo
+@item     @code{1}          @tab @w{@code{-1}}         @tab debajo
 @item     @code{1}          @tab @code{1}          @tab encima
 
 @end multitable
@@ -3265,6 +3684,7 @@ situar el objeto encima o debajo del padre de acuerdo con el valor de
 
 @c TODO Add examples
 
+
 @node Uso del self-alignment-interface
 @unnumberedsubsubsec Uso del @code{self-alignment-interface}
 @translationof Using the self-alignment-interface
@@ -3280,11 +3700,11 @@ dar a @code{self-alignment-X} cualquier valor real, en unidades de la
 mitad de la extensión X total del objeto.  Los valores negativos
 mueven el objeto a la derecha, los positivos hacia la izquierda.  Un
 valor de @code{0} centra el objeto sobre el punto de referencia de su
-padre, un valor de @code{-1} alinea el borde izquierdo del objeto
+padre, un valor de @w{@code{-1}} alinea el borde izquierdo del objeto
 sobre el punto de referencia de su padre, y un valor de @code{1}
 alinea el borde derecho del objeto sobre el punto de referencia de su
 padre.  Se pueden usar los símbolos @code{LEFT}, @code{CENTER} y
-@code{RIGHT} en sustitución de los valores @code{-1, 0, 1},
+@code{RIGHT} en sustitución de los valores @w{@code{-1}}, @code{0} y @code{1},
 respectivamente.
 
 Normalmente se usaría la instrucción @code{\override} para modificar
@@ -3315,12 +3735,13 @@ tiene en cuenta.  Esto puede hacer que ajustar el valor de ciertos
 objetos sea una tarea dificultosa.  Las unidades son sólo la mitad de
 las dimensiones verticales del objeto, que suele ser bastante pequeño,
 por lo que pueden requerirse números bastante grandes.  Un valor de
-@code{-1} alinea el borde inferior del objeto con el punto de
+@w{@code{-1}} alinea el borde inferior del objeto con el punto de
 referencia del objeto padre, un valor de @code{0} alinea el centro del
 objeto con el punto de referencia del padre, y un valor de @code{1}
 alinea el borde superior del objeto con el punto de referencia del
 padre.  Se pueden usar los símbolos @code{DOWN}, @code{CENTER},
-@code{UP} en sustitución de @code{-1, 0, 1} respectivamente.
+@code{UP} en sustitución de @w{@code{-1}},
+@code{0} y @code{1}, respectivamente.
 
 @emph{Auto-alineación de objetos en las dos direcciones}
 
@@ -3491,6 +3912,8 @@ e1
 @subsection Agrupación vertical de objetos gráficos
 @translationof Vertical grouping of grobs
 
+@c TODO Expand this section
+
 Los grobs (objetos gráficos) @code{VerticalAlignment} y
 @code{VerticalAxisGroup} trabajan de manera coordinada.
 @code{VerticalAxisGroup} agrupa distintos grobs como @code{Staff},
@@ -3550,7 +3973,6 @@ a la instrucción de marcado @code{\musicglyph}: véase @ref{La tipografía Feta
 
 @c TODO Add inserting Postscript or ref to later
 
-
 @seealso
 Referencia de la notación:
 @ref{Notación gráfica dentro de elementos de marcado},
@@ -3567,14 +3989,15 @@ Referencia de la notación:
 * Modificación de ligaduras de unión y de expresión::
 @end menu
 
+
 @node Modificación de ligaduras de unión y de expresión
 @unnumberedsubsubsec Modificación de ligaduras de unión y de expresión
 @translationof Modifying ties and slurs
 
 @cindex ligaduras de expresión, modificar
 @cindex ligaduras de unión, modificar
-@cindex Bézier, curvas de
-@cindex Bézier, puntos de control
+@cindex Bézier, curvas de, puntos de control
+@cindex puntos de control en curvas de Bézier
 
 Las ligaduras de unión, de expresión y de fraseo se trazan como curvas
 de Bézier de tercer orden.  Si la forma de la ligadura calculada
@@ -3600,7 +4023,7 @@ He aquí un ejemplo de un caso en que la ligadura no es óptima, y donde
 
 @lilypond[verbatim,quote,relative=1]
 <<
-  { e1 ~ e }
+  { e1~ e }
 \\
   { r4 <g c,> <g c,> <g c,> }
 >>
@@ -3635,20 +4058,135 @@ de unión.
   {
     \once \override Tie
       #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
-     e1 ~ e1
+     e1 ~ e
   }
 \\
-  { r4 <g c,> <g c,> <g c,> }
+  { r4 <g c,> <g c,> <g c,> }
 >>
 @end lilypond
 
 @knownissues
-
 No es posible modificar la forma de las ligaduras de unión o de
 expresión cambiando la propiedad @code{control-points} si hay más de
 una en el mismo momento musical, ni siquiera usando la instrucción
-@code{\tweak}.
+@code{\tweak}.  Sin embargo, se puede sobreescribir la propiedad
+@code{tie-configuration} de @code{TieColumn} para fijar la línea de
+inicio y la dirección según se requiera.
 
+@seealso
+Referencia de funcionamiento interno:
+@rinternals{TieColumn}.
+
+@cindex Scheme, contenedores puros
+@cindex Scheme, contenedores no-puros
+@cindex puros, contenedores de Scheme
+@cindex no-puros: contenedores de Scheme
+@cindex horizontal, sobreescribir el espaciado
+
+
+@node Contenedores unpure-pure
+@subsection Contenedores unpure-pure
+@translationof Unpure-pure containers
+
+Los contenedores @q{unpure-pure} (pura y no pura) son útiles para la
+sobreescritura de los cálculos del espaciado en el @emph{eje Y}
+(concretamente @code{Y-offset} e @code{Y-extent}) con una función de
+Scheme en lugar de un literal, es decir, un número o una pareja de
+números.
+
+Para ciertos objetos gráficos, las dimensiones @code{Y-extent} están
+basadas en la propiedad @code{stencil}, la sobreescritura de la
+propiedad de sello de éstos requiere una sobreescritura adicional de
+@code{Y-extent} con un contenedor unpure-pure.  Cuando una función
+sobreescribe una dimensión @code{Y-offset} y/o @code{Y-extent} se
+supone que esto dispara los cálculos de los saltos de línea
+prematuramente durante la compilación.  Así pues, la función no se
+evalúa en absoluto (devolviendo por lo general un valor de @samp{0} o
+@samp{'(0 . 0)}) lo que puede dar lugar a colisiones.  Una función
+@q{pura} no afecta a las propiedades, objetos o suicidios de grobs, y
+por ello siempre ven sus valores relacionados con el eje Y evaluados
+correctamente.
+
+Actualmente hay unas treinta funciones que ya se consideran @q{puras}
+y los contenedores Unpure-pure son una manera de establecer funciones
+que no están en esta lista como @q{puras}.  La función @q{pura} se
+evalúa @emph{antes} de cualquier salto de línea y así el espaciado
+horizontal se puede ajustar @q{a tiempo}.  La función @q{impura} se
+evalúa entonces @emph{después} del salto de línea.
+
+@warning{Dado que es difícil saber siempre qué funciones están en esta
+lista, recomendamos que cualquier función @q{pura} que estemos creando
+no utilice los grobs @code{Beam} o @code{VerticalAlignment}.}
+
+Un contenedor @q{unpure-pure} se contruye de la manera siguiente:
+
+@code{(ly:make-unpure-pure-container f0 f1)}
+
+donde @code{f0} es una función que toma @var{n} argumentos (@var{n >=
+1}) y el primer argumento siempre debe ser el grob.  Ésta es la
+función que da el resultado real.  @var{f1} es la función que se
+etiqueta como @q{pura} que toma @var{n + 2} argumentos.  De nuevo, el
+primer argumento debe ser siempre el grob pero los argumentos segundo
+y tercero son argumentos de @q{inicio} y de @q{final}.
+
+@var{inicio} y @var{final} son, a todos los efectos, valores mudos que
+sólo tienen importancia para los @code{objetos de extensión} (o sea:
+@code{Hairpin}, regulador, o @code{Beam}, barra), que pueden devolver
+distintas estimaciones de altura basadas en una columna de inicio y
+una de final.
+
+El resto son los otros argumentos para la primera función (que puede
+no ser ninguno si @var{n = 1}).
+
+El resultado de la segunda función se usa como una aproximación del
+valor necesario, que se usa entonces por la primera función para
+obtener el valor real que se usa a continuación para el ajuste de
+precisión mucho más tardío durante el proceso de espaciado.
+
+@lilypond[verbatim,quote,ragged-right]
+#(define (square-line-circle-space grob)
+(let* ((pitch (ly:event-property (ly:grob-property grob 'cause) 'pitch))
+      (notename (ly:pitch-notename pitch)))
+ (if (= 0 (modulo notename 2))
+     (make-circle-stencil 0.5 0.0 #t)
+     (make-filled-box-stencil '(0 . 1.0)
+                              '(-0.5 . 0.5)))))
+
+squareLineCircleSpace = {
+  \override NoteHead #'stencil = #square-line-circle-space
+}
+
+smartSquareLineCircleSpace = {
+  \squareLineCircleSpace
+  \override NoteHead #'Y-extent =
+   #(ly:make-unpure-pure-container
+      ly:grob::stencil-height
+      (lambda (grob start end) (ly:grob::stencil-height grob)))
+}
+
+\new Voice \with { \remove "Stem_engraver" }
+\relative c'' {
+  \squareLineCircleSpace
+  cis4 ces cisis c
+  \smartSquareLineCircleSpace
+  cis4 ces cisis c
+}
+@end lilypond
+
+En el primer compás, sin el contenedor @emph{unpure-pure}, el motor de
+espaciado no conoce la anchura de la cabeza de la nota y permite que
+colisione con las alteraciones accidentales.  En el segundo compás, el
+motor de espaciado conoce la anchura de las cabezas de las notas y
+evita la colisión mediante el alargamiento de la línea en la medida
+adecuada.
+
+Normalmente, para cálculos simples se pueden usar funciones casi
+idénticas tanto para las partes @q{no pura} y @q{pura}, simplemente
+cambiando el número de argumentos que se pasan a, y el ámbito de, la
+función.
+
+@warning{Si una función está caracterizada como @q{pura} y resulta que
+no lo es, el resultado puede ser inesperado.}
 
 
 @node Uso de las funciones musicales
@@ -3670,6 +4208,7 @@ de entrada de LilyPond.  Se describen otras funciones más complejas en
 * Ejemplos de funciones de sustitución::
 @end menu
 
+
 @node Sintaxis de las funciones de sustitución
 @subsection Sintaxis de las funciones de sustitución
 @translationof Substitution function syntax
@@ -3699,11 +4238,13 @@ donde
 debe devolver @code{#t}.
 
 @item @code{@var{@dots{}música@dots{}}}
-@tab entrada de LilyPond normal, que utiliza @code{$} para
-referenciar argumentos (p.ej. @samp{$arg1}).
+@tab código de entrada normal de LilyPond, que utiliza @code{$} (en los
+lugares en que sólo se permiten construcciones de Lilypond) o @code{#}
+(para usarlo como un valor de Scheme o un argumento de función musical
+o música dentro de listas de música) para referenciar argumentos
+(p.ej. @samp{#arg1}).
 @end multitable
 
-
 Los argumentos @code{parser} y @code{location} son necesarios, y se
 utilizan en algunas situaciones avanzadas como se encuentra descrito
 en @rextend{Sintaxis de las funciones musicales}.  Para las funciones
@@ -3716,7 +4257,9 @@ musicales son:
 @example
 boolean?
 cheap-list?  @emph{(utilizar en lugar de }@q{list?}@emph{ para un procesado más rápido)}
+ly:duration?
 ly:music?
+ly:pitch?
 markup?
 number?
 pair?
@@ -3729,9 +4272,7 @@ Para ver una lista de los predicados de tipo disponibles, consulte
 @ref{Predicados de tipo predefinidos}.  También se permiten los
 predicados de tipo definidos por el usuario.
 
-
 @seealso
-
 Referencia de la notación:
 @ref{Predicados de tipo predefinidos}.
 
@@ -3761,7 +4302,7 @@ padText =
      (parser location padding)
      (number?)
    #{
-     \once \override TextScript #'padding = $padding
+     \once \override TextScript #'padding = #padding
    #})
 
 \relative c''' {
@@ -3782,12 +4323,11 @@ custosNote =
      (parser location note)
      (ly:music?)
    #{
-     \once \override Voice.NoteHead #'stencil =
-       #ly:text-interface::print
-     \once \override Voice.NoteHead #'text =
-       \markup \musicglyph #"custodes.mensural.u0"
-     \once \override Voice.Stem #'stencil = ##f
-     $note
+     \tweak NoteHead #'stencil #ly:text-interface::print
+     \tweak NoteHead #'text
+        \markup \musicglyph #"custodes.mensural.u0"
+     \tweak Stem #'stencil ##f
+     #note
    #})
 
 \relative c' { c4 d e f \custosNote g }
@@ -3799,20 +4339,18 @@ Se pueden definir funciones de sustitución con más de un argumento:
 tempoPadded =
 #(define-music-function
      (parser location padding tempotext)
-     (number? string?)
+     (number? markup?)
    #{
-     \once \override Score.MetronomeMark #'padding = $padding
-     \tempo \markup { \bold $tempotext }
+     \once \override Score.MetronomeMark #'padding = #padding
+     \tempo \markup { \bold #tempotext }
    #})
 
 \relative c'' {
   \tempo \markup { "Low tempo" }
   c4 d e f g1
-  \tempoPadded #4.0 #"High tempo"
+  \tempoPadded #4.0 "High tempo"
   g4 f e d c1
 }
 @end lilypond
 
-@c @seealso
-
-
+@c TODO: add appropriate @@ref's here.