Création de macro

Bonjour,

J'ai besoin d'utiliser plusieurs fois un même groupe de commandes du type :

==== début exemple ====
\markup {
titre 1 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier1.ly"
}
\pagebreak
\markup {
titre 2 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier2.ly"
}
\pagebreak
\markup {
titre 3 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier3.ly"
}
\pagebreak
==== fin exemple ====

Est-il possible de créer une macro qui prendrait les chaines "titre X"
et "fichierX.ly" en arguments et qui réduirait mon exemple à :

==== début résultat ====
\supermacro "titre 1" "fichier1.ly"
\supermacro "titre 2" "fichier2.ly"
\supermacro "titre 3" "fichier3.ly"
==== fin résultat ====

J'ai joué pendant deux heures avec "define-music-function" et j'ai
bien peur que les fonctions créées avec cette commande ne fonctionnent
qu'à l'intérieur d'un "score", pas à l'extérieur. Toute explication
est la bienvenue.

Cordialement,

N. Dubray

Bonjour Noël,
J'avoue ma nullissimitude, mais en attendant mieux :

=== début exemple ===

myFile = #(define-music-function (parser location myMusic) (string?)
     #{ \clef G \transpose bes c'' { \include $myMusic } #} )

\markup "Titre1" \myFile #"Fichier1.ily"
\markup "Titre2" \myFile #"Fichier2.ily"
\markup "Titre3" \myFile #"Fichier3.ily"

=== fin exemple ===

Il y a fatalement quelque chose mieux à faire en arrangeant ce petit bout de code :
http://lsr.dsi.unimi.it/LSR/Item?id=630

Sinon dans ton exemple je remarque que tu écris maclef = { \clef G } un peu partout mais tu semble ne pas utiliser \maClef. C'est normal ?
Bonne journée !
Cécile

···

Le 04/10/2010 11:34, Noël Dubray a écrit :

Bonjour,

J'ai besoin d'utiliser plusieurs fois un même groupe de commandes du type :

==== début exemple ====
\markup {
titre 1 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier1.ly"
}
\pagebreak
\markup {
titre 2 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier2.ly"
}
\pagebreak
\markup {
titre 3 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier3.ly"
}
\pagebreak
==== fin exemple ====

Est-il possible de créer une macro qui prendrait les chaines "titre X"
et "fichierX.ly" en arguments et qui réduirait mon exemple à :

==== début résultat ====
\supermacro "titre 1" "fichier1.ly"
\supermacro "titre 2" "fichier2.ly"
\supermacro "titre 3" "fichier3.ly"
==== fin résultat ====

J'ai joué pendant deux heures avec "define-music-function" et j'ai
bien peur que les fonctions créées avec cette commande ne fonctionnent
qu'à l'intérieur d'un "score", pas à l'extérieur. Toute explication
est la bienvenue.

Cordialement,

N. Dubray

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

Merci pour ton exemple, je vais voir si je trouve un moyen d'inclure
le "\markup" dans la fonction. La definition de "\maclef" est utilisée
dans les fichiers inclus. Pour info, j'utilise ce genre de
construction pour générer les partitions pour plusieurs instruments en
gérant la transposition.

Noël

···

2010/10/4 Cécile Huneau <****@****>:

Bonjour Noël,
J'avoue ma nullissimitude, mais en attendant mieux :

=== début exemple ===

myFile = #(define-music-function (parser location myMusic) (string?)
#{ \clef G \transpose bes c'' { \include $myMusic } #} )

\markup "Titre1" \myFile #"Fichier1.ily"
\markup "Titre2" \myFile #"Fichier2.ily"
\markup "Titre3" \myFile #"Fichier3.ily"

=== fin exemple ===

Il y a fatalement quelque chose mieux à faire en arrangeant ce petit bout de
code :
http://lsr.dsi.unimi.it/LSR/Item?id=630

Sinon dans ton exemple je remarque que tu écris maclef = { \clef G } un peu
partout mais tu semble ne pas utiliser \maClef. C'est normal ?
Bonne journée !
Cécile

Le 04/10/2010 11:34, Noël Dubray a écrit :

Bonjour,

J'ai besoin d'utiliser plusieurs fois un même groupe de commandes du type
:

==== début exemple ====
\markup {
titre 1 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier1.ly"
}
\pagebreak
\markup {
titre 2 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier2.ly"
}
\pagebreak
\markup {
titre 3 (Sib)
}
maclef = { \clef G }
\score {
\transpose bes c''
\include "fichier3.ly"
}
\pagebreak
==== fin exemple ====

Est-il possible de créer une macro qui prendrait les chaines "titre X"
et "fichierX.ly" en arguments et qui réduirait mon exemple à :

==== début résultat ====
\supermacro "titre 1" "fichier1.ly"
\supermacro "titre 2" "fichier2.ly"
\supermacro "titre 3" "fichier3.ly"
==== fin résultat ====

J'ai joué pendant deux heures avec "define-music-function" et j'ai
bien peur que les fonctions créées avec cette commande ne fonctionnent
qu'à l'intérieur d'un "score", pas à l'extérieur. Toute explication
est la bienvenue.

Cordialement,

N. Dubray

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

_______________________________________________
liste de diffusion lilypond-user-fr
lilypond-user-fr@gnu.org
http://lists.gnu.org/mailman/listinfo/lilypond-user-fr