@c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*- @ignore Translation of GIT committish: 24dd6365d3d05f13b9259f547be9b2517851a5d1 When revising a translation, copy the HEAD committish of the version that you are working on. For details, see the Contributors' Guide, node Updating translation committishes.. @end ignore @c \version "2.19.22" @ignore GDP TODO list Negative numbers are allowed: > Are you sure? The following works well > \paper{ > first-page-number = -2 > } > and prints page number -1 on the second page, for example. Clarify 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}, @ref{Variables de espaciado de paper horizontales}. Archivos de inicio: @file{ly/paper-defaults-init.ly}, @file{scm/paper.scm}. @node Variables de espaciado de paper verticales fijas @subsection Variables de espaciado de @code{@bs{}paper} verticales fijas @translationof Fixed vertical spacing paper variables @warning{Algunas dimensiones de @code{@bs{}paper} se escalan automáticamente al tamaño del papel, lo que puede llevar a un comportamiento no esperado. Véase @ref{Escalado automático al tamaño del papel}.} Los valores predeterminados (previos al escalado) están definidos en el archivo @file{ly/paper-defaults-init.ly}. @table @code @item paper-height (altura del papel) @funindex paper-height Altura de la página, no fijada de forma predeterminada. Observe que el escalado automático de algunas dimensiones verticales no resulta afectado por esto. @item top-margin (margen superior) @funindex top-margin Margen entre el extremo superior de la página y la parte superior de la zona imprimible. Si se modifica el tamaño del papel, el valor predeterminado de esta dimensión se escala de acuerdo con ello. @item bottom-margin (margen inferior) @funindex bottom-margin Margen entre la parte inferior de la zona imprimible y el extremo inferior de la página. Si se modifica el tamaño del papel, se escala de acuerdo con ello el valor predeterminado de esta dimensión. @item ragged-bottom (sin justificar por abajo) @funindex ragged-bottom Si esto se fija al valor verdadero, los sistemas se disponen según su espaciado natural, ni comprimido ni ampliado verticalmente para rellenar la página. @item ragged-last-bottom (sin justificar la última por abajo) @funindex ragged-last-bottom Si se establece al valor falso, entonces la última página (tanto del documento como de cada sección que se hubiera creado con un bloque @code{\bookpart}) se justifica verticalmente de la misma forma que las páginas anteriores. @end table @seealso Referencia de la notación: @ref{Escalado automático al tamaño del papel}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. Fragmentos de código: @rlsr{Spacing}. @knownissues Los títulos (extraídos del bloque @code{\header}) se tratan como sistemas, así pues @code{ragged-bottom} y @code{ragged-last-bottom} aumentan la separación entre los títulos y el primer sistema de la partitura. Los tamaños de papel definidos explícitamente sobreescriben cualquier ajuste de los márgenes superior o inferior definidos por el usuario. @node Variables de espaciado de paper verticales flexibles @subsection Variables de espaciado de @code{@bs{}paper} verticales flexibles @translationof Flexible vertical spacing paper variables En casi todos los casos es preferible que las distancias verticales entre ciertos elementos (como márgenes, títulos, sistemas y las distintas partituras) sean flexibles, de manera que se amplíen y compriman adecuadamente dependiendo de la situación. Están disponibles un cierto número de variables del bloque @code{\paper} (relacionadas más abajo) para realizar un ajuste fino del comportamiento de estas dimensiones frente a su ampliación o compresión. Observe que las variables de @code{\paper} que se estudian en esta sección no controlan el espaciado de los pentagramas que están dentro de los sistemas individuales. El espaciado dentro de los sistemas se controla por medio de propiedades de grob, con ajustes que se escriben normalmente dentro de un bloque @code{\score} o @code{\layout}, y no dentro del bloque @code{\paper}. Véase @ref{Espaciado vertical flexible dentro de los sistemas}. @menu * Estructura de las listas-A de espaciado vertical flexible:: * Lista de variables de espaciado de paper verticales flexibles:: @end menu @node Estructura de las listas-A de espaciado vertical flexible @unnumberedsubsubsec Estructura de las listas-A de espaciado vertical flexible @translationof Structure of flexible vertical spacing alists Cada una de las variables de espaciado de @code{\paper} flexibles es una lista-A (lista asociativa) que contiene cuatro @emph{claves}: @itemize @item @code{basic-distance} (distancia básica): distancia vertical, medida en espacios de pentagrama, entre los @emph{puntos de referencia} de los dos elementos, cuando no resulte ninguna colisión, y no se produzca ninguna ampliación o compresión. El punto de referencia de un elemento de marcado (de título o del nivel jerárquico superior) es su punto más alto, y el punto de referencia de un sistema es el centro vertical del @code{StaffSymbol} más cercano (incluso si se trata de una línea que no es un pentagrama, como un contexto @code{Lyrics}). Los valores de @code{distancia básica} menores de @code{padding} o de @code{minimum-distance} no son significativos, porque la distancia resultante nunca será menor de @code{padding} o de @code{minimum-distance}. @item @code{minimum-distance} (distancia mínima): la distancia vertical mínima permitida, medida en espacios de pentagrama, entre los puntos de referencia de los dos elementos, cuando se produce una compresión. Los valores de @code{minimum-distance} menores de @code{padding} no son significativos, porque la distancia resultante nunca será menor de @code{padding}. @c TODO: explain skylines somewhere and xref to it from here. @item @code{padding} (relleno): mínimo espacio vertical vacío necesario entre los rectángulos circundantes (o las líneas de horizonte) de los dos elementos, medido en espacios de pentagrama. @item @code{stretchability} (ampliabilidad): medida sin unidades de la propensión relativa de esta dimensión a ampliarse. Si es cero, la distancia no se ampliará (a no ser que resultasen colisiones). Si es positiva, la significación del valor de ampliabilidad de una dimensión concreta depende solamente de su relación con los valores de @code{stretchability} de las otras dimensiones. Por ejemplo, si una dimensión tiene el doble de @code{stretchability} que otra, se ampliará con el doble de facilidad. Los valores deben ser no negativos y finitos. El valor @code{+inf.0} desencadena un error de programación y se ignora, pero se puede usar @code{1.0e7} para un muelle casi infinitamente ampliable. Si no se fija un valor, el valor predeterminado se establece a @code{basic-distance}. Observe que la propensión de la dimensión a @emph{comprimirse} no se puede establecer directamente por el usuario y es igual a (@code{basic-distance}@tie{}@minus{}@tie{}@code{minimum-distance}). @end itemize Si una página tiene un margen inferior no justificado, la distancia resultante es la mayor de: @itemize @item @code{basic-distance}, @item @code{minimum-distance}, y @item @code{padding} más la menor distancia necesaria para eliminar las colisiones. @end itemize Para partituras de varias páginas con la parte inferior no justificada en la última página, ésta usará el mismo espaciado que la página anterior siempre y cuando haya espacio suficiente para ello. Los métodos específicos para la modificación de las listas-A se estudian en @ref{Modificación de las listas-A}. El siguiente ejemplo muestra las dos formas en que pueden modificarse estas listas-A. La primera declaración actualiza un par clave-valor individualmente, y la segunda redefine la variable completamente: @example \paper @{ system-system-spacing.basic-distance = #8 score-system-spacing = #'((basic-distance . 12) (minimum-distance . 6) (padding . 1) (stretchability . 12)) @} @end example @node Lista de variables de espaciado de paper verticales flexibles @unnumberedsubsubsec Lista de variables de espaciado de @code{@bs{}paper} verticales flexibles @translationof List of flexible vertical spacing paper variables Los nombres de estas variables siguen el formato @code{@var{superior}-@var{inferior}-spacing}, donde @code{@var{superior}} e @code{@var{inferior}} son los elementos que van a ser espaciados. Cada distancia se mide entre los puntos de referencia de los dos elementos (véase más arriba la descripción de la estructura de la lista-A). Observe que en estos nombres de variable, el término @q{@code{markup}} se refiere tanto a @emph{elementos de marcado de título} (@code{bookTitleMarkup} o @code{scoreTitleMarkup}) como a @emph{elementos de marcado del nivel superior} (véase @ref{Estructura del archivo}). Todas las distancias se miden en espacios de pentagrama. Los ajustes predeterminados están definidos en el archivo @file{ly/paper-defaults-init.ly}. @c TODO: Where do headers/footers fit in? -mp @table @code @item markup-system-spacing @funindex markup-system-spacing distancia entre un elemento de marcado (de título o del nivel superior) y el sistema que le sigue. @item score-markup-spacing @funindex score-markup-spacing distancia entre el último sistema de una partitura y el elemento de marcado (de título o del nivel superior) que le sigue. @item score-system-spacing @funindex score-system-spacing distancia entre el último sistema de una partitura y el primer sistema de la partitura que le sigue, cuando no existe ningún elemento de marcado (de título o del nivel superior) entre ellos. @item system-system-spacing @funindex system-system-spacing distancia entre dos sistemas dentro de la misma partitura. @item markup-markup-spacing @funindex markup-markup-spacing distancia entre dos elementos de marcado (de título o del nivel superior). @item last-bottom-spacing @funindex last-bottom-spacing distancia desde el último sistema o elemento de marcado del nivel superior en una página, hasta la parte inferior de la zona imprimible (es decir, el extremo superior del margen inferior). @item top-system-spacing @funindex top-system-spacing distancia desde la parte superior de la zona imprimible (es decir, el extremo inferior del margen superior) hasta el primer sistema de una página, cuando no hay ningún elemento de marcado (de título o del nivel superior) entre los dos. @item top-markup-spacing @funindex top-markup-spacing distancia desde el extremo superior de la zona imprimible (es decir, el extremo inferior del margen superior) hasta el primer elemento de marcado (de título o del nivel superior) sobre una página, cuando no hay ningún sistema entre los dos. @end table @seealso Referencia de la notación: @ref{Espaciado vertical flexible dentro de los sistemas}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. Fragmentos de código: @rlsr{Spacing}. @node Variables de espaciado de paper horizontales @subsection Variables de espaciado de @code{@bs{}paper} horizontales @translationof Horizontal spacing paper variables @warning{Algunas dimensiones de @code{@bs{}paper} se escalan automáticamente al tamaño del papel, lo que puede dar lugar a un comportamiento distinto al esperado. Véase @ref{Escalado automático al tamaño del papel}.} @menu * Variables de paper para la anchura y los márgenes:: * Variables de paper para el modo de doble cara:: * Variables de paper para desplazamientos y sangrados:: @end menu @node Variables de paper para la anchura y los márgenes @unnumberedsubsubsec Variables de @code{@bs{}paper} para la anchura y los márgenes @translationof paper variables for widths and margins Los valores predeterminados (antes del escalado) que no están relacionados aquí se encuentran definidos en el archivo @file{ly/paper-defaults-init.ly}. @table @code @item paper-width (anchura del papel) @funindex paper-width Anchura de la página, sin fijar de forma predeterminada. Aunque @code{paper-width} no tiene ningún efecto sobre el escalado automático de algunas dimensiones horizontales, sí influye sobre la variable @code{line-width}. Si están establecidas las dos variables @code{paper-width} y @code{line-width}, entonces también se actualizan @code{left-margin} y @code{right-margin}. Véase también @code{check-consistency}. @item line-width (longitud de la línea) @funindex line-width Cuando se especifica dentro de un bloque @code{\paper}, define las dimensiones horizontales del espacio disponible para las líneas del pentagrama en los sistemas sin sangrado por la izquierda. Si se deja sin especificar, la longitud @code{line-width} del papel se determina a partir de @code{(paper-width@tie{}@minus{}@tie{}left-margin@tie{}@minus{}@tie{}right-margin)}. Si se especifica la longitud @code{line-width} del papel, y no se especifican el margen izquierdo @code{left-margin} ni el margen derecho @code{right-margin}, entonces los márgenes se actualizan de forma que los sistemas se centran automáticamente sobre la página. Véase también @code{check-consistency}. Los valores de @code{line-width} para las partituras individuales se pueden especificar dentro de los bloques @code{\layout} de las partituras. Estos valores controlan la longitud de las líneas producidas partitura a partitura. Si la longitud @code{line-width} no se especifica para una partitura, su valor predeterminado es el @code{line-width} del bloque paper. El hecho de fijar la longitud @code{line-width} de una partitura no tiene efecto sobre los márgenes del papel. Las líneas del pentagrama, de una longitud determinada por el valor @code{line-width} de la partitura, se alinean por la izquierda dentro del área definida por la longitud @code{line-width} del papel. Si la longitud @code{line-width} del papel y de la partitura son iguales, las líneas del pentagrama se extienden exactamente desde el margen izquierdo hasta el margen derecho, pero si la longitud @code{line-width} de la partitura es mayor que la @code{line-width} del papel, las líneas del pentagrama se imprimirán encima del espacio reservado al margen derecho. @item left-margin (margen izquierdo) @funindex left-margin Margen entre el extremo izquierdo de la página y el comienzo de las líneas del pentagrama en los sistemas sin sangrado. Si el tamaño del papel se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Si no se fija el valor de @code{left-margin}, y tanto @code{line-width} como @code{right-margin} están fijados, entonces se establece el valor de @code{left-margin} a @code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}right-margin)}. Si solamente está fijado @code{line-width}, entonces los dos márgenes se establecen a @code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, y como consecuencia los sistemas se centran sobre la página. Véase también @code{check-consistency}. @item right-margin (margen derecho) @funindex right-margin Margen entre el extremo derecho de la página y el final de las líneas del pentagrama en sistemas justificados. Si el tamaño de la página se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Si @code{right-margin} está sin fijar, y tanto @code{line-width} como @code{left-margin} están fijados, el valor de @code{right-margin} se establece a @code{(paper-width@tie{}@minus{}@tie{}line-width@tie{}@minus{}@tie{}left-margin)}. Si solamente está fijado @code{line-width}, los dos márgenes se establecen a @code{((paper-width@tie{}@minus{}@tie{}line-width)@tie{}/@tie{}2)}, y como consecuencia los sistemas aparecen centrados sobre la página. Véase también @code{check-consistency}. @item check-consistency (comprobar la consistencia) @funindex check-consistency Si esto es verdadero (su valor predeterminado), se imprime una advertencia en caso de que la suma de @code{left-margin}, @code{line-width} y @code{right-margin} no coincida exactamente con el valor de @code{paper-width}, y se sustituye cada uno de estos valores (excepto @code{paper-width}) con su valor predeterminado (escalado al tamaño del papel si es necesario). Si está fijado al valor falso, se ignora cualquier inconsistencia y se permite que los sistemas se salgan del borde del papel. @item ragged-right (no justificar por la derecha) @funindex ragged-right Si está fijado al valor verdadero, los sistemas no cubren el ancho de la línea. En lugar de ello, los sistemas finalizan en su longitud horizontal natural. Valor predeterminado: @code{#t} para las partituras con un solo sistema, y @code{#f} para partituras que tienen dos o más sistemas. Esta variable también se puede establecer dentro de un bloque @code{\layout}. @item ragged-last (no justificar el último) @funindex ragged-last Si está fijado al valor verdadero, el último sistema de la partitura no llena toda la anchura de la línea. En lugar de ello, el último sistema finaliza en su longitud horizontal natural. Valor predeterminado: @code{#f}. Esta variable también puede ajustarse dentro de un bloque @code{\layout}. @end table @seealso Referencia de la notación: @ref{Escalado automático al tamaño del papel}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. @knownissues Los tamaños de papel definidos explícitamente sobreescriben cualquier ajuste de los márgenes izquierdo o derecho definidos por el usuario. @node Variables de paper para el modo de doble cara @unnumberedsubsubsec Variables de @code{@bs{}paper} para el modo de doble cara @translationof paper variables for two-sided mode Los valores predeterminados (antes del escalado) se definen en @file{ly/paper-defaults-init.ly}. @table @code @item two-sided (dos caras) @funindex two-sided @cindex encuadernación @cindex margen de encuadernación Si tiene el valor verdadero, utilizar @code{inner-margin}, @code{outer-margin} y @code{binding-offset} para determinar los márgenes dependiendo de si el número de la página es par o impar. Esto sobreescribe a @code{left-margin} y a @code{right-margin}. @item inner-margin (margen interno) @funindex inner-margin Margen que todas las páginas tienen en el lado interno si forman parte de un libro. Si el tamaño del papel se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Solamente funciona con @code{two-sided} fijado al valor verdadero. @item outer-margin (margen externo) @funindex outer-margin Margen que todas las páginas tienen en el lado externo si forman parte de un libro. Si el tamaño del papel se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Solamente funciona con @code{two-sided} fijado al valor verdadero. @item binding-offset (margen de encuadernación) @funindex binding-offset Medida en que se aumenta @code{inner-margin} para asegurar que no se oculta nada a causa de la encuadernación. Si el tamaño del papel se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. Solamente funciona con @code{two-sided} fijado al valor verdadero. @end table @seealso Referencia de la notación: @ref{Escalado automático al tamaño del papel}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. @node Variables de paper para desplazamientos y sangrados @unnumberedsubsubsec Variables de @code{@bs{}paper} para desplazamientos y sangrados @translationof paper variables for shifts and indents Los valores predeterminados (antes del escalado) que no se relacionan aquí están definidos en el archivo @file{ly/paper-defaults-init.ly}. @table @code @item horizontal-shift (desplazamiento horizontal) @funindex horizontal-shift @c This default value is buried in the middle of page.scm. -mp Medida en que todos los sistemas (incluidos los títulos de cabecera y los separadores de sistemas) se desplazan a la derecha. Predeterminado: @code{0.0}. @item indent (sangrado) @funindex indent Nivel de sangrado para el primer sistema de una partitura. Si se modifica el tamaño del papel, el valor predeterminado de esta dimensión se escala de acuerdo con ello. El espacio dentro de @code{line-width} que está disponible para el primer sistema se reduce en esta cantidad. @code{indent} se puede también especificar dentro de los bloques @code{\layout} para ajustar los sangrados partitura a partitura. @item short-indent (sangrado reducido) @funindex short-indent Nivel de sangrado para todos los sistemas de una partitura excepto el primero. Si el tamaño del papel se modifica, el valor predeterminado de esta dimensión se escala de acuerdo con ello. El espacio dentro de @code{line-width} que está disponible para los sistemas que no son el primero, se reduce en esta cantidad. También se puede especificar @code{short-indent} dentro de los bloques @code{\layout} para ajustar los sangrados reducidos partitura a partitura. @end table @seealso Referencia de la notación: @ref{Escalado automático al tamaño del papel}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. Fragmentos de código: @rlsr{Spacing}. @node Otras variables de paper @subsection Otras variables de @code{@bs{}paper} @translationof Other paper variables @menu * Variables de paper para los saltos de línea:: * Variables de paper para los saltos de página:: * Variables de paper para la numeración de las páginas:: * Variables de paper diversas:: @end menu @node Variables de paper para los saltos de línea @unnumberedsubsubsec Variables de @code{@bs{}paper} para los saltos de línea @translationof paper variables for line breaking @table @code @item max-systems-per-page @funindex max-systems-per-page Número máximo de sistemas que se colocan sobre una página. Solo está contemplado por el algoritmo @code{ly:optimal-breaking}. Valor predeterminado: no fijado. @item min-systems-per-page @funindex min-systems-per-page Número mínimo de sistemas que se colocan sobre una página. Puede causar que las páginas aparezcan atiborradas si el valor es demasiado grande En el momento actual solo está contemplado por el algoritmo @code{ly:optimal-breaking}. Valor predeterminado: no fijado. @item systems-per-page @funindex systems-per-page Número de sistemas que se deben colocar en cada página. En el momento actual solo está contemplado por el algoritmo @code{ly:optimal-breaking}. Valor predeterminado: no fijado. @item system-count @funindex system-count Número de sistemas que utilizar para una partitura. Valor predeterminado: no fijado. Esta variables también se puede ajustar dentro de un bloque @code{\layout}. @end table @seealso Referencia de la notación: @ref{Saltos de línea}. @node Variables de paper para los saltos de página @unnumberedsubsubsec Variables de @code{@bs{}paper} para los saltos de página @translationof paper variables for page breaking Los valores predeterminados que no están relacionados aquí, se definen en el archivo @file{ly/paper-defaults-init.ly} @table @code @item page-breaking @funindex page-breaking Algoritmo de saltos de página que utilizar. Se puede elegir entre @code{ly:minimal-breaking}, @code{ly:page-turn-breaking}, @code{ly:one-page-breaking}, @code{ly:one-line-breaking}, @code{ly:one-line-auto-height-breaking} y @code{ly:optimal-breaking} (predeterminado). @item page-breaking-system-system-spacing @funindex page-breaking-system-system-spacing Engaña a la parte del programa encargada de los saltos de página para que piense que @code{system-system-spacing} está establecido a un valor distinto al que tiene realmente. Por ejemplo, si @code{page-breaking-system-system-spacing #'padding} está establecido a algo que es mucho mayor que @code{system-system-spacing #'padding}, entonces el divisor de páginas pone menos sistemas en cada página. Valor predeterminado: sin ajustar. @item page-count @funindex page-count Número de páginas que utilizar en una partitura, no ajustado de forma predeterminada. @end table Las siguientes variables son efectivas solamente cuando @code{page-breaking} está sijado a @code{ly:page-turn-breaking}. Los saltos de página se seleccionan entonces de forma que se minimice el número de pasos de página. Dado que los pasos de página son necesarios cuando se pasa de una página impar a una página par, normalmente resultará favorecida aquella disposición en que la última página sea impar. Los lugares en que se prefieran pasos de página pueden indicarse manualmente insertando @code{\allowPageTurn} o automáticamente incluyendo el grabador @code{Page_turn_engraver} (véase @ref{Paso de página óptimo}). Si no hay un número suficiente de posibilidades para escoger a la hora de insertar unos pasos de página adecuados, LilyPond puede insertar una página vacía dentro de una partitura, entre partituras (si hay dos o más partituras) o finalizando una partitura en una página de numeración par. Los valores de las tres siguientes variables pueden incrementarse para que estas acciones se vuelvan menos probables. Los valores son penalizaciones, es decir, cuando más alto es el valor menos probables será la acción asociada relativa a otras posibilidades. @table @code @item blank-page-penalty (penalización por página vacía) @funindex blank-page-penalty Penalización por tener una página vacía en mitad de una partitura. Si @code{blank-page-penalty} es grande y está seleccionado @code{ly:page-turn-breaking}, entonces será menos probable que LilyPond inserte una página en medio de una partitura. En lugar de ello, intercala espacio en la música hasta que se rellene la página vacía y la siguiente. Predeterminado: 5. @item blank-last-page-penalty (penalización por última página vacía) @funindex blank-last-page-penalty Penalización por terminar la partitura sobre una página par. Si @code{blank-last-page-penalty} es grande y está seleccionado @code{ly:page-turn-breaking}, entonces será menos probable que LilyPond produzca una partitura en que la última página tenga numeración par. En su lugar, ajustará el espaciado de manera que use una página más o una página menos. Predeterminado: 0. @item blank-after-score-page-penalty (penalización por página vacía después de una partitura) @funindex blank-after-score-page-penalty Penalización por tener una página vacía después del final de una partitura y antes de la siguiente. De forma predeterminada, esta penalización es más pequeña que @code{blank-page-penalty}, de forma que se insertan páginas vacías después de las partituras como preferencia sobre la inserción de páginas vacías dentro de una partitura. Predeterminado: 2. @end table @seealso Referencia de la notación: @ref{Saltos de página}, @ref{Saltos de página óptimos}, @ref{Paso de página óptimo}, @ref{Saltos de página mínimos}, @ref{Saltos de página del tipo página única}, @ref{Saltos de página del tipo una-línea} @ref{Saltos de página del tipo una-línea-altura-automática}. Archivos de inicio: @file{ly/paper-defaults-init.ly}. @node Variables de paper para la numeración de las páginas @unnumberedsubsubsec Variables de @code{@bs{}paper} para la numeración de las páginas @translationof paper variables for page numbering Los valores predeterminados que no se relacionan aquí están definidos en el archivo @file{ly/paper-defaults-init.ly} @table @code @cindex nú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. @cindex números de página, romanos @item page-number-type @funindex page-number-type Tipo de numeración para las páginas. Entre las posibilidades están @code{roman-lower} (números romanos en minúsculas), @code{roman-upper} (números romanos en mayúsculas) y @code{arabic} (cifras arábigas). Valor predeterminado: @code{'arabic}. @end table @seealso Archivos de inicio: @file{ly/paper-defaults-init.ly}. @knownissues Los números de página impares siempre están a la derecha. Si quiere que la música comience en la página 1 debe haber una página en blanco en el reverso de la página de cubierta de manera que la página 1 esté en el lado derecho. @node Variables de paper diversas @unnumberedsubsubsec Variables de @code{@bs{}paper} diversas @translationof Miscellaneous paper variables @table @code @item page-spacing-weight @funindex page-spacing-weight Importancia relativa del espacio (vertical) de las páginas y el espaciado (horizontal) de las líneas. Los valores altos hacen que el espaciado de la página tenga más importancia. Predeterminado: @code{10}. @item print-all-headers @funindex print-all-headers Si está fijado a verdadero, imprime todos los encabezamientos para cada una de las partituras @code{\score} de la salida. Normalmente sólo se imprimen las variables de encabezamiento @code{piece} y @code{opus}. Valor predeterminado: @code{#f}. @item system-separator-markup @funindex system-separator-markup Objeto de marcado que se inserta entre los sistemas. Se suele usar para partituras orquestales. Predeterminado: sin establecer. El elemento de marcado @code{\slashSeparator}, definido en el archivo @file{ly/titling-init.ly}, se aporta como un valor predeterminado adecuado, por ejemplo: @lilypond[quote,verbatim,noragged-right,line-width=30\mm] #(set-default-paper-size "a8") \book { \paper { system-separator-markup = \slashSeparator } \header { tagline = ##f } \score { \relative { c''1 \break c1 \break c1 } } } @end lilypond @end table @seealso Archivos de inicio: @file{ly/titling-init.ly}. Fragmentos de código: @rlsr{Spacing}. @knownissues El encabezamiento de página predeterminado pone el número de página y el campo @code{instrument} del bloque @code{\header} sobre la misma línea. @node Disposición de la partitura @section Disposición de la partitura @translationof Score layout Esta sección trata de las opciones de disposición de la partitura para el bloque @code{\layout}. @menu * El bloque layout:: * Establecer el tamaño del pentagrama:: @end menu @node El bloque layout @subsection El bloque @code{@bs{}layout} @translationof The layout block @funindex \layout Así como el bloque @code{\paper} contiene ajustes relativos al formateo de la página para todo el documento, el bloque @code{\layout} contiene ajustes para la disposición específica de las partituras. Para fijar las opciones de disposición de partituras de forma global, escríbalas en un bloque @code{\layout} del nivel jerárquico superior. Para fijar opciones de disposición para una partitura individual escríbalas dentro de un bloque @code{\layout} dentro del bloque @code{\score}, después de la música. Entre los ajustes que pueden aparecer en un bloque @code{\layout} se encuentran los siguientes: @itemize @item la función de Scheme @code{layout-set-staff-size}, @item las modificaciones de contexto de los bloques @code{\context}, y @item las variables de @code{\paper} que afectan a la disposición de la partitura. @end itemize La función @code{layout-set-staff-size} se estudia en la sección siguiente, @ref{Establecer el tamaño del pentagrama}. Las modificaciones de contexto se estudian en un capítulo distinto; véase @ref{Modificar los complementos (plug-ins) de contexto} y @ref{Cambiar los valores por omisión de los contextos}. Las variables de @code{\paper} que pueden aparecer dentro de un bloque @code{\layout}, y cuyos valores predeterminados se toman del bloque @code{paper}, son: @itemize @item @code{line-width}, @code{ragged-right} y @code{ragged-last} (véase @ref{Variables de paper para la anchura y los márgenes,,Variables de @code{@bs{}paper} para la anchura y los márgenes}) @item @code{indent} y @code{short-indent} (véase @ref{Variables de paper para desplazamientos y sangrados,,Variables de @code{@bs{}paper} para desplazamientos y sangrados}) @item @code{system-count} (véase @ref{Variables de paper para los saltos de línea,,Variables de @code{@bs{}paper} para los saltos de línea}) @end itemize He aquí un ejemplo de un bloque @code{\layout}: @example \layout @{ indent = 2\cm \context @{ \StaffGroup \override StaffGrouper.staff-staff-spacing.basic-distance = #8 @} \context @{ \Voice \override TextScript.padding = #1 \override Glissando.thickness = #3 @} @} @end example Se pueden escribir varios bloques @code{\layout} como expresiones del nivel superior. Esto puede ser útil, por ejemplo, si hay distintos ajustes almacenados en diversos archivos y se incluyen opcionalmente. Internamente, cuando se evalúa un bloque @code{\layout}, se hace una copia de la configuración de @code{\layout} actual, y después se aplican los cambios definidos en el bloque; el resultado se guarda como la nueva configuración actual. Desde el punto de vista del usuario, los bloques @code{\layout} se combinan, pero en situaciones de conflicto (cuando se cambia la misma propiedad en diferentes bloques) las definiciones más 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 @funindex magnification->font-size @funindex magstep @funindex set-global-staff-size @funindex layout-set-staff-size El @strong{tamaño de pentagrama} predeterminado es de 20 puntos, que corresponde a una altura del pentagrama de 7.03 mm (un punto es 100/7227 de pulgada, o 2540/7227 mm). El tamaño del pentagrama se puede modificar de tres formas: @enumerate @item Para establecer globalmente el tamaño del pentagrama para todas las partituras de un archivo (o en un bloque @code{\book}, para ser exactos), utilice @code{set-global-staff-size}: @example #(set-global-staff-size 14) @end example @noindent El ejemplo de arriba establece el tamaño global predeterminado del pentagrama a 14 pt (4.92 mm) y escala todas las tipografías según corresponda. @item Para fijar el tamaño del pentagrama para una sola partitura dentro de un libro, use @code{layout-set-staff-size} dentro del bloque @code{\layout} de dicha partitura: @example \score @{ @dots{} \layout @{ #(layout-set-staff-size 14) @} @} @end example @item Para fijar el tamaño del pentagrama para una sola pauta dentro de un sistema, use la instrucción @code{\magnifyStaff}. Por ejemplo, las partituras de música de cámara editadas de la forma tradicional, con piano, usan habitualmente pautas de 7 mm para el piano, mientras que los otros pentagramas suelen estar entre 3/5 y 5/7 de reducción (entre el 60% y el 71%). Para obtener la proporción de 5/7, escriba: @example \score @{ << \new Staff \with @{ \magnifyStaff #5/7 @} @{ @dots{} @} \new PianoStaff @{ @dots{} @} >> @} @end example En caso de que usted sepa qué tamaño de @code{fontSize} quiere usar, puede emplear la forma siguiente: @example \score @{ << \new Staff \with @{ \magnifyStaff #(magstep -3) @} @{ @dots{} @} \new PianoStaff @{ @dots{} @} >> @} @end example Para imitar la apariencia de las ediciones tradicionales, es mejor evitar reducir el grosor de las líneas del pentagrama. @end enumerate @subheading Peso automático de la tipografía a distintos tamaños La tipografía Emmentaler ofrece el conjunto de glifos musicales @emph{Feta} en ocho tamaños distintos, cada uno de ellos ajustado a un tamaño de pentagrama. Cuanto más pequeño es el tamaño de los glifos, más @qq{pesados} se vuelven, de manera que armonicen con las líneas del pentagrama, que son también relativamente más gruesas. Los tamaños de glifo recomendados se relacionan en la tabla siguiente: @multitable @columnfractions .15 .2 .22 .2 @item @b{nombre de la fuente} @tab @b{altura del pentagrama (pt)} @tab @b{altura del pentagrama (mm)} @tab @b{usos} @item feta11 @tab 11.22 @tab 3.9 @tab partituras de bolsillo @item feta13 @tab 12.60 @tab 4.4 @tab @item feta14 @tab 14.14 @tab 5.0 @tab @item feta16 @tab 15.87 @tab 5.6 @tab @item feta18 @tab 17.82 @tab 6.3 @tab cancioneros @item feta20 @tab 20 @tab 7.0 @tab particellas estándar @item feta23 @tab 22.45 @tab 7.9 @tab @item feta26 @tab 25.2 @tab 8.9 @tab @c modern rental material? @end multitable @seealso Referencia de la notación: @ref{Seleccionar el tamaño de la tipografía para la notación}, @ref{La tipografía Emmentaler}. Fragmentos de código: @rlsr{Spacing}. @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:: @end menu @node Saltos de línea @subsection Saltos de línea @translationof Line breaking @funindex \break @funindex \noBreak @funindex \autoBreaksOff @funindex \autoBreaksOn @funindex \autoLineBreaksOff @funindex \autoLineBreaksOn @cindex 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,verbatim] \relative c'' { c4 c c c | \break c4 c c c | } @end lilypond De forma predeterminada se ignora cualquier instrucción @code{\break} insertada en la mitad de un compás, y se imprime un mensaje de advertencia durante la compilación del archivo de entrada de LilyPond. Para forzar un salto de línea en medio de un compás, añada una línea divisoria invisible con @w{@samp{\bar ""}}: @lilypond[quote,ragged-right,verbatim] \relative c'' { c4 c c \bar "" \break c | c4 c c c | } @end lilypond También se ignora cualquier instrucción @code{\break} que se produzca en la línea divisoria si el compás anterior termina en medio de una nota, como cuando un grupo de valoración especial comienza en un compás y termina en otro distinto. En este caso, elimine el grabador @code{Forbid_line_break_engraver} del contexto @code{Voice} y use una construcción de música simultánea insertando el @code{break} en el lugar adecuado dentro de la segunda voz: @lilypond[quote,ragged-right,verbatim] \new Voice \with { \remove "Forbid_line_break_engraver" } \relative { << { c''2. \tuplet 3/2 { c4 c c } c2. | } { s1 | \break s1 | } >> } @end lilypond De forma similar, el funcionamiento predeterminado es que los saltos de línea resulten ignorados cuando hay barras de corchea que cruzan la línea divisoria. Utilice la instrucción @code{\override Beam.breakable = ##t} para forzar esto: @lilypond[quote,ragged-right,verbatim] \relative c'' { \override Beam.breakable = ##t c2. c8[ c | \break c8 c] c2. | } @end lilypond La instrucción @code{\noBreak}, evita que se produzca un salto de línea en la barra divisoria en que se inserta. Dentro de una partitura, se evitan los saltos de línea automáticos dento de la música que se encuentra entre las instrucciones @code{\autoLineBreaksOff} y @code{\autoLineBreaksOn}. Si también se quieren evitar los saltos de página automáticos, deben usarse las instrucciones @code{\autoBreaksOff} y @code{\autoBreaksOn}. Los saltos manuales no están afectados por estas instrucciones. Observe que el hecho de inhibir los saltos de línea automáticos puede hacer que la música se extienda sobre el margen derecho cuandoquiera que no cabe completamente dentro de una sola línea. Los saltos automáticos de línea (no de página) se pueden habilitar sobre líneas divisorias individuales mediante el uso de @code{\once \autoLineBreaksOn} en una barra. La instrucción identifica un salto de línea permitido, en lugar de uno prohibido. Los ajustes más básicos que influyen sobre el espaciado de las líneas son @code{indent} y @code{line-width}. Se establecen dentro del bloque @code{\layout}. Controlan el sangrado de la primera línea de música, y la longitud de las líneas. Si se establece @code{ragged-right} a verdadero en el bloque @code{\layout}, los sistemas terminan en su longitud horizontal natural, en lugar de distribuirse horizontalmente para llenar toda la línea. Esto es de utilidad para fragmentos cortos, y para efectuar una comprobación de lo apretado que es el espaciado natural. @c TODO Check and add para on default for ragged-right La opción @code{ragged-last} es similar a @code{ragged-right}, pero afecta sólo a la última línea de la pieza. @example \layout @{ indent = 0\mm line-width = 150\mm ragged-last = ##t @} @end example @cindex 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 @code{\break}, @code{\noBreak}, @code{\autoBreaksOff}, @code{\autoBreaksOn}, @code{\autoLineBreaksOff}, @code{\autoLineBreaksOn}. @endpredefined @snippets @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle] {using-an-extra-voice-for-breaks.ly} @seealso Referencia de la notación: @ref{Variables de paper para los saltos de línea}, @ref{The layout block}. Fragmentos de código: @rlsr{Spacing}. Referencia de funcionamiento interno: @rinternals{LineBreakEvent}. @knownissues Si se escribe @code{\autoLineBreaksOff} o @code{\autoBreaksOff} antes de cualquier contenido musical, aparecerán mensajes de error. Escriba siempre estas instrucciones después de algo de música. @node Saltos de página @subsection Saltos de página @translationof Page breaking Esta sección describe los distintos métodos para crear saltos de página, y cómo modificarlos. @menu * Saltos de página manuales:: * Saltos de página óptimos:: * Saltos de página mínimos:: * Saltos de página del tipo página única:: * Saltos de página del tipo una-línea:: * Saltos de página del tipo una-línea-altura-automática:: * Paso de página óptimo:: @end menu @node Saltos de página manuales @unnumberedsubsubsec Saltos de página manuales @translationof Manual page breaking @funindex \pageBreak @funindex \noPageBreak @funindex \autoPageBreaksOn @funindex \autoPageBreaksOff @cindex página, saltos manuales Se puede sobreescribir el mecanismo predeterminado de salto de página insertando instrucciones @code{\pageBreak} o @code{\noPageBreak}. Estas instrucciones son análogas a @code{\break} y @code{\noBreak}. Se deben insertar en una línea divisoria. Estas instrucciones fuerzan y prohíben, respectivamente, la eventualidad de un salto de página en dicha línea divisoria. Por supuesto, la instrucción @code{\pageBreak} también fuerza un salto de línea. Las instrucciones @code{\pageBreak} y @code{\noPageBreak} también se pueden insertar en el nivel más alto, entre las partituras y los elementos de marcado situados en el nivel superior. Dentro de una partitura, no se producen saltos de página automáticos en el interior de la música que se encuentra entre las instrucciones @code{\autoPageBreaksOff} y @code{\autoPageBreaksOn}. Los saltos de página manuales no reultan afectados por estas instrucciones. Hay ajustes análogos a @code{ragged-right} y @code{ragged-last} que tienen el mismo efecto sobre el espaciado vertical. Si @code{ragged-bottom} se establece a @code{#t} los sistemas no se justifican verticalmente. Cuando el valor de @code{ragged-last-bottom} se fija a @code{#t}, como lo está de forma predeterminada, se permite una separación al final de la última página (o la última página de cada uno de las partes de libro @code{\bookpart}). Véase @ref{Variables de espaciado de paper verticales fijas,,Variables de espaciado de @code{@bs{}paper} verticales fijas}. Los saltos de página se calculan por medio de la función @code{page-breaking}. LilyPond ofrece varios algoritmos para el cómputo de los saltos de página, entre ellos @code{ly:optimal-breaking}, @code{ly:page-turn-breaking} y @code{ly:minimal-breaking}. El predeterminado es @code{ly:optimal-breaking}, pero el valor se puede cambiar en el bloque @code{\paper}: @example \paper @{ page-breaking = #ly:page-turn-breaking @} @end example @funindex \bookpart Cuando un libro tiene muchas partituras y páginas, puede ser difícil resolver el problema de los saltos de página, necesitando mucha memoria y prolongados tiempos de procesamiento. Para facilitar el proceso de división en páginas, se usan los bloques @code{\bookpart} para dividir el libro en varias partes: los saltos de página se producen de manera independiente en cada parte. También se pueden usar diferentes funciones de división en páginas para las distintas partes del libro. @example \bookpart @{ \header @{ subtitle = "Prefacio" @} \paper @{ %% En una parte que consiste en texto principalmente, %% puede ser preferible ly:minimal-breaking page-breaking = #ly:minimal-breaking @} \markup @{ @dots{} @} @dots{} @} \bookpart @{ %% En esta parte, consistente en música, se usa la función %% óptima predeterminada de saltos de página. \header @{ subtitle = "Primer movimiento" @} \score @{ @dots{} @} @dots{} @} @end example @predefined @funindex \pageBreak @code{\pageBreak}, @code{\noPageBreak}, @code{\autoPageBreaksOn}, @code{\autoPageBreaksOff}. @endpredefined @seealso Referencia de la notación: @ref{Variables de paper para los saltos de página}. Fragmentos de código: @rlsr{Spacing}. @knownissues El prefijo @code{\once} no es efectivo con @code{\autoPageBreaksOn} y @code{\autoPageBreaksOff}. Si se ha desactivado la división automática de páginas y después se vuelve a activar para permitir un salto, debe continuar activada durante algunos compases (cuyo número exacto dependerá de la partitura) antes de volverse a desactivar, pues en caso contrario podría perderse la oportunidad de que el salto se produzca. @node Saltos de página óptimos @unnumberedsubsubsec Saltos de página óptimos @translationof Optimal page breaking @funindex ly:optimal-breaking La función @code{ly:optimal-breaking} es el método predeterminado de LilyPond para determinar los saltos de página. Intenta hallar una división de páginas que haga mínimos el apretujamiento y la distensión, tanto horizontal como verticalmente. A diferencia de @code{ly:page-turn-breaking}, no tiene un concepto de los pasos de página. @seealso Fragmentos de código: @rlsr{Spacing}. @node Saltos de página mínimos @unnumberedsubsubsec Saltos de página mínimos @translationof Minimal page breaking @funindex ly:minimal-breaking La función @code{ly:minimal-breaking} efectúa unos cálculos mínimos para determinar los saltos de página: completa una página con tantos sistemas como sea posible antes de continuar con la siguiente. Así, puede preferirse para partituras con muchas páginas, donde las otras funciones de salto de página pueden resultar demasiado lentas o ávidas de memoria, o con una gran cantidad de textos. Se habilita utilizando: @example \paper @{ page-breaking = #ly:minimal-breaking @} @end example @seealso Snippets: @rlsr{Spacing}. @node Saltos de página del tipo página única @unnumberedsubsubsec Saltos de página del tipo página única @translationof One-page page breaking @funindex ly:one-page-breaking La función @code{ly:one-page-breaking} (saltos de página única) es un algoritmo de saltos de página de proósito especial que ajusta automáticamente la altura de la página para que quepa toda la música en una sola página. La variable @code{paper-height} del bloque @code{paper} se ignora, pero los otros ajustes funcionan de la manera acostumbrada. Concretamente, el espaciado entre el último sistema (o elemento de marcado de nivel superior) y el pie de página se puede personalizar con @code{last-bottom-spacing} dentro del bloque @code{paper}. La anchura de la página se queda sin alterar por omisión, pero se puede fijar con la variable @code{paper-width} del bloque @code{paper}. @knownissues @code{ly:one-page-breaking} no es compatible, de momento, con @code{\bookpart}. @node Saltos de página del tipo una-línea @unnumberedsubsubsec Saltos de página del tipo una-línea @translationof One-line page breaking @funindex ly:one-line-breaking La función @code{ly:one-line-breaking} es un algoritmo de saltos de página para uso especial que pone cada partitura en una página y en una sola línea. Esta función de salto de página no compone los títulos ni los márgenes; solamente se imprime la partitura. El ancho de la página se ajusta de forma que la partitura más larga quepa en una línea. Concretamente, las variables @code{paper-width}, @code{line-width} y @code{indent} del bloque @code{\paper} se ignoran, aunque @code{left-margin} y @code{right-margin} aún se respetan. La altura de la página se deja sin cambios. @node Saltos de página del tipo una-línea-altura-automática @unnumberedsubsubsec Saltos de página del tipo una-línea-altura-automática @translationof One-line-auto-height page breaking @funindex ly:one-line-auto-height-breaking La función @code{ly:one-line-auto-height-breaking} funciona igual que @code{ly:one-line-breaking} excepro que la altura de la página se modifica automáticamente para hacerse corresponder con la altura de la música. De forma específica, la variable @code{paper-height} del bloque @code{\paper} se ajusta de tal manera que abarca los extremos superior e inferior de la partitura más alta más los márgenes superior e inferior @code{top-margin} y @code{bottom-margin}. Observe que el ajuste @code{top-system-spacing} afecta a la posición vertical de la música. Fíjelo al valor @code{##f} dentro de un bloque @code{paper} para disponer la música sencillamente entre los márgenes superior e inferior. @node Paso de página óptimo @unnumberedsubsubsec Paso de página óptimo @translationof Optimal page turning @funindex ly:page-turn-breaking Con frecuencia es necesario encontrar una configuración de división de páginas de manera que haya un silencio al final de una página de cada dos. De esta forma, el músico puede pasar la página sin perder notas. La función @code{ly:page-turn-breaking} trata de encontrar una división de páginas que haga mínimos el apretujamiento y el estiramiento, pero con la restricción añadida de que sólo se permite introducir vueltas de página en los lugares especificados. Hay dos etapas en el uso de esta función de división de páginas. En primer lugar debemos habilitarlo en el bloque @code{\paper}, como se explicó en @ref{Saltos de página}. Entonces debemos decirle a la función dónde nos gustaría permitir los saltos de página. Hay dos formas de conseguir la segunda tarea. Primero, podemos especificar manualmente cada uno de los pasos de página potenciales, insertando @code{\allowPageTurn} en nuestro archivo de entrada en los lugares adecuados. Si esto es demasiado tedioso, podemos añadir un grabador @code{Page_turn_engraver} a un contexto Staff o Voice. El grabador @code{Page_turn_engraver} analizará el contexto en busca de secciones sin notas (observe que no busca silencios, sino la ausencia de notas. Se hace así para que la polifonía en un solo pentagrama con silencios en una de las voces no arruine la labor del grabador @code{Page_turn_engraver}). Cuando encuentra una sección sin notas suficientemente larga, el grabador @code{Page_turn_engraver} inserta un @code{\allowPageTurn} en la última barra de compás de dicha sección, a no ser que haya una barra @q{especial} de compás (como una doble barra), en cuyo caso se insertará el @code{\allowPageTurn} en la última barra @q{especial} de compás de la sección. @funindex minimumPageTurnLength El grabador @code{Page_turn_engraver} lee la propiedad de contexto @code{minimumPageTurnLength} para determinar qué longitud debe tener una sección sin notas antes de que se considere la posibilidad de un paso de página. El valor predeterminado para @code{minimumPageTurnLength} es @code{(ly:make-moment 1/1)}. Si quiere inhabilitar las vueltas de página, fíjelo a algún valor @q{muy grande}. @example \new Staff \with @{ \consists "Page_turn_engraver" @} @{ a4 b c d | R1 | % aquí se permite un salto de página a4 b c d | \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2) R1 | % aquí no se permite un salto de página a4 b r2 | R1*2 | % aquí se permite un salto de página a1 @} @end example @funindex minimumRepeatLengthForPageTurn Al usar repeticiones de primera y segunda vez, el grabador @code{Page_turn_engraver} solo permite un pase de página durante la repetición si hay suficiente tiempo al principio y al final de la repetición para volver a pasar la página hacia atrás. Si la repetición es demasiado corta, se puede usar el grabador @code{Page_turn_engraver} para @emph{inhabilitar} los pasos de página mediante el establecimiento de un valor adecuado para la propiedad de contexto @code{minimumRepeatLengthForPageTurn}. En este caso el grabador @code{Page_turn_engraver} sólo permitirá los pases de página en las repeticiones cuya duración sea mayor que el valor especificado. Las instrucciones de paso de página, @code{\pageTurn}, @code{\noPageTurn} y @code{\allowPageTurn}, se pueden usar también en el nivel más elevado del código, dentro de elementos de marcado del nivel superior y entre las partituras. @predefined @funindex \pageTurn @code{\pageTurn}, @funindex \noPageTurn @code{\noPageTurn}, @funindex \allowPageTurn @code{\allowPageTurn}. @endpredefined @seealso Referencia de la notación: @ref{Variables de paper para los saltos de línea}. Fragmentos de código: @rlsr{Spacing}. @knownissues Utilice un solo grabador @code{Page_turn_engraver} en cada partitura. Si hay más de uno, se interferirán entre sí. @seealso Notation Reference: @ref{Vertical spacing}. Fragmentos de código: @rlsr{Spacing}. @node Espaciado vertical @section Espaciado vertical @translationof Vertical spacing @cindex espaciado vertical @cindex vertical, espaciado El espaciado vertical está controlado por tres factores: la cantidad de espacio disponible (es decir, el tamaño del papel y los márgenes), la separación entre los sistemas, y la separación entre los pentagramas dentro de un sistema. @menu * Espaciado vertical flexible dentro de los sistemas:: * Posicionamiento explícito de los pentagramas y los sistemas:: * Evitar las colisiones verticales:: @end menu @node Espaciado vertical flexible dentro de los sistemas @subsection Espaciado vertical flexible dentro de los sistemas @translationof Flexible vertical spacing within systems @cindex distancia entre pentagramas @cindex pentagrama, distancia entre los @cindex espacio entre pentagramas @cindex espacio dentro de los sistemas Tres mecanismos distintos controlan el espaciado vertical flexible dentro de los sistemas, uno por cada una de las categorías siguientes: @itemize @item @emph{pautas sin agrupar}, @item @emph{pautas agrupadas} (pautas dentro de un grupo de pentagramas como @code{ChoirStaff}, etc.), y @item @emph{líneas que no son pautas} (como @code{Lyrics}, @code{ChordNames}, etc.). @end itemize @c TODO: Clarify this. This almost implies that non-staff lines @c have NO effect on the spacing between staves. -mp La altura de cada sistema se determina en dos fases. Primero, todos los pentagramas se disponen según la cantidad de espacio vacío disponible. Después, las líneas que no son pautas se distribuyen entre las pautas. Observe que los mecanismos de espaciado estudiados en esta sección solamente controlan el espaciado vertical de las pautas y líneas que no son pautas dentro de los sistemas individuales. El espaciado vertical entre distintos sistemas, partituras, marcados y márgenes se controla mediante variables de @code{\paper} que se estudian en @ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles}. @menu * Propiedades de espaciado dentro de los sistemas:: * Espaciado de pautas no agrupadas:: * Espaciado de pautas agrupadas:: * Espaciado de las líneas que no son pautas:: @end menu @node Propiedades de espaciado dentro de los sistemas @unnumberedsubsubsec Propiedades de espaciado dentro de los sistemas @translationof Within-system spacing properties @funindex staff-affinity @funindex staffgroup-staff-spacing @funindex staff-staff-spacing @funindex nonstaff-unrelatedstaff-spacing @funindex nonstaff-relatedstaff-spacing @funindex nonstaff-nonstaff-spacing @funindex default-staff-staff-spacing @funindex minimum-Y-extent @funindex extra-offset @funindex self-alignment-X @funindex X-offset @funindex VerticalAxisGroup Los mecanismos de espaciado vertical dentro del sistema están controlados por dos conjuntos de propiedades de grob. El primer conjunto está asociado con el grob @code{VerticalAxisGroup}, que se crea por parte de todas las pautas y líneas que no son pautas. El segundo conjunto está asociado con el grob @code{StaffGrouper}, que puede crearse por parte de los grupos de pentagramas, pero solamente si se le llama explícitamente. Estas propiedades se describen individualmente al final de la presente sección. Los nombres de estas propiedades (excepto para @code{staff-affinity}) siguen el formato @code{@var{elemento1}-@var{elemento2}-spacing}, donde @code{@var{elemento1}} y @code{@var{elemento2}} son los elementos que se van a espaciar. Observe que @code{@var{elemento2}} no está necesariamente por debajo de @code{@var{elemento1}}; por ejemplo, @code{nonstaff-relatedstaff-spacing} mide hacia arriba a partir de la línea del tipo no-pauta si @code{staff-affinity} es @code{UP}. Cada distancia se mide entre los @emph{puntos de referencia} de los dos elementos. El @emph{punto de referencia} para un pentagrama y otro tipo de pauta es el centro vertical de su @code{StaffSymbol} (es decir, la línea central si @code{line-count} es un número impar; el espacio central si @code{line-count} es par). Los puntos de referencia para las líneas individuales que no son pautas aparecen en la tabla siguiente: @multitable {Línea que no es una pauta} {Punto de referencia} @headitem Línea que no es una pauta @tab Punto de referencia @item @code{ChordNames} @tab línea de base @item @code{NoteNames} @tab línea de base @item @code{Lyrics} @tab línea de base @item @code{Dynamics} @tab la mitad de la altura de la @q{m} @item @code{FiguredBass} @tab punto más alto @item @code{FretBoards} @tab línea superior @end multitable En la siguiente imagen, las líneas horizontales indican las posiciones de estos puntos de referencia: @lilypond[quote,noragged-right,line-width=110\mm] #(define zero-space '((padding . -inf.0) (basic-distance . 0))) alignToZero = \with { \override VerticalAxisGroup.nonstaff-relatedstaff-spacing = #zero-space \override VerticalAxisGroup.nonstaff-nonstaff-spacing = #zero-space \override VerticalAxisGroup.staff-affinity = #DOWN \remove Text_engraver % avoid having two \consists Text_engraver } lowerCaseChords = \with { chordNameLowercaseMinor = ##t } labelContext = #(define-music-function (context) (string?) #{ s1*0^\markup { \upright {\typewriter #context } } #}) \layout { \context { \Dynamics \alignToZero } \context { \FiguredBass \alignToZero } \context { \Lyrics \alignToZero } \context { \NoteNames \alignToZero } \context { \ChordNames \alignToZero \lowerCaseChords } \context { \FretBoards \alignToZero } \context { \Score \omit BarLine \override DynamicText.self-alignment-X = #-1 \override FretBoard.X-offset = #1.75 \override InstrumentName.minimum-Y-extent = #'(-1 . 2) \textLengthOn \omit TimeSignature } } %% These contexts have reference points at the baseline: %% ChordNames, NoteNames, and Lyrics << \new ChordNames { \chords { \labelContext "ChordNames" g1:m } } \new NoteNames { s1 |\labelContext "NoteNames" g1 | } \new Lyrics { \lyrics { \skip 1*2 | \labelContext "Lyrics" ghijk1 | } } \new RhythmicStaff \with { instrumentName = #"baseline " } s1*3 >> %% The reference point for Dynamics is the midline of 'm' in the font << \new Dynamics { \labelContext "Dynamics" s1\mp s\fp } \new RhythmicStaff \with { instrumentName = #"mid-height " } s1*3 >> %% The reference point for FiguredBass is its highest point << \new FiguredBass { \labelContext "FiguredBass" \figuremode { <6 5>1 } } \new RhythmicStaff \with { instrumentName = #"highest point " } s1 >> %% The reference point for FretBoards is the top line \include "predefined-guitar-fretboards.ly" << \new FretBoards { \labelContext "FretBoards" \chordmode { e1 } } \new RhythmicStaff \with { instrumentName = #"top line " } s1 >> @end lilypond Cada una de las propiedades de grob del espaciado vertical (excepto @code{staff-affinity}) usa la misma estructura de lista-A que las variables de espaciado del bloque @code{\paper} que se han estudiado en @ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles}. En @ref{Modificación de las listas-A} se estudian métodos específicos para la modificación de las listas-A. Las propiedades de los grobs deben ajustarse con un @code{\override} dentro de un bloque @code{\score} o @code{\layout}, y no dentro de un bloque @code{\paper}. El ejemplo que sigue muestra las dos maneras en que pueden modificarse estas listas-A. La primera declaración actualiza un par clave-valor de forma individual, y la segunda redefine la propiedad completamente: @example \new Staff \with @{ \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 @} @{ @dots{} @} \new Staff \with @{ \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 10) (minimum-distance . 9) (padding . 1) (stretchability . 10)) @} @{ @dots{} @} @end example Para modificar globalmente cualquiera de los ajustes de espaciado, póngalos dentro del bloque @code{\layout}: @example \layout @{ \context @{ \Staff \override VerticalAxisGroup.default-staff-staff-spacing.basic-distance = #10 @} @} @end example Los ajustes estándar para las propiedades de grob del espaciado vertical están relacionadas en @rinternals{VerticalAxisGroup} y en @rinternals{StaffGrouper}. Las sobreescrituras predeterminadas para los tipos específicos de líneas que no son pautas están relacionadas en las descripciones de contexto correspondientes en @rinternals{Contexts}. @subsubheading Propiedades del grob @code{VerticalAxisGroup} Las propiedades de @code{VerticalAxisGroup} se suelen ajustar con una instrucción @code{\override} en el nivel de @code{Staff} (o equivalente). @table @code @item staff-staff-spacing Se utiliza para determinar la distancia entre la pauta actual y la pauta que está justo por debajo de ella dentro del mismo sistema, incluso si hay más líneas que no son pautas (tales como @code{Lyrics}) entre las dos pautas. No se aplica a la pauta inferior de un sistema. Inicialmente, el valor de espaciado @code{staff-staff-spacing} de un grupo @code{VerticalAxisGroup} es una función de Scheme que aplica las propiedades del @code{StaffGrouper} si la pauta forma parte de un grupo, o el @code{default-staff-staff-spacing} de la pauta en caso contrario. Esto hace posible que las pautas estén espaciadas de forma diferente cuando están agrupadas. Para conseguir un espaciado regular sin importar el agrupamiento, esta función se puede sustituir por una lista-A de espaciado flexible, utilizando la forma de sobreescritura de redefinición completa que se ha mostrado más arriba. @item default-staff-staff-spacing Una lista-A de espaciado flexible que define el espacio @code{staff-staff-spacing} que se usará para las pautas sin agrupar, a no ser que se haya sobreescrito explícitamente @code{staff-staff-spacing} con una instrucción @code{\override}. @item staff-affinity Dirección de la pauta que utilizar para el espaciado de la línea actual que no es pauta. Se puede elegir entre @code{UP} (arriba), @code{DOWN} (abajo) y @code{CENTER} (centro). Si es @code{CENTER}, la línea del tipo no-pauta se coloca equidistante entre las dos pautas contiguas a ambos lados, a no ser que lo impidan colisiones u otras restricciones de espaciado. Las líneas del tipo no-pauta adyacentes han de llevar valores de @code{staff-affinity} no crecientes desde la parte superior hasta la inferior, p.ej. una línea del tipo no-pauta establecida a @code{UP} no debería seguir inmediatamente a otra que esté establecida a @code{DOWN}. Las líneas del tipo no-pauta en la parte superior de un sistema deben usar @code{DOWN}; las de la parte inferior deben usar @code{UP}. El ajuste de @code{staff-affinity} para una pauta hace que se le trate como una línea que no es una pauta. El establecimiento de @code{staff-affinity} a @code{#f} para una línea que no es una pauta hace que se trate como una pauta. Establecer @code{staff-affinity} a @code{UP}, @code{CENTER}, o @code{DOWN} hace que el pentagrama resulte espaciado como si fuera una línea que no es una pauta. @item nonstaff-relatedstaff-spacing Distancia entre la línea del tipo no-pauta actual y la pauta más próxima en la dirección de @code{staff-affinity}, si no hay ninguna línea que no sea una pauta entre las dos, y @code{staff-affinity} es @code{UP} o @code{DOWN}. Si @code{staff-affinity} es @code{CENTER}, entonces se usa @code{nonstaff-relatedstaff-spacing} para las pautas más próximas @emph{a los dos lados}, incluso aunque aparezcan otras líneas del tipo no-pauta entre la pauta actual y una de las otras. Esto significa que la colocación de una línea que no es una pauta depende tanto de las pautas que la rodean como de las líneas que no son pautas y que la rodean. Establecer la ampliabilidad @code{stretchability} de uno de estos tipos de espaciado a un valor más pequeño provoca que este espaciado domine. El establecimiento de @code{stretchability} a un valor mayor hace que dicho espaciado tenga un menor efecto. @item nonstaff-nonstaff-spacing Distancia entre la línea actual del tipo no-pauta y la siguiente línea del tipo no-pauta en la dirección de @code{staff-affinity}, si las dos están al mismo lado de la pauta relacionada, y @code{staff-affinity} es @code{UP} o @code{DOWN}. @item nonstaff-unrelatedstaff-spacing Distancia entre la línea actual del tipo no-pauta y la pauta en la dirección opuesta de @code{staff-affinity}, si no hay ninguna otra línea del tipo no-pauta entre las dos, y @code{staff-affinity} es @code{UP} o @code{DOWN}. Se puede usar, por ejemplo, para requerir una cantidad de relleno mínima entre una línea de @code{Lyrics} y la pauta a la que no pertenece. @end table @subsubheading Propiedades del grob @code{StaffGrouper} Las propiedades de @code{StaffGrouper} se suelen ajustar con una instrucción @code{\override} en el nivel de @code{StaffGroup} (o equivalente). @table @code @item staff-staff-spacing Distancia entre pautas consecutivas dentro del grupo de pautas actual. La propiedad @code{staff-staff-spacing} del grob @code{VerticalAxisGroup} de una pauta individual se puede sobreescribir con distintos ajustes de espaciado para dicha pauta. @item staffgroup-staff-spacing Distancia entre la última pauta del grupo en curso y la pauta que está justo por debajo de ella dentro del mismo sistema, incluso si existen una o más líneas que no son pautas (tales como @code{Lyrics}) entre las dos pautas. No se aplica al pentagrama o pauta inferior de un sistema. La propiedad @code{staff-staff-spacing} del grob @code{VerticalAxisGroup} de una pauta individual se puede sobreescribir con distintos ajustes de espaciado para dicha pauta. @end table @seealso Referencia de la notación: @ref{Variables de espaciado de paper verticales flexibles,,Variables de espaciado de @code{@bs{}paper} verticales flexibles}, @ref{Modificación de las listas-A}. Archivos de inicio: @file{ly/engraver-init.ly}, @file{scm/define-grobs.scm}. Referencia de funcionamiento interno: @rinternals{Contexts}, @rinternals{VerticalAxisGroup}, @rinternals{StaffGrouper}. @node Espaciado de pautas no agrupadas @unnumberedsubsubsec Espaciado de pautas no agrupadas @translationof Spacing of ungrouped staves Las @emph{pautas}, tales como los pentagramas (@code{Staff}), pautas de percusión (@code{DrumStaff}) o de tablatura (@code{TabStaff}), etc. son contextos que pueden contener uno o más contextos de voz, pero no pueden contener otras pautas. Las siguientes propiedades afectan al espaciado de las pautas @emph{no agrupadas}: @itemize @item Propiedades de @code{VerticalAxisGroup}: @itemize @item @code{default-staff-staff-spacing} @item @code{staff-staff-spacing} @end itemize @end itemize Estas propiedades de grob se describen individualmente más arriba; véase @ref{Propiedades de espaciado dentro de los sistemas}. Están implicadas ciertas propiedades adicionales para las pautas que son parte de un grupo; véase @ref{Espaciado de pautas agrupadas}. El ejemplo siguiente muestra cómo la propiedad @code{default-staff-staff-spacing} puede afectar al espaciado de pautas no agrupadas. Las mismas sobreescrituras aplicadas a @code{staff-staff-spacing} tendrían el mismo efecto, pero también se aplicaría en caso de que las pautas estuvieran combinadas en un grupo o grupos. @lilypond[verbatim,quote,staffsize=16] \layout { \context { \Staff \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 8) (minimum-distance . 7) (padding . 1)) } } << % The very low note here needs more room than 'basic-distance % can provide, so the distance between this staff and the next % is determined by 'padding. \new Staff { b,2 r | } % Here, 'basic-distance provides enough room, and there is no % need to compress the space (towards 'minimum-distance) to make % room for anything else on the page, so the distance between % this staff and the next is determined by 'basic-distance. \new Staff { \clef bass g2 r | } % By setting 'padding to a negative value, staves can be made to % collide. The lowest acceptable value for 'basic-distance is 0. \new Staff \with { \override VerticalAxisGroup.default-staff-staff-spacing = #'((basic-distance . 3.5) (padding . -10)) } { \clef bass g2 r | } \new Staff { \clef bass g2 r | } >> @end lilypond @seealso Archivos de inicio: @file{scm/define-grobs.scm}. Fragmentos de código: @rlsr{Spacing}. Referencia de funcionamiento interno: @rinternals{VerticalAxisGroup}. @node Espaciado de pautas agrupadas @unnumberedsubsubsec Espaciado de pautas agrupadas @translationof Spacing of grouped staves En partituras grandes como las orquestales, es común colocar los pentagramas en grupos. El espacio entre los grupos suele ser mayor que el espacio que hay entre los pentagramas dentro del mismo grupo. Los grupos de pautas, @emph{Staff-groups} (tales como @code{StaffGroup}, @code{ChoirStaff}, etc.) son contextos que pueden contener al mismo tiempo uno o más pentagramas o pautas. Las siguientes propiedades afectan al espaciado de las pautas dentro de los grupos: @itemize @item Propiedades de @code{VerticalAxisGroup}: @itemize @item @code{staff-staff-spacing} @end itemize @item Propiedades de @code{StaffGrouper}: @itemize @item @code{staff-staff-spacing} @item @code{staffgroup-staff-spacing} @end itemize @end itemize Estas propiedades de grob se describen individualmente más arriba; véase @ref{Propiedades de espaciado dentro de los sistemas}. El ejemplo siguiente muestra cómo pueden afectar las propiedades del grob @code{StaffGrouper} al espaciado de las pautas agrupadas: @lilypond[verbatim,quote,staffsize=16] \layout { \context { \Score \override StaffGrouper.staff-staff-spacing.padding = #0 \override StaffGrouper.staff-staff-spacing.basic-distance = #1 } } << \new PianoStaff \with { \override StaffGrouper.staffgroup-staff-spacing.basic-distance = #20 } << \new Staff { c'1 } \new Staff { c'1 } >> \new StaffGroup << \new Staff { c'1 } \new Staff { c'1 } >> >> @end lilypond @seealso Archivos de inicio: @file{scm/define-grobs.scm}. Fragmentos de código: @rlsr{Spacing}. Referencia de funcionamiento interno: @rinternals{VerticalAxisGroup}, @rinternals{StaffGrouper}. @node Espaciado de las líneas que no son pautas @unnumberedsubsubsec Espaciado de las líneas que no son pautas @translationof Spacing of non-staff lines Las @emph{Líneas que no son pautas} (tales como @code{Lyrics}, @code{ChordNames}, etc.) son contextos cuyos objetos de presentación se imprimen como pentagramas (es decir, en líneas horizontales dentro de los sistemas). Específicamente, las líneas que no son pautas son contextos del tipo no-pauta que contienen el grabador @rinternals{Axis_group_engraver}. Las siguientes propiedades afectan al espaciado de las líneas que no son pautas: @itemize @item Propiedades de @code{VerticalAxisGroup}: @itemize @item @code{staff-affinity} @item @code{nonstaff-relatedstaff-spacing} @item @code{nonstaff-nonstaff-spacing} @item @code{nonstaff-unrelatedstaff-spacing} @end itemize @end itemize Estas propiedades de grob se describen individualmente más arriba; véase @ref{Propiedades de espaciado dentro de los sistemas}. El ejemplo siguiente muestra cómo la propiedad @code{nonstaff-nonstaff-spacing} puede afectar el espaciado de líneas consecutivas que no son pautas. Aquí, mediante el establecimiento de la clave de ampliabilidad @code{stretchability} a un valor muy grande, la línea de letra es capaz de ampliarse mucho más de lo que es usual: @lilypond[verbatim,quote,staffsize=16] \layout { \context { \Lyrics \override VerticalAxisGroup.nonstaff-nonstaff-spacing.stretchability = #1000 } } \new StaffGroup << \new Staff \with { \override VerticalAxisGroup.staff-staff-spacing = #'((basic-distance . 30)) } { c'1 } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #UP } \lyricmode { up } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #CENTER } \lyricmode { center } \new Lyrics \with { \override VerticalAxisGroup.staff-affinity = #DOWN } \lyricmode { down } \new Staff { c'1 } >> @end lilypond @seealso Archivos de inicio: @file{ly/engraver-init.ly}, @file{scm/define-grobs.scm}. Fragmentos de código: @rlsr{Spacing}. @c @lsr{spacing,page-spacing.ly}, @c @lsr{spacing,alignment-vertical-spacing.ly}. Referencia de funcionamiento interno: @rinternals{Contexts}, @rinternals{VerticalAxisGroup}. @node Posicionamiento explícito de los pentagramas y los sistemas @subsection Posicionamiento explícito de los pentagramas y los sistemas @translationof Explicit staff and system positioning Una forma de entender los mecanismos del espaciado vertical flexible que se han explicado más arriba es como una colección de ajustes que controlan la cantidad de relleno vertical entre los pentagramas y los sistemas. Es posible enfrentarse al espaciado vertical de una forma distinta utilizando @code{NonMusicalPaperColumn.line-break-system-details}. Mientras que los mecanismos del espaciado vertical flexible especifican relleno vertical, @code{NonMusicalPaperColumn.line-break-system-details} puede especificar posiciones verticales exactas sobre la página. @code{NonMusicalPaperColumn.line-break-system-details} acepta una lista asociativa de cuatro ajustes diferentes: @itemize @item @code{X-offset} (desplazamiento en X) @item @code{Y-offset} (desplazamiento en Y) @item @code{extra-offset} (desplazamiento adicional) @item @code{alignment-distances} (distancias de alineación) @end itemize Las sobreescrituras de los objetos gráficos, entre ellas las de @code{NonMusicalPaperColumn} que aparecen más abajo, pueden ocurrir en tres lugares distintos dentro de un archivo de entrada: @itemize @item directamente en medio de las notas @item en un bloque @code{\context} @item en el bloque @code{\with} @end itemize Cuando sobreescribimos @code{NonMusicalPaperColumn}, usamos la instrucción @code{\override} usual en los bloques @code{\context} y en el bloque @code{\with}. Por otra parte, cuando sobreescribimos @code{NonMusicalPaperColumn} en medio de las notas, debemos usar la instrucción especial @code{\overrideProperty}. He aquí algunas sobreescrituras de @code{NonMusicalPaperColumn} de ejemplo con la instrucción especial @code{\overrideProperty}: @example \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40)) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((alignment-distances . (15))) \overrideProperty NonMusicalPaperColumn.line-break-system-details #'((X-offset . 20) (Y-offset . 40) (alignment-distances . (15))) @end example Para entender cómo funciona cada uno de los distintos ajustes, empezamos observando un ejemplo que no incluye absolutamente ninguna sobreescritura. @c \book { } is required in these examples to ensure the spacing @c overrides can be seen between systems. -np @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break s1*5 \break s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } } @end lilypond Esta partitura mantiene aislada tanto la información de los saltos de línea como los de página en una voz dedicada a ello. Esta técnica de crear una voz de saltos ayuda a mantener separada de la escritura de notas conforme el ejemplo se vuelve más complicado. Consulte @ref{Saltos}. Utilizando instrucciones @code{\break} explícitas, la música se divide líneas de cinco compases cada una. El espaciado vertical proviene de los ajustes predeterminados de LilyPond pero el punto de origen vertical de cada sistema se fija explícitamente usando el par @code{Y-offset} en el atributo @code{line-break-system-details} del grob (objeto gráfico) @code{NonMusicalPaperColumn}: @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 40)) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60)) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } } @end lilypond Observe que @code{line-break-system-details} toma una lista asociativa de una cantidad de valores potencialmente elevada, pero aquí sólo fijamos un valor. Observe también que aquí la propiedad @code{Y-offset} determina la posición vertical exacta sobre la página en la que se trazará cada uno de los nuevos sistemas. En contraste con el posicionado absoluto que está disponible a través de @code{Y-offset} y de @code{X-offset}, es posible un posicionamiento relativo con la propiedad @code{extra-offset} de @code{line-break-system-details}. La colocación es relativa a la disposición predeterminada o al posicionamiento absoluto creado mediante el establecimiento de los valores de @code{X-offset} y de @code{Y-offset}. La propiedad @code{extra-offset} acepta una pareja de números (un @code{pair}) que consiste en desplazamientos a lo largo de los ejes X e Y. @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((extra-offset . (0 . 10))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } } @end lilypond Ahora que hemos establecido explícitamente el punto de origen vertical de cada sistema, podemos también establecer manualmente las distancias verticales entre los pentagramas dentro de cada sistema. Lo hacemos usando la subpropiedad @code{alignment-distances} de @code{line-break-system-details}. @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 20) (alignment-distances . (10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (15))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 85) (alignment-distances . (20))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new Staff { \repeat unfold 15 { d'4 d' d' d' } } >> } } @end lilypond Observe que aquí asignamos dos valores distintos al atributo @code{line-break-system-details} del grob @code{NonMusicalPaperColumn}. Aunque el atributo alist de @code{line-break-system-details} acepta muchos parámetros de espaciado adicionales (entre ellos, por ejemplo, un par @code{X-offset} correspondiente), sólo tenemos que establecer el desplazamiento @code{Y-offset} y los pares @code{alignment-distances} para controlar el punto de origen vertical de cada sistema y pentagrama. Finalmente, observe que @code{alignment-distances} especifica el posicionamiento vertical de los pentagramas pero no de los grupos de pentagramas. @lilypond[verbatim,quote,staffsize=16] \header { tagline = ##f } \paper { left-margin = 0\mm } \book { \score { << \new Staff << \new Voice { \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 0) (alignment-distances . (30 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 60) (alignment-distances . (10 10))) s1*5 \break \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details #'((Y-offset . 100) (alignment-distances . (10 30))) s1*5 \break } \new Voice { \repeat unfold 15 { c'4 c' c' c' } } >> \new StaffGroup << \new Staff { \repeat unfold 15 { d'4 d' d' d' } } \new Staff { \repeat unfold 15 { e'4 e' e' e' } } >> >> } } @end lilypond Algunos puntos que tener en cuenta: @itemize @item Al usar @code{alignment-distances}, la letra y otras líneas que no son pautas, no cuentan como un pentagrama. @item Las unidades de los números que se pasan a @code{X-offset}, @code{Y-offset}, @code{extra-offset} y @code{alignment-distances} se interpretan como múltiplos de la distancia entre líneas de pentagrama adyacentes. Los valores positivos mueven a los pentagramas y a la letra hacia arriba, los valores negativos mueven los pentagramas y la letra hacia abajo. @item A causa de que los ajustes a @code{NonMusicalPaperColumn.line-break-system-details} dados aquí permiten el posicionamiento de pentagramas y sistemas en cualquier lugar de la página, es posible violar los márgenes o los límites del papel, o incluso imprimir pentagramas o sistemas unos encima de otros. Esto se evitaría pasando a los diferentes ajustes unos valores razonables. @end itemize @seealso Fragmentos de código: @rlsr{Spacing}. @node Evitar las colisiones verticales @subsection Evitar las colisiones verticales @translationof Vertical collision avoidance @funindex outside-staff-priority @funindex outside-staff-padding @funindex outside-staff-horizontal-padding Podemos decir intuitivamente que algunos objetos de la notación musical pertenecen al pentagrama y otros se sitúan fuera del pentagrama. Entre los objetos que pertenecen al exterior del pentagrama están las marcas de ensayo, las marcas textuales y las indicaciones de dinámica (en lo sucesivo, les llamaremos objetos fuera del pentagrama). La regla de LilyPond para la colocación vertical de los objetos fuera del pentagrama es ponerlos tan cerca del pentagrama como sea posible pero no tan próximos como para que choquen con otro objeto. LilyPond utiliza la propiedad @code{outside-staff-priority} para determinar si un grob es un objeto fuera del pentagrama: si @code{outside-staff-priority} es un número, el grob es un objeto fuera del pentagrama. Además, @code{outside-staff-priority} informa a LilyPond en qué orden se debe situar los objetos. En primer lugar, LilyPond sitúa todos los objetos que no pertenecen al exterior del pentagrama. Después ordena los objetos fuera del pentagrama de acuerdo a su prioridad @code{outside-staff-priority} (en orden creciente). LilyPond toma los objetos fuera del pentagrama uno a uno y los coloca de forma que no choquen con ningún objeto que ya haya sido colocado. Esto es, si dos grobs fuera del pentagrama compiten por el mismo espacio, el que tiene la prioridad @code{outside-staff-priority} más baja se colocará más próximo al pentagrama. Hay un listado completo de las prioridades outside-staff-priorities en @rlearning{La propiedad outside-staff-priority (prioridad fuera del pentagrama)}. @lilypond[quote,ragged-right,verbatim] \relative c'' { c4_"Text"\pp r2. \once \override TextScript.outside-staff-priority = #1 c4_"Text"\pp % this time the text will be closer to the staff r2. % by setting outside-staff-priority to a non-number, % we disable the automatic collision avoidance \once \override TextScript.outside-staff-priority = ##f \once \override DynamicLineSpanner.outside-staff-priority = ##f c4_"Text"\pp % now they will collide } @end lilypond El relleno vertical que rodea a los objetos fuera del pentagrama se puede controlar con @code{outside-staff-padding}. @lilypond[quote,ragged-right,verbatim,staffsize=18] \relative { \once \override TextScript.outside-staff-padding = #0 a'4-"outside-staff-padding = #0" \once \override TextScript.outside-staff-padding = #3 d-"outside-staff-padding = #3" c-"default outside-staff-padding" b-"default outside-staff-padding" R1 } @end lilypond De forma predeterminada, los objetos fuera del pentagrama se colocan de forma que eviten una colisión horizontal con los grobs posicionados previamente. Esto puede llevar a situaciones en las que los objetos se colocan muy próximos entre sí en el sentido horizontal. Como se muestra en el ejemplo que aparece más abajo, al establecer @code{outside-staff-horizontal-padding} se incrementa el espacio horicontal necesario, y en este caso mueve el texto hacia arriba para evitar que quede demasiado cerca de las líneas adicionales. @lilypond[quote,ragged-right,verbatim] \relative { c''4^"Word" c c''2 R1 \once \override TextScript.outside-staff-horizontal-padding = #1 c,,4^"Word" c c''2 } @end lilypond @seealso Fragmentos de código: @rlsr{Spacing}. @node Espaciado horizontal @section Espaciado horizontal @translationof Horizontal spacing @cindex horizontal, espaciado @cindex espaciado horizontal @menu * Panorámica del espaciado horizontal:: * Sección de espaciado nueva:: * Cambiar el espaciado horizontal:: * Longitud de la línea:: * Notación proporcional:: @end menu @node Panorámica del espaciado horizontal @subsection Panorámica del espaciado horizontal @translationof Horizontal spacing overview El motor de espaciado traduce las diferencias en las duraciones a distancias ampliables (@q{muelles}) de distintas longitudes. Las duraciones más largas reciben un espacio mayor y las duraciones más cortas reciben menos. Las duraciones más breves reciben un espacio de tamaño fijo (que se controla mediante @code{shortest-duration-space} en el objeto @rinternals{SpacingSpanner}). Cuanto más larga es la duración, más espacio recibe: al doblar una duración se suma @code{spacing-increment} al espacio que ocupa la nota. Por ejemplo, la pieza siguiente contiene numerosas blancas, negras y corcheas; la corchea va seguida de un ancho de cabeza de blanca (ACB). La negra va seguida de 2 ACB, la blanca por 3 ACB, etc. @lilypond[quote,verbatim] \relative c' { c2 c4. c8 c4. c8 c4. c8 c8 c c4 c c } @end lilypond Normalmente, el valor de @code{spacing-increment} está establecido en 1.2 espacios de pentagrama, lo que es aproximadamente el ancho de una cabeza, y @code{shortest-duration-space} está establecido en 2.0, lo que significa que la nota más breve recibe 2.4 espacios de pentagrama (2.0 multiplicado por el @code{spacing-increment}) de espacio horizontal. Este espacio se cuenta a partir del borde izquierdo del símbolo, de manera que las notas más breves van seguidas generalmente por un espacio de 1 ACB. Si siguiésemos el procedimiento anterior exactamente, entonces la adición de una sola fusa a una partitura que usa corcheas y semicorcheas, aumentaría enormemente la anchura de la partitura completa. La nota más breve ya no es la semicorchea, sino la fusa, añadiendo así 1 ACB a cada una de las notas. Para evitarlo, la duración más breve a efectos de espaciado no es la nota más breve de la partitura, sino la que ocurre con más frecuencia. La duración más breve que es más común se determina de la siguiente manera: en cada compás se determina la duración más breve. La menor duración más común se toma como base para el espaciado, habiendo estipulado que esta duración menor siempre debe ser igual o menor que una corchea. La duración más breve se imprime cuando se ejecuta @code{lilypond} con la opción @option{--verbose}. Estas duraciones también se pueden personalizar. Si establecemos la @code{common-shortest-duration} en @rinternals{SpacingSpanner}, entonces éste establece la duración base para el espaciado. La duración máxima para esta base (normalmente una corchea), se fija a través de @code{base-shortest-duration}. @funindex common-shortest-duration @funindex base-shortest-duration @funindex stem-spacing-correction @funindex spacing Las notas que son aún más breves que la nota común más breve van seguidas por un espacio proporcional a su duración en relación con la nota común más breve. Así pues, si fuésemos a añadir tan sólo algunas semicorcheas al ejemplo anterior, irían seguidas por medio ACB: @lilypond[quote,verbatim] \relative { c''2 c4. c8 | c4. c16[ c] c4. c8 | c8 c c4 c c } @end lilypond Como se explicó en el @emph{Ensayo sobre grabado musical automatizado}, las direcciones de las plicas influyen en el espaciado (véase @ressay{Espaciado óptico}) y se puede ajustar con la propiedad @code{stem-spacing-correction} del objeto @rinternals{NoteSpacing}. Estos se generan para cada uno de los contextos de @rinternals{Voice}. El objeto @code{StaffSpacing} (generado en el contexto de @rinternals{Staff}) contiene la misma propiedad para controlar el espaciado de las líneas de plica o divisorias. El ejemplo siguiente muestra estas correcciones, una vez con los valores predeterminados y otra con un ajuste exagerado: @lilypond[quote,ragged-right] \fixed c' { c4 e'4 e4 b4 | b4 e'4 b4 e'4 | \override Staff.NoteSpacing.stem-spacing-correction = #1.5 \override Staff.StaffSpacing.stem-spacing-correction = #1.5 c4 e'4 e4 b4 | b4 e'4 b4 e'4 | } @end lilypond Está contemplada la notación proporcional; consulte @ref{Notación proporcional}. @seealso Ensayo sobre grabado musical automatizado: @ressay{Espaciado óptico}. Fragmentos de código: @rlsr{Spacing}. Referencia de funcionamiento interno: @rinternals{SpacingSpanner}, @rinternals{NoteSpacing}, @rinternals{StaffSpacing}, @rinternals{NonMusicalPaperColumn}. @knownissues No existe ningún mecanismo conveniente para sobreescribir el espaciado manualmente. Se puede usar el siguiente rodeo para insertar espacio adicional en una partitura, ajustando el valor del relleno en la medida necesaria. @example \override Score.NonMusicalPaperColumn.padding = #10 @end example No existe ningún rodeo para disminuir la magnitud de la separación. @node Sección de espaciado nueva @subsection Sección de espaciado nueva @translationof New spacing section @funindex \newSpacingSection @cindex sección de espaciado nueva @cindex espaciado, nueva seccción de @cindex notas, espaciar horizontalmente Se pueden iniciar secciones nuevas con diferentes parámetros de espaciado, con la instrucción @code{newSpacingSection}. Esto es útil para las secciones que tienen distinta noción de las notas @q{largas} y @q{cortas}. La instrucción @code{\newSpacingSection} crea un nuevo objeto @code{SpacingSpanner} en ese momento musical. En el ejemplo siguiente, el cambio de compás introduce una sección nueva, y por ello las semicorcheas se separan automáticamente de manera ligeramente más amplia. @lilypond[verbatim,quote] \relative c' { \time 2/4 c4 c8 c c8 c c4 c16[ c c8] c4 \newSpacingSection \time 4/16 c16[ c c8] } @end lilypond Si los ajustes de espaciado automáticos no dan el espaciado deseado, pueden aplicarse sobreescrituras manuales a sus propiedades con @code{\override}. Las sobreescrituras se deben aplicar en el mismo momento musical que la propia instrucción @code{\newSpacingSection} y afectarán entonces al espaciado de toda la música que venga a continuación hasta que las propiedades se cambien en una nueva sección de espaciado, por ejemplo: @lilypond[verbatim,quote] \relative c' { \time 4/16 c16[ c c8] \newSpacingSection \override Score.SpacingSpanner.spacing-increment = #2 c16[ c c8] \newSpacingSection \revert Score.SpacingSpanner.spacing-increment c16[ c c8] } @end lilypond @seealso Fragmentos de código: @rlsr{Spacing}. Referencia de funcionamiento interno: @rinternals{SpacingSpanner}. @node Cambiar el espaciado horizontal @subsection Cambiar el espaciado horizontal @translationof Changing horizontal spacing Se puede alterar el espaciado horizontal con la propiedad @code{base-shortest-duration}. Aquí compararemos la misma música, una vez sin alterar la propiedad, y luego alterándola. Los valores mayores de @code{ly:make-moment} producen música más pequeña. Observe que @code{ly:make-moment} construye una duración, por lo que @code{1 4} es una duración mayor que @code{1 16}. @lilypond[verbatim,line-width=12\cm] \score { \relative { g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | g4 e e2 | f4 d d2 | c4 e g g | c,1 | d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | g4 e e2 | f4 d d2 | c4 e g g | c,1 | } } @end lilypond @lilypond[verbatim,line-width=12\cm] \score { \relative { g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | g4 e e2 | f4 d d2 | c4 e g g | c,1 | d4 d d d | d4 e f2 | e4 e e e | e4 f g2 | g4 e e2 | f4 d d2 | c4 e g g | c,1 | } \layout { \context { \Score \override SpacingSpanner.base-shortest-duration = #(ly:make-moment 1/16) } } } @end lilypond @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,fragment,verbatim] \override Score.SpacingSpanner.strict-note-spacing = ##t \new Staff \relative { c''8[ c \clef alto c \grace { c16 c } c8 c c] c32[ c] } @end lilypond @seealso Fragmentos de código: @rlsr{Spacing}. @node Longitud de la línea @subsection Longitud de la línea @translationof Line width @cindex 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. @c The initial pitch is not necessary as long as RhythmicStaff is @c not preceded by other material in the score, but we don't want @c to explain that. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } >> } @end lilypond Observe que la blanca que inicia el compás ocupa mucho menos de la mitad de todo el espacio horizontal del compás. De forma similar, las semicorcheas y el cinquillo de semicorcheas con que finaliza el compás ocupan en conjunto mucho más de la mitad de todo el espacio horizontal del compás. En el grabado clásico, este espaciado puede ser exactamente el que deseamos porque podemos tomar prestado el espacio horizontal de la blanca y conservar el espacio horizontal a lo largo del compás como un todo. Por otro lado, si queremos insertar una línea de tiempo graduada o algún otro gráfico encima o debajo de la partitura, necesitamos la notación proporcional. Se activa la notación proporcional con el ajuste @code{proportionalNotationDuration}. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/20) } } } @end lilypond La blanca al principio del compás y las notas rápidas de la segunda mitad del compás ocupan ahora cantidades iguales de espacio horizontal. Podríamos colocar una línea de tiempo graduada o un gráfico encima o debajo de este ejemplo. El ajuste @code{proportionalNotationDuration} es un ajuste de contexto que reside en @code{Score}. Recordemos que los ajustes de contexto aparecen en uno de tres posibles lugares del archivo de entrada: en un bloque @code{\with}, en un bloque @code{\context}, o directamente entre la música precedido por la instrucción @code{\set}. Como con todos los ajustes de contexto, el usuario puede elegir en cuál de los tres lugares diferentes prefiere establecer el valor de @code{proportionalNotationDuration}. El ajuste @code{proportionalNotationDuration} acepta un solo argumento, que es la duración de referencia contra el que se aplica el espaciado de toda la música. La función Scheme de LilyPond @code{make-moment} acepta dos argumentos: un numerador y un denominador que, juntos, expresan una cierta fracción de redonda. La llamada @code{(ly:make-moment 1/20)}, por tanto, produce una duración de referencia de una nota de un veinteavo de redonda (semicorcheas de cinquillo). Son también posibles valores como @code{(ly:make-moment 1/16)}, @code{(ly:make-moment 1/8)} y @code{(ly:make-moment 3/97)}. ¿Cómo seleccionamos la duración correcta de referencia para pasarla a @code{proportionalNotationDuration}? Normalmente mediante un proceso de ensayo y error, comenzando con una duración cercana a la más rápida (o más breve) duración de la pieza. Las duraciones de referencia más pequeñas aplican un espaciado más suelto; las duraciones de referencia más largas aplican un espaciado más apretado. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/8) } } } \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/16) } } } \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/32) } } } @end lilypond Observe que una duración de referencia demasiado grande (como la corchea, en el ejemplo de arriba) produce un espaciado excesivamente apretado y puede ser causa de colisiones entre las cabezas de nota. Observe también que la notación proporcional en general ocupa más espacio horizontal que el espaciado clásico. El espaciado proporcional aporta claridad rítmica a expensas del espacio horizontal. Ahora veremos cómo espaciar de forma óptima grupos de valoración especial que se superponen. Empezamos por examinar qué le ocurre a nuestro ejemplo original, con espaciado clásico, cuando añadimos un segundo pentagrama con un tipo diferente de grupo especial. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } \new RhythmicStaff { \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } } >> } @end lilypond El espaciado es defectuoso porque las notas regularmente espaciadas del pentagrama inferior no se amplían de manera uniforme. Los grabados clásicos incluyen muy pocos tresillos complejos y así las reglas del grabado clásico pueden generar este tipo de resultado. El establecimiento de @code{proportionalNotationDuration} lo soluciona. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } \new RhythmicStaff { \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/20) } } } @end lilypond Pero si observamos con mucho cuidado podremos ver que las notas de la segunda mitad del 9-illo están espaciadas de forma ligeramente más ancha que las de la primera mitad del 9-illo. Para asegurar una ampliación uniforme, activamos @code{uniform-stretching}, que es una propiedad de @code{SpacingSpanner}. @lilypond[quote,verbatim,ragged-right] \score { << \new RhythmicStaff { c2 16 16 16 16 \tuplet 5/4 { 16 16 16 16 16 } } \new RhythmicStaff { \tuplet 9/8 { c8 8 8 8 8 8 8 8 8 } } >> \layout { \context { \Score proportionalNotationDuration = #(ly:make-moment 1/20) \override SpacingSpanner.uniform-stretching = ##t } } } @end lilypond Nuestro ejemplo de dos pentagramas ahora está espaciado exactamente, nuestras relaciones rítmicas son visualmente claras, y podemos incluir una línea de tiempo graduada o un gráfico, si queremos. Observe que el paquete de notación proporcional de LilyPond espera que todas las partituras proporcionales establezcan el atributo @code{uniform-stretching} de @code{SpacingSpanner} al valor ##t. El establecimiento de @code{proportionalNotationDuration} sin ajustar también el atributo @code{uniform-stretching} de @code{SpacingSpanner} al valor ##t causará, por ejemplo, que los desplazamientos (@code{skips}) consuman una cantidad de espacio horizontal incorrecta. El @code{SpacingSpanner} es un grob abstracto que reside en el contexto de @code{Score}. Como con nuestros ajustes de @code{proportionalNotationDuration}, las sobreescrituras al @code{SpacingSpanner} sólo pueden ocurrir en uno de estos tres lugares dentro del archivo de entrada: en el bloque @code{\with}, en el bloque @code{\context} o directamente dentro de la escritura de notas. De manera predeterminada, sólo hay un @code{SpacingSpanner} por @code{Score}. Esto supone que, por omisión, @code{uniform-stretching} está activado para la partitura completa o desactivado para la partitura completa. Sin embargo, podemos sobreescribir este comportamiento y activar distintas posibilidades de espaciado en distintos lugares de la partitura. Lo hacemos con la instrucción @code{\newSpacingSection}. Consulte @ref{Sección de espaciado nueva} para más información. A continuación examinamos los efectos del grabador @code{Separating_line_group_engraver} y veremos por qué las partituras proporcionales con frecuencia eliminan este grabador. El ejemplo siguiente muestra que hay una pequeña cantidad de espacio @qq{preliminar} justo antes de la primera nota de cada sistema. @lilypond[quote,verbatim,ragged-right] \paper { indent = #0 } \new Staff { c'1 \break c'1 } @end lilypond Esta cantidad de espacio preliminar es la misma ya sea después de una indicación de compás, una armadura o una clave. El grabador @code{Separating_line_group_engraver} es responsable de este espacio. La eliminación de @code{Separating_line_group_engraver} reduce este espacio a cero. @lilypond[quote,verbatim,ragged-right] \paper { indent = #0 } \new Staff \with { \remove "Separating_line_group_engraver" } { c'1 \break c'1 } @end lilypond Los elementos no musicales como la indicación de compás, la armadura, la clave y las alteraciones son problemáticos en notación proporcional. Ninguno de estos elementos tiene duración rítmica. Pero todos ellos consumen espacio horizontal. Las distintas partituras proporcionales abordan este problema de distinta manera. Sería posible evitar los problemas de espaciado con las armaduras, simplemente evitando tenerlas. Esta es una opción válida pues casi todas las partituras proporcionales son música contemporánea. Lo mismo puede valer para las indicaciones de compás, especialmente para las partituras que incluyen una línea de tiempo graduada u otro gráfico. Pero estas partituras son excepcionales y casi todas las partituras proporcionales incluyen al menos unas pocas indicaciones de compás. Las claves y las alteraciones son aún más esenciales. Así pues ¿qué estrategias existen para el espaciado de los elementos no musicales en un contexto proporcional? Una buena opción es la propiedad @code{strict-note-spacing} de @code{SpacingSpanner}. Compare las dos partituras siguientes: @lilypond[quote,verbatim,ragged-right] \new Staff { \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) c''8 8 8 \clef alto d'2 2 } \new Staff { \set Score.proportionalNotationDuration = #(ly:make-moment 1/16) \override Score.SpacingSpanner.strict-note-spacing = ##t c''8 8 8 \clef alto d'2 2 } @end lilypond Las dos partituras son proporcionales, pero el espaciado de la primera es muy suelto a causa del cambio de clave. Sin embargo, el espaciado de la segunda partitura se mantiene estricto, porque @code{strict-note-spacing} está activado. La activación de @code{strict-note-spacing} hace que el ancho de las indicaciones de compás, armaduras, cambios de clave y alteraciones no tomen parte en el algoritmo de espaciado. Además de los ajustes dados aquí, hay otros que aparecen con frecuencia en las partituras proporcionales. Entre ellos están: @itemize @item @code{\override SpacingSpanner.strict-grace-spacing = ##t} @item @code{\set tupletFullLength = ##t} @item @code{\override Beam.breakable = ##t} @item @code{\override Glissando.breakable = ##t} @item @code{\override TextSpanner.breakable = ##t} @item @code{\remove "Forbid_line_break_engraver" in the Voice context} @end itemize Estos ajustes dan a las notas de adorno un espaciado estricto, extienden los corchetes de grupo especial para que marquen tanto los puntos de comienzo como de final, y permiten que los elementos de extensión se dividan entre los sistemas y las páginas. Consulte las partes respectivas del manual para ver estos ajustes relacionados. @seealso Referencia de la notación: @ref{Sección de espaciado nueva}. Fragmentos de código: @rlsr{Spacing}. @node Encajar la música en menos páginas @section Encajar la música en menos páginas @translationof Fitting music onto fewer pages En ocasiones, podemos terminar con uno o dos pentagramas en una segunda página (o tercera, o cuarta@dots{}). Es fastidioso, especialmente cuando vemos que las páginas anteriores parecen tener espacio de sobra. Al investigar los problemas de disposición, una herramienta de valor incalculable es @code{annotate-spacing}. Esta instrucción imprime los valores de un cierto número de variables de espaciado; para ver más detalles consulte la sección siguiente, @ref{Mostrar el espaciado}. @menu * Mostrar el espaciado:: * Cambiar el espaciado:: @end menu @node Mostrar el espaciado @subsection Mostrar el espaciado @translationof Displaying spacing @cindex espaciado, presentación del @funindex annotate-spacing Para presentar gráficamente las dimensiones de las variables de disposición vertical que pueden verse alteradas por el formato de la página, establezca @code{annotate-spacing} en el bloque @code{\paper}: @lilypond[verbatim,quote,papersize=a6landscape] \book { \score { { c4 } } \paper { annotate-spacing = ##t } } @end lilypond @noindent Todas las dimensiones de disposición se muestran en espacios de pentagrama, independientemente de las unidades especificadas en los bloques @code{\paper} o @code{\layout}. En el ejemplo anterior, @code{paper-height} tiene un valor de 59.75 @code{staff-spaces} (espacios de pentagrama), y el @code{staff-size} (tamaño del pentagrama) es de 20 puntos, el valor predeterminado. Observe que: @multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm} @item 1 punto @tab = (25.4/72.27) mm @item 1 staff-space @tab = (@code{staff-size})/4 pts @item @tab = (@code{staff-size})/4 * (25.4/72.27) mm @end multitable @noindent En este caso, un @code{staff-space} equivale aproximadamente a 1.757mm. Así, la medida @code{paper-height} de 59.75 @code{staff-spaces} equivale a 105 milímetros, la altura de una hoja @code{a6} en orientación apaisada. Las parejas (@var{a},@var{b}) son intervalos, donde @var{a} es el límite inferior y @var{b} es el límite superior del intervalo. @seealso Referencia de la notación: @ref{Establecer el tamaño del pentagrama}. Fragmentos de código: @rlsr{Spacing}. @node Cambiar el espaciado @subsection Cambiar el espaciado @translationof Changing spacing La salida de @code{annotate-spacing} revela las dimensiones verticales con gran detalle. Para ver más detalles acerca de la modificación de los márgenes y otras variables de diseño de la página, consulte @ref{Disposición de la página}. Aparte de los márgenes, hay algunas otras opciones para ahorrar espacio: @itemize @item Forzar los sistemas para que se junten lo más posible entre sí (de forma que quepan la mayor cantidad de ellos en la página) y al mismo tiempo estén espaciados de forma que no exista un espacio vacío en la parte baja del papel. @example \paper @{ system-system-spacing = #'((basic-distance . 0.1) (padding . 0)) ragged-last-bottom = ##f ragged-bottom = ##f @} @end example @item Forzar el número de sistemas. Puede ser de utilidad de dos formas. Si tan sólo se establece un valor, incluso el mismo valor que el número de sistemas que se están trazando de forma predeterminada, ello ocasionará a veces que se traten de introducir más sistemas en cada página, pues en este caso se omite un paso en que se produce una estimación, dando así un encaje mejor en cada página. Asimismo, el forzar una reducción neta en el número de sistemas puede producir el ahorro de una página adicional. Por ejemplo, si la disposición predeterminada tiene 11 sistemas, la asignación siguiente fuerza una disposición con 10 sistemas. @example \paper @{ system-count = #10 @} @end example @item Forzar el número de páginas. Por ejemplo, la asignación siguiente fuerza una disposición con dos páginas. @example \paper @{ page-count = #2 @} @end example @item Evitar (o reducir en número) los objetos que aumentan el tamaño vertical de un sistema. Por ejemplo, los corchetes de las repeticiones de primera y segunda vez (o repeticiones con finales alternativos) necesitan espacio adicional. Si estas casillas se reparten a lo largo de dos sistemas, ocupan más espacio que si estuvieran sobre el mismo sistema. Como otro ejemplo, las indicaciones dinámicas que se @q{salen} de un sistema se pueden acercar al pentagrama: @lilypond[verbatim,quote] \relative e' { e4 c g\f c e4 c g-\tweak X-offset #-2.7 \f c } @end lilypond @item Alterar el espaciado horizontal por medio de @code{SpacingSpanner}. Para ver más detalles, consulte @ref{Cambiar el espaciado horizontal}. El ejemplo siguiente ilustra el espaciado predeterminado: @lilypond[verbatim,quote] \score { \relative { g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | g4 e e2 | } } @end lilypond @noindent El ejemplo siguiente modifica @code{common-shortest-duration} de un valor de @code{1/4} (negra) a @code{1/2} (blanca). La negra es la nota más común y la más breve del ejemplo, por lo que al agrandar esta duración se produce un efecto de @q{apretujamiento}: @lilypond[verbatim,quote] \score { \relative { g'4 e e2 | f4 d d2 | c4 d e f | g4 g g2 | g4 e e2 | } \layout { \context { \Score \override SpacingSpanner.common-shortest-duration = #(ly:make-moment 1/2) } } } @end lilypond @noindent La propiedad @code{common-shortest-duration} no se puede modificar de manera dinámica, por lo que se debe situar siempre dentro de un bloque @code{\context} de forma que se aplique a la partitura completa. @end itemize @seealso Referencia de la notación: @ref{Disposición de la página}, @ref{Cambiar el espaciado horizontal}. Fragmentos de código: @rlsr{Spacing}.