[ << Problemas de espaciado ] | [Arriba][Índice general][Índice] | [ Cambiar los valores por omisión >> ] |
[ < Saltos de línea ] | [ Subir : Saltos ] | [ Saltos de página manuales > ] |
4.3.2 Saltos de página
Esta sección describe los distintos métodos para crear saltos de página, y cómo modificarlos.
[ << Problemas de espaciado ] | [Arriba][Índice general][Índice] | [ Cambiar los valores por omisión >> ] |
[ < Saltos de página ] | [ Subir : Saltos de página ] | [ Saltos de página óptimos > ] |
Saltos de página manuales
Se puede sobreescribir el mecanismo predeterminado de salto de
página insertando instrucciones \pageBreak
o
\noPageBreak
. Estas instrucciones son análogas a
\break
y \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 \pageBreak
también fuerza un salto de línea.
Las instrucciones \pageBreak
y \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 \autoPageBreaksOff
y
\autoPageBreaksOn
. Los saltos de página manuales no
reultan afectados por estas instrucciones.
Hay ajustes análogos a ragged-right
y ragged-last
que tienen el mismo efecto sobre el espaciado vertical. Si
ragged-bottom
se establece a #t
los sistemas no se
justifican verticalmente. Cuando el valor de
ragged-last-bottom
se fija a #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 \bookpart
). Véase
Variables de espaciado de \paper
verticales fijas.
Los saltos de página se calculan por medio de la función
page-breaking
. LilyPond ofrece varios algoritmos para el
cómputo de los saltos de página, entre ellos
ly:optimal-breaking
, ly:page-turn-breaking
y
ly:minimal-breaking
. El predeterminado es
ly:optimal-breaking
, pero el valor se puede cambiar en el
bloque \paper
:
\paper { page-breaking = #ly:page-turn-breaking }
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
\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.
\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 { … } … } \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 { … } … }
Instrucciones predefinidas
\pageBreak
,
\noPageBreak
,
\autoPageBreaksOn
,
\autoPageBreaksOff
.
Véase también
Referencia de la notación:
Variables de \paper
para los saltos de página.
Fragmentos de código: Spacing.
Advertencias y problemas conocidos
El prefijo \once
no es efectivo con
\autoPageBreaksOn
y \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.
[ << Problemas de espaciado ] | [Arriba][Índice general][Índice] | [ Cambiar los valores por omisión >> ] |
[ < Saltos de página manuales ] | [ Subir : Saltos de página ] | [ Saltos de página mínimos > ] |
Saltos de página óptimos
La función 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
ly:page-turn-breaking
, no tiene un concepto de los pasos de
página.
Véase también
Fragmentos de código: Spacing.
Saltos de página mínimos
La función 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:
\paper { page-breaking = #ly:minimal-breaking }
Véase también
Snippets: Spacing.
[ << Problemas de espaciado ] | [Arriba][Índice general][Índice] | [ Cambiar los valores por omisión >> ] |
[ < Saltos de página mínimos ] | [ Subir : Saltos de página ] | [ Saltos de página del tipo una-línea > ] |
Saltos de página del tipo página única
La función 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 paper-height
del
bloque 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 last-bottom-spacing
dentro del bloque paper
. La anchura de la página se queda
sin alterar por omisión, pero se puede fijar con la variable
paper-width
del bloque paper
.
Advertencias y problemas conocidos
ly:one-page-breaking
no es compatible, de momento, con
\bookpart
.
Saltos de página del tipo una-línea
La función 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
paper-width
, line-width
y indent
del bloque
\paper
se ignoran, aunque left-margin
y
right-margin
aún se respetan. La altura de la página se
deja sin cambios.
[ << Problemas de espaciado ] | [Arriba][Índice general][Índice] | [ Cambiar los valores por omisión >> ] |
[ < Saltos de página del tipo una-línea ] | [ Subir : Saltos de página ] | [ Paso de página óptimo > ] |
Saltos de página del tipo una-línea-altura-automática
La función ly:one-line-auto-height-breaking
funciona igual
que 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
paper-height
del bloque \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 top-margin
y
bottom-margin
.
Observe que el ajuste top-system-spacing
afecta a la
posición vertical de la música. Fíjelo al valor ##f
dentro
de un bloque paper
para disponer la música sencillamente
entre los márgenes superior e inferior.
Paso de página óptimo
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 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 \paper
,
como se explicó en 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 \allowPageTurn
en nuestro archivo
de entrada en los lugares adecuados.
Si esto es demasiado tedioso, podemos añadir un grabador
Page_turn_engraver
a un contexto Staff o Voice. El
grabador 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 Page_turn_engraver
). Cuando encuentra una
sección sin notas suficientemente larga, el grabador
Page_turn_engraver
inserta un \allowPageTurn
en la
última barra de compás de dicha sección, a no ser que haya una
barra ‘especial’ de compás (como una doble barra), en cuyo caso
se insertará el \allowPageTurn
en la última barra
‘especial’ de compás de la sección.
El grabador Page_turn_engraver
lee la propiedad de contexto
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
minimumPageTurnLength
es (ly:make-moment 1/1)
. Si
quiere inhabilitar las vueltas de página, fíjelo a algún valor
‘muy grande’.
\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 }
Al usar repeticiones de primera y segunda vez, el grabador
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
Page_turn_engraver
para inhabilitar los pasos de
página mediante el establecimiento de un valor adecuado para la
propiedad de contexto minimumRepeatLengthForPageTurn
. En
este caso el grabador 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, \pageTurn
,
\noPageTurn
y \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.
Instrucciones predefinidas
\pageTurn
,
\noPageTurn
,
\allowPageTurn
.
Véase también
Referencia de la notación:
Variables de \paper
para los saltos de línea.
Fragmentos de código: Spacing.
Advertencias y problemas conocidos
Utilice un solo grabador Page_turn_engraver
en cada
partitura. Si hay más de uno, se interferirán entre sí.
Véase también
Notation Reference: Espaciado vertical.
Fragmentos de código: Spacing.