En changeant de version… Multitude de questions !

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.

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

\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 :
<Extending LilyPond: 2.5.3 New markup command definition;

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/&quot; {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

···

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

Merci pour ces réponses !

\markuplines est remplacé par \markuplist.

Super, ça fonctionne !

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

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.

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.

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

Nicolas

···

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

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.

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?)

(interpret-markup layout props

#{\markup

\column {

\vspace #0.1

\fill-line {

\null

\line { $text }

\null

}

}

#}))

···

Le 05/05/12 20:07, Nicolas Sceaux a écrit :

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

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.

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

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.

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…

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

···

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

Le 05/05/12 20:07, Nicolas Sceaux a écrit :

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