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

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

french.ly (4.48 KB)

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 :

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

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 ?

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"

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.

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

···

Le 13 décembre 2010 15:05, Cécile Huneau <****@****> a écrit :

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

Cordialement,
V.

···

2010/12/13 Bertrand Bordage <****@****>:

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.

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

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

french.ily (2.72 KB)

french.ly (3.27 KB)