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

@ignore
    Translation of GIT committish: e965ee6c9b3b42a76fd6fce1f9c6b93b3ee79aae

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

@ignore
GDP TODO list
This block comment is copied here to ease comparation of
original and its translation.

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.


In 5.2.1 the @refbugs (line 495 in spacing.itely on master) it
states:

"@code{layout-set-staff-size} does not change the distance between
the
staff lines."

Could we add a sentence:
"Use instead the pair               fontSize = #@var{N}
            \override StaffSymbol.staff-space = #(magstep
@var{N})
inside the Staff context to change the size of the font and the
distance between
staff lines accordingly."

Actually I found, that the @internalsref{StaffSymbol} at line 481
sends to an incomplete
documentation.  The property staff-space is not explained here.  I
thought Y-extent might be of
help, but it is in turn explained by x-space which again is
missing from the list.  Who has the
knowledge to fix this?


Clarify
http://code.google.com/p/lilypond/issues/detail?id=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,,Variables de espaciado de @code{@bs{}paper} verticales fijas},
@ref{Variables de espaciado de paper horizontales,,Variables de espaciado de @code{@bs{}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 se fija al valor verdadero, los sistemas no se reparten
verticalmente hasta abajo de la página.  Esto no afecta a la última
página.  Se debe fijar a verdadero para piezas que sólo tienen dos o
tres sistemas por página, como por ejemplo las partituras orquestales.

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

Si se establece al valor falso, los sistemas se reparten verticalmente
hasta abajo de la última página.  Las piezas que llenan sobradamente
dos o más páginas deben tener este valor fijado a falso.  También
afecta a la última página de las partes de libro, es decir, partes de
un libro creadas con bloques @code{\bookpart}.

@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
@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
@funindex line-width

Dimensiones horizontales de las líneas del pentagrama en los sistemas
sin sangrado y justificados, igual a
@code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}
cuando está sin fijar.  Si @code{line-width} está fijado, y tanto
@code{left-margin} como @code{right-margin} están sin fijar, entonces
los márgenes se actualizan para centrar los sistemas automáticamente
sobre la página.  Véase también @code{check-consistency}.
Esta variable también se puede fijar dentro de un bloque @code{\layout}.

@item left-margin
@funindex left-margin

Margen entre el extremos 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
@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
@funindex check-consistency

Si se establece al valor verdadero, 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
@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
@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
@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
@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
@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
@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
@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
@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.  Esta variable también se
puede ajustar dentro de un bloque @code{\layout}.

@item short-indent
@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.  Esta variable
también se puede ajustar 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}.

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-line-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 vcí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 de una línea}.

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úmeros de página, automáticos
@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úmeros de página, especificar el primero
@item first-page-number
@funindex first-page-number

Valor del número de pátina 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úmeros 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.

@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

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'' { c1 \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}
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 tarí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 tambiié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
@funindex disposición, archivo de

El @strong{tamaño de pentagrama} predeterminado se establece en 20
puntos.  Esto se puede modificar de dos maneras:

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
Esto establece el tamaño global predeterminado a una altura de
pentagrama de 14pt y escala todas las tipografías según corresponda.

Para establecer el tamaño del pentagrama de forma individual para cada
partitura, use
@example
\score@{
  @dots{}
  \layout @{
    #(layout-set-staff-size 15)
  @}
@}
@end example

La fuente tipográfica Feta ofrece símbolos musicales a ocho tamaños
distintos.  Cada fuente tipográfica está afinada para un tamaño de
pentagrama distinto: a un tamaño menor la tipografía se vuelve más
pesada, para que coincida con las líneas de pentagrama relativamente
más gruesas.  Los tamaños de tipografía recomendados están
relacionados en la tabla siguiente:

@quotation
@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
@end quotation

Estas tipografías están disponibles en cualquier tamaño.  La propiedad
de contexto @code{fontSize} y la propiedad de disposición
@code{staff-space} (en @rinternals{StaffSymbol}) se pueden usar para
afinar el tamaño de los pentagramas individuales.  Los tamaños de
pentagrama individuales están en relación al tamaño global.

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

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

@knownissues
@code{layout-set-staff-size} no cambia la distancia entre las líneas
del pentagrama.


@node Saltos
@section Saltos
@translationof Breaks

@menu
* Saltos de línea::
* Saltos de página::
* Saltos de página óptimos::
* Paso de página óptimo::
* Saltos de página mínimos::
* Saltos de página de una línea::
* Saltos de línea explícitos::
* Utilizar una voz adicional para los saltos de línea::
@end menu


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

@cindex saltos de línea
@cindex línea, saltos 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,relative=2,verbatim]
c4 c c c | \break
c4 c c c |
@end lilypond

De forma predeterminada se ignora cualquier @code{\break} en la mitad
de un compás, y se imprime una advertencia.  Para forzar un salto de
línea en medio de un compás, añada una barra de compás invisible con
@w{@samp{\bar ""}}:

@lilypond[quote,ragged-right,relative=2,verbatim]
c4 c c
\bar "" \break
c |
c4 c c c |
@end lilypond

También se ignora un @code{\break} que se produce en la línea
divisoria si el compás anterior termina en medio de una nota, como
cuando un grupo de valoración especial inicia y termina en compases
diferentes.  Para permitir que las instrucciones @code{\break}
funcionen en estas situaciones, elimine el grabador
@code{Forbid_line_break_engraver} del contexto @code{Voice}.  Observe
que los saltos de línea forzados manualmente se deben añadir en
paralelo con la música:

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

De forma similar, los saltos de línea están normalmente prohibidos
cuando hay barras de corchea que cruzan la línea divisoria.  Se
puede cambiar este comportamiento fijando
@code{\override Beam.breakable = ##t}:

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

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

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 saltos de línea normales
@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
@funindex \break
@code{\break},
@funindex \noBreak
@code{\noBreak}.
@endpredefined

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

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

Referencia de funcionamiento interno:
@rinternals{LineBreakEvent}.


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

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

Hay ajustes análogos a @code{ragged-right} y @code{ragged-last} que
tienen el mismo efecto sobre el espaciado vertical:
@code{ragged-bottom} y @code{ragged-last-bottom}.  Si están
establecidos a @code{#t} los sistemas de todas las páginas o sólo de
la última página, respectivamente, no se verán justificados
verticalmente.  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 tres algoritmos para el cómputo
de los saltos de página: @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},
@funindex \noPageBreak
@code{\noPageBreak}.
@endpredefined

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

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


@node Saltos de página óptimos
@subsection 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 Paso de página óptimo
@subsection 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, puede establecerlo a algún
valor 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
El grabador @code{Page_turn_engraver} detecta las repeticiones de
primera y segunda vez.  Sólo 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. El grabador
@code{Page_turn_engraver} también puede inhabilitar los pasos de
página si la repetición es muy corta.  Si establecemos la propiedad de
contexto @code{minimumRepeatLengthForPageTurn} entonces el grabador
@code{Page_turn_engraver} sólo permitirá los pases de página en las
repeticiones cuya duración sea mayor que este valor.

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, entre las partituras y los elementos
de marcado del nivel superior.

@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,,Variables de @code{@bs{}paper} para los saltos de línea}.

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

@knownissues
Sólo debería haber un grabador @code{Page_turn_engraver} dentro de una
partitura.  Si hay más de uno, se interferirán entre sí.


@node Saltos de página mínimos
@subsection 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
Fragmentos de código:
@rlsr{Spacing}.

@node Saltos de página de una línea
@subsection Saltos de página de 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 línea explícitos
@subsection Saltos de línea explícitos
@translationof Explicit breaks

Lily a veces rechaza las instrucciones @code{\break} y
@code{\pageBreak} explícitas.  Hay dos instrucciones para
sobreescribir este comportamiento:

@example
\override NonMusicalPaperColumn.line-break-permission = ##f
\override NonMusicalPaperColumn.page-break-permission = ##f
@end example

Cuando se sobreescribe el valor de @code{line-break-permission} a
falso, Lily inserta saltos de línea en las instrucciones @code{\break}
explícitas y en ningún otro lugar. Cuando se sobreescribe el valor de
@code{page-break-permission} a falso, Lily inserta saltos de página en
las instrucciones @code{\pageBreak} explícitas y en ningún otro lugar.

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

music = \relative c'' { c8 c c c }

\score {
  \new Staff {
    \repeat unfold 2 { \music } \break
    \repeat unfold 4 { \music } \break
    \repeat unfold 6 { \music } \break
    \repeat unfold 8 { \music } \pageBreak
    \repeat unfold 8 { \music } \break
    \repeat unfold 6 { \music } \break
    \repeat unfold 4 { \music } \break
    \repeat unfold 2 { \music }
  }
  \layout {
    \context {
      \Score
      \override NonMusicalPaperColumn.line-break-permission = ##f
      \override NonMusicalPaperColumn.page-break-permission = ##f
    }
  }
}
@end lilypond

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


@node Utilizar una voz adicional para los saltos de línea
@subsection Utilizar una voz adicional para los saltos de línea
@translationof Using an extra voice for breaks

La información sobre saltos de línea y de página suele aparecer
directamente entremezclado dentro del código de notas.

@example
music = \relative c'' @{ c4 c c c @}

\score @{
  \new Staff @{
    \repeat unfold 2 @{ \music @} \break
    \repeat unfold 3 @{ \music @}
  @}
@}
@end example

Esto hace sencillas de introducir a las instrucciones @code{\break} y
@code{\pageBreak}, pero mezcla la escritura de música con información
que especifica cómo se debe disponer la música sobre la página.
Podemos mantener la introducción de música y la información de saltos
de línea y de página en dos lugares separados mediante la introducción
de una voz adicional que contenga los saltos.  Esta voz adicional
contiene solamente desplazamientos o @q{skips} junto con los
@code{\break}, @code{pageBreak} y otras informaciones sobre la
disposición de los saltos.

@lilypond[quote,verbatim]
music = \relative c'' { c4 c c c }

\header { tagline = ##f }
\paper { left-margin = 0\mm }
\book {
  \score {
    \new Staff <<
      \new Voice {
        s1 * 2 \break
        s1 * 3 \break
        s1 * 6 \break
        s1 * 5 \break
      }
      \new Voice {
        \repeat unfold 2 { \music }
        \repeat unfold 3 { \music }
        \repeat unfold 6 { \music }
        \repeat unfold 5 { \music }
      }
    >>
  }
}
@end lilypond

Este patrón resulta especialmente útil cuando se sobreescribe
@code{line-break-system-details} y las otras útiles (pero largas)
propiedades de @code{NonMusicalPaperColumnGrob}, como se explica en
@ref{Espaciado vertical}.

@lilypond[quote,verbatim]
music = \relative c'' { c4 c c c }

\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 * 2 \break

        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 5))
        s1 * 3 \break

        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 15))
        s1 * 6 \break

        \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
          #'((Y-offset . 30))
        s1 * 5 \break
      }
      \new Voice {
        \repeat unfold 2 { \music }
        \repeat unfold 3 { \music }
        \repeat unfold 6 { \music }
        \repeat unfold 5 { \music }
      }
    >>
  }
}
@end lilypond

@seealso
Referencia de la notación:
@ref{Espaciado vertical}.

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
     (parser location 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 crean el objeto de presentación
@code{VerticalAxisGroup}.

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 tres ajustes diferentes:

@itemize
@item @code{X-offset} (desplazamiento en X)
@item @code{Y-offset} (desplazamiento en Y)
@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 la información de los saltos de línea
y 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{Utilizar una voz adicional para los saltos de línea}.

Los saltos explícitos dividen la música de forma regular en seis
compases por línea.  El espaciado vertical es el resultado de los
ajustes predeterminados de LilyPond.  Para establecer explícitamente
el punto de origen vertical de cada sistema, podemos establecer 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.

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} 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.

@lilypond[quote,ragged-right,relative=2,verbatim]
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,relative=2,verbatim,staffsize=18]
\once \override TextScript.outside-staff-padding = #0
a4-"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,relative=2,verbatim]
c4^"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::
* Área 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 añade un
espacio de tamaño fijo (este tamaño se controla mediante
@code{spacing-increment}) a 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=1]
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=2]
c2 c4. c8 c4. c16[ c] c4. c8 c8 c8 c4 c4 c4
@end lilypond

En el @emph{Ensayo sobre grabado musical automatizado},
se explicó que las
direcciones de las plicas influyen en el espaciado
(véase @ressay{Espaciado óptico}).  Esto se controla
con la propiedad @code{stem-spacing-correction} en el 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 correcciones exageradas:

@lilypond[quote,ragged-right]
{
  c'4 e''4 e'4 b'4 |
  b'4 e''4 b'4 e''4 |
  \override Staff.NoteSpacing.stem-spacing-correction = #1.5
  \override Staff.StaffSpacing.stem-spacing-correction = #1.5
  c'4 e''4 e'4 b'4 |
  b'4 e''4 b'4 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 Área de espaciado nueva
@subsection Área de espaciado nueva
@translationof New spacing area

@funindex \newSpacingSection
@cindex área de espaciado nueva
@cindex espaciado, nueva área de
@cindex notas, espaciar horizontalmente

Se pueden iniciar secciones nuevas con diferentes parámetros de
espaciado, con @code{newSpacingSection}.  Esto es útil cuando hay
secciones que tienen distinta noción de las notas largas y cortas.

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[relative=1,verbatim,quote]
\time 2/4
c4 c8 c
c8 c c4 c16[ c c8] c4
\newSpacingSection
\time 4/16
c16[ c c8]
@end lilypond

La instrucción @code{\newSpacingSection} crea un nuevo objeto
@code{SpacingSpanner} en ese momento musical.  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}.  Entonces afectarán 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[relative=1,verbatim,quote]
\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

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 c'' {
    g4 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 c'' {
    g4 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


@snippets
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 {
      \tuplet 5/4 { c8 c c c c } c8 c c c
    }
    \new Staff {
      c8 c c c \tuplet 5/4 { c8 c c c c }
    }
  >>
  \layout {
    \context {
      \Score
      \override SpacingSpanner.uniform-stretching = ##t
    }
  }
}
@end lilypond

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,relative=2,verbatim]
\override Score.SpacingSpanner.strict-note-spacing = ##t
\new Staff { c8[ 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 length

@cindex saltos 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.

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

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

\score {
  <<
    \new RhythmicStaff {
      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
    }
  >>
  \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 {
      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
    }
  >>
}
@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 {
      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
    }
  >>
  \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 {
      c'2 c'16 c' c' c' \tuplet 5/4 { c'16 c' c' c' c' }
    }
    \new RhythmicStaff {
      \tuplet 9/8 { c'8 c' c' c' c' c' c' c' c' }
    }
  >>
  \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{Área 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 c'' c'' \clef alto d' d'2
}

\new Staff {
  \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
  \override Score.SpacingSpanner.strict-note-spacing = ##t
  c''8 c'' c'' \clef alto d' d'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{Área 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, las repeticiones de primera y
segunda vez (o repeticiones con finales alternativos) necesitan
espacio adicional.  Si estas repeticiones se reparten a lo largo de
dos sistemas, ocupan más espacio que un sistema con las casillas de
repetición y otro sistema sin ellas.  Por ejemplo, las indicaciones
dinámicas que se @q{salen} de un sistema se pueden acercar al
pentagrama:

@lilypond[verbatim,quote,relative=1]
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 c'' {
    g4 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 c'' {
    g4 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}.
