@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-

@ignore
    Translation of GIT committish: 0d4df37f3e3b4dc9bceb5c78ae94449bd0269c67

    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.19.22"

@ignore
GDP TODO list

Negative numbers are allowed:
> Are you sure? The following works well
> \paper{
>   first-page-number = -2
> }
> and prints page number -1 on the second page, for example.


Clarify
https://sourceforge.net/p/testlilyissues/issues/68/

@end ignore


@node Problemas de espaciado
@chapter Problemas de espaciado
@translationof Spacing issues

La disposición global sobre el papel viene determinada por tres
factores: el diseño de página, los saltos de línea y el espaciado.
Estos factores influyen entre sí.  La elección de uno u otro
espaciado determina qué densidad termina teniendo cada sistema de
música.  Esto influye en el lugar en que se eligen los saltos de
línea y, en último término, en el número de páginas que tiene una
partitura.

Considerado globalmente, este proceso se produce en cuatro fases:
en primer lugar se eligen unas distancias elásticas o @q{muelles},
basados en la duración de las figuras.  Se prueban todas las
combinaciones de saltos de línea posibles, y para cada una de
ellas se calcula una puntuación de @q{maldad}.  Después se hace
una estimación de la altura de cada uno de los posibles sistemas.
Finalmente se selecciona una combinación de saltos de página y de
línea de tal forma que ni el espaciado horizontal ni el vertical
estén demasiado estrechos ni estirados.

Hay dos tipos de bloques que pueden contener ajustes de
disposición: @code{\paper @{@dots{}@}} y @code{\layout
@{@dots{}@}}.  El bloque @code{\paper} contiene ajustes de
disposición de la página que se espera sean los mismos para todas
las partituras de un libro o parte de libro, como la altura de la
hoja o si se imprimen los números de página, etc.  Véase
@ref{Disposición de la página}.  El bloque @code{\layout} contiene
ajustes de disposición de la partitura, como el número de sistemas
que utilizar, o la separación entre grupos de pentagramas, etc.
Véase @ref{Disposición de la partitura}.

@menu
* Disposición de la página::
* Disposición de la partitura::
* Saltos::
* Espaciado vertical::
* Espaciado horizontal::
* Encajar la música en menos páginas::
@end menu


@node Disposición de la página
@section Disposición de la página
@translationof Page layout

Esta sección estudia las opciones de disposición de la página para
el bloque @code{\paper}.

@menu
* El bloque paper::
* Tamaño del papel y escalado automático::
* Variables de espaciado de paper verticales fijas::
* Variables de espaciado de paper verticales flexibles::
* Variables de espaciado de paper horizontales::
* Otras variables de paper::
@end menu


@node El bloque paper
@subsection El bloque @code{@bs{}paper}
@translationof The paper block

Los bloques @code{\paper} pueden aparecer en tres lugares
diferentes para formar una jerarquía descendente de bloques
@code{\paper}:

@itemize

@item
Al principio del archivo de entrada, antes de cualquier bloque
@code{\book}, @code{\bookpart}, o @code{\score}.

@item
Dentro de un bloque @code{\book} pero fuera de cualquier bloque
@code{\bookpart} o @code{\score} que estén dentro de ese libro.

@item
Dentro de un bloque @code{\bookpart} pero fuera de cualquier
bloque @code{\score} que esté dentro de esa parte de libro.

@end itemize

No se puede poner un bloque @code{\paper} dentro de un bloque
@code{\score}.

Los valores de los campos filtran esta jerarquía, persistiendo los
valores establecidos más arriba en la jerarquía a no ser que se
sobreescriban por algún valor establecido más abajo en la
jerarquía.

Pueden aparecer varios bloques @code{\paper} en cada uno de los
niveles, por ejemplo como parte de distintos archivos incluidos
con @code{\include}.  Si es el caso, los campos en cada nivel se
combinan, tomando precedencia los campos que aparecen más tarde si
se producen campos duplicados.

Entre los ajustes que pueden aparecer dentro de un bloque
@code{\paper} están los siguientes:

@itemize

@item
la función de Scheme @code{set-paper-size},

@item
variables de @code{\paper} utilizadas para personalizar la
disposición de la página, y

@item
definiciones de marcado utilizadas para personalizar la
disposición de los encabezamientos, pies y títulos.

@end itemize

La función @code{set-paper-size} se estudia en la sección
siguiente, @ref{Tamaño del papel y escalado automático}.  Las
variables de @code{\paper} que se ocupan de la disposición de la
página se estudian en secciones posteriores.  Las definiciones de
elementos de marcado que se encargan de los encabezamientos, pies
y títulos se estudian en
@ref{Títulos encabezamientos y pies de página personalizados}.

Casi todas las variables de @code{\paper} funcionan solamente
dentro de un bloque @code{\paper}.  Las pocas que funcionan
también en un bloque @code{\layout} están relacionadas en @ref{El
bloque layout,,El bloque @code{@bs{}layout}}.

Excepto cuando se especifica lo contrario, todas las variables de
@code{\paper} que corresponden a distancias sobre la página se
miden en milímetros, a no ser que el usuario especifique unas
unidades diferentes.  Por ejemplo, la declaración siguiente
establece el margen superior @code{top-margin} a diez milímetros:

@example
\paper @{
  top-margin = 10
@}
@end example

Para fijarlo en @code{0.5} pulgadas, utilice el sufijo de unidades
@code{\in}:

@example
\paper @{
  top-margin = 0.5\in
@}
@end example

Los sufijos de unidades que están disponibles son @code{\mm},
@code{\cm}, @code{\in} y @code{\pt}.  Estas unidades son valores
simples para convertir a partir de milímetros; están definidos en
@file{ly/paper-defaults-init.ly}.  Por claridad, al usar
milímetros, se suele escribir el sufijo @code{\mm} aunque no es
necesario técnicamente.

También es posible definir valores de @code{\paper} utilizando
Scheme.  El equivalente de Scheme del ejemplo anterior es:

@example
\paper @{
  #(define top-margin (* 0.5 in))
@}
@end example

@seealso
Referencia de la notación:
@ref{Tamaño del papel y escalado automático},
@ref{Títulos encabezamientos y pies de página personalizados},
@ref{El bloque layout,,El bloque @code{@bs{}layout}}.

Archivos instalados:
@file{ly/paper-defaults-init.ly}.


@node Tamaño del papel y escalado automático
@subsection Tamaño del papel y escalado automático
@translationof Paper size and automatic scaling

@cindex tamaño del papel
@cindex tamaño de la página

@funindex \paper

@menu
* Fijar el tamaño del papel::
* Escalado automático al tamaño del papel::
@end menu


@node Fijar el tamaño del papel
@unnumberedsubsubsec Fijar el tamaño del papel
@translationof Setting paper size

@q{A4} es el valor predeterminado si no se establece ningún tamaño
de página explícitamente.  Sin embargo, existen dos funciones que
se pueden usar para modificarlo:

@table @code
@item set-default-paper-size

@example
#(set-default-paper-size "quarto")
@end example

que siempre se debe colocar en el ámbito superior, y

@item set-paper-size

@example
\paper @{
  #(set-paper-size "tabloid")
@}
@end example

que se debe colocar siempre dentro de un bloque @code{\paper}.
@end table

Si se usa la función @code{set-default-paper-size} en el ámbito
superior jerárquico, debe ir antes de cualquier bloque
@code{\paper}.  @code{set-default-paper-size} establece el tamaño
de todas las páginas, mientras que @code{set-paper-size} establece
sólo el tamaño de las páginas a las que se aplica el bloque
@code{\paper}.  Por ejemplo, si el bloque @code{\paper} está al
principio del archivo, aplica el tamaño de papel a todas las
páginas.  Si el bloque @code{\paper} está dentro de un bloque
@code{\book}, entonces el tamaño del papel sólo se aplica a ese
libro.

Cuando se usa la función @code{set-paper-size}, se debe colocar
@emph{antes} de cualquier otra función que se utilice dentro del
mismo bloque @code{\paper}.  Véase
@ref{Escalado automático al tamaño del papel}.

Los tamaños de página están definidos en el archivo
@file{scm/paper.scm}, y aunque es posible añadir tamaños
personalizados, se sobreescribirán en las actualizaciones del
software posteriores.  La lista de todos los tamaños de papel
disponibles está en @ref{Tamaños de página predefinidos}.

@c An appendix entry exists for paper sizes but is not auto-generated

Se puede usar la siguiente instrucción en el archivo para añadir
un tamaño de página personalizado que se puede usar después con
@code{set-default-paper-size} o con @code{set-paper-size} según
convenga,

@example
#(set! paper-alist (cons '("mi tamaño" . (cons (* 15 in) (* 3 in))) paper-alist))

\paper @{
  #(set-paper-size "mi tamaño")
@}
@end example

Se puede usar cualquiera de las unidades @code{in} (pulgadas),
@code{cm} (centímetros) o @code{mm} (milímetros).

@cindex papel, tamaño, orientación
@cindex página, orientación de la
@cindex papel, tamaño, apaisado

Si se añade el símbolo @code{'landscape} a la función del tamaño
de la página, el papel se gira 90 grados y se establece
adecuadamente la anchura de las líneas.

@example
#(set-default-paper-size "a6" 'landscape)
@end example

Se pueden intercambiar las dimensiones del papel @emph{sin que la
impresión resulte girada} (como cuando se imprime en tamaño
tarjeta postal, o al crear gráficos para su inclusión en lugar de
un documento independiente) añadiendo @samp{landscape} después del
nombre del propio tamaño del papel:

@example
#(set-default-paper-size "a6landscape")
@end example

Cuando el tamaño del papel termina de forma explícita con
@samp{landscape} o con @samp{portrait}, la presencia de un símbolo
@code{'landscape} @emph{solamente} afecta a la orientación de la
impresión, no a las dimensiones del papel que se usan para la
disposición.

@seealso
Referencia de la notación:
@ref{Escalado automático al tamaño del papel},
@ref{Tamaños de página predefinidos}.

Archivos instalados:
@file{scm/paper.scm}.


@node Escalado automático al tamaño del papel
@unnumberedsubsubsec Escalado automático al tamaño del papel
@translationof Automatic scaling to paper size

Si se cambia el tamaño del papel con una de las funciones de
Scheme (@code{set-default-paper-size} o @code{set-paper-size}),
los valores de algunas variables de @code{\paper} se escalan
automáticamente al nuevo tamaño.  Para sortear el escalado
automático para una variable determinada, fije el valor de la
variable después de establecer el tamaño del papel.  Observe que
el escalado automático no se activa mediante el ajuste de las
variables @code{paper-height} o de @code{paper-width}, incluso
aunque @code{paper-width} puede influir sobre otros valores (esto
es distinto al escalado y se estudia más abajo).  Las funciones
@code{set-default-paper-size} y @code{set-paper-size} se describen
en @ref{Fijar el tamaño del papel}.

Las dimensiones verticales afectadas por el escalado automático
son @code{top-margin} y @code{bottom-margin} (véase @ref{Variables
de espaciado de paper verticales fijas,,Variables de espaciado de
@code{@bs{}paper} verticales fijas}).  Las dimensiones
horizontales afectadas por el escalado automático son
@code{left-margin}, @code{right-margin}, @code{inner-margin},
@code{outer-margin}, @code{binding-offset}, @code{indent} y
@code{short-indent} (véase @ref{Variables de espaciado de paper
horizontales,,Variables de espaciado de @code{@bs{}paper}
horizontales}).

Los valores predeterminados para estas dimensiones están fijados
en el archivo @file{ly/paper-defaults-init.ly}, usando variables
internas llamadas @code{top-margin-default},
@code{bottom-margin-default}, etc.  Estos son los valores que
resultan del tamaño predeterminado del papel @code{a4}.  Como
referencia, con el papel @code{a4} la altura @code{paper-height}
es @code{297\mm} y la anchura @code{paper-width} es @code{210\mm}.

@seealso
Referencia de la notación:
@ref{Variables de espaciado de paper verticales fijas},
@ref{Variables de espaciado de paper horizontales}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly},
@file{scm/paper.scm}.


@node Variables de espaciado de paper verticales fijas
@subsection Variables de espaciado de @code{@bs{}paper} verticales fijas
@translationof Fixed vertical spacing paper variables

@warning{Algunas dimensiones de @code{@bs{}paper} se escalan
automáticamente al tamaño del papel, lo que puede llevar a un
comportamiento no esperado.  Véase
@ref{Escalado automático al tamaño del papel}.}

Los valores predeterminados (previos al escalado) están definidos
en el archivo @file{ly/paper-defaults-init.ly}.

@table @code
@item paper-height (altura del papel)
@funindex paper-height

Altura de la página, no fijada de forma predeterminada.  Observe
que el escalado automático de algunas dimensiones verticales no
resulta afectado por esto.

@item top-margin (margen superior)
@funindex top-margin

Margen entre el extremo superior de la página y la parte superior
de la zona imprimible.  Si se modifica el tamaño del papel, el
valor predeterminado de esta dimensión se escala de acuerdo con
ello.

@item bottom-margin (margen inferior)
@funindex bottom-margin

Margen entre la parte inferior de la zona imprimible y el extremo
inferior de la página.  Si se modifica el tamaño del papel, se
escala de acuerdo con ello el valor predeterminado de esta
dimensión.

@item ragged-bottom (sin justificar por abajo)
@funindex ragged-bottom

Si esto se fija al valor verdadero, los sistemas se disponen según
su espaciado natural, ni comprimido ni ampliado verticalmente para
rellenar la página.

@item ragged-last-bottom (sin justificar la última por abajo)
@funindex ragged-last-bottom

Si se establece al valor falso, entonces la última página (tanto
del documento como de cada sección que se hubiera creado con un
bloque @code{\bookpart}) se justifica verticalmente de la misma
forma que las páginas anteriores.
@end table

@seealso
Referencia de la notación:
@ref{Escalado automático al tamaño del papel}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.

Fragmentos de código:
@rlsr{Spacing}.

@knownissues
Los títulos (extraídos del bloque @code{\header}) se tratan como
sistemas, así pues @code{ragged-bottom} y
@code{ragged-last-bottom} aumentan la separación entre los títulos
y el primer sistema de la partitura.

Los tamaños de papel definidos explícitamente sobreescriben
cualquier ajuste de los márgenes superior o inferior definidos por
el usuario.


@node Variables de espaciado de paper verticales flexibles
@subsection Variables de espaciado de @code{@bs{}paper} verticales flexibles
@translationof Flexible vertical spacing paper variables

En casi todos los casos es preferible que las distancias
verticales entre ciertos elementos (como márgenes, títulos,
sistemas y las distintas partituras) sean flexibles, de manera que
se amplíen y compriman adecuadamente dependiendo de la situación.
Están disponibles un cierto número de variables del bloque
@code{\paper} (relacionadas más abajo) para realizar un ajuste
fino del comportamiento de estas dimensiones frente a su
ampliación o compresión.

Observe que las variables de @code{\paper} que se estudian en esta
sección no controlan el espaciado de los pentagramas que están
dentro de los sistemas individuales.  El espaciado dentro de los
sistemas se controla por medio de propiedades de grob, con ajustes
que se escriben normalmente dentro de un bloque @code{\score} o
@code{\layout}, y no dentro del bloque @code{\paper}.  Véase
@ref{Espaciado vertical flexible dentro de los sistemas}.

@menu
* Estructura de las listas-A de espaciado vertical flexible::
* Lista de variables de espaciado de paper verticales flexibles::
@end menu


@node Estructura de las listas-A de espaciado vertical flexible
@unnumberedsubsubsec Estructura de las listas-A de espaciado vertical flexible
@translationof Structure of flexible vertical spacing alists

Cada una de las variables de espaciado de @code{\paper} flexibles
es una lista-A (lista asociativa) que contiene cuatro
@emph{claves}:

@itemize

@item
@code{basic-distance} (distancia básica):
distancia vertical, medida en espacios de pentagrama, entre los
@emph{puntos de referencia} de los dos elementos, cuando no
resulte ninguna colisión, y no se produzca ninguna ampliación o
compresión.  El punto de referencia de un elemento de marcado (de
título o del nivel jerárquico superior) es su punto más alto, y el
punto de referencia de un sistema es el centro vertical del
@code{StaffSymbol} más cercano (incluso si se trata de una línea
que no es un pentagrama, como un contexto @code{Lyrics}).  Los
valores de @code{distancia básica} menores de @code{padding} o de
@code{minimum-distance} no son significativos, porque la distancia
resultante nunca será menor de @code{padding} o de
@code{minimum-distance}.

@item
@code{minimum-distance} (distancia mínima):
la distancia vertical mínima permitida, medida en espacios de
pentagrama, entre los puntos de referencia de los dos elementos,
cuando se produce una compresión.  Los valores de
@code{minimum-distance} menores de @code{padding} no son
significativos, porque la distancia resultante nunca será menor de
@code{padding}.

@c TODO: explain skylines somewhere and xref to it from here.

@item
@code{padding} (relleno):
mínimo espacio vertical vacío necesario entre los rectángulos
circundantes (o las líneas de horizonte) de los dos elementos,
medido en espacios de pentagrama.

@item
@code{stretchability} (ampliabilidad):
medida sin unidades de la propensión relativa de esta dimensión a
ampliarse.  Si es cero, la distancia no se ampliará (a no ser que
resultasen colisiones).  Si es positiva, la significación del
valor de ampliabilidad de una dimensión concreta depende solamente
de su relación con los valores de @code{stretchability} de las
otras dimensiones.  Por ejemplo, si una dimensión tiene el doble
de @code{stretchability} que otra, se ampliará con el doble de
facilidad.  Los valores deben ser no negativos y finitos.  El
valor @code{+inf.0} desencadena un error de programación y se
ignora, pero se puede usar @code{1.0e7} para un muelle casi
infinitamente ampliable.  Si no se fija un valor, el valor
predeterminado se establece a @code{basic-distance}.  Observe que
la propensión de la dimensión a @emph{comprimirse} no se puede
establecer directamente por el usuario y es igual a
(@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance}).

@end itemize

Si una página tiene un margen inferior no justificado, la
distancia resultante es la mayor de:

@itemize

@item
@code{basic-distance},

@item
@code{minimum-distance}, y

@item
@code{padding} más la menor distancia necesaria para eliminar las
colisiones.

@end itemize

Para partituras de varias páginas con la parte inferior no
justificada en la última página, ésta usará el mismo espaciado que
la página anterior siempre y cuando haya espacio suficiente para
ello.

Los métodos específicos para la modificación de las listas-A se
estudian en @ref{Modificación de las listas-A}.  El siguiente
ejemplo muestra las dos formas en que pueden modificarse estas
listas-A.  La primera declaración actualiza un par clave-valor
individualmente, y la segunda redefine la variable completamente:

@example
\paper @{
  system-system-spacing.basic-distance = #8
  score-system-spacing =
    #'((basic-distance . 12)
       (minimum-distance . 6)
       (padding . 1)
       (stretchability . 12))
@}
@end example


@node Lista de variables de espaciado de paper verticales flexibles
@unnumberedsubsubsec Lista de variables de espaciado de @code{@bs{}paper} verticales flexibles
@translationof List of flexible vertical spacing paper variables

Los nombres de estas variables siguen el formato
@code{@var{superior}-@var{inferior}-spacing}, donde
@code{@var{superior}} e @code{@var{inferior}} son los elementos
que van a ser espaciados.  Cada distancia se mide entre los puntos
de referencia de los dos elementos (véase más arriba la
descripción de la estructura de la lista-A).  Observe que en estos
nombres de variable, el término @q{@code{markup}} se refiere tanto
a @emph{elementos de marcado de título} (@code{bookTitleMarkup} o
@code{scoreTitleMarkup}) como a @emph{elementos de marcado del
nivel superior} (véase @ref{Estructura del archivo}).  Todas las
distancias se miden en espacios de pentagrama.

Los ajustes predeterminados están definidos en el archivo
@file{ly/paper-defaults-init.ly}.

@c TODO: Where do headers/footers fit in? -mp

@table @code
@item markup-system-spacing
@funindex markup-system-spacing

distancia entre un elemento de marcado (de título o del nivel
superior) y el sistema que le sigue.

@item score-markup-spacing
@funindex score-markup-spacing

distancia entre el último sistema de una partitura y el elemento
de marcado (de título o del nivel superior) que le sigue.

@item score-system-spacing
@funindex score-system-spacing

distancia entre el último sistema de una partitura y el primer
sistema de la partitura que le sigue, cuando no existe ningún
elemento de marcado (de título o del nivel superior) entre ellos.

@item system-system-spacing
@funindex system-system-spacing

distancia entre dos sistemas dentro de la misma partitura.

@item markup-markup-spacing
@funindex markup-markup-spacing

distancia entre dos elementos de marcado (de título o del nivel
superior).

@item last-bottom-spacing
@funindex last-bottom-spacing

distancia desde el último sistema o elemento de marcado del nivel
superior en una página, hasta la parte inferior de la zona
imprimible (es decir, el extremo superior del margen inferior).

@item top-system-spacing
@funindex top-system-spacing

distancia desde la parte superior de la zona imprimible (es decir,
el extremo inferior del margen superior) hasta el primer sistema
de una página, cuando no hay ningún elemento de marcado (de título
o del nivel superior) entre los dos.

@item top-markup-spacing
@funindex top-markup-spacing

distancia desde el extremo superior de la zona imprimible (es
decir, el extremo inferior del margen superior) hasta el primer
elemento de marcado (de título o del nivel superior) sobre una
página, cuando no hay ningún sistema entre los dos.
@end table

@seealso
Referencia de la notación:
@ref{Espaciado vertical flexible dentro de los sistemas}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.

Fragmentos de código:
@rlsr{Spacing}.


@node Variables de espaciado de paper horizontales
@subsection Variables de espaciado de @code{@bs{}paper} horizontales
@translationof Horizontal spacing paper variables

@warning{Algunas dimensiones de @code{@bs{}paper} se escalan
automáticamente al tamaño del papel, lo que puede dar lugar a un
comportamiento distinto al esperado.  Véase
@ref{Escalado automático al tamaño del papel}.}

@menu
* Variables de paper para la anchura y los márgenes::
* Variables de paper para el modo de doble cara::
* Variables de paper para desplazamientos y sangrados::
@end menu


@node Variables de paper para la anchura y los márgenes
@unnumberedsubsubsec Variables de @code{@bs{}paper} para la anchura y los márgenes
@translationof paper variables for widths and margins

Los valores predeterminados (antes del escalado) que no están
relacionados aquí se encuentran definidos en el archivo
@file{ly/paper-defaults-init.ly}.

@table @code

@item paper-width (anchura del papel)
@funindex paper-width

Anchura de la página, sin fijar de forma predeterminada.  Aunque
@code{paper-width} no tiene ningún efecto sobre el escalado
automático de algunas dimensiones horizontales, sí influye sobre
la variable @code{line-width}.  Si están establecidas las dos
variables @code{paper-width} y @code{line-width}, entonces también
se actualizan @code{left-margin} y @code{right-margin}.  Véase
también @code{check-consistency}.

@item line-width (longitud de la línea)
@funindex line-width

Cuando se especifica dentro de un bloque @code{\paper}, define las
dimensiones horizontales del espacio disponible para las líneas
del pentagrama en los sistemas sin sangrado por la izquierda.  Si
se deja sin especificar, la longitud @code{line-width} del papel
se determina a partir de
@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}.
Si se especifica la longitud @code{line-width} del papel, y no se
especifican el margen izquierdo @code{left-margin} ni el margen
derecho @code{right-margin}, entonces los márgenes se actualizan
de forma que los sistemas se centran automáticamente sobre la
página.  Véase también @code{check-consistency}.

Los valores de @code{line-width} para las partituras individuales
se pueden especificar dentro de los bloques @code{\layout} de las
partituras.  Estos valores controlan la longitud de las líneas
producidas partitura a partitura.  Si la longitud
@code{line-width} no se especifica para una partitura, su valor
predeterminado es el @code{line-width} del bloque paper.  El hecho
de fijar la longitud @code{line-width} de una partitura no tiene
efecto sobre los márgenes del papel.  Las líneas del pentagrama,
de una longitud determinada por el valor @code{line-width} de la
partitura, se alinean por la izquierda dentro del área definida
por la longitud @code{line-width} del papel.  Si la longitud
@code{line-width} del papel y de la partitura son iguales, las
líneas del pentagrama se extienden exactamente desde el margen
izquierdo hasta el margen derecho, pero si la longitud
@code{line-width} de la partitura es mayor que la
@code{line-width} del papel, las líneas del pentagrama se
imprimirán encima del espacio reservado al margen derecho.

@item left-margin (margen izquierdo)
@funindex left-margin

Margen entre el extremo izquierdo de la página y el comienzo de
las líneas del pentagrama en los sistemas sin sangrado.  Si el
tamaño del papel se modifica, el valor predeterminado de esta
dimensión se escala de acuerdo con ello.  Si no se fija el valor
de @code{left-margin}, y tanto @code{line-width} como
@code{right-margin} están fijados, entonces se establece el valor
de @code{left-margin} a
@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}.
Si solamente está fijado @code{line-width}, entonces los dos
márgenes se establecen a
@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)},
y como consecuencia los sistemas se centran sobre la página.
Véase también @code{check-consistency}.

@item right-margin (margen derecho)
@funindex right-margin

Margen entre el extremo derecho de la página y el final de las
líneas del pentagrama en sistemas justificados.  Si el tamaño de
la página se modifica, el valor predeterminado de esta dimensión
se escala de acuerdo con ello.  Si @code{right-margin} está sin
fijar, y tanto @code{line-width} como @code{left-margin} están
fijados, el valor de @code{right-margin} se establece a
@code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}.
Si solamente está fijado @code{line-width}, los dos márgenes se
establecen a
@code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)},
y como consecuencia los sistemas aparecen centrados sobre la
página.  Véase también @code{check-consistency}.

@item check-consistency (comprobar la consistencia)
@funindex check-consistency

Si esto es verdadero (su valor predeterminado), se imprime una
advertencia en caso de que la suma de @code{left-margin},
@code{line-width} y @code{right-margin} no coincida exactamente
con el valor de @code{paper-width}, y se sustituye cada uno de
estos valores (excepto @code{paper-width}) con su valor
predeterminado (escalado al tamaño del papel si es necesario).  Si
está fijado al valor falso, se ignora cualquier inconsistencia y
se permite que los sistemas se salgan del borde del papel.

@item ragged-right (no justificar por la derecha)
@funindex ragged-right

Si está fijado al valor verdadero, los sistemas no cubren el ancho
de la línea.  En lugar de ello, los sistemas finalizan en su
longitud horizontal natural.  Valor predeterminado: @code{#t} para
las partituras con un solo sistema, y @code{#f} para partituras
que tienen dos o más sistemas.  Esta variable también se puede
establecer dentro de un bloque @code{\layout}.

@item ragged-last (no justificar el último)
@funindex ragged-last

Si está fijado al valor verdadero, el último sistema de la
partitura no llena toda la anchura de la línea.  En lugar de ello,
el último sistema finaliza en su longitud horizontal natural.
Valor predeterminado: @code{#f}.  Esta variable también puede
ajustarse dentro de un bloque @code{\layout}.

@end table

@seealso
Referencia de la notación:
@ref{Escalado automático al tamaño del papel}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.

@knownissues
Los tamaños de papel definidos explícitamente sobreescriben
cualquier ajuste de los márgenes izquierdo o derecho definidos por
el usuario.


@node Variables de paper para el modo de doble cara
@unnumberedsubsubsec Variables de @code{@bs{}paper} para el modo de doble cara
@translationof paper variables for two-sided mode

Los valores predeterminados (antes del escalado) se definen en
@file{ly/paper-defaults-init.ly}.

@table @code

@item two-sided (dos caras)
@funindex two-sided

@cindex encuadernación
@cindex margen de encuadernación

Si tiene el valor verdadero, utilizar @code{inner-margin},
@code{outer-margin} y @code{binding-offset} para determinar los
márgenes dependiendo de si el número de la página es par o impar.
Esto sobreescribe a @code{left-margin} y a @code{right-margin}.

@item inner-margin (margen interno)
@funindex inner-margin

Margen que todas las páginas tienen en el lado interno si forman
parte de un libro.  Si el tamaño del papel se modifica, el valor
predeterminado de esta dimensión se escala de acuerdo con ello.
Solamente funciona con @code{two-sided} fijado al valor verdadero.

@item outer-margin (margen externo)
@funindex outer-margin

Margen que todas las páginas tienen en el lado externo si forman
parte de un libro.  Si el tamaño del papel se modifica, el valor
predeterminado de esta dimensión se escala de acuerdo con ello.
Solamente funciona con @code{two-sided} fijado al valor verdadero.

@item binding-offset (margen de encuadernación)
@funindex binding-offset

Medida en que se aumenta @code{inner-margin} para asegurar que no
se oculta nada a causa de la encuadernación.  Si el tamaño del
papel se modifica, el valor predeterminado de esta dimensión se
escala de acuerdo con ello.  Solamente funciona con
@code{two-sided} fijado al valor verdadero.

@end table

@seealso
Referencia de la notación:
@ref{Escalado automático al tamaño del papel}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.


@node Variables de paper para desplazamientos y sangrados
@unnumberedsubsubsec Variables de @code{@bs{}paper} para desplazamientos y sangrados
@translationof paper variables for shifts and indents

Los valores predeterminados (antes del escalado) que no se
relacionan aquí están definidos en el archivo
@file{ly/paper-defaults-init.ly}.

@table @code

@item horizontal-shift (desplazamiento horizontal)
@funindex horizontal-shift

@c This default value is buried in the middle of page.scm.  -mp

Medida en que todos los sistemas (incluidos los títulos de
cabecera y los separadores de sistemas) se desplazan a la derecha.
Predeterminado: @code{0.0}.

@item indent (sangrado)
@funindex indent

Nivel de sangrado para el primer sistema de una partitura.  Si se
modifica el tamaño del papel, el valor predeterminado de esta
dimensión se escala de acuerdo con ello.  El espacio dentro de
@code{line-width} que está disponible para el primer sistema se
reduce en esta cantidad.  @code{indent} se puede también
especificar dentro de los bloques @code{\layout} para ajustar los
sangrados partitura a partitura.

@item short-indent (sangrado reducido)
@funindex short-indent

Nivel de sangrado para todos los sistemas de una partitura excepto
el primero.  Si el tamaño del papel se modifica, el valor
predeterminado de esta dimensión se escala de acuerdo con ello.
El espacio dentro de @code{line-width} que está disponible para
los sistemas que no son el primero, se reduce en esta cantidad.
También se puede especificar @code{short-indent} dentro de los
bloques @code{\layout} para ajustar los sangrados reducidos
partitura a partitura.

@end table

@seealso
Referencia de la notación:
@ref{Escalado automático al tamaño del papel}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.

Fragmentos de código:
@rlsr{Spacing}.


@node Otras variables de paper
@subsection Otras variables de @code{@bs{}paper}
@translationof Other paper variables

@menu
* Variables de paper para los saltos de línea::
* Variables de paper para los saltos de página::
* Variables de paper para la numeración de las páginas::
* Variables de paper diversas::
@end menu


@node Variables de paper para los saltos de línea
@unnumberedsubsubsec Variables de @code{@bs{}paper} para los saltos de línea
@translationof paper variables for line breaking

@table @code

@item max-systems-per-page
@funindex max-systems-per-page

Número máximo de sistemas que se colocan sobre una página.  Solo
está contemplado por el algoritmo @code{ly:optimal-breaking}.
Valor predeterminado: no fijado.

@item min-systems-per-page
@funindex min-systems-per-page

Número mínimo de sistemas que se colocan sobre una página.  Puede
causar que las páginas aparezcan atiborradas si el valor es
demasiado grande En el momento actual solo está contemplado por el
algoritmo @code{ly:optimal-breaking}.  Valor predeterminado: no
fijado.

@item systems-per-page
@funindex systems-per-page

Número de sistemas que se deben colocar en cada página.  En el
momento actual solo está contemplado por el algoritmo
@code{ly:optimal-breaking}.  Valor predeterminado: no fijado.

@item system-count
@funindex system-count

Número de sistemas que utilizar para una partitura. Valor
predeterminado: no fijado.  Esta variables también se puede
ajustar dentro de un bloque @code{\layout}.

@end table

@seealso
Referencia de la notación:
@ref{Saltos de línea}.


@node Variables de paper para los saltos de página
@unnumberedsubsubsec Variables de @code{@bs{}paper} para los saltos de página
@translationof paper variables for page breaking

Los valores predeterminados que no están relacionados aquí, se
definen en el archivo @file{ly/paper-defaults-init.ly}

@table @code

@item page-breaking
@funindex page-breaking

Algoritmo de saltos de página que utilizar.  Se puede elegir entre
@code{ly:minimal-breaking}, @code{ly:page-turn-breaking},
@code{ly:one-page-breaking}, @code{ly:one-line-breaking},
@code{ly:one-line-auto-height-breaking} y
@code{ly:optimal-breaking} (predeterminado).

@item page-breaking-system-system-spacing
@funindex page-breaking-system-system-spacing

Engaña a la parte del programa encargada de los saltos de página
para que piense que @code{system-system-spacing} está establecido
a un valor distinto al que tiene realmente.  Por ejemplo, si
@code{page-breaking-system-system-spacing.padding} está
establecido a algo que es mucho mayor que
@code{system-system-spacing.padding}, entonces el divisor de
páginas pone menos sistemas en cada página.  Valor predeterminado:
sin ajustar.

@item page-count
@funindex page-count

Número de páginas que utilizar en una partitura, no ajustado de
forma predeterminada.

@end table

Las siguientes variables son efectivas solamente cuando
@code{page-breaking} está sijado a @code{ly:page-turn-breaking}.
Los saltos de página se seleccionan entonces de forma que se
minimice el número de pasos de página.  Dado que los pasos de
página son necesarios cuando se pasa de una página impar a una
página par, normalmente resultará favorecida aquella disposición
en que la última página sea impar.  Los lugares en que se
prefieran pasos de página pueden indicarse manualmente insertando
@code{\allowPageTurn} o automáticamente incluyendo el grabador
@code{Page_turn_engraver} (véase @ref{Paso de página óptimo}).

Si no hay un número suficiente de posibilidades para escoger a la
hora de insertar unos pasos de página adecuados, LilyPond puede
insertar una página vacía dentro de una partitura, entre
partituras (si hay dos o más partituras) o finalizando una
partitura en una página de numeración par.  Los valores de las
tres siguientes variables pueden incrementarse para que estas
acciones se vuelvan menos probables.

Los valores son penalizaciones, es decir, cuando más alto es el
valor menos probables será la acción asociada relativa a otras
posibilidades.

@table @code

@item blank-page-penalty (penalización por página vacía)
@funindex blank-page-penalty

Penalización por tener una página vacía en mitad de una partitura.
Si @code{blank-page-penalty} es grande y está seleccionado
@code{ly:page-turn-breaking}, entonces será menos probable que
LilyPond inserte una página en medio de una partitura.  En lugar
de ello, intercala espacio en la música hasta que se rellene la
página vacía y la siguiente.  Predeterminado: 5.

@item blank-last-page-penalty (penalización por última página vacía)
@funindex blank-last-page-penalty

Penalización por terminar la partitura sobre una página par.  Si
@code{blank-last-page-penalty} es grande y está seleccionado
@code{ly:page-turn-breaking}, entonces será menos probable que
LilyPond produzca una partitura en que la última página tenga
numeración par.  En su lugar, ajustará el espaciado de manera que
use una página más o una página menos.  Predeterminado: 0.

@item blank-after-score-page-penalty (penalización por página vacía después de una partitura)
@funindex blank-after-score-page-penalty

Penalización por tener una página vacía después del final de una
partitura y antes de la siguiente.  De forma predeterminada, esta
penalización es más pequeña que @code{blank-page-penalty}, de
forma que se insertan páginas vacías después de las partituras
como preferencia sobre la inserción de páginas vacías dentro de
una partitura.  Predeterminado: 2.

@end table


@seealso
Referencia de la notación:
@ref{Saltos de página},
@ref{Saltos de página óptimos},
@ref{Paso de página óptimo},
@ref{Saltos de página mínimos},
@ref{Saltos de página del tipo página única},
@ref{Saltos de página del tipo una-línea}
@ref{Saltos de página del tipo una-línea-altura-automática}.

Archivos de inicio:
@file{ly/paper-defaults-init.ly}.


@node Variables de paper para la numeración de las páginas
@unnumberedsubsubsec Variables de @code{@bs{}paper} para la numeración de las páginas
@translationof paper variables for page numbering

Los valores predeterminados que no se relacionan aquí están
definidos en el archivo @file{ly/paper-defaults-init.ly}

@table @code

@cindex número, de página, automático
@item auto-first-page-number
@funindex auto-first-page-number

El algoritmo de división de páginas está afectado por el hecho de
que el número de la primera página sea par o impar.  Si está
establecido al valor verdadero, el algoritmo de división de
páginas decide si comenzar con un número par o impar.  Esto hace
que el número de la primera página se quede como está, o que se
aumente en una unidad.  Predeterminado: @code{#f}.

@cindex número, de página, especificar el primero
@item first-page-number
@funindex first-page-number

Valor del número de página en la primera página.

@item print-first-page-number
@funindex print-first-page-number

Si está fijado a verdadero, se imprime un número de página en la
primera página.

@cindex número, de página, suprimir
@item print-page-number
@funindex print-page-number

Si está fijado a falso, no se imprimen los números de página.

@cindex números de página, romanos
@item page-number-type
@funindex page-number-type

Tipo de numeración para las páginas.  Entre las posibilidades
están @code{roman-lower} (números romanos en minúsculas),
@code{roman-upper} (números romanos en mayúsculas) y @code{arabic}
(cifras arábigas).  Valor predeterminado: @code{'arabic}.

@end table

@seealso
Archivos de inicio:
@file{ly/paper-defaults-init.ly}.

@knownissues
Los números de página impares siempre están a la derecha.  Si
quiere que la música comience en la página 1 debe haber una página
en blanco en el reverso de la página de cubierta de manera que la
página 1 esté en el lado derecho.


@node Variables de paper diversas
@unnumberedsubsubsec Variables de @code{@bs{}paper} diversas
@translationof Miscellaneous paper variables

@table @code

@item page-spacing-weight
@funindex page-spacing-weight

Importancia relativa del espacio (vertical) de las páginas y el
espaciado (horizontal) de las líneas.  Los valores altos hacen que
el espaciado de la página tenga más importancia.  Predeterminado:
@code{10}.

@item print-all-headers
@funindex print-all-headers

Si está fijado a verdadero, imprime todos los encabezamientos para
cada una de las partituras @code{\score} de la salida.
Normalmente sólo se imprimen las variables de encabezamiento
@code{piece} y @code{opus}.  Valor predeterminado: @code{#f}.

@item system-separator-markup
@funindex system-separator-markup

@funindex \slashSeparator

Objeto de marcado que se inserta entre los sistemas.  Se suele
usar para partituras orquestales.  Predeterminado: sin establecer.
El elemento de marcado @code{\slashSeparator}, definido en el
archivo @file{ly/titling-init.ly}, se aporta como un valor
predeterminado adecuado, por ejemplo:

@lilypond[quote,verbatim,noragged-right,line-width=30\mm]
#(set-default-paper-size "a8")

\book {
  \paper {
    system-separator-markup = \slashSeparator
  }
  \header {
    tagline = ##f
  }
  \score {
    \relative { c''1 \break c1 \break c1 }
  }
}
@end lilypond

@end table

@seealso
Archivos de inicio:
@file{ly/titling-init.ly}.

Fragmentos de código:
@rlsr{Spacing}.

@knownissues
El encabezamiento de página predeterminado pone el número de
página y el campo @code{instrument} del bloque @code{\header}
sobre la misma línea.


@node Disposición de la partitura
@section Disposición de la partitura
@translationof Score layout

Esta sección trata de las opciones de disposición de la partitura
para el bloque @code{\layout}.

@menu
* El bloque layout::
* Establecer el tamaño del pentagrama::
@end menu


@node El bloque layout
@subsection El bloque @code{@bs{}layout}
@translationof  The layout block

@funindex \layout

Así como el bloque @code{\paper} contiene ajustes relativos al
formateo de la página para todo el documento, el bloque
@code{\layout} contiene ajustes para la disposición específica de
las partituras.  Para fijar las opciones de disposición de
partituras de forma global, escríbalas en un bloque @code{\layout}
del nivel jerárquico superior.  Para fijar opciones de disposición
para una partitura individual escríbalas dentro de un bloque
@code{\layout} dentro del bloque @code{\score}, después de la
música.  Entre los ajustes que pueden aparecer en un bloque
@code{\layout} se encuentran los siguientes:

@itemize
@item la función de Scheme @code{layout-set-staff-size},
@item las modificaciones de contexto de los bloques @code{\context}, y
@item las variables de @code{\paper} que afectan a la disposición de la partitura.
@end itemize

La función @code{layout-set-staff-size} se estudia en la sección
siguiente, @ref{Establecer el tamaño del pentagrama}. Las
modificaciones de contexto se estudian en un capítulo distinto;
véase @ref{Modificar los complementos (plug-ins) de contexto} y
@ref{Cambiar los valores por omisión de los contextos}.

Las variables de @code{\paper} que pueden aparecer dentro de un
bloque @code{\layout}, y cuyos valores predeterminados se toman
del bloque @code{paper}, son:

@itemize

@item
@code{line-width}, @code{ragged-right} y @code{ragged-last} (véase
@ref{Variables de paper para la anchura y los márgenes,,Variables
de @code{@bs{}paper} para la anchura y los márgenes})

@item
@code{indent} y @code{short-indent}
(véase @ref{Variables de paper para desplazamientos y sangrados,,Variables de @code{@bs{}paper} para desplazamientos y sangrados})

@item
@code{system-count}
(véase @ref{Variables de paper para los saltos de línea,,Variables de @code{@bs{}paper} para los saltos de línea})

@end itemize

He aquí un ejemplo de un bloque @code{\layout}:

@example
\layout @{
  indent = 2\cm
  \context @{
    \StaffGroup
    \override StaffGrouper.staff-staff-spacing.basic-distance = #8
  @}
  \context @{
    \Voice
    \override TextScript.padding = #1
    \override Glissando.thickness = #3
  @}
@}
@end example

Se pueden escribir varios bloques @code{\layout} como expresiones
del nivel superior.  Esto puede ser útil, por ejemplo, si hay
distintos ajustes almacenados en diversos archivos y se incluyen
opcionalmente.  Internamente, cuando se evalúa un bloque
@code{\layout}, se hace una copia de la configuración de
@code{\layout} actual, y después se aplican los cambios definidos
en el bloque; el resultado se guarda como la nueva configuración
actual.  Desde el punto de vista del usuario, los bloques
@code{\layout} se combinan, pero en situaciones de conflicto
(cuando se cambia la misma propiedad en diferentes bloques) las
definiciones más tardías toman precedencia.

Por ejemplo: si este bloque:

@example
\layout @{
  \context @{
    \Voice
    \override TextScript.color = #magenta
    \override Glissando.thickness = #1.5
  @}
@}
@end example

se coloca después del del ejemplo anterior, las sobreescrituras de
@code{'padding} y de @code{'color} para @code{TextScript} se
combinan, pero la última sobreescritura @code{'thickness} para
@code{Glissando} sustituye (u oculta) a la anterior.

Los bloques @code{\layout} se pueden asignar a variables para una
reutilización posterior, pero la forma en que esto funciona es
ligera y significativamente diferente del hecho de escribirlas
literalmente.

Si se define una variable de la siguiente manera:

@example
variable_de_Layout = \layout @{
  \context @{
    \Voice
    \override NoteHead.font-size = #4
  @}
@}
@end example

guardará la configuración actual de @code{\layout} con la
sobreescritura añadida de @code{NoteHead.font-size}, pero esta
combinación @emph{no} se guarda como la nueva configuración
actual.  Tenga en cuenta que la @q{configuración actual} se lee
cuando la variable se define y no cuando se usa, de manera que el
contenido de la variable depende de su posición dentro del código
fuente.

La variable se puede entonces usar dentro de otro bloque
@code{\layout}, por ejemplo:

@example
\layout @{
  \variable_de_layout
  \context @{
    \Voice
    \override NoteHead.color = #red
  @}
@}
@end example

Un bloque @code{\layout} que contiene una variable, como en el
ejemplo anterior, @emph{no} copia la configuración actual, sino
que en lugar de ello usa el contenido de
@code{\variable_de_layout} como la configuración base para las
adiciones posteriores.  Esto significa que cualquier cambio
definido entre la definición y el uso de la variable, se pierde.

Si la @code{variable_de_layout} se define (o se incluye con
@code{\include}) inmediatamente antes de que se utilice, su
contenido es sencillamente la configuración en curso más las
sobreescrituras que se hayan definido dentro de él.  Así pues, en
el ejemplo anterior que muestra el uso de
@code{\variable_de_layout} el último bloque @code{\layout}
consistiría en:

@example
  TextScript.padding = #1
  TextScript.color = #magenta
  Glissando.thickness = #1.5
  NoteHead.font-size = #4
  NoteHead.color = #red
@end example

más las sobreescrituras de @code{indent} y de @code{StaffGrouper}.

Pero si la variable ya hubiera sido definida antes del primer
bloque @code{\layout} la configuración actual contendría ahora
solamente

@example
  NoteHead.font-size= #4 % (escrita en la definición de la variable)
  NoteHead.color = #red % (añadida después del uso de la variable)
@end example

Si se planifica cuidadosamente, las variables de @code{\layout}
pueden ser una herramienta valiosa para estructurar el diseño de
la disposición de las fuentes, y también para reiniciar la
configuración de @code{\layout} a un estado conocido.

@seealso
Referencia de la notación:
@ref{Cambiar los valores por omisión de los contextos}.

Fragmentos de código:
@rlsr{Spacing}.


@node Establecer el tamaño del pentagrama
@subsection Establecer el tamaño del pentagrama
@translationof Setting the staff size

@cindex tipografía, fijar el tamaño de
@cindex pentagrama, fijar el tamaño de
@cindex disposición, archivo de
@funindex magnification->font-size
@funindex magstep
@funindex set-global-staff-size
@funindex layout-set-staff-size


El @strong{tamaño de pentagrama} predeterminado es de 20 puntos,
que corresponde a una altura del pentagrama de 7.03 mm (un punto
es 100/7227 de pulgada, o 2540/7227 mm).  El tamaño del pentagrama
se puede modificar de tres formas:

@enumerate

@item
Para establecer globalmente el tamaño del pentagrama para todas
las partituras de un archivo (o en un bloque @code{\book}, para
ser exactos), utilice @code{set-global-staff-size}:

@example
#(set-global-staff-size 14)
@end example

@noindent
El ejemplo de arriba establece el tamaño global predeterminado del
pentagrama a 14 pt (4.92 mm) y escala todas las tipografías según
corresponda.

@item
Para fijar el tamaño del pentagrama para una sola partitura dentro
de un libro, use @code{layout-set-staff-size} dentro del bloque
@code{\layout} de dicha partitura:

@example
\score @{
  @dots{}
  \layout @{
    #(layout-set-staff-size 14)
  @}
@}
@end example

@item
@funindex \magnifyStaff
Para fijar el tamaño del pentagrama para una sola pauta dentro de
un sistema, use la instrucción @code{\magnifyStaff}.  Por ejemplo,
las partituras de música de cámara editadas de la forma
tradicional, con piano, usan habitualmente pautas de 7 mm para el
piano, mientras que los otros pentagramas suelen estar entre 3/5 y
5/7 de reducción (entre el 60% y el 71%).  Para obtener la
proporción de 5/7, escriba:

@example
\score @{
  <<
    \new Staff \with @{
      \magnifyStaff #5/7
    @} @{ @dots{} @}
    \new PianoStaff @{ @dots{} @}
  >>
@}
@end example

En caso de que usted sepa qué tamaño de @code{fontSize} quiere
usar, puede emplear la forma siguiente:

@example
\score @{
  <<
    \new Staff \with @{
      \magnifyStaff #(magstep -3)
    @} @{ @dots{} @}
    \new PianoStaff @{ @dots{} @}
  >>
@}
@end example

Para imitar la apariencia de las ediciones tradicionales, es mejor
evitar reducir el grosor de las líneas del pentagrama.

@end enumerate


@subheading Peso automático de la tipografía a distintos tamaños

La tipografía Emmentaler ofrece el conjunto de glifos musicales
@emph{Feta} en ocho tamaños distintos, cada uno de ellos ajustado
a un tamaño de pentagrama.  Cuanto más pequeño es el tamaño de los
glifos, más @qq{pesados} se vuelven, de manera que armonicen con
las líneas del pentagrama, que son también relativamente más
gruesas.  Los tamaños de glifo recomendados se relacionan en la
tabla siguiente:

@multitable @columnfractions .15 .2 .22 .2

@item @b{nombre de la fuente} @tab @b{altura del pentagrama (pt)} @tab @b{altura del pentagrama (mm)} @tab @b{usos}
@item feta11 @tab 11.22 @tab 3.9 @tab partituras de bolsillo
@item feta13 @tab 12.60 @tab 4.4 @tab
@item feta14 @tab 14.14 @tab 5.0 @tab
@item feta16 @tab 15.87 @tab 5.6 @tab
@item feta18 @tab 17.82 @tab 6.3 @tab cancioneros
@item feta20 @tab 20 @tab 7.0 @tab particellas estándar
@item feta23 @tab 22.45 @tab 7.9 @tab
@item feta26 @tab 25.2 @tab 8.9 @tab @c modern rental material?
@end multitable

@seealso
Referencia de la notación:
@ref{Seleccionar el tamaño de la tipografía para la notación},
@ref{La tipografía Emmentaler}.

Fragmentos de código:
@rlsr{Spacing}.


@node Saltos
@section Saltos
@translationof Breaks

@menu
* Saltos de línea::
* Saltos de página::
@end menu


@node Saltos de línea
@subsection Saltos de línea
@translationof Line breaking

@funindex \break
@funindex \noBreak
@funindex \autoBreaksOff
@funindex \autoBreaksOn
@funindex \autoLineBreaksOff
@funindex \autoLineBreaksOn
@cindex salto, de línea
@cindex línea, salto de

Normalmente los saltos de línea se determinan automáticamente. Se
eligen de forma que las líneas no aparezcan demasiado apretadas ni
demasiado sueltas, y que las líneas consecutivas tengan una
densidad similar.

Para forzar manualmente un salto de línea sobre la línea
divisoria, utilice la instrucción @code{\break}:

@lilypond[quote,ragged-right,verbatim]
\relative c'' {
  c4 c c c | \break
  c4 c c c |
}
@end lilypond

De forma predeterminada se ignora cualquier instrucción
@code{\break} insertada en la mitad de un compás, y se imprime un
mensaje de advertencia durante la compilación del archivo de
entrada de LilyPond.  Para forzar un salto de línea en medio de un
compás, añada una línea divisoria invisible con @w{@samp{\bar
""}}:

@lilypond[quote,ragged-right,verbatim]
\relative c'' {
  c4 c c
  \bar ""
  \break
  c |
  c4 c c c |
}
@end lilypond

También se ignora cualquier instrucción @code{\break} que se
produzca en la línea divisoria si el compás anterior termina en
medio de una nota, como cuando un grupo de valoración especial
comienza en un compás y termina en otro distinto.  En este caso,
elimine el grabador @code{Forbid_line_break_engraver} del contexto
@code{Voice} y use una construcción de música simultánea
insertando el @code{break} en el lugar adecuado dentro de la
segunda voz:

@lilypond[quote,ragged-right,verbatim]
\new Voice \with {
  \remove "Forbid_line_break_engraver"
} \relative {
  <<
    { c''2. \tuplet 3/2 { c4 c c } c2. | }
    { s1 | \break s1 | }
  >>
}
@end lilypond

De forma similar, el funcionamiento predeterminado es que los
saltos de línea resulten ignorados cuando hay barras de corchea
que cruzan la línea divisoria.  Utilice la instrucción
@code{\override Beam.breakable = ##t} para forzar esto:

@lilypond[quote,ragged-right,verbatim]
\relative c'' {
  \override Beam.breakable = ##t
  c2. c8[ c | \break
  c8 c] c2. |
}
@end lilypond

La instrucción @code{\noBreak}, evita que se produzca
un salto de línea en la barra divisoria en que se inserta.

Dentro de una partitura, se evitan los saltos de línea automáticos
dento de la música que se encuentra entre las instrucciones
@code{\autoLineBreaksOff} y @code{\autoLineBreaksOn}.  Si también
se quieren evitar los saltos de página automáticos, deben usarse
las instrucciones @code{\autoBreaksOff} y @code{\autoBreaksOn}.
Los saltos manuales no están afectados por estas instrucciones.
Observe que el hecho de inhibir los saltos de línea automáticos
puede hacer que la música se extienda sobre el margen derecho
cuandoquiera que no cabe completamente dentro de una sola línea.

Los saltos automáticos de línea (no de página) se pueden habilitar
sobre líneas divisorias individuales mediante el uso de
@code{\once \autoLineBreaksOn} en una barra.  La instrucción
identifica un salto de línea permitido, en lugar de uno prohibido.

Los ajustes más básicos que influyen sobre el espaciado de las
líneas son @code{indent} y @code{line-width}. Se establecen dentro
del bloque @code{\layout}.  Controlan el sangrado de la primera
línea de música, y la longitud de las líneas.

Si se establece @code{ragged-right} a verdadero en el bloque
@code{\layout}, los sistemas terminan en su longitud horizontal
natural, en lugar de distribuirse horizontalmente para llenar toda
la línea. Esto es de utilidad para fragmentos cortos, y para
efectuar una comprobación de lo apretado que es el espaciado
natural.

@c TODO Check and add para on default for ragged-right

La opción @code{ragged-last} es similar a @code{ragged-right},
pero afecta sólo a la última línea de la pieza.

@example
\layout @{
  indent = 0\mm
  line-width = 150\mm
  ragged-last = ##t
@}
@end example

@cindex salto, de línea, a intervalos
@cindex música de cuatro compases por línea

Para saltos de línea a intervalos regulares utilice @code{\break}
separado mediante desplazamientos con @code{\skip} y repetidos con
@code{\repeat}.  Por ejemplo, esto haría que los 28 compases
siguientes (suponiendo un compás de 4/4) se dividan cada cuatro
compases, y sólo en dichos lugares:

@example
<<
  \repeat unfold 7 @{
    s1 \noBreak s1 \noBreak
    s1 \noBreak s1 \break
  @}
  @{ @var{la música real@dots{}} @}
>>
@end example


@predefined
@code{\break},
@code{\noBreak},
@code{\autoBreaksOff},
@code{\autoBreaksOn},
@code{\autoLineBreaksOff},
@code{\autoLineBreaksOn}.
@endpredefined


@snippets

@cindex voz, adicional, para la gestión de los saltos
@cindex adicional, voz, para gestionar saltos
@cindex salto, de página, gestión con una voz adicional
@cindex línea, salto, gestión con una voz adicional
@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
{using-an-extra-voice-for-breaks.ly}


@seealso
Referencia de la notación:
@ref{Variables de paper para los saltos de línea},
@ref{The layout block}.

Fragmentos de código:
@rlsr{Spacing}.

Referencia de funcionamiento interno:
@rinternals{LineBreakEvent}.

@knownissues

Si se escribe @code{\autoLineBreaksOff} o @code{\autoBreaksOff}
antes de cualquier contenido musical, aparecerán mensajes de
error.  Escriba siempre estas instrucciones después de algo de
música.


@node Saltos de página
@subsection Saltos de página
@translationof Page breaking

Esta sección describe los distintos métodos para crear saltos de
página, y cómo modificarlos.

@menu
* Saltos de página manuales::
* Saltos de página óptimos::
* Saltos de página mínimos::
* Saltos de página del tipo página única::
* Saltos de página del tipo una-línea::
* Saltos de página del tipo una-línea-altura-automática::
* Paso de página óptimo::
@end menu


@node Saltos de página manuales
@unnumberedsubsubsec Saltos de página manuales
@translationof Manual page breaking

@funindex \pageBreak
@funindex \noPageBreak
@funindex \autoPageBreaksOn
@funindex \autoPageBreaksOff
@cindex página, saltos manuales

Se puede sobreescribir el mecanismo predeterminado de salto de
página insertando instrucciones @code{\pageBreak} o
@code{\noPageBreak}.  Estas instrucciones son análogas a
@code{\break} y @code{\noBreak}.  Se deben insertar en una línea
divisoria.  Estas instrucciones fuerzan y prohíben,
respectivamente, la eventualidad de un salto de página en dicha
línea divisoria.  Por supuesto, la instrucción @code{\pageBreak}
también fuerza un salto de línea.

Las instrucciones @code{\pageBreak} y @code{\noPageBreak} también
se pueden insertar en el nivel más alto, entre las partituras y
los elementos de marcado situados en el nivel superior.

Dentro de una partitura, no se producen saltos de página
automáticos en el interior de la música que se encuentra entre las
instrucciones @code{\autoPageBreaksOff} y
@code{\autoPageBreaksOn}.  Los saltos de página manuales no
reultan afectados por estas instrucciones.

Hay ajustes análogos a @code{ragged-right} y @code{ragged-last}
que tienen el mismo efecto sobre el espaciado vertical.  Si
@code{ragged-bottom} se establece a @code{#t} los sistemas no se
justifican verticalmente.  Cuando el valor de
@code{ragged-last-bottom} se fija a @code{#t}, como lo está de
forma predeterminada, se permite una separación al final de la
última página (o la última página de cada uno de las partes de
libro @code{\bookpart}).  Véase
@ref{Variables de espaciado de paper verticales fijas,,Variables de espaciado de @code{@bs{}paper} verticales fijas}.

Los saltos de página se calculan por medio de la función
@code{page-breaking}.  LilyPond ofrece varios algoritmos para el
cómputo de los saltos de página, entre ellos
@code{ly:optimal-breaking}, @code{ly:page-turn-breaking} y
@code{ly:minimal-breaking}.  El predeterminado es
@code{ly:optimal-breaking}, pero el valor se puede cambiar en el
bloque @code{\paper}:

@example
\paper @{
  page-breaking = #ly:page-turn-breaking
@}
@end example

@funindex \bookpart

Cuando un libro tiene muchas partituras y páginas, puede ser
difícil resolver el problema de los saltos de página, necesitando
mucha memoria y prolongados tiempos de procesamiento.  Para
facilitar el proceso de división en páginas, se usan los bloques
@code{\bookpart} para dividir el libro en varias partes: los
saltos de página se producen de manera independiente en cada
parte.  También se pueden usar diferentes funciones de división en
páginas para las distintas partes del libro.

@example
\bookpart @{
  \header @{
    subtitle = "Prefacio"
  @}
  \paper @{
     %% En una parte que consiste en texto principalmente,
     %% puede ser preferible ly:minimal-breaking
     page-breaking = #ly:minimal-breaking
  @}
  \markup @{ @dots{} @}
  @dots{}
@}
\bookpart @{
  %% En esta parte, consistente en música, se usa la función
  %% óptima predeterminada de saltos de página.
  \header @{
    subtitle = "Primer movimiento"
  @}
  \score @{ @dots{} @}
  @dots{}
@}
@end example


@predefined
@funindex \pageBreak
@code{\pageBreak},
@code{\noPageBreak},
@code{\autoPageBreaksOn},
@code{\autoPageBreaksOff}.
@endpredefined

@seealso
Referencia de la notación:
@ref{Variables de paper para los saltos de página}.

Fragmentos de código:
@rlsr{Spacing}.

@knownissues

El prefijo @code{\once} no es efectivo con
@code{\autoPageBreaksOn} y @code{\autoPageBreaksOff}.  Si se ha
desactivado la división automática de páginas y después se vuelve
a activar para permitir un salto, debe continuar activada durante
algunos compases (cuyo número exacto dependerá de la partitura)
antes de volverse a desactivar, pues en caso contrario podría
perderse la oportunidad de que el salto se produzca.

@node Saltos de página óptimos
@unnumberedsubsubsec Saltos de página óptimos
@translationof Optimal page breaking

@funindex ly:optimal-breaking

La función @code{ly:optimal-breaking} es el método predeterminado
de LilyPond para determinar los saltos de página.  Intenta hallar
una división de páginas que haga mínimos el apretujamiento y la
distensión, tanto horizontal como verticalmente.  A diferencia de
@code{ly:page-turn-breaking}, no tiene un concepto de los pasos de
página.

@seealso
Fragmentos de código:
@rlsr{Spacing}.


@node Saltos de página mínimos
@unnumberedsubsubsec Saltos de página mínimos
@translationof Minimal page breaking

@funindex ly:minimal-breaking

La función @code{ly:minimal-breaking} efectúa unos cálculos
mínimos para determinar los saltos de página: completa una página
con tantos sistemas como sea posible antes de continuar con la
siguiente.  Así, puede preferirse para partituras con muchas
páginas, donde las otras funciones de salto de página pueden
resultar demasiado lentas o ávidas de memoria, o con una gran
cantidad de textos.  Se habilita utilizando:

@example
\paper @{
  page-breaking = #ly:minimal-breaking
@}
@end example

@seealso
Snippets:
@rlsr{Spacing}.


@node Saltos de página del tipo página única
@unnumberedsubsubsec Saltos de página del tipo página única
@translationof One-page page breaking

@funindex ly:one-page-breaking

La función @code{ly:one-page-breaking} (saltos de página única) es
un algoritmo de saltos de página de proósito especial que ajusta
automáticamente la altura de la página para que quepa toda la
música en una sola página.  La variable @code{paper-height} del
bloque @code{paper} se ignora, pero los otros ajustes funcionan de
la manera acostumbrada.  Concretamente, el espaciado entre el
último sistema (o elemento de marcado de nivel superior) y el pie
de página se puede personalizar con @code{last-bottom-spacing}
dentro del bloque @code{paper}. La anchura de la página se queda
sin alterar por omisión, pero se puede fijar con la variable
@code{paper-width} del bloque @code{paper}.

@knownissues
@code{ly:one-page-breaking} no es compatible, de momento, con
@code{\bookpart}.


@node Saltos de página del tipo una-línea
@unnumberedsubsubsec Saltos de página del tipo una-línea
@translationof One-line page breaking

@funindex ly:one-line-breaking

La función @code{ly:one-line-breaking} es un algoritmo de saltos
de página para uso especial que pone cada partitura en una página
y en una sola línea.  Esta función de salto de página no compone
los títulos ni los márgenes; solamente se imprime la partitura.

El ancho de la página se ajusta de forma que la partitura más
larga quepa en una línea.  Concretamente, las variables
@code{paper-width}, @code{line-width} y @code{indent} del bloque
@code{\paper} se ignoran, aunque @code{left-margin} y
@code{right-margin} aún se respetan.  La altura de la página se
deja sin cambios.


@node Saltos de página del tipo una-línea-altura-automática
@unnumberedsubsubsec Saltos de página del tipo una-línea-altura-automática
@translationof One-line-auto-height page breaking

@funindex ly:one-line-auto-height-breaking

La función @code{ly:one-line-auto-height-breaking} funciona igual
que @code{ly:one-line-breaking} excepro que la altura de la página
se modifica automáticamente para hacerse corresponder con la
altura de la música.  De forma específica, la variable
@code{paper-height} del bloque @code{\paper} se ajusta de tal
manera que abarca los extremos superior e inferior de la partitura
más alta más los márgenes superior e inferior @code{top-margin} y
@code{bottom-margin}.

Observe que el ajuste @code{top-system-spacing} afecta a la
posición vertical de la música.  Fíjelo al valor @code{##f} dentro
de un bloque @code{paper} para disponer la música sencillamente
entre los márgenes superior e inferior.


@node Paso de página óptimo
@unnumberedsubsubsec Paso de página óptimo
@translationof Optimal page turning

@funindex ly:page-turn-breaking

Con frecuencia es necesario encontrar una configuración de
división de páginas de manera que haya un silencio al final de una
página de cada dos.  De esta forma, el músico puede pasar la
página sin perder notas.  La función @code{ly:page-turn-breaking}
trata de encontrar una división de páginas que haga mínimos el
apretujamiento y el estiramiento, pero con la restricción añadida
de que sólo se permite introducir vueltas de página en los lugares
especificados.

Hay dos etapas en el uso de esta función de división de páginas.
En primer lugar debemos habilitarlo en el bloque @code{\paper},
como se explicó en @ref{Saltos de página}.  Entonces debemos
decirle a la función dónde nos gustaría permitir los saltos de
página.

Hay dos formas de conseguir la segunda tarea.  Primero, podemos
especificar manualmente cada uno de los pasos de página
potenciales, insertando @code{\allowPageTurn} en nuestro archivo
de entrada en los lugares adecuados.

Si esto es demasiado tedioso, podemos añadir un grabador
@code{Page_turn_engraver} a un contexto Staff o Voice.  El
grabador @code{Page_turn_engraver} analizará el contexto en busca
de secciones sin notas (observe que no busca silencios, sino la
ausencia de notas.  Se hace así para que la polifonía en un solo
pentagrama con silencios en una de las voces no arruine la labor
del grabador @code{Page_turn_engraver}).  Cuando encuentra una
sección sin notas suficientemente larga, el grabador
@code{Page_turn_engraver} inserta un @code{\allowPageTurn} en la
última barra de compás de dicha sección, a no ser que haya una
barra @q{especial} de compás (como una doble barra), en cuyo caso
se insertará el @code{\allowPageTurn} en la última barra
@q{especial} de compás de la sección.

@funindex minimumPageTurnLength
El grabador @code{Page_turn_engraver} lee la propiedad de contexto
@code{minimumPageTurnLength} para determinar qué longitud debe
tener una sección sin notas antes de que se considere la
posibilidad de un paso de página.  El valor predeterminado para
@code{minimumPageTurnLength} es @code{(ly:make-moment 1/1)}.  Si
quiere inhabilitar las vueltas de página, fíjelo a algún valor
@q{muy grande}.

@example
\new Staff \with @{ \consists "Page_turn_engraver" @}
@{
  a4 b c d |
  R1 | % aquí se permite un salto de página
  a4 b c d |
  \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2)
  R1 | % aquí no se permite un salto de página
  a4 b r2 |
  R1*2 | % aquí se permite un salto de página
  a1
@}
@end example

@funindex minimumRepeatLengthForPageTurn

Al usar repeticiones de primera y segunda vez, el grabador
@code{Page_turn_engraver} solo permite un pase de página durante
la repetición si hay suficiente tiempo al principio y al final de
la repetición para volver a pasar la página hacia atrás. Si la
repetición es demasiado corta, se puede usar el grabador
@code{Page_turn_engraver} para @emph{inhabilitar} los pasos de
página mediante el establecimiento de un valor adecuado para la
propiedad de contexto @code{minimumRepeatLengthForPageTurn}.  En
este caso el grabador @code{Page_turn_engraver} sólo permitirá los
pases de página en las repeticiones cuya duración sea mayor que el
valor especificado.

Las instrucciones de paso de página, @code{\pageTurn},
@code{\noPageTurn} y @code{\allowPageTurn}, se pueden usar también
en el nivel más elevado del código, dentro de elementos de marcado
del nivel superior y entre las partituras.

@predefined
@funindex \pageTurn
@code{\pageTurn},
@funindex \noPageTurn
@code{\noPageTurn},
@funindex \allowPageTurn
@code{\allowPageTurn}.
@endpredefined

@seealso
Referencia de la notación:
@ref{Variables de paper para los saltos de línea}.

Fragmentos de código:
@rlsr{Spacing}.

@knownissues
Utilice un solo grabador @code{Page_turn_engraver} en cada
partitura.  Si hay más de uno, se interferirán entre sí.


@seealso
Notation Reference:
@ref{Vertical spacing}.

Fragmentos de código:
@rlsr{Spacing}.


@node Espaciado vertical
@section Espaciado vertical
@translationof Vertical spacing

@cindex espaciado vertical
@cindex vertical, espaciado

El espaciado vertical está controlado por tres factores: la
cantidad de espacio disponible (es decir, el tamaño del papel y
los márgenes), la separación entre los sistemas, y la separación
entre los pentagramas dentro de un sistema.

@menu
* Espaciado vertical flexible dentro de los sistemas::
* Posicionamiento explícito de los pentagramas y los sistemas::
* Evitar las colisiones verticales::
@end menu


@node Espaciado vertical flexible dentro de los sistemas
@subsection Espaciado vertical flexible dentro de los sistemas
@translationof Flexible vertical spacing within systems

@cindex distancia, entre pentagramas
@cindex pentagrama, distancia entre los
@cindex espacio, entre pentagramas
@cindex espacio, dentro de los sistemas

Tres mecanismos distintos controlan el espaciado vertical flexible
dentro de los sistemas, uno por cada una de las categorías
siguientes:

@itemize

@item
@emph{pautas sin agrupar},

@item
@emph{pautas agrupadas} (pautas dentro de un grupo de pentagramas como
@code{ChoirStaff}, etc.), y

@item
@emph{líneas que no son pautas} (como @code{Lyrics},
@code{ChordNames}, etc.).

@end itemize

@c TODO: Clarify this.  This almost implies that non-staff lines
@c       have NO effect on the spacing between staves.  -mp

La altura de cada sistema se determina en dos fases.  Primero,
todos los pentagramas se disponen según la cantidad de espacio
vacío disponible.  Después, las líneas que no son pautas se
distribuyen entre las pautas.

Observe que los mecanismos de espaciado estudiados en esta sección
solamente controlan el espaciado vertical de las pautas y líneas
que no son pautas dentro de los sistemas individuales.  El
espaciado vertical entre distintos sistemas, partituras, marcados
y márgenes se controla mediante variables de @code{\paper} que se
estudian en
@ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles}.

@menu
* Propiedades de espaciado dentro de los sistemas::
* Espaciado de pautas no agrupadas::
* Espaciado de pautas agrupadas::
* Espaciado de las líneas que no son pautas::
@end menu


@node Propiedades de espaciado dentro de los sistemas
@unnumberedsubsubsec Propiedades de espaciado dentro de los sistemas
@translationof Within-system spacing properties

@funindex staff-affinity
@funindex staffgroup-staff-spacing
@funindex staff-staff-spacing
@funindex nonstaff-unrelatedstaff-spacing
@funindex nonstaff-relatedstaff-spacing
@funindex nonstaff-nonstaff-spacing
@funindex default-staff-staff-spacing
@funindex minimum-Y-extent
@funindex extra-offset
@funindex self-alignment-X
@funindex X-offset
@funindex VerticalAxisGroup

Los mecanismos de espaciado vertical dentro del sistema están
controlados por dos conjuntos de propiedades de grob.  El primer
conjunto está asociado con el grob @code{VerticalAxisGroup}, que
se crea por parte de todas las pautas y líneas que no son pautas.
El segundo conjunto está asociado con el grob @code{StaffGrouper},
que puede crearse por parte de los grupos de pentagramas, pero
solamente si se le llama explícitamente.  Estas propiedades se
describen individualmente al final de la presente sección.

Los nombres de estas propiedades (excepto para
@code{staff-affinity}) siguen el formato
@code{@var{elemento1}-@var{elemento2}-spacing}, donde
@code{@var{elemento1}} y @code{@var{elemento2}} son los elementos
que se van a espaciar.  Observe que @code{@var{elemento2}} no está
necesariamente por debajo de @code{@var{elemento1}}; por ejemplo,
@code{nonstaff-relatedstaff-spacing} mide hacia arriba a partir de
la línea del tipo no-pauta si @code{staff-affinity} es @code{UP}.

Cada distancia se mide entre los @emph{puntos de referencia} de
los dos elementos.  El @emph{punto de referencia} para un
pentagrama y otro tipo de pauta es el centro vertical de su
@code{StaffSymbol} (es decir, la línea central si
@code{line-count} es un número impar; el espacio central si
@code{line-count} es par).  Los puntos de referencia para las
líneas individuales que no son pautas aparecen en la tabla
siguiente:

@multitable {Línea que no es una pauta} {Punto de referencia}
@headitem Línea que no es una pauta @tab Punto de referencia
@item @code{ChordNames}  @tab línea de base
@item @code{NoteNames}   @tab línea de base
@item @code{Lyrics}      @tab línea de base
@item @code{Dynamics}    @tab la mitad de la altura de la @q{m}
@item @code{FiguredBass} @tab punto más alto
@item @code{FretBoards}  @tab línea superior
@end multitable

En la siguiente imagen, las líneas horizontales indican las
posiciones de estos puntos de referencia:

@lilypond[quote,noragged-right,line-width=110\mm]
#(define zero-space '((padding . -inf.0) (basic-distance . 0)))

alignToZero = \with {
  \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #zero-space
  \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #zero-space
  \override VerticalAxisGroup.staff-affinity = #DOWN
  \remove Text_engraver % avoid having two
  \consists Text_engraver
}
lowerCaseChords = \with {
  chordNameLowercaseMinor = ##t
}
labelContext =
#(define-music-function
     (context)
     (string?)
     #{ s1*0^\markup { \upright {\typewriter #context } } #})

\layout {
  \context { \Dynamics    \alignToZero }
  \context { \FiguredBass \alignToZero }
  \context { \Lyrics      \alignToZero }
  \context { \NoteNames   \alignToZero }
  \context { \ChordNames  \alignToZero \lowerCaseChords }
  \context { \FretBoards  \alignToZero }
  \context { \Score
    \omit BarLine
    \override DynamicText.self-alignment-X = #-1
    \override FretBoard.X-offset = #1.75
    \override InstrumentName.minimum-Y-extent = #'(-1 . 2)
    \textLengthOn
    \omit TimeSignature
  }
}

%% These contexts have reference points at the baseline:
%%   ChordNames, NoteNames, and Lyrics
<<
  \new ChordNames { \chords { \labelContext "ChordNames"  g1:m } }
  \new NoteNames { s1 |\labelContext "NoteNames"  g1 | }
  \new Lyrics { \lyrics { \skip 1*2 | \labelContext "Lyrics" ghijk1 | } }
  \new RhythmicStaff \with { instrumentName = "baseline " } s1*3
>>

%% The reference point for Dynamics is the midline of 'm' in the font
<<
  \new Dynamics { \labelContext "Dynamics" s1\mp s\fp }
  \new RhythmicStaff \with { instrumentName = "mid-height " } s1*3
>>

%% The reference point for FiguredBass is its highest point
<<
  \new FiguredBass { \labelContext "FiguredBass" \figuremode { <6 5>1 } }
  \new RhythmicStaff \with { instrumentName = "highest point " } s1
>>

%% The reference point for FretBoards is the top line
\include "predefined-guitar-fretboards.ly"
<<
  \new FretBoards { \labelContext "FretBoards" \chordmode { e1 } }
  \new RhythmicStaff \with { instrumentName = "top line " } s1
>>
@end lilypond

Cada una de las propiedades de grob del espaciado vertical
(excepto @code{staff-affinity}) usa la misma estructura de lista-A
que las variables de espaciado del bloque @code{\paper} que se han
estudiado en
@ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles}.
En @ref{Modificación de las listas-A} se estudian métodos
específicos para la modificación de las listas-A.  Las propiedades
de los grobs deben ajustarse con un @code{\override} dentro de un
bloque @code{\score} o @code{\layout}, y no dentro de un bloque
@code{\paper}.

El ejemplo que sigue muestra las dos maneras en que pueden
modificarse estas listas-A.  La primera declaración actualiza un
par clave-valor de forma individual, y la segunda redefine la
propiedad completamente:

@example
\new Staff \with @{
  \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
@} @{ @dots{} @}

\new Staff \with @{
  \override VerticalAxisGroup.default-staff-staff-spacing =
    #'((basic-distance . 10)
       (minimum-distance . 9)
       (padding . 1)
       (stretchability . 10))
@} @{ @dots{} @}
@end example

Para modificar globalmente cualquiera de los ajustes de espaciado,
póngalos dentro del bloque @code{\layout}:

@example
\layout @{
  \context @{
    \Staff
    \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10
  @}
@}
@end example

Los ajustes estándar para las propiedades de grob del espaciado
vertical están relacionadas en @rinternals{VerticalAxisGroup} y en
@rinternals{StaffGrouper}.  Las sobreescrituras predeterminadas
para los tipos específicos de líneas que no son pautas están
relacionadas en las descripciones de contexto correspondientes en
@rinternals{Contexts}.

@subsubheading Propiedades del grob @code{VerticalAxisGroup}

Las propiedades de @code{VerticalAxisGroup} se suelen ajustar con
una instrucción @code{\override} en el nivel de @code{Staff} (o
equivalente).

@table @code
@item staff-staff-spacing
Se utiliza para determinar la distancia entre la pauta actual y la
pauta que está justo por debajo de ella dentro del mismo sistema,
incluso si hay más líneas que no son pautas (tales como
@code{Lyrics}) entre las dos pautas.  No se aplica a la pauta
inferior de un sistema.

Inicialmente, el valor de espaciado @code{staff-staff-spacing} de
un grupo @code{VerticalAxisGroup} es una función de Scheme que
aplica las propiedades del @code{StaffGrouper} si la pauta forma
parte de un grupo, o el @code{default-staff-staff-spacing} de la
pauta en caso contrario.  Esto hace posible que las pautas estén
espaciadas de forma diferente cuando están agrupadas.  Para
conseguir un espaciado regular sin importar el agrupamiento, esta
función se puede sustituir por una lista-A de espaciado flexible,
utilizando la forma de sobreescritura de redefinición completa que
se ha mostrado más arriba.

@item default-staff-staff-spacing
Una lista-A de espaciado flexible que define el espacio
@code{staff-staff-spacing} que se usará para las pautas sin
agrupar, a no ser que se haya sobreescrito explícitamente
@code{staff-staff-spacing} con una instrucción @code{\override}.

@item staff-affinity
Dirección de la pauta que utilizar para el espaciado de la línea
actual que no es pauta.  Se puede elegir entre @code{UP} (arriba),
@code{DOWN} (abajo) y @code{CENTER} (centro).  Si es
@code{CENTER}, la línea del tipo no-pauta se coloca equidistante
entre las dos pautas contiguas a ambos lados, a no ser que lo
impidan colisiones u otras restricciones de espaciado.  Las líneas
del tipo no-pauta adyacentes han de llevar valores de
@code{staff-affinity} no crecientes desde la parte superior hasta
la inferior, p.ej. una línea del tipo no-pauta establecida a
@code{UP} no debería seguir inmediatamente a otra que esté
establecida a @code{DOWN}.  Las líneas del tipo no-pauta en la
parte superior de un sistema deben usar @code{DOWN}; las de la
parte inferior deben usar @code{UP}.  El ajuste de
@code{staff-affinity} para una pauta hace que se le trate como una
línea que no es una pauta.  El establecimiento de
@code{staff-affinity} a @code{#f} para una línea que no es una
pauta hace que se trate como una pauta.  Establecer
@code{staff-affinity} a @code{UP}, @code{CENTER}, o @code{DOWN}
hace que el pentagrama resulte espaciado como si fuera una línea
que no es una pauta.

@item nonstaff-relatedstaff-spacing
Distancia entre la línea del tipo no-pauta actual y la pauta más
próxima en la dirección de @code{staff-affinity}, si no hay
ninguna línea que no sea una pauta entre las dos, y
@code{staff-affinity} es @code{UP} o @code{DOWN}.  Si
@code{staff-affinity} es @code{CENTER}, entonces se usa
@code{nonstaff-relatedstaff-spacing} para las pautas más próximas
@emph{a los dos lados}, incluso aunque aparezcan otras líneas del
tipo no-pauta entre la pauta actual y una de las otras.  Esto
significa que la colocación de una línea que no es una pauta
depende tanto de las pautas que la rodean como de las líneas que
no son pautas y que la rodean.  Establecer la ampliabilidad
@code{stretchability} de uno de estos tipos de espaciado a un
valor más pequeño provoca que este espaciado domine.  El
establecimiento de @code{stretchability} a un valor mayor hace que
dicho espaciado tenga un menor efecto.

@item nonstaff-nonstaff-spacing
Distancia entre la línea actual del tipo no-pauta y la siguiente
línea del tipo no-pauta en la dirección de @code{staff-affinity},
si las dos están al mismo lado de la pauta relacionada, y
@code{staff-affinity} es @code{UP} o @code{DOWN}.

@item nonstaff-unrelatedstaff-spacing
Distancia entre la línea actual del tipo no-pauta y la pauta en la
dirección opuesta de @code{staff-affinity}, si no hay ninguna otra
línea del tipo no-pauta entre las dos, y @code{staff-affinity} es
@code{UP} o @code{DOWN}.  Se puede usar, por ejemplo, para
requerir una cantidad de relleno mínima entre una línea de
@code{Lyrics} y la pauta a la que no pertenece.
@end table

@subsubheading Propiedades del grob @code{StaffGrouper}

Las propiedades de @code{StaffGrouper} se suelen ajustar con una
instrucción @code{\override} en el nivel de @code{StaffGroup} (o
equivalente).

@table @code
@item staff-staff-spacing
Distancia entre pautas consecutivas dentro del grupo de pautas
actual.  La propiedad @code{staff-staff-spacing} del grob
@code{VerticalAxisGroup} de una pauta individual se puede
sobreescribir con distintos ajustes de espaciado para dicha pauta.

@item staffgroup-staff-spacing
Distancia entre la última pauta del grupo en curso y la pauta que
está justo por debajo de ella dentro del mismo sistema, incluso si
existen una o más líneas que no son pautas (tales como
@code{Lyrics}) entre las dos pautas.  No se aplica al pentagrama o
pauta inferior de un sistema.  La propiedad
@code{staff-staff-spacing} del grob @code{VerticalAxisGroup} de
una pauta individual se puede sobreescribir con distintos ajustes
de espaciado para dicha pauta.
@end table

@seealso
Referencia de la notación:
@ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles},
@ref{Modificación de las listas-A}.

Archivos de inicio:
@file{ly/engraver-init.ly},
@file{scm/define-grobs.scm}.

Referencia de funcionamiento interno:
@rinternals{Contexts},
@rinternals{VerticalAxisGroup},
@rinternals{StaffGrouper}.



@node Espaciado de pautas no agrupadas
@unnumberedsubsubsec Espaciado de pautas no agrupadas
@translationof Spacing of ungrouped staves

Las @emph{pautas}, tales como los pentagramas (@code{Staff}),
pautas de percusión (@code{DrumStaff}) o de tablatura
(@code{TabStaff}), etc. son contextos que pueden contener uno o
más contextos de voz, pero no pueden contener otras pautas.

Las siguientes propiedades afectan al espaciado de las pautas
@emph{no agrupadas}:

@itemize
@item Propiedades de @code{VerticalAxisGroup}:
@itemize
@item @code{default-staff-staff-spacing}
@item @code{staff-staff-spacing}
@end itemize
@end itemize

Estas propiedades de grob se describen individualmente más arriba;
véase @ref{Propiedades de espaciado dentro de los sistemas}.

Están implicadas ciertas propiedades adicionales para las pautas
que son parte de un grupo; véase
@ref{Espaciado de pautas agrupadas}.

El ejemplo siguiente muestra cómo la propiedad
@code{default-staff-staff-spacing} puede afectar al espaciado de
pautas no agrupadas.  Las mismas sobreescrituras aplicadas a
@code{staff-staff-spacing} tendrían el mismo efecto, pero también
se aplicaría en caso de que las pautas estuvieran combinadas en un
grupo o grupos.

@lilypond[verbatim,quote,staffsize=16]
\layout {
  \context {
    \Staff
    \override VerticalAxisGroup.default-staff-staff-spacing =
      #'((basic-distance . 8)
         (minimum-distance . 7)
         (padding . 1))
  }
}

<<
  % The very low note here needs more room than 'basic-distance
  % can provide, so the distance between this staff and the next
  % is determined by 'padding.
  \new Staff { b,2 r | }

  % Here, 'basic-distance provides enough room, and there is no
  % need to compress the space (towards 'minimum-distance) to make
  % room for anything else on the page, so the distance between
  % this staff and the next is determined by 'basic-distance.
  \new Staff { \clef bass g2 r | }

  % By setting 'padding to a negative value, staves can be made to
  % collide.  The lowest acceptable value for 'basic-distance is 0.
  \new Staff \with {
    \override VerticalAxisGroup.default-staff-staff-spacing =
      #'((basic-distance . 3.5)
         (padding . -10))
  } { \clef bass g2 r | }
  \new Staff { \clef bass g2 r | }
>>
@end lilypond

@seealso
Archivos de inicio:
@file{scm/define-grobs.scm}.

Fragmentos de código:
@rlsr{Spacing}.

Referencia de funcionamiento interno:
@rinternals{VerticalAxisGroup}.


@node Espaciado de pautas agrupadas
@unnumberedsubsubsec Espaciado de pautas agrupadas
@translationof Spacing of grouped staves

En partituras grandes como las orquestales, es común colocar los
pentagramas en grupos.  El espacio entre los grupos suele ser
mayor que el espacio que hay entre los pentagramas dentro del
mismo grupo.

Los grupos de pautas, @emph{Staff-groups} (tales como
@code{StaffGroup}, @code{ChoirStaff}, etc.) son contextos que
pueden contener al mismo tiempo uno o más pentagramas o pautas.

Las siguientes propiedades afectan al espaciado de las pautas
dentro de los grupos:

@itemize
@item Propiedades de @code{VerticalAxisGroup}:
@itemize
@item @code{staff-staff-spacing}
@end itemize
@item Propiedades de @code{StaffGrouper}:
@itemize
@item @code{staff-staff-spacing}
@item @code{staffgroup-staff-spacing}
@end itemize
@end itemize

Estas propiedades de grob se describen individualmente más arriba;
véase @ref{Propiedades de espaciado dentro de los sistemas}.

El ejemplo siguiente muestra cómo pueden afectar las propiedades
del grob @code{StaffGrouper} al espaciado de las pautas agrupadas:

@lilypond[verbatim,quote,staffsize=16]
\layout {
  \context {
    \Score
    \override StaffGrouper.staff-staff-spacing.padding = #0
    \override StaffGrouper.staff-staff-spacing.basic-distance = #1
  }
}

<<
  \new PianoStaff \with {
    \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20
  } <<
    \new Staff { c'1 }
    \new Staff { c'1 }
  >>

  \new StaffGroup <<
    \new Staff { c'1 }
    \new Staff { c'1 }
  >>
>>
@end lilypond

@seealso
Archivos de inicio:
@file{scm/define-grobs.scm}.

Fragmentos de código:
@rlsr{Spacing}.

Referencia de funcionamiento interno:
@rinternals{VerticalAxisGroup},
@rinternals{StaffGrouper}.


@node Espaciado de las líneas que no son pautas
@unnumberedsubsubsec Espaciado de las líneas que no son pautas
@translationof Spacing of non-staff lines

Las @emph{Líneas que no son pautas} (tales como @code{Lyrics},
@code{ChordNames}, etc.) son contextos cuyos objetos de
presentación se imprimen como pentagramas (es decir, en líneas
horizontales dentro de los sistemas).  Específicamente, las líneas
que no son pautas son contextos del tipo no-pauta que contienen el
grabador @rinternals{Axis_group_engraver}.

Las siguientes propiedades afectan al espaciado de las líneas que
no son pautas:

@itemize
@item Propiedades de @code{VerticalAxisGroup}:
@itemize
@item @code{staff-affinity}
@item @code{nonstaff-relatedstaff-spacing}
@item @code{nonstaff-nonstaff-spacing}
@item @code{nonstaff-unrelatedstaff-spacing}
@end itemize
@end itemize

Estas propiedades de grob se describen individualmente más arriba;
véase @ref{Propiedades de espaciado dentro de los sistemas}.

El ejemplo siguiente muestra cómo la propiedad
@code{nonstaff-nonstaff-spacing} puede afectar el espaciado de
líneas consecutivas que no son pautas.  Aquí, mediante el
establecimiento de la clave de ampliabilidad @code{stretchability}
a un valor muy grande, la línea de letra es capaz de ampliarse
mucho más de lo que es usual:

@lilypond[verbatim,quote,staffsize=16]
\layout {
  \context {
    \Lyrics
    \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000
  }
}

\new StaffGroup
<<
  \new Staff \with {
    \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30))
  } { c'1 }
  \new Lyrics \with {
    \override VerticalAxisGroup.staff-affinity = #UP
  } \lyricmode { up }
  \new Lyrics \with {
    \override VerticalAxisGroup.staff-affinity = #CENTER
  } \lyricmode { center }
  \new Lyrics \with {
    \override VerticalAxisGroup.staff-affinity = #DOWN
  } \lyricmode { down }
  \new Staff { c'1 }
>>
@end lilypond

@seealso
Archivos de inicio:
@file{ly/engraver-init.ly},
@file{scm/define-grobs.scm}.

Fragmentos de código:
@rlsr{Spacing}.

@c @lsr{spacing,page-spacing.ly},
@c @lsr{spacing,alignment-vertical-spacing.ly}.

Referencia de funcionamiento interno:
@rinternals{Contexts},
@rinternals{VerticalAxisGroup}.


@node Posicionamiento explícito de los pentagramas y los sistemas
@subsection Posicionamiento explícito de los pentagramas y los sistemas
@translationof Explicit staff and system positioning

Una forma de entender los mecanismos del espaciado vertical
flexible que se han explicado más arriba es como una colección de
ajustes que controlan la cantidad de relleno vertical entre los
pentagramas y los sistemas.

Es posible enfrentarse al espaciado vertical de una forma distinta
utilizando @code{NonMusicalPaperColumn.line-break-system-details}.
Mientras que los mecanismos del espaciado vertical flexible
especifican relleno vertical,
@code{NonMusicalPaperColumn.line-break-system-details} puede
especificar posiciones verticales exactas sobre la página.

@code{NonMusicalPaperColumn.line-break-system-details} acepta una
lista asociativa de cuatro ajustes diferentes:

@itemize
@item @code{X-offset} (desplazamiento en X)
@item @code{Y-offset} (desplazamiento en Y)
@item @code{extra-offset} (desplazamiento adicional)
@item @code{alignment-distances} (distancias de alineación)
@end itemize

Las sobreescrituras de los objetos gráficos, entre ellas las de
@code{NonMusicalPaperColumn} que aparecen más abajo, pueden
ocurrir en tres lugares distintos dentro de un archivo de entrada:

@itemize
@item directamente en medio de las notas
@item en un bloque @code{\context}
@item en el bloque @code{\with}
@end itemize

Cuando sobreescribimos @code{NonMusicalPaperColumn}, usamos la
instrucción @code{\override} usual en los bloques @code{\context}
y en el bloque @code{\with}.  Por otra parte, cuando
sobreescribimos @code{NonMusicalPaperColumn} en medio de las
notas, debemos usar la instrucción especial
@code{\overrideProperty}.  He aquí algunas sobreescrituras de
@code{NonMusicalPaperColumn} de ejemplo con la instrucción
especial @code{\overrideProperty}:

@example
\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((alignment-distances . (15)))

\overrideProperty NonMusicalPaperColumn.line-break-system-details
  #'((X-offset . 20)
     (Y-offset . 40)
     (alignment-distances . (15)))
@end example

Para entender cómo funciona cada uno de los distintos ajustes,
empezamos observando un ejemplo que no incluye absolutamente
ninguna sobreescritura.

@c \book { } is required in these examples to ensure the spacing
@c overrides can be seen between systems. -np

@lilypond[verbatim,quote,staffsize=16]
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          s1*5 \break
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}
@end lilypond

Esta partitura mantiene aislada tanto la información de los saltos
de línea como los de página en una voz dedicada a ello.  Esta
técnica de crear una voz de saltos ayuda a mantener separada de la
escritura de notas conforme el ejemplo se vuelve más complicado.
Consulte @ref{Saltos}.

Utilizando instrucciones @code{\break} explícitas, la música se
divide líneas de cinco compases cada una.  El espaciado vertical
proviene de los ajustes predeterminados de LilyPond pero el punto
de origen vertical de cada sistema se fija explícitamente usando
el par @code{Y-offset} en el atributo
@code{line-break-system-details} del grob (objeto gráfico)
@code{NonMusicalPaperColumn}:

@lilypond[verbatim,quote,staffsize=16]
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 40))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}
@end lilypond

Observe que @code{line-break-system-details} toma una lista
asociativa de una cantidad de valores potencialmente elevada, pero
aquí sólo fijamos un valor.  Observe también que aquí la propiedad
@code{Y-offset} determina la posición vertical exacta sobre la
página en la que se trazará cada uno de los nuevos sistemas.

En contraste con el posicionado absoluto que está disponible a
través de @code{Y-offset} y de @code{X-offset}, es posible un
posicionamiento relativo con la propiedad @code{extra-offset} de
@code{line-break-system-details}.  La colocación es relativa a la
disposición predeterminada o al posicionamiento absoluto creado
mediante el establecimiento de los valores de @code{X-offset} y de
@code{Y-offset}.  La propiedad @code{extra-offset} acepta una
pareja de números (un @code{pair}) que consiste en desplazamientos
a lo largo de los ejes X e Y.

@lilypond[verbatim,quote,staffsize=16]
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((extra-offset . (0 . 10)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}
@end lilypond

Ahora que hemos establecido explícitamente el punto de origen
vertical de cada sistema, podemos también establecer manualmente
las distancias verticales entre los pentagramas dentro de cada
sistema.  Lo hacemos usando la subpropiedad
@code{alignment-distances} de @code{line-break-system-details}.

@lilypond[verbatim,quote,staffsize=16]
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 20)
               (alignment-distances . (10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (15)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 85)
             (alignment-distances . (20)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new Staff {
        \repeat unfold 15 { d'4 d' d' d' }
      }
    >>
  }
}
@end lilypond

Observe que aquí asignamos dos valores distintos al atributo
@code{line-break-system-details} del grob
@code{NonMusicalPaperColumn}.  Aunque el atributo alist de
@code{line-break-system-details} acepta muchos parámetros de
espaciado adicionales (entre ellos, por ejemplo, un par
@code{X-offset} correspondiente), sólo tenemos que establecer el
desplazamiento @code{Y-offset} y los pares
@code{alignment-distances} para controlar el punto de origen
vertical de cada sistema y pentagrama.  Finalmente, observe que
@code{alignment-distances} especifica el posicionamiento vertical
de los pentagramas pero no de los grupos de pentagramas.

@lilypond[verbatim,quote,staffsize=16]
\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    <<
      \new Staff <<
        \new Voice {
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 0)
               (alignment-distances . (30 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 60)
               (alignment-distances . (10 10)))
          s1*5 \break
          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
            #'((Y-offset . 100)
               (alignment-distances . (10 30)))
          s1*5 \break
        }
        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
      >>
      \new StaffGroup <<
        \new Staff { \repeat unfold 15 { d'4 d' d' d' } }
        \new Staff { \repeat unfold 15 { e'4 e' e' e' } }
      >>
    >>
  }
}
@end lilypond

Algunos puntos que tener en cuenta:

@itemize
@item Al usar @code{alignment-distances}, la letra y otras líneas que no
son pautas, no cuentan como un pentagrama.

@item Las unidades de los números que se pasan a @code{X-offset},
@code{Y-offset}, @code{extra-offset} y @code{alignment-distances}
se interpretan como múltiplos de la distancia entre líneas de
pentagrama adyacentes.  Los valores positivos mueven a los
pentagramas y a la letra hacia arriba, los valores negativos
mueven los pentagramas y la letra hacia abajo.

@item A causa de que los ajustes a
@code{NonMusicalPaperColumn.line-break-system-details} dados aquí
permiten el posicionamiento de pentagramas y sistemas en cualquier
lugar de la página, es posible violar los márgenes o los límites
del papel, o incluso imprimir pentagramas o sistemas unos encima
de otros.  Esto se evitaría pasando a los diferentes ajustes unos
valores razonables.
@end itemize

@seealso
Fragmentos de código:
@rlsr{Spacing}.


@node Evitar las colisiones verticales
@subsection Evitar las colisiones verticales
@translationof Vertical collision avoidance

@funindex outside-staff-priority
@funindex outside-staff-padding
@funindex outside-staff-horizontal-padding

Podemos decir intuitivamente que algunos objetos de la notación
musical pertenecen al pentagrama y otros se sitúan fuera del
pentagrama.  Entre los objetos que pertenecen al exterior del
pentagrama están las marcas de ensayo, las marcas textuales y las
indicaciones de dinámica (en lo sucesivo, les llamaremos objetos
fuera del pentagrama).  La regla de LilyPond para la colocación
vertical de los objetos fuera del pentagrama es ponerlos tan cerca
del pentagrama como sea posible pero no tan próximos como para que
choquen con otro objeto.

LilyPond utiliza la propiedad @code{outside-staff-priority} para
determinar si un grob es un objeto fuera del pentagrama: si
@code{outside-staff-priority} es un número, el grob es un objeto
fuera del pentagrama.  Además, @code{outside-staff-priority}
informa a LilyPond en qué orden se debe situar los objetos.

En primer lugar, LilyPond sitúa todos los objetos que no
pertenecen al exterior del pentagrama.  Después ordena los objetos
fuera del pentagrama de acuerdo a su prioridad
@code{outside-staff-priority} (en orden creciente).  LilyPond toma
los objetos fuera del pentagrama uno a uno y los coloca de forma
que no choquen con ningún objeto que ya haya sido colocado.  Esto
es, si dos grobs fuera del pentagrama compiten por el mismo
espacio, el que tiene la prioridad @code{outside-staff-priority}
más baja se colocará más próximo al pentagrama.

Hay un listado completo de las prioridades
outside-staff-priorities en
@rlearning{La propiedad outside-staff-priority (prioridad fuera del pentagrama)}.

@lilypond[quote,ragged-right,verbatim]
\relative c'' {
  c4_"Text"\pp
  r2.
  \once \override TextScript.outside-staff-priority = #1
  c4_"Text"\pp % this time the text will be closer to the staff
  r2.
  % by setting outside-staff-priority to a non-number,
  % we disable the automatic collision avoidance
  \once \override TextScript.outside-staff-priority = ##f
  \once \override DynamicLineSpanner.outside-staff-priority = ##f
  c4_"Text"\pp % now they will collide
}
@end lilypond

El relleno vertical que rodea a los objetos fuera del pentagrama
se puede controlar con @code{outside-staff-padding}.

@lilypond[quote,ragged-right,verbatim,staffsize=18]
\relative {
  \once \override TextScript.outside-staff-padding = #0
  a'4-"outside-staff-padding = #0"
  \once \override TextScript.outside-staff-padding = #3
  d-"outside-staff-padding = #3"
  c-"default outside-staff-padding"
  b-"default outside-staff-padding"
  R1
}
@end lilypond

De forma predeterminada, los objetos fuera del pentagrama se
colocan de forma que eviten una colisión horizontal con los grobs
posicionados previamente.  Esto puede llevar a situaciones en las
que los objetos se colocan muy próximos entre sí en el sentido
horizontal.  Como se muestra en el ejemplo que aparece más abajo,
al establecer @code{outside-staff-horizontal-padding} se
incrementa el espacio horicontal necesario, y en este caso mueve
el texto hacia arriba para evitar que quede demasiado cerca de las
líneas adicionales.

@lilypond[quote,ragged-right,verbatim]
\relative {
  c''4^"Word" c c''2
  R1
  \once \override TextScript.outside-staff-horizontal-padding = #1
  c,,4^"Word" c c''2
}
@end lilypond

@seealso
Fragmentos de código:
@rlsr{Spacing}.


@node Espaciado horizontal
@section Espaciado horizontal
@translationof Horizontal spacing

@cindex horizontal, espaciado
@cindex espaciado horizontal

@menu
* Panorámica del espaciado horizontal::
* Sección de espaciado nueva::
* Cambiar el espaciado horizontal::
* Longitud de la línea::
* Notación proporcional::
@end menu


@node Panorámica del espaciado horizontal
@subsection Panorámica del espaciado horizontal
@translationof Horizontal spacing overview

El motor de espaciado traduce las diferencias en las duraciones a
distancias ampliables (@q{muelles}) de distintas longitudes.  Las
duraciones más largas reciben un espacio mayor y las duraciones
más cortas reciben menos.  Las duraciones más breves reciben un
espacio de tamaño fijo (que se controla mediante
@code{shortest-duration-space} en el objeto
@rinternals{SpacingSpanner}).  Cuanto más larga es la duración,
más espacio recibe: al doblar una duración se suma
@code{spacing-increment} al espacio que ocupa la nota.

Por ejemplo, la pieza siguiente contiene numerosas blancas, negras
y corcheas; la corchea va seguida de un ancho de cabeza de blanca
(ACB).  La negra va seguida de 2 ACB, la blanca por 3 ACB, etc.

@lilypond[quote,verbatim]
\relative c' {
  c2 c4. c8
  c4. c8 c4. c8
  c8 c c4 c c
}
@end lilypond

Normalmente, el valor de @code{spacing-increment} está establecido
en 1.2 espacios de pentagrama, lo que es aproximadamente el ancho
de una cabeza, y @code{shortest-duration-space} está establecido
en 2.0, lo que significa que la nota más breve recibe 2.4 espacios
de pentagrama (2.0 multiplicado por el @code{spacing-increment})
de espacio horizontal.  Este espacio se cuenta a partir del borde
izquierdo del símbolo, de manera que las notas más breves van
seguidas generalmente por un espacio de 1 ACB.

Si siguiésemos el procedimiento anterior exactamente, entonces la
adición de una sola fusa a una partitura que usa corcheas y
semicorcheas, aumentaría enormemente la anchura de la partitura
completa.  La nota más breve ya no es la semicorchea, sino la
fusa, añadiendo así 1 ACB a cada una de las notas.  Para evitarlo,
la duración más breve a efectos de espaciado no es la nota más
breve de la partitura, sino la que ocurre con más frecuencia.

La duración más breve que es más común se determina de la
siguiente manera: en cada compás se determina la duración más
breve.  La menor duración más común se toma como base para el
espaciado, habiendo estipulado que esta duración menor siempre
debe ser igual o menor que una corchea.  La duración más breve se
imprime cuando se ejecuta @code{lilypond} con la opción
@option{--verbose}.

Estas duraciones también se pueden personalizar.  Si establecemos
la @code{common-shortest-duration} en @rinternals{SpacingSpanner},
entonces éste establece la duración base para el espaciado.  La
duración máxima para esta base (normalmente una corchea), se fija
a través de @code{base-shortest-duration}.

@funindex common-shortest-duration
@funindex base-shortest-duration
@funindex stem-spacing-correction
@funindex spacing

Las notas que son aún más breves que la nota común más breve van
seguidas por un espacio proporcional a su duración en relación con
la nota común más breve.  Así pues, si fuésemos a añadir tan sólo
algunas semicorcheas al ejemplo anterior, irían seguidas por medio
ACB:

@lilypond[quote,verbatim]
\relative { c''2 c4. c8 | c4. c16[ c] c4. c8 | c8 c c4 c c }
@end lilypond

Como se explicó en el @emph{Ensayo sobre grabado musical
automatizado}, las direcciones de las plicas influyen en el
espaciado (véase @ressay{Espaciado óptico}) y se puede ajustar con
la propiedad @code{stem-spacing-correction} del objeto
@rinternals{NoteSpacing}.  Estos se generan para cada uno de los
contextos de @rinternals{Voice}.

El objeto @code{StaffSpacing} (generado en el contexto de
@rinternals{Staff}) contiene la misma propiedad para controlar el
espaciado de las líneas de plica o divisorias.

El ejemplo siguiente muestra estas correcciones, una vez con los
valores predeterminados y otra con un ajuste exagerado:

@lilypond[quote,ragged-right]
\fixed c' {
  c4 e'4 e4 b4 |
  b4 e'4 b4 e'4 |
  \override Staff.NoteSpacing.stem-spacing-correction = #1.5
  \override Staff.StaffSpacing.stem-spacing-correction = #1.5
  c4 e'4 e4 b4 |
  b4 e'4 b4 e'4 |
}
@end lilypond

Está contemplada la notación proporcional; consulte
@ref{Notación proporcional}.

@seealso
Ensayo sobre grabado musical automatizado:
@ressay{Espaciado óptico}.

Fragmentos de código:
@rlsr{Spacing}.

Referencia de funcionamiento interno:
@rinternals{SpacingSpanner},
@rinternals{NoteSpacing},
@rinternals{StaffSpacing},
@rinternals{NonMusicalPaperColumn}.

@knownissues
No existe ningún mecanismo conveniente para sobreescribir el
espaciado manualmente.  Se puede usar el siguiente rodeo para
insertar espacio adicional en una partitura, ajustando el valor
del relleno en la medida necesaria.

@example
 \override Score.NonMusicalPaperColumn.padding = #10
@end example

No existe ningún rodeo para disminuir la magnitud de la
separación.


@node Sección de espaciado nueva
@subsection Sección de espaciado nueva
@translationof New spacing section

@funindex \newSpacingSection
@cindex sección de espaciado nueva
@cindex espaciado, nueva seccción de
@cindex nota, espaciar horizontalmente

Se pueden iniciar secciones nuevas con diferentes parámetros de
espaciado, con la instrucción @code{newSpacingSection}.  Esto es
útil para las secciones que tienen distinta noción de las notas
@q{largas} y @q{cortas}.  La instrucción @code{\newSpacingSection}
crea un nuevo objeto @code{SpacingSpanner} en ese momento musical.

En el ejemplo siguiente, el cambio de compás introduce una sección
nueva, y por ello las semicorcheas se separan automáticamente de
manera ligeramente más amplia.

@lilypond[verbatim,quote]
\relative c' {
  \time 2/4
  c4 c8 c
  c8 c c4 c16[ c c8] c4
  \newSpacingSection
  \time 4/16
  c16[ c c8]
}
@end lilypond

Si los ajustes de espaciado automáticos no dan el espaciado
deseado, pueden aplicarse sobreescrituras manuales a sus
propiedades con @code{\override}.  Las sobreescrituras se deben
aplicar en el mismo momento musical que la propia instrucción
@code{\newSpacingSection} y afectarán entonces al espaciado de
toda la música que venga a continuación hasta que las propiedades
se cambien en una nueva sección de espaciado, por ejemplo:

@lilypond[verbatim,quote]
\relative c' {
  \time 4/16
  c16[ c c8]
  \newSpacingSection
  \override Score.SpacingSpanner.spacing-increment = #2
  c16[ c c8]
  \newSpacingSection
  \revert Score.SpacingSpanner.spacing-increment
  c16[ c c8]
}
@end lilypond


@seealso
Fragmentos de código:
@rlsr{Spacing}.

Referencia de funcionamiento interno:
@rinternals{SpacingSpanner}.


@node Cambiar el espaciado horizontal
@subsection Cambiar el espaciado horizontal
@translationof Changing horizontal spacing

@menu
* Estiramiento uniforme de los grupos especiales::
* Espaciado estricto de las notas::
@end menu

Se puede alterar el espaciado horizontal con la propiedad
@code{base-shortest-duration}.  Aquí compararemos la misma música,
una vez sin alterar la propiedad, y luego alterándola.  Los
valores mayores de @code{ly:make-moment} producen música más
pequeña.  Observe que @code{ly:make-moment} construye una
duración, por lo que @code{1 4} es una duración mayor que @code{1
16}.

@lilypond[verbatim,line-width=12\cm]
\score {
  \relative {
    g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
    d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
  }
}
@end lilypond

@lilypond[verbatim,line-width=12\cm]
\score {
  \relative {
    g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 |
    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
    d4 d d d | d4 e f2 | e4 e e e | e4 f g2 |
    g4 e e2 | f4 d d2 | c4 e g g | c,1 |
  }
  \layout {
    \context {
      \Score
      \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/16)
    }
  }
}
@end lilypond


@node Estiramiento uniforme de los grupos especiales
@unnumberedsubsubsec Estiramiento uniforme de los grupos especiales
@translationof Uniform stretching of tuplets

De forma predeterminada, el espaciado en los grupos de valoración
especial depende de varios factores ajenos a la duración (como
alteraciones, cambios de clave, etc.).  Para pasar por alto estos
símbolos y forzar un espaciado de duraciones iguales uniforme, use
@code{Score.SpacingSpanner.uniform-stretching}.  Esta propiedad
sólo puede cambiarse al principio de la partitura:

@lilypond[quote,ragged-right,verbatim]
\score {
  <<
    \new Staff \relative c' {
      \tuplet 5/4 { c8 c c c c } c8 c c c
    }
    \new Staff \relative c' {
      c8 c c c \tuplet 5/4 { c8 c c c c }
    }
  >>
  \layout {
    \context {
      \Score
      \override SpacingSpanner.uniform-stretching = ##t
    }
  }
}
@end lilypond


@node Espaciado estricto de las notas
@unnumberedsubsubsec Espaciado estricto de las notas
@translationof Strict note spacing

Cuando se establece @code{strict-note-spacing}, las notas se
separan sin tener en cuenta las claves, líneas divisorias ni notas
de adorno:

@lilypond[quote,ragged-right,fragment,verbatim]
\override Score.SpacingSpanner.strict-note-spacing = ##t
\new Staff \relative {
  c''8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c] }
@end lilypond

@seealso
Fragmentos de código:
@rlsr{Spacing}.


@node Longitud de la línea
@subsection Longitud de la línea
@translationof Line width

@cindex salto, de página
@cindex página, saltos de

@funindex indent
@funindex line-width
@funindex ragged-right
@funindex ragged-last

@c Although line-width can be set in \layout, it should be set in paper
@c block, to get page layout right.
@c Setting indent in \paper block makes not much sense, but it works.

@c Bit verbose and vague, use examples?
Los ajustes más básicos que influyen en el espaciado son
@code{indent} y @code{line-width}.  Se definen en el bloque
@code{\layout}.  Controlan el sangrado de la primera línea de
música y la longitud de las líneas.

Si se fija un valor verdadero para @code{ragged-right} en el
bloque @code{\layout}, entonces los sistemas terminan en su
longitud horizontal natural, en lugar de repartirse
horizontalmente hasta llenar toda la línea.  Esto es útil para
fragmentos cortos, y para comprobar qué tan apretado es el
espaciado natural.  El valor normal predeterminado es falso, pero
si la partitura tiene un solo sistema, el valor predeterminado es
verdadero.

@cindex diseño de página
@cindex página, disposición de la
@cindex vertical, espaciado

La opción @code{ragged-last} es similar a @code{ragged-right},
pero afecta sólo a la última línea de la pieza.  No se efectúa
ninguna restricción sobre dicha línea.  El resultado es similar al
formateo de los párrafos de texto.  En un párrafo, la última línea
sencillamente ocupa su longitud horizontal natural.
@c Note that for text there are several options for the last line.
@c While Knuth TeX uses natural length, lead typesetters use the same
@c stretch as the previous line.  eTeX uses \lastlinefit to
@c interpolate between both these solutions.

@example
\layout @{
  indent = #0
  line-width = #150
  ragged-last = ##t
@}
@end example

@seealso
Fragmentos de código:
@rlsr{Spacing}.


@node Notación proporcional
@subsection Notación proporcional
@translationof Proportional notation

LilyPond contempla la notación proporcional, un tipo de espaciado
horizontal en el que cada nota consume una medida horizontal que
equivale exactamente a su duración rítmica.  Este tipo de
espaciado proporcional es comparable al espaciado horizontal hecho
sobre un papel milimetrado.  Ciertas partituras del finales del
s.XX y principios del s.XXI utilizan notación proporcional para
clarificar relaciones rítmicas complejas o para facilitar la
colocación de líneas cronométricas u otros gráficos directamente
en la partitura.

LilyPond contempla cinco ajustes distintos para la notación
proporcional, que se pueden usar solos o combinados:

@itemize
@item @code{proportionalNotationDuration}
@item @code{uniform-stretching}
@item @code{strict-note-spacing}
@item @code{\remove "Separating_line_group_engraver"}
@item @code{\override PaperColumn.used = ##t}
@end itemize

En los ejemplos que siguen, exploramos el uso de estos cinco
ajustes de la notación proporcional y examinamos la forma en que
interactúan.

Comenzamos con el siguiente ejemplo de un solo compás, que usa un
espaciado clásico sin justificación por la derecha.

@c The initial pitch is not necessary as long as RhythmicStaff is
@c not preceded by other material in the score, but we don't want
@c to explain that.
@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
  >>
}
@end lilypond

Observe que la blanca que inicia el compás ocupa mucho menos de la
mitad de todo el espacio horizontal del compás.  De forma similar,
las semicorcheas y el cinquillo de semicorcheas con que finaliza
el compás ocupan en conjunto mucho más de la mitad de todo el
espacio horizontal del compás.

En el grabado clásico, este espaciado puede ser exactamente el que
deseamos porque podemos tomar prestado el espacio horizontal de la
blanca y conservar el espacio horizontal a lo largo del compás
como un todo.

Por otro lado, si queremos insertar una línea de tiempo graduada o
algún otro gráfico encima o debajo de la partitura, necesitamos la
notación proporcional.  Se activa la notación proporcional con el
ajuste @code{proportionalNotationDuration}.

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
  >>
 \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/20)
    }
  }
}
@end lilypond

La blanca al principio del compás y las notas rápidas de la
segunda mitad del compás ocupan ahora cantidades iguales de
espacio horizontal.  Podríamos colocar una línea de tiempo
graduada o un gráfico encima o debajo de este ejemplo.

El ajuste @code{proportionalNotationDuration} es un ajuste de
contexto que reside en @code{Score}.  Recordemos que los ajustes
de contexto aparecen en uno de tres posibles lugares del archivo
de entrada: en un bloque @code{\with}, en un bloque
@code{\context}, o directamente entre la música precedido por la
instrucción @code{\set}.  Como con todos los ajustes de contexto,
el usuario puede elegir en cuál de los tres lugares diferentes
prefiere establecer el valor de
@code{proportionalNotationDuration}.

El ajuste @code{proportionalNotationDuration} acepta un solo
argumento, que es la duración de referencia contra el que se
aplica el espaciado de toda la música.  La función Scheme de
LilyPond @code{make-moment} acepta dos argumentos: un numerador y
un denominador que, juntos, expresan una cierta fracción de
redonda.  La llamada @code{(ly:make-moment 1/20)}, por tanto,
produce una duración de referencia de una nota de un veinteavo de
redonda (semicorcheas de cinquillo).  Son también posibles valores
como @code{(ly:make-moment 1/16)}, @code{(ly:make-moment 1/8)} y
@code{(ly:make-moment 3/97)}.

¿Cómo seleccionamos la duración correcta de referencia para
pasarla a @code{proportionalNotationDuration}?  Normalmente
mediante un proceso de ensayo y error, comenzando con una duración
cercana a la más rápida (o más breve) duración de la pieza.  Las
duraciones de referencia más pequeñas aplican un espaciado más
suelto; las duraciones de referencia más largas aplican un
espaciado más apretado.

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/8)
    }
  }
}

\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/16)
    }
  }
}

\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/32)
    }
  }
}
@end lilypond

Observe que una duración de referencia demasiado grande (como la
corchea, en el ejemplo de arriba) produce un espaciado
excesivamente apretado y puede ser causa de colisiones entre las
cabezas de nota.  Observe también que la notación proporcional en
general ocupa más espacio horizontal que el espaciado clásico.  El
espaciado proporcional aporta claridad rítmica a expensas del
espacio horizontal.

Ahora veremos cómo espaciar de forma óptima grupos de valoración
especial que se superponen.

Empezamos por examinar qué le ocurre a nuestro ejemplo original,
con espaciado clásico, cuando añadimos un segundo pentagrama con
un tipo diferente de grupo especial.

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
    }
  >>
}
@end lilypond

El espaciado es defectuoso porque las notas regularmente
espaciadas del pentagrama inferior no se amplían de manera
uniforme.  Los grabados clásicos incluyen muy pocos tresillos
complejos y así las reglas del grabado clásico pueden generar este
tipo de resultado.  El establecimiento de
@code{proportionalNotationDuration} lo soluciona.

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
    }
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/20)
    }
  }
}
@end lilypond

Pero si observamos con mucho cuidado podremos ver que las notas de
la segunda mitad del 9-illo están espaciadas de forma ligeramente
más ancha que las de la primera mitad del 9-illo.  Para asegurar
una ampliación uniforme, activamos @code{uniform-stretching}, que
es una propiedad de @code{SpacingSpanner}.

@lilypond[quote,verbatim,ragged-right]
\score {
  <<
    \new RhythmicStaff {
      c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 }
    }
  >>
  \layout {
    \context {
      \Score
      proportionalNotationDuration = #(ly:make-moment 1/20)
      \override SpacingSpanner.uniform-stretching = ##t
    }
  }
}
@end lilypond

Nuestro ejemplo de dos pentagramas ahora está espaciado
exactamente, nuestras relaciones rítmicas son visualmente claras,
y podemos incluir una línea de tiempo graduada o un gráfico, si
queremos.

Observe que el paquete de notación proporcional de LilyPond espera
que todas las partituras proporcionales establezcan el atributo
@code{uniform-stretching} de @code{SpacingSpanner} al valor ##t.
El establecimiento de @code{proportionalNotationDuration} sin
ajustar también el atributo @code{uniform-stretching} de
@code{SpacingSpanner} al valor ##t causará, por ejemplo, que los
desplazamientos (@code{skips}) consuman una cantidad de espacio
horizontal incorrecta.

El @code{SpacingSpanner} es un grob abstracto que reside en el
contexto de @code{Score}. Como con nuestros ajustes de
@code{proportionalNotationDuration}, las sobreescrituras al
@code{SpacingSpanner} sólo pueden ocurrir en uno de estos tres
lugares dentro del archivo de entrada: en el bloque @code{\with},
en el bloque @code{\context} o directamente dentro de la escritura
de notas.

De manera predeterminada, sólo hay un @code{SpacingSpanner} por
@code{Score}.  Esto supone que, por omisión,
@code{uniform-stretching} está activado para la partitura completa
o desactivado para la partitura completa.  Sin embargo, podemos
sobreescribir este comportamiento y activar distintas
posibilidades de espaciado en distintos lugares de la partitura.
Lo hacemos con la instrucción @code{\newSpacingSection}.  Consulte
@ref{Sección de espaciado nueva} para más información.

A continuación examinamos los efectos del grabador
@code{Separating_line_group_engraver} y veremos por qué las
partituras proporcionales con frecuencia eliminan este grabador.
El ejemplo siguiente muestra que hay una pequeña cantidad de
espacio @qq{preliminar} justo antes de la primera nota de cada
sistema.

@lilypond[quote,verbatim,ragged-right]
\paper {
  indent = #0
}

\new Staff {
  c'1
  \break
  c'1
}
@end lilypond

Esta cantidad de espacio preliminar es la misma ya sea después de
una indicación de compás, una armadura o una clave.  El grabador
@code{Separating_line_group_engraver} es responsable de este
espacio.  La eliminación de @code{Separating_line_group_engraver}
reduce este espacio a cero.

@lilypond[quote,verbatim,ragged-right]
\paper {
  indent = #0
}

\new Staff \with {
  \remove "Separating_line_group_engraver"
} {
  c'1
  \break
  c'1
}
@end lilypond

Los elementos no musicales como la indicación de compás, la
armadura, la clave y las alteraciones son problemáticos en
notación proporcional.  Ninguno de estos elementos tiene duración
rítmica.  Pero todos ellos consumen espacio horizontal.  Las
distintas partituras proporcionales abordan este problema de
distinta manera.

Sería posible evitar los problemas de espaciado con las armaduras,
simplemente evitando tenerlas.  Esta es una opción válida pues
casi todas las partituras proporcionales son música contemporánea.
Lo mismo puede valer para las indicaciones de compás,
especialmente para las partituras que incluyen una línea de tiempo
graduada u otro gráfico.  Pero estas partituras son excepcionales
y casi todas las partituras proporcionales incluyen al menos unas
pocas indicaciones de compás.  Las claves y las alteraciones son
aún más esenciales.

Así pues ¿qué estrategias existen para el espaciado de los
elementos no musicales en un contexto proporcional?  Una buena
opción es la propiedad @code{strict-note-spacing} de
@code{SpacingSpanner}.  Compare las dos partituras siguientes:

@lilypond[quote,verbatim,ragged-right]
\new Staff {
  \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
  c''8 8 8 \clef alto d'2 2
}

\new Staff {
  \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
  \override Score.SpacingSpanner.strict-note-spacing = ##t
  c''8 8 8 \clef alto d'2 2
}
@end lilypond

Las dos partituras son proporcionales, pero el espaciado de la
primera es muy suelto a causa del cambio de clave. Sin embargo, el
espaciado de la segunda partitura se mantiene estricto, porque
@code{strict-note-spacing} está activado.  La activación de
@code{strict-note-spacing} hace que el ancho de las indicaciones
de compás, armaduras, cambios de clave y alteraciones no tomen
parte en el algoritmo de espaciado.

Además de los ajustes dados aquí, hay otros que aparecen con
frecuencia en las partituras proporcionales.  Entre ellos están:

@itemize
@item @code{\override SpacingSpanner.strict-grace-spacing = ##t}
@item @code{\set tupletFullLength = ##t}
@item @code{\override Beam.breakable = ##t}
@item @code{\override Glissando.breakable = ##t}
@item @code{\override TextSpanner.breakable = ##t}
@item @code{\remove "Forbid_line_break_engraver" in the Voice context}
@end itemize

Estos ajustes dan a las notas de adorno un espaciado estricto,
extienden los corchetes de grupo especial para que marquen tanto
los puntos de comienzo como de final, y permiten que los elementos
de extensión se dividan entre los sistemas y las páginas.
Consulte las partes respectivas del manual para ver estos ajustes
relacionados.

@seealso
Referencia de la notación:
@ref{Sección de espaciado nueva}.

Fragmentos de código:
@rlsr{Spacing}.


@node Encajar la música en menos páginas
@section Encajar la música en menos páginas
@translationof Fitting music onto fewer pages

En ocasiones, podemos terminar con uno o dos pentagramas en una
segunda página (o tercera, o cuarta@dots{}).  Es fastidioso,
especialmente cuando vemos que las páginas anteriores parecen
tener espacio de sobra.

Al investigar los problemas de disposición, una herramienta de
valor incalculable es @code{annotate-spacing}.  Esta instrucción
imprime los valores de un cierto número de variables de espaciado;
para ver más detalles consulte la sección siguiente,
@ref{Mostrar el espaciado}.

@menu
* Mostrar el espaciado::
* Cambiar el espaciado::
@end menu


@node Mostrar el espaciado
@subsection Mostrar el espaciado
@translationof Displaying spacing

@cindex espaciado, presentación del
@funindex annotate-spacing

Para presentar gráficamente las dimensiones de las variables de
disposición vertical que pueden verse alteradas por el formato de
la página, establezca @code{annotate-spacing} en el bloque
@code{\paper}:

@lilypond[verbatim,quote,papersize=a6landscape]
\book {
  \score { { c4 } }
  \paper { annotate-spacing = ##t }
}
@end lilypond

@noindent
Todas las dimensiones de disposición se muestran en espacios de
pentagrama, independientemente de las unidades especificadas en
los bloques @code{\paper} o @code{\layout}. En el ejemplo
anterior, @code{paper-height} tiene un valor de 59.75
@code{staff-spaces} (espacios de pentagrama), y el
@code{staff-size} (tamaño del pentagrama) es de 20 puntos, el
valor predeterminado. Observe que:

@multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm}

@item 1 punto
@tab = (25.4/72.27) mm

@item 1 staff-space
@tab = (@code{staff-size})/4 pts
@item
@tab = (@code{staff-size})/4 * (25.4/72.27) mm

@end multitable

@noindent
En este caso, un @code{staff-space} equivale aproximadamente a
1.757mm.  Así, la medida @code{paper-height} de 59.75
@code{staff-spaces} equivale a 105 milímetros, la altura de una
hoja @code{a6} en orientación apaisada.  Las parejas
(@var{a},@var{b}) son intervalos, donde @var{a} es el límite
inferior y @var{b} es el límite superior del intervalo.

@seealso
Referencia de la notación:
@ref{Establecer el tamaño del pentagrama}.

Fragmentos de código:
@rlsr{Spacing}.


@node Cambiar el espaciado
@subsection Cambiar el espaciado
@translationof Changing spacing

La salida de @code{annotate-spacing} revela las dimensiones
verticales con gran detalle.  Para ver más detalles acerca de la
modificación de los márgenes y otras variables de diseño de la
página, consulte @ref{Disposición de la página}.

Aparte de los márgenes, hay algunas otras opciones para ahorrar
espacio:

@itemize
@item
Forzar los sistemas para que se junten lo más posible entre sí (de
forma que quepan la mayor cantidad de ellos en la página) y al
mismo tiempo estén espaciados de forma que no exista un espacio
vacío en la parte baja del papel.

@example
\paper @{
  system-system-spacing = #'((basic-distance . 0.1) (padding . 0))
  ragged-last-bottom = ##f
  ragged-bottom = ##f
@}
@end example

@item
Forzar el número de sistemas.  Puede ser de utilidad de dos
formas.  Si tan sólo se establece un valor, incluso el mismo valor
que el número de sistemas que se están trazando de forma
predeterminada, ello ocasionará a veces que se traten de
introducir más sistemas en cada página, pues en este caso se omite
un paso en que se produce una estimación, dando así un encaje
mejor en cada página.  Asimismo, el forzar una reducción neta en
el número de sistemas puede producir el ahorro de una página
adicional.  Por ejemplo, si la disposición predeterminada tiene 11
sistemas, la asignación siguiente fuerza una disposición con 10
sistemas.

@example
\paper @{
  system-count = #10
@}
@end example

@item
Forzar el número de páginas.  Por ejemplo, la asignación siguiente
fuerza una disposición con dos páginas.

@example
\paper @{
  page-count = #2
@}
@end example

@item
Evitar (o reducir en número) los objetos que aumentan el tamaño
vertical de un sistema.  Por ejemplo, los corchetes de las
repeticiones de primera y segunda vez (o repeticiones con finales
alternativos) necesitan espacio adicional.  Si estas casillas se
reparten a lo largo de dos sistemas, ocupan más espacio que si
estuvieran sobre el mismo sistema.  Como otro ejemplo, las
indicaciones dinámicas que se @q{salen} de un sistema se pueden
acercar al pentagrama:

@lilypond[verbatim,quote]
\relative e' {
  e4 c g\f c
  e4 c g-\tweak X-offset #-2.7 \f c
}
@end lilypond

@item
Alterar el espaciado horizontal por medio de
@code{SpacingSpanner}.  Para ver más detalles, consulte
@ref{Cambiar el espaciado horizontal}.  El ejemplo siguiente
ilustra el espaciado predeterminado:

@lilypond[verbatim,quote]
\score {
  \relative {
    g'4 e e2 |
    f4 d d2 |
    c4 d e f |
    g4 g g2 |
    g4 e e2 |
  }
}
@end lilypond

@noindent
El ejemplo siguiente modifica @code{common-shortest-duration} de
un valor de @code{1/4} (negra) a @code{1/2} (blanca).  La negra es
la nota más común y la más breve del ejemplo, por lo que al
agrandar esta duración se produce un efecto de @q{apretujamiento}:

@lilypond[verbatim,quote]
\score {
  \relative {
    g'4 e e2 |
    f4 d d2 |
    c4 d e f |
    g4 g g2 |
    g4 e e2 |
  }
  \layout {
    \context {
      \Score
      \override SpacingSpanner.common-shortest-duration =
        #(ly:make-moment 1/2)
    }
  }
}
@end lilypond

@noindent
La propiedad @code{common-shortest-duration} no se puede modificar
de manera dinámica, por lo que se debe situar siempre dentro de un
bloque @code{\context} de forma que se aplique a la partitura
completa.

@end itemize

@seealso
Referencia de la notación:
@ref{Disposición de la página},
@ref{Cambiar el espaciado horizontal}.

Fragmentos de código:
@rlsr{Spacing}.
