Subject: En changeant de version… Multitude de questions !

From: Loïc Chahine <[email-masked]>
Date: Sat, 5 May 2012 16:45:24 +0200

Bonjour à tous !
Je me tiens présentement à jour de la version de développement, en 
attendant avec impatience la 2.16.

1. J’utilise plusieurs modèles et “patches” dont certains faits par 
Nicolas Sceaux. En particulier celui-ci :
http://lsr.dsi.unimi.it/LSR/Item?id=368
Tout fonctionne encore bien, sauf pour la table des matières, ou la syntaxe
\markuplines \table-of-contents
semble ne pas être du tout acceptée. Que dois-je écrire à la place ?

2. J’ai une pièce à C barré, et j’aimerais que les ligatures soient 
comme dans du C, comment faire avec la nouvelle version ? (Pas juste 
mettre la valeur de base à 4 puisqu’il peut y avoir les croches par 4). 
Je suis toujours embêté avec ça, et chaque fois que j’approche de la 
compréhension, crac, on change de version, paf, je ne comprends plus rien !

3. J’en profite pour demander un petit modèle sur comment on écrit une 
fonction de markup. J’aimerais créer un style de markups (comme je 
ferais une commande à 1 argument, ou 2, en LaTeX) pour une partition, et 
je ne sais pas comment faire. Le manuel Extending n’a pas de modèle à la 
section markups (ou j’ai mal regardé). En gros ça serait un truc qui 
mettrait du texte en centré italiques, espace avant, blablabla, mais 
j’ai surtout besoin d’un modèle pour le faire !

4. with-link ça a changé, non ? Dans mes anciennes partitions il n’en 
veut plus. J’écrivais :
\with-link #"http://creativecommons.org/licenses/by-nc-sa/2.0/" 
{http://creativecommons.org/licenses/by-nc-sa/2.0/}

5. Est-on en voie d’une amélioration en ce qui concerne le changement 
global des fontes ?

Merci d’avance pour votre aide !
Bien à vous,
L.C.

---

From: Nicolas Sceaux <[email-masked]>
Date: Sat, 5 May 2012 16:54:55 +0200

Le 5 mai 2012 à 16:45, Loïc Chahine a écrit :

> Bonjour à tous !
> Je me tiens présentement à jour de la version de développement, en attendant avec impatience la 2.16.

Bonjour Loïc,

Des réponses partielles :

> 1. J’utilise plusieurs modèles et “patches” dont certains faits par Nicolas Sceaux. En particulier celui-ci :

\markuplines est remplacé par \markuplist.

> 3. J’en profite pour demander un petit modèle sur comment on écrit une fonction de markup. J’aimerais créer un style de markups (comme je ferais une commande à 1 argument, ou 2, en LaTeX) pour une partition, et je ne sais pas comment faire. Le manuel Extending n’a pas de modèle à la section markups (ou j’ai mal regardé). En gros ça serait un truc qui mettrait du texte en centré italiques, espace avant, blablabla, mais j’ai surtout besoin d’un modèle pour le faire !

Il y a un exemple détaillé dans le manuel :
<http://lilypond.org/doc/v2.15/Documentation/extending/new-markup-command-definition#a-complete-example>

> 4. with-link ça a changé, non ? Dans mes anciennes partitions il n’en veut plus. J’écrivais :
> \with-link #"http://creativecommons.org/licenses/by-nc-sa/2.0/" {http://creativecommons.org/licenses/by-nc-sa/2.0/}

C'est \with-url qu'il faut utiliser pour ce cas (ça a toujours été le cas).
\with-link, c'est pour un lien interne à un document, vers un \label.

Nicolas

---

From: Loïc Chahine <[email-masked]>
Date: Sat, 5 May 2012 18:25:21 +0200

Merci pour ces réponses !

> \markuplines est remplacé par \markuplist.
Super, ça fonctionne !
> <http://lilypond.org/doc/v2.15/Documentation/extending/new-markup-command-definition#a-complete-example>
Alors j’ai réussi à faire un truc avec un markup simple, mais si je veux 
mettre un “vrai” markup, ça ne prend pas tout en compte. Là j’ai défini :

#(define-markup-command (lair layout props text) (markup?)

(interpret-markup layout props

#{\markup

\column {

\vspace #0.1

\fill-line {

\null

\line { $text }

\null

}

}

#}))
Ensuite je fais \markup \lair "Sur l’air « Frère Andouillard »"
Mais si je veux faire \markup \lair { "Air de" \italic "Pirithoüs" }, je 
n’ai que "Air de" qui s’affiche.

> C'est \with-url qu'il faut utiliser pour ce cas (ça a toujours été le 
> cas). \with-link, c'est pour un lien interne à un document, vers un 
> \label.
J’en prends bonne note.
L.

---

From: Loïc Chahine <[email-masked]>
Date: Sat, 5 May 2012 19:13:30 +0200

Allez, tant que j’y suis, encore une question !
Comment, en définissant un markup, fait on un équivalent de \nobreak ? 
Mon style de markup s’apparente en effet à des titres, et là j’ai un 
changement de page juste après, et donc avant le premier système 
concerné, c’est très laid. Bien sûr, je pourrai faire, en l’absence de 
solution, un \pageBreak avant, mais une injonction à ne pas couper 
serait encore mieux !
L.C.

---

From: Nicolas Sceaux <[email-masked]>
Date: Sat, 5 May 2012 20:07:33 +0200

Le 5 mai 2012 à 19:13, Loïc Chahine a écrit :

> Comment, en définissant un markup, fait on un équivalent de \nobreak ? Mon style de markup s’apparente en effet à des titres, et là j’ai un changement de page juste après, et donc avant le premier système concerné, c’est très laid. Bien sûr, je pourrai faire, en l’absence de solution, un \pageBreak avant, mais une injonction à ne pas couper serait encore mieux !
> L.C.

Il faut mettre un \noPageBreak entre ton titre et la suite.

Nicolas

---

From: Loïc Chahine <[email-masked]>
Date: Sun, 6 May 2012 10:54:55 +0200

> Il faut mettre un \noPageBreak entre ton titre et la suite.
Merci ! Mais il faut pas le mettre dans le markup, et du coup je sais 
pas où le mettre dans ma fonction…

Et la question de savoir comment je peux mettre un “vrai” markup et pas 
une simple string, reste ouverte aussi… Comme je disais : si je veux 
faire \markup \lair { "Air de" \italic "Pirithoüs" }, je n’ai que "Air 
de" qui s’affiche.

Je rappelle la fonction écrite :
#(define-markup-command (lair layout props text) (markup?)

#{\markup

\column {

\vspace #0.1

\fill-line {

\null

\line { $text }

\null

}

}

#}))

---

From: Nicolas Sceaux <[email-masked]>
Date: Sun, 6 May 2012 11:35:33 +0200

Le 6 mai 2012 à 10:54, Loïc Chahine a écrit :

> Merci ! Mais il faut pas le mettre dans le markup, et du coup je sais pas où le mettre dans ma fonction…

On ne peut pas le mettre dans la commande de markup.  Ca doit être mis au
top-level.

\markup\mon-titre { blablabla }
\noPageBreak
\score {

}

Il est possible de faire une fonction musicale, qui placera le titre *et* le
\noPageBreak.  Par exemple :

#(define-markup-command (lair layout props text) (markup?)
    (interpret-markup
     layout props
     #{\markup\column { \vspace #0.1 \fill-line { \line { $text } } } #}))

monTitre =
#(define-music-function (parser location title) (markup?)
    ;; ajout du titre au toplevel
    (add-text parser #{\markup\lair $title #})
    ;; ajout du \noPageBreak au top-level
    (add-music parser
               (make-music 'Music
 	                  'page-marker #t
 	                  'page-break-permission 'forbid))
    ;; la fonction musical doit toujours retourner
    ;; de la musique : on retourne une musique vide
    (make-music 'Music 'void #t))

\monTitre\markup { "Air de" \italic "Pirithoüs" }
{ c' }

> Et la question de savoir comment je peux mettre un “vrai” markup et pas une simple string, reste ouverte aussi… Comme je disais : si je veux faire \markup \lair { "Air de" \italic "Pirithoüs" }, je n’ai que "Air de" qui s’affiche.

Quelque explications : \lair est une commande qui s'applique sur un \markup.
{ "Air de" \italic "Pirithoüs" } n'est pas un markup, mais une markup-list,
composée des markups "Air de" et \italic "Pirithoüs".
Ici, \lair est "distribué" à chacun des markups.  Autrement dit,
   \markup \lair { "Air de" \italic "Pirithoüs" }
est équivalent à :
   \markup { \lair "Air de" \lair \italic "Pirithoüs" }
Le résultat de \lair "Air de" est une ligne qui prend toute la largeur de la
page, avec "Air de" au milieu.  Idem pour Pirithoüs.  Et le résultat, c'est
dont deux lignes, mises bout à bout.  Par conséquent, Pirithoüs se retrouve
en dehors de la page, sur la droite de "Air de".

Si tu veux que \lair soit appliqué une fois exactement à
   { "Air de" \italic "Pirithoüs" }
alors il faut faire en sorte que ce dernier devienne un markup, et non un
markup-list, en utilisant \line :

\markup\lair\line { "Air de" \italic "Pirithoüs" }

Nicolas