Bonjour à tous,
J'ai ressorti le roi Arthur pour lui adjoindre les partie textuelles de la version sur laquelle je me base (1848).
Je bloque depuis quelques jours sur la mise en forme du livret.
Grâce aux deux fichiers de fonctions préparées par Nicolas (livret.ily et livret-columns.ily) je ne m'en sors pas trop mal (c'est fastidieux mais réalisable), à ceci près que je n'arrive pas à adapter l'une de ses fonctions /markup/.
Les fonctions utilisées sont :
% hash nombre (décalage), puis vers à la suite de \livretPerseVerse
#(define-markup-command (livretVerse layout props metric args)
(number? markup-list?)
(let ((margin (* 2 (- 12 (min 12 metric)))))
(livret-verse-aux layout props (make-line-markup args) margin)))
% rôle (\line {..} si complexe) suivi de livretVerse
#(define-markup-command (livretPersVerse layout props pers verse next)
(markup? markup? markup?)
(let* ((pers-stencil (interpret-markup
layout props
(markup #:fontsize 0 #:italic pers)))
(verse-stencil (interpret-markup layout props verse))
(line-stencil (ly:stencil-add pers-stencil verse-stencil)))
(interpret-markup layout props
(markup #:column (#:stencil line-stencil
next)))))
J'ai modifié livretVerse pour m'affranchir de l'espacement à fournir :
#(define-markup-command (livretVerse layout props args) (markup-list?)
(interpret-markup
layout props
(markup #:fontsize 0 (make-line-markup args))))
Mon problème est de « dégoter » la fonction qui, au lieu de superposer les stencils comme le fait ly:stencil-add, en effectuera la concaténation. J'ai bien vu, dans le fichier stencil.scm, la fonction stack-stencils mais n'arrive pas à l'utiliser ou la libeller correctement.
Une image de l'original est disponible, en privé car trop pesante (50 Ko) pour la liste.
Cordialement,
Jean-Charles
(ly:stencil-combine-at-edge stencil1, axis, direction, stencil2, padding)
Cordialement,
~Mike
···
On 23 sept. 2012, at 15:56, Jean-Charles Malahieude <****@****> wrote:
Bonjour à tous,
J'ai ressorti le roi Arthur pour lui adjoindre les partie textuelles de la version sur laquelle je me base (1848).
Je bloque depuis quelques jours sur la mise en forme du livret.
Grâce aux deux fichiers de fonctions préparées par Nicolas (livret.ily et livret-columns.ily) je ne m'en sors pas trop mal (c'est fastidieux mais réalisable), à ceci près que je n'arrive pas à adapter l'une de ses fonctions /markup/.
Les fonctions utilisées sont :
% hash nombre (décalage), puis vers à la suite de \livretPerseVerse
#(define-markup-command (livretVerse layout props metric args)
(number? markup-list?)
(let ((margin (* 2 (- 12 (min 12 metric)))))
(livret-verse-aux layout props (make-line-markup args) margin)))
% rôle (\line {..} si complexe) suivi de livretVerse
#(define-markup-command (livretPersVerse layout props pers verse next)
(markup? markup? markup?)
(let* ((pers-stencil (interpret-markup
layout props
(markup #:fontsize 0 #:italic pers)))
(verse-stencil (interpret-markup layout props verse))
(line-stencil (ly:stencil-add pers-stencil verse-stencil)))
(interpret-markup layout props
(markup #:column (#:stencil line-stencil
next)))))
J'ai modifié livretVerse pour m'affranchir de l'espacement à fournir :
#(define-markup-command (livretVerse layout props args) (markup-list?)
(interpret-markup
layout props
(markup #:fontsize 0 (make-line-markup args))))
Mon problème est de « dégoter » la fonction qui, au lieu de superposer les stencils comme le fait ly:stencil-add, en effectuera la concaténation. J'ai bien vu, dans le fichier stencil.scm, la fonction stack-stencils mais n'arrive pas à l'utiliser ou la libeller correctement.
Une image de l'original est disponible, en privé car trop pesante (50 Ko) pour la liste.
Cordialement,
Jean-Charles
Le 23/09/2012 16:08, ****@**** disait :
Mon problème est de « dégoter » la fonction qui, au lieu de
superposer les stencils comme le fait ly:stencil-add, en effectuera
la concaténation. J'ai bien vu, dans le fichier stencil.scm, la
fonction stack-stencils mais n'arrive pas à l'utiliser ou la
libeller correctement.
(ly:stencil-combine-at-edge stencil1, axis, direction, stencil2,
padding)
Merci Mike pour cette lecture compréhensible de
(define-public (stack-stencils axis dir padding stils)
"Stack stencils @var{stils} in direction @var{axis}, @var{dir}, using
@var{padding}."
(cond
((null? stils) empty-stencil)
((null? (cdr stils)) (car stils))
(else (ly:stencil-combine-at-edge
(car stils) axis dir (stack-stencils axis dir padding (cdr stils))
padding))))
qui me donnait des indigestions, entre autres.
Le libellé
(ly:stencil-combine-at-edge pers-stencil X RIGHT verse-stencil 1)
donne le résultat escompté et allège d'autant les tâtonnements initiaux.
@+
Jean-Charles
···
On 23 sept. 2012, at 15:56, Jean-Charles Malahieude > <****@****> wrote:
Pour continuer :
Mais pourquoi donc est-ce qu'il n'y a pas de saut de page ?
Serait-il possible de le forcer ?
Comment enchaîner avec le texte qui précède ?
On verra çà demain...
Jean-Charles
Si tu veux faire la mise en page d'un livret qui ne contient pas de musique (ou qui ne contient que de petits bouts de musique) je te conseillerais d'utiliser lilypond-book ou LaTeX tout court.
Tout est faisable en LilyPond, mais il faudrait que tu fasses un \pageBreak entre deux \markup pour forcer le saut de page. Il faudrait également que tu harmonises l'espacement vertical et horizontal des lignes sur les deux pages. « Pourquoi faire simple quand on peut faire compliqué ?» étant la maxime selon laquelle j'organise ma vie, cette solution a mon approbation entière et inconditionnelle, mais malgré tout à un moment donné c'est fort probable que j'abandonnerais et j'utiliserais LaTeX.
Cordialement,
~Mike
···
On 23 sept. 2012, at 20:24, Jean-Charles Malahieude <****@****> wrote:
Pour continuer :
Mais pourquoi donc est-ce qu'il n'y a pas de saut de page ?
Serait-il possible de le forcer ?
Comment enchaîner avec le texte qui précède ?
On verra çà demain...
Jean-Charles
Le 23/09/2012 20:44, mike disait :
Pour continuer :
Mais pourquoi donc est-ce qu'il n'y a pas de saut de page ?
Serait-il possible de le forcer ? Comment enchaîner avec le texte
qui précède ?
On verra çà demain...
Jean-Charles
Si tu veux faire la mise en page d'un livret qui ne contient pas de
musique (ou qui ne contient que de petits bouts de musique) je te
conseillerais d'utiliser lilypond-book ou LaTeX tout court.
Pas pour mettre les sources sur CPDL.
Tout est faisable en LilyPond, mais il faudrait que tu fasses un
\pageBreak entre deux \markup pour forcer le saut de page. Il
faudrait également que tu harmonises l'espacement vertical et
horizontal des lignes sur les deux pages.
Ce qui m'étonne, c'est que Nicolas y arrive bien (et moi aussi lorsque je compile l'une de ses œuvres), et que mes deux premiers /markuplist/ se répartissent correctement sur 10 et 3 pages sans aucun problème.
@+
Jean-Charles
···
On 23 sept. 2012, at 20:24, Jean-Charles Malahieude wrote: