Subject: Insérer et positionner des blocs \markup indépendants

From: "Valentin Villenave" <[email-masked]>
Date: Wed, 11 Jul 2007 17:29:08 +0200

Bonjour à tous,

depuis quelques jours une discussion sur la liste internationale a
dérivé vers des questions liées aux blocs \markups indépendants
(c'est-à-dire, les extraits de texte que vous pouvez placer dans un
bloc \book, par exemple entre des fragments musicaux).

Je laisse le soin à sdfsgsdhsdhs -- ou quel que soit son nom ;) -- de
récapituler la question.

Cordialement,
Valentin

---

From: discussions-sur-forums <[email-masked]>
Date: Wed, 11 Jul 2007 20:25:30 +0200

Bonjour à tous,

Merci Valentin.
La question est la suivante: dans un unique pdf avec beaucoup de scores, 
on me demande
-- de mettre du texte après chaque score, et surtout près du bas de ces 
scores: 5mm grand maximum.
-- Si l'on modifie les scores, ces textes doivent rester positionnés 
correctement, sans intervention manuelle.
C'est simple à dire... mais je viens de découvrir que ce ne l'est pas du 
tout à faire!

*/Détails sur la question/*
1) Ce texte est différent pour chaque score, et doit se situer très près 
du bas du score précédent (ou de la dernière portée du score si vous 
préférez). 5 millimètres est un maximum.
Pour fixer les idées, ce texte se situe donc entre un score et le titre 
du score suivant, mais doit être très près du score précédent. Le texte 
doit aussi être loin du titre suivant (quelques cms), mais cette 
dernière exigence est simple et ne pose pas de problème.

2) ce texte est constitué de plusieurs pavés de texte sur quelques 
lignes, certains alignés à gauche, d'autres à droite sur la même ligne, 
et d'autres centrés plus bas.
Ce cahier des charges fait tout de suite penser à \markup. Je suis 
arrivé à faire un markup qui fasse tout cela, mais le problème restant 
est le positionnement de ces pavés de texte,
2.1) d'une part en X (voir ci-dessous)
2.2) d'autre part en Y, pour rapprocher le tout le plus possible du score.
2.3) et surtout, le tout restant positionné correctement même quand on 
change le score précédent. C'est un point important.

*/Tests de différentes idées/*
3) si l'on utilise un markup "libre", le texte se situe trop loin du 
score, à 2 cm environ. Il ne semble pas y avoir en lilypond de paramètre 
de markup permettant le positionnement précis là ou l'on veut de ce 
texte. C'est étonnant de la part d'un logiciel avec autant de possibilités.

4) si l'on utilise un markup lié à une note, genre sol2_\markup
4.1) en Y le texte peut être mis très près de la portée, génial, MAIS
4.2) en X le positionnement voulu du texte est possible, mais doit se 
faire empiriquement, par de nombreux essais et erreurs.
4.3) D'autre part, le moindre changement de la partition change le 
positionnement du texte.
4.4) Enfin, le choix de cette note sur laquelle est basée le markup, est 
très difficile, et peut changer à chaque modification.
4.5) sachant qu'il doit y avoir plusieurs centaines de scores dans le 
pdf, et que les modifications sont fréquentes, le seul positionnement de 
ces pavés entraîne une masse de travail énorme, plus importante que les 
autres taches de la réalisation du pdf entier!!

5) une dernière idée serait de lier le markup à la barre finale du 
score. Genre bar "|"_\markup ou avec \mark
Est-ce possible? je n'y suis personnellement pas arrivé, même en 
essayant différentes syntaxes.

J'espère m'être fait comprendre... si vous avez des questions, n'hésitez 
pas!
Cordialement.

PS1: toute solution m'intéresse, même si elle passe par Scheme.
PS2: il semble que sur la liste internationale, cette question intéresse 
des personnes depuis deux ans environ, mais pas vu de solution.
PS3: merci de m'avoir lu jusqu'au bout! Promis, mes mails suivants 
seront plus courts...

---

From: Jean-marc LEGRAND <[email-masked]>
Date: Thu, 12 Jul 2007 09:39:22 +0200

Bonjour !

Première impresson, avant tout essai : lilypondbook ne sait pas faire ça ?

Autre pensée du jour : ne peut-on pas détourner l'outil stanza pour faire ça ? L'idée d'un texte
immédiatement sous la partition, lié au score du dessus, et pas à celui du dessous, avec
positionnmeent automatique, ça me fait penser à des partitions chorales avec couplets
supplémentaires. Mais je n'ai jamais testé personnellement.

A+ je vais tâcher de travailler dessus.

PS : un exemple de fichier aiderait beaucoup, notamment pour bien cerner la question et travailler
tous sur le même sujet !

Jmarc

             discussions-sur-forums                                                                 
             <discussions-sur-forums@ora                                                            
             nge.fr>                                                                              A 
             Envoyé par :                        Valentin Villenave <[email-masked]>         
             lilypond-user-fr-bounces+je                                                         cc 
             an-marc.legrand=total.com@g         LilyPond <[email-masked]>                
             nu.org                                                                           Objet 
                                                 Re: Insérer et positionner des blocs \markup       
                                                 indépendants                                       
             11/07/2007 20:25                                                                       

                 Veuillez répondre à                                                                
             discussions-sur-forums@oran                                                            
                        ge.fr                                                                       

Bonjour à tous,

Merci Valentin.
La question est la suivante: dans un unique pdf avec beaucoup de scores, on me demande
-- de mettre du texte après chaque score, et surtout près du bas de ces scores: 5mm grand maximum.
-- Si l'on modifie les scores, ces textes doivent rester positionnés correctement, sans intervention
manuelle.
C'est simple à dire... mais je viens de découvrir que ce ne l'est pas du tout à faire!

Détails sur la question
1) Ce texte est différent pour chaque score, et doit se situer très près du bas du score précédent
(ou de la dernière portée du score si vous préférez). 5 millimètres est un maximum.
Pour fixer les idées, ce texte se situe donc entre un score et le titre du score suivant, mais doit
être très près du score précédent. Le texte doit aussi être loin du titre suivant (quelques cms),
mais cette dernière exigence est simple et ne pose pas de problème.

2) ce texte est constitué de plusieurs pavés de texte sur quelques lignes, certains alignés à
gauche, d'autres à droite sur la même ligne, et d'autres centrés plus bas.
Ce cahier des charges fait tout de suite penser à \markup. Je suis arrivé à faire un markup qui
fasse tout cela, mais le problème restant est le positionnement de ces pavés de texte,
2.1) d'une part en X (voir ci-dessous)
2.2) d'autre part en Y, pour rapprocher le tout le plus possible du score.
2.3) et surtout, le tout restant positionné correctement même quand on change le score précédent.
C'est un point important.

Tests de différentes idées
3) si l'on utilise un markup "libre", le texte se situe trop loin du score, à 2 cm environ. Il ne
semble pas y avoir en lilypond de paramètre de markup permettant le positionnement précis là ou l'on
veut de ce texte. C'est étonnant de la part d'un logiciel avec autant de possibilités.

4) si l'on utilise un markup lié à une note, genre sol2_\markup
4.1) en Y le texte peut être mis très près de la portée, génial, MAIS
4.2) en X le positionnement voulu du texte est possible, mais doit se faire empiriquement, par de
nombreux essais et erreurs.
4.3) D'autre part, le moindre changement de la partition change le positionnement du texte.
4.4) Enfin, le choix de cette note sur laquelle est basée le markup, est très difficile, et peut
changer à chaque modification.
4.5) sachant qu'il doit y avoir plusieurs centaines de scores dans le pdf, et que les modifications
sont fréquentes, le seul positionnement de ces pavés entraîne une masse de travail énorme, plus
importante que les autres taches de la réalisation du pdf entier!!

5) une dernière idée serait de lier le markup à la barre finale du score. Genre bar "|"_\markup ou
avec \mark
Est-ce possible? je n'y suis personnellement pas arrivé, même en essayant différentes syntaxes.

J'espère m'être fait comprendre... si vous avez des questions, n'hésitez pas!
Cordialement.

PS1: toute solution m'intéresse, même si elle passe par Scheme.
PS2: il semble que sur la liste internationale, cette question intéresse des personnes depuis deux
ans environ, mais pas vu de solution.
PS3: merci de m'avoir lu jusqu'au bout! Promis, mes mails suivants seront plus courts...

      Cordialement,
      Valentin
      _______________________________________________
      liste de diffusion lilypond-user-fr
      [email-masked]
      http://lists.gnu.org/mailman/listinfo/lilypond-user-fr

---

From: "Valentin Villenave" <[email-masked]>
Date: Thu, 12 Jul 2007 10:40:23 +0200

> Première impresson, avant tout essai : lilypondbook ne sait pas faire ça ?

J'étais sûr que tu dirais ça ;)
Je n'utilise pas lilypond-book (depuis que je suis habitué à
l'élégance du code lilyPond, LaTeX me hérisse, c'est personnel); bien
sûr c'est l'outil idéal pour cela, mais ce serait quand même chouette
d'arriver à l'équivalent grâce à LilyPond...

> supplémentaires. Mais je n'ai jamais testé personnellement.

Je vois l'exemple auquel tu penses (paragraphe 7.3.9.4 et passim),
mais en fait, même dans cet exemple, c'est \markup qui est utilisé...

> PS : un exemple de fichier aiderait beaucoup, notamment pour bien cerner la question et travailler

Absolument : tu peux voir mon snippet ici
http://lsr.dsi.unimi.it/LSR/Item?id=300

Cordialement,
Valentin

---

From: Jean-marc LEGRAND <[email-masked]>
Date: Thu, 12 Jul 2007 13:24:57 +0200

1er essai pour voir si c'est cela que tu cherches :

j'ai défini la variable \texte contenant le texte, de la façon suivante  :

texte = \markup {\override #'(line-width . 90) { \justify-string #"Lorem (...)"} }

ensuite, dans le bloc lower, j'ai mis ça pour ajuster le positionnement du texte sous la partition :
:

lower = \relative c {
\clef bass
\key c \major
\time 4/4
\override TextScript #'extra-offset = #'(-2 . -2) c4_\texte(...)
}

Ensuite, j'ai fait un book tout simple :

\book {
\score {
\new PianoStaff <<
      \set PianoStaff.instrumentName = "Piano  "
        \new Staff = "upper" \upper
        \new Staff = "lower" \lower
}

}

voici mon .ly complet : (See attached file: exemple.ly)

tu me dis si ça correspond en tout ou partie à ta recherche ?

Le fait est que ce n'est pas un placement automatique, où il suffirait d'indiquer qu'on veut tant
d'écart entre le texte et la partoche. Le hic de cette méthode, c'est qu'il faut avoir la mise en
page de la partition avant, pour viser la 1ère note de la portée la plus basse et y insérer le
texte.

A+ : j'attends ta réponse pour m'y coller à nouveau.

JMarc

             "Valentin Villenave"                                                                   
             <[email-masked]>                                                                
                                                                                                  A 
             12/07/2007 10:40                    "Jean-marc LEGRAND" <[email-masked]>  
                                                                                                 cc 
                                                 LilyPond <[email-masked]>                
                                                                                              Objet 
                                                 Re: Insérer et positionner des blocs \markup       
                                                 indépendants                                       

                                                                                                    

Cordialement,
Valentin

---

From: discussions-sur-forums <[email-masked]>
Date: Thu, 12 Jul 2007 22:39:04 +0200

> d'arriver à l'équivalent grâce à LilyPond...
OK, je préfère aussi nettement du code élégant; mais quand une solution 
moins élégante permet de s'économiser beaucoup de travail (cf mon mail 
précédent), pourquoi pas!

---

From: discussions-sur-forums <[email-masked]>
Date: Thu, 12 Jul 2007 22:42:59 +0200

Dans la liste internationale, ils ont trouvé une solution pour 
personnaliser \markup; est-ce que ce serait une piste?

discussions-sur-forums a écrit :
> 1) Ce texte est différent pour chaque score, et doit se situer très 
> près du bas du score précédent (ou de la dernière portée du score si 
> vous préférez). 5 millimètres est un maximum.
> Pour fixer les idées, ce texte se situe donc entre un score et le 
> titre du score suivant, mais doit être très près du score précédent. 
> Le texte doit aussi être loin du titre suivant (quelques cms), mais 
> cette dernière exigence est simple et ne pose pas de problème.
>
> lignes, certains alignés à gauche, d'autres à droite sur la même 
> ligne, et d'autres centrés plus bas.
> score, à 2 cm environ. Il ne semble pas y avoir en lilypond de 
> paramètre de markup permettant le positionnement précis là ou l'on 
> 4.4) Enfin, le choix de cette note sur laquelle est basée le markup, 
> est très difficile, et peut changer à chaque modification.
> pdf, et que les modifications sont fréquentes, le seul positionnement 
> de ces pavés entraîne une masse de travail énorme, plus importante que 
> les autres taches de la réalisation du pdf entier!!
>
> PS2: il semble que sur la liste internationale, cette question 
> intéresse des personnes depuis deux ans environ, mais pas vu de solution.
> ------------------------------------------------------------------------
>

---

From: discussions-sur-forums <[email-masked]>
Date: Thu, 12 Jul 2007 21:17:26 +0200

Merci!

Verticalement, le problème est résolu.
Mais horizontalement, malheureusement pas vraiment (cf plus bas).

En modifiant comme suit les partitions (le reste ne change pas):
upper = \relative c'' {
\clef treble
\key c \major
\time 4/4
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 
c c c c c c c c c c c
c4
\bar "|."
}
   
lower = \relative c {
\clef bass
\key c \major
\time 4/4
\override TextScript #'extra-offset = #'(0 . -1)
c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c c 
c c c c c c c c c c c
c4_\texte
\bar "|."
}

on remarque
1) dans le deuxième système, les deux portées sont très éloignées.
2) surtout tous les textes sont tronqués à droite de la page.

3) d'autre part, on m'a imposé la contrainte suivante:
La partition informatique est saisie à part dans un format propriétaire, 
puis je fais le script de conversion vers le format lilypond. Ce script 
doit générer en aveugle, càd le premier .ly doit être le bon: ce script 
n'a pas la possibilité de générer du .ly, compiler ce fichier, regarder 
dans le pdf s'il faut améliorer le code lilypond (genre faire des 
mesures d'offset dans le pdf), refaire le .ly en conséquence de ce qu'il 
a "vu" dans le pdf, etc.

4) /Conséquence: /manuellement je pourrais faire varier le paramètre 
horizontal de l'offset par essais et erreurs jusqu'à arriver à décaler 
les textes à leurs bonnes positions, mais ici ce n'est pas possible: pas 
de deuxième essai!
[sans parler du fait qu'ici, le nombre de partitions se compte en 
quelques milliers: donc positionner manuellement par essais et erreurs, 
au demi-millimètre près, quelques milliers de pavés de texte... et 
recommencer à chaque modification... quelqu'un est partant? ;-)]

5) C'est pour cela que j'envisageais de faire la même chose que ton 
exemple, mais en me basant sur la barre finale: sachant qu'elle est à 
telle abscisse (quelque soit la partition, c'est le point important), 
j'en déduis l'offset à mettre dans le premier paramètre de \override 
TextScript #'extra-offset = #'(-100 . -1)
Donc est-il possible de baser un markup (d'une manière ou d'une autre) 
sur une barre?

6) J'essaie en parallèle de trouver d'autres débuts de pistes...

Cordialement.