Subject: \break uniquement manuels

From: Éditions IN NOMINE<[email-masked]>
Date: Wed, 13 Apr 2011 19:22:38 +0200

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

---

From: Bertrand Bordage <[email-masked]>
Date: Wed, 13 Apr 2011 19:32:42 +0200

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

Bertrand

---

From: Nicolas Sceaux <[email-masked]>
Date: Wed, 13 Apr 2011 19:43:29 +0200

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

> 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

---

From: Nicolas Sceaux <[email-masked]>
Date: Wed, 13 Apr 2011 19:45:09 +0200

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

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

---

From: Éditions IN NOMINE<[email-masked]>
Date: Thu, 14 Apr 2011 12:02:42 +0200

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

J'avais aperçu ici 
<http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/User-backend-properties#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 
<http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/NonMusicalPaperColumn#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

---

From: Nicolas Sceaux <[email-masked]>
Date: Thu, 14 Apr 2011 12:18:35 +0200

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

> J'avais aperçu ici <http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/User-backend-properties#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 <http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/NonMusicalPaperColumn#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,
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 :
  <http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/Paper_005fcolumn_005fengraver#Paper_005fcolumn_005fengraver>
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

---

From: Bertrand Bordage <[email-masked]>
Date: Thu, 14 Apr 2011 12:22:37 +0200

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

---

From: Éditions IN NOMINE<[email-masked]>
Date: Thu, 14 Apr 2011 12:27:42 +0200

> 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 :-P
> On a ainsi trouvé le contexte d'où sont créés les NonMusicalPaperColumn :
ah ça je m'en souvenais plus : merci pour le rappel !
>   \override Score.NonMusicalPaperColumn #'line-break-permission = ##f
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

---

From: Éditions IN NOMINE<[email-masked]>
Date: Thu, 14 Apr 2011 12:31:52 +0200

Bertrand Bordage a écrit :
> 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>.
Qui m'indique le lien vers les références internes : 
http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/LineBreakEvent#LineBreakEvent
et en creusant un peu partout, je tombe sur 
http://lilypond.org/doc/v2.12/Documentation/user/lilypond-internals/Paper_005fcolumn_005fengraver#Paper_005fcolumn_005fengraver

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

---

From: Nicolas Sceaux <[email-masked]>
Date: Thu, 14 Apr 2011 12:41:59 +0200

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 :-P

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.

---

From: Éditions IN NOMINE<[email-masked]>
Date: Thu, 14 Apr 2011 13:46:54 +0200

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