\break uniquement manuels

Bonjour à toute la troupe !

Je cherche, avec 2.13.51, à interdire à Lilypond les break automatiques, et donc à lui imposer le \break manuels (je veux garder la mise en page de l'original).
Dans la plupart des cas, \break suffit, mais assez souvent quand même, il insère des coupures auto qui m'obligent à abuser du \noBreak.

Comment faire pour interdire les break par défaut, de façon à ce qu'ils se fassent quand je le décide ?

J'ai lu dans la doc un |page-break-permission|| |mais je ne sais pas l'utiliser (dans les backend properties), et je ne suis pas certain qu'il faille l'utiliser.
Merci d'avance pour vos lumières !

JMArc

La solution est encore une fois dans l'énorme doc de Lilypond !
http://lilypond.org/doc/v2.13/Documentation/notation/explicit-breaks

Bertrand

Bonjour à toute la troupe !

Je cherche, avec 2.13.51, à interdire à Lilypond les break automatiques, et donc à lui imposer le \break manuels (je veux garder la mise en page de l'original).
Dans la plupart des cas, \break suffit, mais assez souvent quand même, il insère des coupures auto qui m'obligent à abuser du \noBreak.

Comment faire pour interdire les break par défaut, de façon à ce qu'ils se fassent quand je le décide ?

Il n'y a pas à ma connaissance de moyen d'interdire les breaks par défaut.
On pourrait s'en sortir avec une bidouille du type :

pipeSymbol =
#(make-music
  'SequentialMusic
  'elements (list (make-music (quote BarCheck))
                  (make-music
                   'EventChord
                   'elements (list (make-music 'LineBreakEvent
                                               'break-permission '())))))

\relative c' <<
  \repeat unfold 40 { c1 | }
  \repeat unfold 2 { s1*16\break }

Explication : on change ici l'effet du symbole |, qui par défaut signifie :
bar check. On ajoute la signification suivante : pas de saut de ligne à
cet endroit. Ainsi, à chaque fois qu'un | est placé à la fin d'une mesure,
il n'y aura pas de saut de ligne après celle-ci, sauf indication contraire.

Nicolas

···

Le 13 avr. 2011 à 19:22, Éditions IN NOMINE a écrit :

Lesquelles connaissances étaient insuffisantes !
Voir le post de Bertrand...

···

Le 13 avr. 2011 à 19:43, Nicolas Sceaux a écrit :

Le 13 avr. 2011 à 19:22, Éditions IN NOMINE a écrit :

Bonjour à toute la troupe !

Je cherche, avec 2.13.51, à interdire à Lilypond les break automatiques, et donc à lui imposer le \break manuels (je veux garder la mise en page de l'original).
Dans la plupart des cas, \break suffit, mais assez souvent quand même, il insère des coupures auto qui m'obligent à abuser du \noBreak.

Comment faire pour interdire les break par défaut, de façon à ce qu'ils se fassent quand je le décide ?

Il n'y a pas à ma connaissance de moyen d'interdire les breaks par défaut.

Merci à Bertrand et Nicolas pour cette réponse rapide qui résout mon pb !

J'avais aperçu ici <LilyPond program-reference: 3.3 User backend properties; la propriété "line-break-permission". Mais à chaque fois, je suis incapable de construire le schéma \override NonMusicalPaperColumn #'line-break-permission = ##f.

En partant de NonMusicalPaperColumn <LilyPond program-reference: 3.1.66 NonMusicalPaperColumn, je retrouve cette propriété. Mais comment revenir au Grob à partir de la propriété, sans être ceinture noire de Lilypond ?

Encore merci !
JMarc

Bertrand Bordage a écrit :

···

La solution est encore une fois dans l'énorme doc de Lilypond !
LilyPond Notation Reference: 4.3.6 Explicit breaks

Bertrand

Tu cherches à écrire quelque chose du type :

  \override Context . Grob #'propriété = #valeur

La propriété est connue : line-break-permission.
En partant de la dernière page que tu cites, sur NonMusicalPaperColumn,
tu as déjà des infos intéressantes : Tu es dans le chapitre "All layout
objects", dans le jargon c'est ce qu'on appelle les grobs, donc le grob
tu l'as trouvé : NonMusicalPaperColumn. Reste à trouver que contexte le
crée.

Sur cette même page, on lit :
  NonMusicalPaperColumn objects are created by: Paper_column_engraver.
On suit le lien vers l'engraver, pour voir dans quels contextes il est
instancié. On arrive sur cette page :
  <LilyPond program-reference: 2.2.74 Paper_column_engraver;
où on lit :
  Paper_column_engraver is part of the following context(s): Score.
On a ainsi trouvé le contexte d'où sont créés les NonMusicalPaperColumn :
il s'agit de Score.

On peut donc maintenant tous les éléments pou construire le tweak en entier :
  \override Score.NonMusicalPaperColumn #'line-break-permission = ##f

Nicolas

···

Le 14 avr. 2011 à 12:02, Éditions IN NOMINE a écrit :

Merci à Bertrand et Nicolas pour cette réponse rapide qui résout mon pb !

J'avais aperçu ici <LilyPond program-reference: 3.3 User backend properties; la propriété "line-break-permission". Mais à chaque fois, je suis incapable de construire le schéma \override NonMusicalPaperColumn #'line-break-permission = ##f.

En partant de NonMusicalPaperColumn <LilyPond program-reference: 3.1.66 NonMusicalPaperColumn, je retrouve cette propriété. Mais comment revenir au Grob à partir de la propriété, sans être ceinture noire de Lilypond ?

Voilà comment je fais la plupart du temps :
Dans le manuel des propriétés internes, partie 3.1, il y a la liste de tous les objets graphiques (Grobs).
Il s'agit de trouver celui auquel on veut appliquer un changement. C'est souvent assez facile. Si on veut modifier un glissando, c'est le grob "Glissando".
Quand on ouvre la page du grob, on voit une série de propriétés avec leurs descriptions et valeurs par défaut. Il y a tout un tas de propriétés "classiques" comme la direction, le self-alignment-X, le stencil, etc. Celles-ci se maîtrisent assez vite, car on en retrouve des exemples partout dans la doc et sur LSR.

Mais il arrive que ce soit un peu plus compliqué, comme dans le cas auquel on est confrontés tout de suite.
Pour les cas moins parlant, je vais dans le manuel de notation. En bas de la plupart des pages il y a "Voir aussi" qui contient souvent un "Référence des propriétés internes" qui renvoie au Grob voulu (s'il existe).

Bertrand

PS : Grillé par Master Nicolas...

Nicolas Sceaux a écrit :

Merci à Bertrand et Nicolas pour cette réponse rapide qui résout mon pb !

J'avais aperçu ici <LilyPond program-reference: 3.3 User backend properties; la propriété "line-break-permission". Mais à chaque fois, je suis incapable de construire le schéma \override NonMusicalPaperColumn #'line-break-permission = ##f.

En partant de NonMusicalPaperColumn <LilyPond program-reference: 3.1.66 NonMusicalPaperColumn, je retrouve cette propriété. Mais comment revenir au Grob à partir de la propriété, sans être ceinture noire de Lilypond ?
    
Tu cherches à écrire quelque chose du type :

  \override Context . Grob #'propriété = #valeur

La propriété est connue : line-break-permission.
En partant de la dernière page que tu cites, sur NonMusicalPaperColumn,
  

Oui, dans ce sens là, j'y arrive assez souvent, mis à part que je n'aurais jamais eu l'idée d'aller chercher ce grob :stuck_out_tongue:

tu as déjà des infos intéressantes : Tu es dans le chapitre "All layout
objects", dans le jargon c'est ce qu'on appelle les grobs, donc le grob
tu l'as trouvé : NonMusicalPaperColumn. Reste à trouver que contexte le
crée.

Sur cette même page, on lit :
  NonMusicalPaperColumn objects are created by: Paper_column_engraver.
On suit le lien vers l'engraver, pour voir dans quels contextes il est
instancié. On arrive sur cette page :
  <LilyPond program-reference: 2.2.74 Paper_column_engraver;
où on lit :
  Paper_column_engraver is part of the following context(s): Score.
On a ainsi trouvé le contexte d'où sont créés les NonMusicalPaperColumn :
il s'agit de Score.
  

ah ça je m'en souvenais plus : merci pour le rappel !

On peut donc maintenant tous les éléments pou construire le tweak en entier :
  \override Score.NonMusicalPaperColumn #'line-break-permission = ##f

Nicolas

OK, ça me fait de bons rappels pour la méthode DANS CE SENS (à partir du GROB).
Dites-donc, ça ne vaudrait pas le coup de mettre ça dans la doc en tête du pavé Références Internes ? A moins que ça ne soit déjà fait qque part dans la bible Notation...

Merci !
JMarc

···

Le 14 avr. 2011 à 12:02, Éditions IN NOMINE a écrit :

Bertrand Bordage a écrit :

Voilà comment je fais la plupart du temps :
Dans le manuel des propriétés internes, partie 3.1, il y a la liste de tous les objets graphiques (Grobs).
Il s'agit de trouver celui auquel on veut appliquer un changement. C'est souvent assez facile. Si on veut modifier un glissando, c'est le grob "Glissando".
Quand on ouvre la page du grob, on voit une série de propriétés avec leurs descriptions et valeurs par défaut. Il y a tout un tas de propriétés "classiques" comme la direction, le self-alignment-X, le stencil, etc. Celles-ci se maîtrisent assez vite, car on en retrouve des exemples partout dans la doc et sur LSR.

OK pour ce sens là, le plus répandu.

Mais il arrive que ce soit un peu plus compliqué, comme dans le cas auquel on est confrontés tout de suite.

oh yes >:o

Pour les cas moins parlant, je vais dans le manuel de notation. En bas de la plupart des pages il y a "Voir aussi" qui contient souvent un "Référence des propriétés internes" qui renvoie au Grob voulu (s'il existe).

Alors dans ce cas, je charche \break.
Je tombe sur le § 4.3.1 <http://lilypond.org/doc/v2.12/Documentation/user/lilypond/Line-breaking&gt;\.
Qui m'indique le lien vers les références internes : LilyPond program-reference: 1.1.31 LineBreakEvent
et en creusant un peu partout, je tombe sur LilyPond program-reference: 2.2.74 Paper_column_engraver

qui m'indique NonMusicalPaperColumn.
Et je retombe sur mes pattes, après quelques salto arrières !

Bon, dans ce sens, propriété-->grob, c'est un peu la patinoire, mais bon, je retenterai la prochaine fois.
Encore merci !

JMarc

···

Bertrand

PS : Grillé par Master Nicolas...

Ah zut, j'avais mal compris ton message.
Alors, quand on a seulement le nom de la propriété (à partir de la page
qui liste toutes les propriétés), voici comment je fais pour retrouver les
grobs : j'ouvre le fichier scm/define-grobs.scm, et je cherche cette
propriété. Pour line-break-permission, on lit :

    (NonMusicalPaperColumn <------- Grob
     . (
  (allow-loose-spacing . #t)
  (axes . (,X))
  (before-line-breaking . ,ly:paper-column::before-line-breaking)
  (full-measure-extra-space . 1.0)
  (horizontal-skylines . ,ly:separation-item::calc-skylines)
  ;; sufficient padding to prevent ledger lines from moving over/under
  (skyline-vertical-padding . 0.6)
  ;; (stencil . ,ly:paper-column::print)

  (keep-inside-line . #t)
  (line-break-permission . allow) <------ propriété
  (non-musical . #t)
  (page-break-permission . allow)

ici on retrouve le nom du grob, un cran plus haut : NonMusicalPaperColumn.
Ca se complique quand plusieurs grobs utilisent cette propriété, mais en
général d'après le nom des grobs on peut déterminer lequel est le bon.

···

Le 14 avr. 2011 à 12:27, Éditions IN NOMINE a écrit :

Oui, dans ce sens là, j'y arrive assez souvent, mis à part que je n'aurais jamais eu l'idée d'aller chercher ce grob :stuck_out_tongue:

Bravo ! Avec tout ça, je suis paré !
Merci pour ces précieux "trucs" !
JMarc

Nicolas Sceaux a écrit :

···

Le 14 avr. 2011 à 12:27, Éditions IN NOMINE a écrit :

Oui, dans ce sens là, j'y arrive assez souvent, mis à part que je n'aurais jamais eu l'idée d'aller chercher ce grob :stuck_out_tongue:
    
Ah zut, j'avais mal compris ton message.
Alors, quand on a seulement le nom de la propriété (à partir de la page
qui liste toutes les propriétés), voici comment je fais pour retrouver les
grobs : j'ouvre le fichier scm/define-grobs.scm, et je cherche cette
propriété. Pour line-break-permission, on lit :

    (NonMusicalPaperColumn <------- Grob
     . (
  (allow-loose-spacing . #t)
  (axes . (,X))
  (before-line-breaking . ,ly:paper-column::before-line-breaking)
  (full-measure-extra-space . 1.0)
  (horizontal-skylines . ,ly:separation-item::calc-skylines)
  ;; sufficient padding to prevent ledger lines from moving over/under
  (skyline-vertical-padding . 0.6)
  ;; (stencil . ,ly:paper-column::print)

  (keep-inside-line . #t)
  (line-break-permission . allow) <------ propriété
  (non-musical . #t)
  (page-break-permission . allow)

ici on retrouve le nom du grob, un cran plus haut : NonMusicalPaperColumn.
Ca se complique quand plusieurs grobs utilisent cette propriété, mais en
général d'après le nom des grobs on peut déterminer lequel est le bon.