Subject: SCM - d'une chaîne de caractères à une liste de markups

From: Bertrand Bordage <[email-masked]>
Date: Mon, 13 Dec 2010 12:42:50 +0100

Bonjour à tous et toutes !

Voilà mon souci : j'ai commencé à faire une commande \french qui permet
d'ajouter automatiquement les règles de typographie française à LilyPond.
En effet, ajouter des espaces fines insécables, des insécables et des
guillemets typographiques pour avoir un rendu harmonieux peut vite devenir
fastidieux.

Tout marche bien et, comme dirait Cécile Huneau, j'ai rempli des pages juste
pour le plaisir de voir que ça fonctionnait à merveille :D
Seulement, le hic, c'est que j'ai bien réussi à faire une commande qui
s'applique à une chaîne de caractères, mais l'idéal, ce serait qu'elle
puisse s'appliquer à une liste de markups.
Ainsi, au lieu de devoir taper une markup par ligne avec la syntaxe

\markup \french #"Une pauvre petite ligne d'écrite, peu pratique!"

on pourrait écrire

\markuplines \french { Toute une page de texte écrite au kilomètre sans
avoir à se soucier de quoi que ce soit! Façon LaTeX quoi! Quand on a pensé à
faire \usepackage[french]{babel}... }

Comme je suis nul en Sheme pour l'instant, j'ai erré sans trouvé mon
bonheur, envisageant même une boucle "for" peu élégante pour traiter les
markups les uns après les autres.
Mais déjà, je n'ai pas trouvé comment convertir une markup en string. Je
sais... j'ai honte.

A part ça, pensez-vous qu'il serait utile d'intégrer cette fonction à
LilyPond quand elle sera au point (en faisant au passage les équivalents
pour d'autres pays) ?

Merci !
Bertrand

---

From: Cécile Huneau <[email-masked]>
Date: Mon, 13 Dec 2010 15:05:12 +0100

Bonjour Bertrand !
Je me sens forcée de répondre :-p
Non ce n'est pas vrai : elle a l'air prometteuse ta petite fonction !
Loin de moi l'idée d'apporter des solutions, cela voudrait dire que je 
commence à me débrouiller en scheme... et ce n'est pas le cas.
Mais j'apporte quand même ma vision extérieure : si tu as en entrée des 
strings, est-ce que cela veut dire que les commandes markup sont 
ignorées ? Je veux dire : si j'ai un magnifique texte de 80 pages... 
avec de temps en temps un mot en italique, ça marche ?
Et pour l'idée d'écrire au kilomètre, as-tu été regarder du côté des 
fonctions \justify et \wordwrap ? Il y a peut-être quelque chose à 
bricoler avec ça.
A+
Cécile

Hors sujet : à propos d'ajouts dans le code lilypond, si personne ne 
voit passer d'ici la fin de la semaine la mini correction de bug (issue 
514) que j'ai faite il y a plus d'un mois frappez-moi !

Le 13/12/2010 12:42, Bertrand Bordage a écrit :
> Voilà mon souci : j'ai commencé à faire une commande \french qui 
> permet d'ajouter automatiquement les règles de typographie française à 
> LilyPond.
> guillemets typographiques pour avoir un rendu harmonieux peut vite 
> devenir fastidieux.
>
> Tout marche bien et, comme dirait Cécile Huneau, j'ai rempli des pages 
> juste pour le plaisir de voir que ça fonctionnait à merveille :D
> \markuplines \french { Toute une page de texte écrite au kilomètre 
> sans avoir à se soucier de quoi que ce soit! Façon LaTeX quoi! Quand 
> on a pensé à faire \usepackage[french]{babel}... }
>
> bonheur, envisageant même une boucle "for" peu élégante pour traiter 
> les markups les uns après les autres.
> Mais déjà, je n'ai pas trouvé comment convertir une markup en string. 
> Je sais... j'ai honte.
>
> LilyPond quand elle sera au point (en faisant au passage les 
> équivalents pour d'autres pays) ?
>
> Merci !
> Bertrand
>

---

From: Bertrand Bordage <[email-masked]>
Date: Mon, 13 Dec 2010 15:15:25 +0100

Le 13 décembre 2010 15:05, Cécile Huneau <[email-masked]> a écrit
:
> strings, est-ce que cela veut dire que les commandes markup sont ignorées ?
> Je veux dire : si j'ai un magnifique texte de 80 pages... avec de temps en
> temps un mot en italique, ça marche ?
>

Justement, non (pour l'instant). le seul moyen de modifier la police c'est
de mettre une commande avant le \french. Comme :

\markup \bold \french #"blablabla"

> fonctions \justify et \wordwrap ? Il y a peut-être quelque chose à bricoler
> avec ça.
>

J'ai regardé dans la source, mais je ne trouve pas comment les commandes
\justified-lines et \wordwrap-lines fonctionnent. Dans
define-markup-commands.scm, il y a par exemple :

(define-markup-list-command (justified-lines layout props args)
  (markup-list?)
  (space-lines baseline-skip
               (interpret-markup-list layout props
                                      (make-wordwrap-internal-markup-list #t
args))))

seulement je ne trouve pas d'où ça sort ce
make-wordwrap-internal-markup-list. Et je pense que comprendre son
fonctionnement pourrait m'aider.

A moins que tu ne fasses référence à \justify et \wordwrap qui sont des
commandes de markup.
Mais ça ne devrait pas m'aider je crains :(

---

From: Valentin Villenave <[email-masked]>
Date: Mon, 13 Dec 2010 15:28:15 +0100

> fonctionnement pourrait m'aider.

C'est par ici :
http://git.savannah.gnu.org/gitweb/?p=lilypond.git;a=blob;f=scm/define-markup-commands.scm#l1110

Cordialement,
V.

---

From: Bertrand Bordage <[email-masked]>
Date: Mon, 13 Dec 2010 15:36:07 +0100

Merci !
C'était "juste" à côté en fait... Bon, j'm'en va potasser ça !

---

From: Bertrand Bordage <[email-masked]>
Date: Tue, 14 Dec 2010 15:39:22 +0100

Bonjour à tous,

J'ai un peu amélioré ma p'tite bibliothèque, mais je ne vois toujours pas
comment mettre en entrée un markup ou markup-list au lieu d'un string.
Je crains que ce ne soit pas possible :(
Si quelqu'un a une idée pour le faire...

A part ça, avez-vous d'autres suggestions pour franciser LilyPond ?
Quelque chose du même ordre que modifier le titre de la table des
matières... Ou des règles typographiques auxquelles je n'aurai pas pensé.

Pour les règles, je me suis basé là-dessus :
http://www.ebooksgratuits.com/guides/topo_typo.htm
Je compte d'ailleurs rajouter d'ici peu les 1er, 2e, etc avec les er, e, etc
en exposant.

Bertrand.