[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Sauts de ligne ] | [Plus haut: Sauts ] | [ Saut de page manuel > ] |
4.3.2 Sauts de page
Cette section présente les différentes méthodes de gestion des sauts de page, ainsi que les moyens de les modifier.
Saut de page manuel | ||
Optimisation des sauts de page | ||
Minimisation des sauts de page | ||
Présentation en page continue | ||
Présentation en ligne continue | ||
Présentation en rouleau | ||
Optimisation des tournes |
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Sauts de page ] | [Plus haut: Sauts de page ] | [ Optimisation des sauts de page > ] |
Saut de page manuel
La gestion automatique des sauts de page se contrôle à l’aide des
commandes \pageBreak
et \noPageBreak
. Ces commandes
fonctionnent de manière analogue à \break
et \noBreak
pour
les sauts de ligne et se placent donc au moment d’une barre de mesure.
Elles permettent de forcer, ou d’interdire, un saut de page à la
prochaine barre de mesure. Comme on peut s’y attendre,
\pageBreak
force aussi le saut de ligne.
Les commandes \pageBreak
et \noPageBreak
peuvent se
trouver à des niveaux supérieurs, entre deux partitions ou
markups de premier rang.
Au sein même d’une pièce, les sauts de page automatiques sont inhibés
dans la musique encadrée par les commandes \autoPageBreaksOff
et
\autoPageBreaksOn
. Les sauts de page manuels ne sont pas
affectés par ces commandes.
Tout comme ragged-right
et ragged-last
qui permettent de
gérer la répartition horizontale, LilyPond dispose de commutateurs
équivalents au niveau de la verticalité. ragged-bottom
, une fois
activé, empèchera les systmèes de se répartir sur la page. Quant à
ragged-last-bottom
(valorisé à #t
par défaut), il laissera
un espace vide en dernière page, y compris pour chaque \bookpart
.
Pour de plus amples détails, reportez-vous à
Variables d’espacement vertical fixe.
Les sauts de page sont générés par la fonction page-breaking
.
LilyPond dispose de plusieurs algorithmes en la matière :
ly:optimal-breaking
, ly:page-turn-breaking
et
ly:minimal-breaking
. C’est ly:optimal-breaking
qui est
activé par défaut, mais rien ne vous empêche d’en changer, par
l’intermédiaire du bloc \paper
:
\paper { page-breaking = #ly:page-turn-breaking }
Lorsqu’un ouvrage contient plusieurs partitions et un certain nombre de
pages, la gestion des sauts de page finit par devenir très gourmande,
tant au niveau du processeur que de la mémoire. Vous pouvez cependant
alléger la charge en recourant à des blocs \bookpart
afin de
sectionner l’ouvrage que vous traitez ; les sauts de page seront
alors gérés individuellement au niveau de chacune des parties. Par
ailleurs, cela vous autorisera une gestion différente selon les
sections.
\bookpart { \header { subtitle = "Préface" } \paper { %% Pour une partie constituée principalement de texte %% ly:minimal-breaking est plus judicieux. page-breaking = #ly:minimal-breaking } \markup { … } … } \bookpart { %% Cette partie étant purement musicale, %% retour au style par défaut (optimal-breaking). \header { subtitle = "Premier mouvement" } \score { … } … }
Commandes prédéfinies
\pageBreak
,
\noPageBreak
,
\autoPageBreaksOn
,
\autoPageBreaksOff
.
Voir aussi
Manuel de notation : Variables de gestion des sauts de page.
Morceaux choisis : Espacements.
Problèmes connus et avertissements
Le préfixe \once
est ineffectif en ce qui concerne les commandes
\autoPageBreaksOn
et \autoPageBreaksOff
. Si le
positionnement automatique des sauts de page est désactivé et qu’il est
réactivé pour permettre un saut de page, il doit le rester pendant
quelques mesures (le nombre précis de mesures dépendant de la pièce)
avant d’être à nouveau désactivé, autrement l’opportunité de passer à la
page suivante ne sera pas saisie.
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Saut de page manuel ] | [Plus haut: Sauts de page ] | [ Minimisation des sauts de page > ] |
Optimisation des sauts de page
LilyPond, pour déterminer où placer un saut de page, utilise par défaut
la fonction ly:optimal-breaking
. Celle-ci tend à trouver une
rupture qui évite d’obtenir à la fois une page trop dense ou exagérément
aérée. Contrairement à la fonction ly:page-turn-breaking
, elle
n’a aucune notion de ce qu’est une « tourne ».
Voir aussi
Morceaux choisis : Espacements.
Minimisation des sauts de page
La fonction ly:minimal-breaking
est celle qui réalise le moins de
calculs pour positionner les sauts de page. Elle mettra le plus de
systèmes possible sur une page avant de passer à la suivante. On peut
donc la préférer lorsque la partition s’étend sur beaucoup de pages ou
lorsque les autres fonctions de gestion des sauts de page ralentissent
nettement le traitement, sont trop gourmandes en mémoire ou qu’il y a
beaucoup de texte. Il suffit de la mentionner au sein du bloc
\paper
:
\paper { page-breaking = #ly:minimal-breaking }
Voir aussi
Morceaux choisis : Espacements.
Présentation en page continue
La fonction ly:one-page-breaking
constitue un algorithme de
calcul des sauts de page particulier en ceci que la hauteur de page sera
automatiquement ajustée à la longueur de la partition, de telle sorte
que toute la musique tienne sur une seule page. La variable
paper-height
du bloc \paper
est ignorée, mais les autres
réglages restent disponibles. En particulier, l’espacement entre le
dernier système (ou un markup de premier niveau) et le pied de
page est réglable à l’aide de la variable last-bottom-spacing
du bloc \paper
. La largeur de page n’est, par défaut, pas
modifiée ; ceci peut s’ajuster à l’aide de la variable
paper-width
du bloc \paper
.
Problèmes connus et avertissements
ly:one-page-breaking
est à ce jour incompatible avec
l’utilisation de \bookpart
.
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Présentation en page continue ] | [Plus haut: Sauts de page ] | [ Présentation en rouleau > ] |
Présentation en ligne continue
La fonction ly:one-line-breaking
constitue un algorithme de
calcul des sauts de page particulier en ceci que chaque partition fait
l’objet d’une page unique, d’une seule ligne. Cette fonctionnalité
s’affranchit de l’impression des titres et marges ; seule la partition
est affichée.
La largeur de page est ajustée de telle sorte que la pièce la plus
longue tienne sur une seule ligne. En particulier, les variables
paper-width
, line-width
et indent
du bloc
\paper
seront ignorées ; les left-margin
et
right-margin
seront honorées. La hauteur de page ne sera pas
modifiée.
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Présentation en ligne continue ] | [Plus haut: Sauts de page ] | [ Optimisation des tournes > ] |
Présentation en rouleau
La fonction ly:one-line-auto-height-breaking
opère comme
ly:one-line-breaking
, à ceci près que la hauteur de page s’adapte
automatiquement à la hauteur de la musique. Dans les faits, la variable
paper-height
du bloc \paper
s’ajuste de façon à englober
la hauteur de la partition la plus étendue, plus les top-margin
et bottom-margin
.
L’affectation d’une valeur à top-system-spacing
influencera le
positionnement vertical de la musique. Sa désactivation – valorisation
à #f
au sein du bloc \paper
– aura pour effet de
simplement placer la musique entre les marges supérieure et inférieure.
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Présentation en rouleau ] | [Plus haut: Sauts de page ] | [ Espacement vertical > ] |
Optimisation des tournes
Aboutir à une configuration des sauts de page de telle sorte que les
pages de droite se terminent toujours par un silence devient souvent une
nécessité. En effet, l’exécutant pourra alors tourner la page sans
risquer de manquer des notes. La fonction ly:page-turn-breaking
tend à trouver une rupture qui évite d’obtenir à la fois une page trop
dense ou exagérément aérée, tout en tenant compte du fait qu’une tourne
ne saurait intervenir qu’à certains endroits.
L’utilisation de cette fonction se fait en deux étapes. Il vous faut
tout d’abord l’activer au sein du bloc \paper
comme indiqué à la
rubrique Sauts de page. Vous devrez, dans un deuxième temps,
informer la fonction des endroits où les sauts de page sont permis.
Cette deuxième étape se réalise de deux manières différentes. Vous
pouvez spécifier manuellement chaque tourne potentielle en insérant un
\allowPageTurn
à l’endroit approprié de votre fichier source.
Toutefois, cette option peut vite se révéler fastidieuse selon l’ampleur
de l’œuvre. Vous pouvez alors recourir au Page_turn_engraver
que
vous mentionnerez dans un contexte de voix ou de portée. Ce graveur de
tournes recherchera dans le contexte en question les passages sans note.
Notez bien qu’il ne recherche pas des silences, mais l’absence de
notes ; autrement dit, il ne restera pas inactif dans le cadre
d’une portée polyphonique dont l’une des parties contiendrait des
silences. Lorsqu’il rencontre un fragment suffisamment long ne
contenant aucune note, il insère un \allowPageTurn
à la barre
terminant ce fragment, à moins qu’il ne rencontre en chemin une
« barre spéciale » – telle une double barre – auquel cas il y
déposera le \allowPageTurn
.
Le Page_turn_engraver
examine la propriété de contexte
minimumPageTurnLength
pour déterminer quelle doit être la
longueur d’un fragment sans note avant une tourne. La valeur par
défaut de minimumPageTurnLength
est
(ly:make-moment 1 1)
, soit une ronde, et s’ajuste de
la manière suivante :
\new Staff \with { \consists Page_turn_engraver } { a4 b c d | R1 | % une tourne peut se placer ici a4 b c d | \set Staff.minimumPageTurnLength = #(ly:make-moment 5/2) R1 | % il ne peut pas y avoir de tourne ici a4 b r2 | R1*2 | % une tourne peut se placer ici a1 }
Le Page_turn_engraver
tient compte des reprises. C’est pourquoi
il ne permettra une tourne que dans le cas où il y aura suffisamment de
temps au début et à la fin de la reprise pour que l’exécutant puisse
aisément revenir à la page précédente. Le Page_turn_engraver
est
même capable d’interdire un tourne dans le cas d’une reprise de courte
durée, ajustable au travers de la propriété de contexte
minimumRepeatLengthForPageTurn
.
Les commandes de tourne – \pageTurn
, \noPageTurn
et
\allowPageTurn
– peuvent s’utiliser à des niveaux supérieurs,
entre des blocs \score
ou des markups de haut niveau.
Commandes prédéfinies
\pageTurn
,
\noPageTurn
,
\allowPageTurn
.
Voir aussi
Manuel de notation : Variables de gestion des sauts de ligne.
Morceaux choisis : Espacements.
Problèmes connus et avertissements
Une partition ne devrait contenir qu’une seule instance du
Page_turn_engraver
, au risque de les voir se contredire.
[ << Gestion de l'espace ] | [Racine][Table des matières][Index] | [ Modification des réglages prédéfinis >> ] |
[ < Présentation en rouleau ] | [Plus haut: Sauts de page ] | [ Espacement vertical > ] |