plusieurs titres (\header{title = ""}) dans le même fichier

Bonjour à tous,
J'ai un petit problème tout simple, mais je ne sais pas le résoudre. J'ai
créé un gros fichier qui contient la musique pour plusieurs pièces de
théâtre. En fait, c'est structuré avec plein de \include.
– niveau 1 : chaque partie séparée
– niveau 2 : chaque mouvement (\include pour chaque partie), avec un titre
en \header {piece=""}
– niveau 3 : tous les mouvements (\include pour chaque mouvement), avec un
titre en \header {title=""}
– niveau 4 : toutes les pièces.
Je fais alors \include pour chaque ensemble de mouvements (niveau 3) mais
j'ai du coup partout le même titre \header {title=""}. Or je voudrais
évidemment qu'à chaque fois il remette le titre qui était dans le fichier de
niveau 3. J'ai aperçu une fois la combine à utiliser, évidemment, je n'ai
pas noté, pas retenu... et pas retrouvé ni dans Nabble ni dans Google.
Il est peut-être utile de préciser que j'ai également une sorte de petit
préambule (même si ça ne s'appelle pas comme ça dans LilyPond, je pense que
je peux emprunter ce vocable LaTeX) dans lequel je définis entre autres ceci
:

\paper {
  oddHeaderMarkup = \markup {
    \fill-line {
      \on-the-fly #not-first-page
      \fromproperty #'header:title
    }
  }
  evenHeaderMarkup = \markup {
    \fill-line {
      \fromproperty #'header:title
    }
  }
  oddFooterMarkup = \markup {
    \fill-line {
      \on-the-fly #print-page-number-check-first
      \fromproperty #'page:page-number-string
    }
  }
  evenFooterMarkup = \markup {
    \fill-line {
      \on-the-fly #print-page-number-check-first
      \fromproperty #'page:page-number-string
    }
  }
}

Et ça me sert à changer l'emplacement du numéro de page et surtout
l'en-tête. La perfidie de mon système, c'est que je veux évidemment que
l'en-tête change en fonction de l'endroit du fichier, et qu'il affiche le
titre du fichier de niveau 3 présenté sur la page. Un peu comme si c'était
un chapitre, en somme !

Et question subsidiaire pendant que j'y suis : comme je fais si je veux
– écrire une petite préface au début du document de niveau 4
– lui adjoindre également une table des matières ?

Merci d'avance à tous !

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5090574.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

2010/5/23 Céladon <****@****> :

Bonjour à tous,
J'ai un petit problème tout simple, mais je ne sais pas le résoudre.
J'ai créé un gros fichier qui contient la musique pour plusieurs
pièces de théâtre. En fait, c'est structuré avec plein de \include.
– niveau 1 : chaque partie séparée
– niveau 2 : chaque mouvement (\include pour chaque partie), avec un
titre en \header {piece=""}
– niveau 3 : tous les mouvements (\include pour chaque mouvement),
avec un titre en \header {title=""}
– niveau 4 : toutes les pièces.
Je fais alors \include pour chaque ensemble de mouvements (niveau 3)
mais j'ai du coup partout le même titre \header {title=""}. Or je
voudrais évidemment qu'à chaque fois il remette le titre qui était
dans le fichier de niveau 3. J'ai aperçu une fois la combine à
utiliser, évidemment, je n'ai pas noté, pas retenu... et pas retrouvé
ni dans Nabble ni dans Google.

Je suis perdu dans tous tes niveaux, tu n'aurais pas un ascenceur ? :smiley:
(ou à défaut un exemple minimal)

Chaque mouvement est en fait un bloc \score , n'est-ce pas ?
Dans ce cas tu définis les "titres" de mouvement (piece=...) _à
l'intérieur_ du bloc \score et tu utilises un autre bloc \header
_en dehors_ de tout bloc \score (\header global) pour les titres qui
n'apparaissent _qu'une seule fois_ (titre, compositeur, ...).

Ou bien tu peux jouer avec des \book ou \bookpart mais sans avoir
compris (avec un exemple) ce que tu souhaitais faire exactement, pas
facile de conseiller au mieux.

[...]

Et question subsidiaire pendant que j'y suis : comme je fais si je
veux
– écrire une petite préface au début du document de niveau 4

Mettre tout dans un "top-level" \markup (i.e. un "bloc \markup" en
dehors de tout bloc \score ).
Tu peux utiliser
  \justify ou \wordwrap .

Cf. aussi 1.8.1 "Ajout de texte" > "Texte indépendant"

– lui adjoindre également une table des matières ?

NR 3.2.4 "Table of contents"

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

Merci déjà pour la table des matières et la préface : je vais étudier tout ça
!
Et merci d'avoir lu !

Alors je reprends :
– niveau 1 : la partie séparée

elle est compilable, et introduite par \relative c { \clef \key \time ;
elle inclut également les reprises
il y a aussi les fichiers qui contiennent chiffrage de basse continue et
paroles, à qui j'ai, suivant l'exemple de Nicolas Sceaux, mis une
extension .ily ; ils ne sont pas compilables

– niveau 2 : le mouvement

de forme \score { \include ... \header { piece = "titre du mouvement" } }

– niveau 3 : la musique de toute une pièce de théâtre

une série de \include "n.ly" (où les n sont des fichiers de niveau 2,
jamais 1)
il a un titre \header { title = "titre de la pièce " }

et je bloque au passage au niveau supérieur :
– niveau 4 : la musique de toutes les pièces

de forme \include "p.ly" (où les p sont dees fichiers de niveau 3)
il n'a pas de titre

Problème : il y a plusieurs fichiers de niveau 3 dans un fichier de niveau
4, mais du coup LilyPond fait comme si dans chaque fichier de niveau 3
(pièce de théâtre) j'avais mis le même titre (header title). Je n'ai pas de
problème pour avoir plusieurs titres "piece", mais pour avoir plusieurs
titres "title".

C'est un peu comme si j'avais un énoooorme fichier avec plein de titres à
mettre partout. Bah je ne saurais pas le faire, je suis en train de me
demander si c'est vraiment possible...

Est-ce que c'est plus clair ?

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5090642.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

2010/5/23 Céladon <****@****> :

Merci déjà pour la table des matières et la préface : je vais étudier
tout ça !
Et merci d'avoir lu !

Alors je reprends :
– niveau 1 : la partie séparée

elle est compilable, et introduite par \relative c { \clef \key \time ;
elle inclut également les reprises
il y a aussi les fichiers qui contiennent chiffrage de basse continue et
paroles, à qui j'ai, suivant l'exemple de Nicolas Sceaux, mis une
extension .ily ; ils ne sont pas compilables

– niveau 2 : le mouvement

de forme \score { \include ... \header { piece = "titre du mouvement" } }

– niveau 3 : la musique de toute une pièce de théâtre

une série de \include "n.ly" (où les n sont des fichiers de niveau 2,
jamais 1)
il a un titre \header { title = "titre de la pièce " }

et je bloque au passage au niveau supérieur :
– niveau 4 : la musique de toutes les pièces

de forme \include "p.ly" (où les p sont dees fichiers de niveau 3)
il n'a pas de titre

Problème : il y a plusieurs fichiers de niveau 3 dans un fichier de
niveau 4, mais du coup LilyPond fait comme si dans chaque fichier de
niveau 3 (pièce de théâtre) j'avais mis le même titre (header title).
Je n'ai pas de problème pour avoir plusieurs titres "piece", mais
pour avoir plusieurs titres "title".

C'est un peu comme si j'avais un énoooorme fichier avec plein de
titres à mettre partout. Bah je ne saurais pas le faire, je suis en
train de me demander si c'est vraiment possible...

Est-ce que c'est plus clair ?

Presque (enfin, je parle pour moi).
Je pense (finalement !) avoir compris tes niveaux.

Maintenant ce que je ne comprends pas c'est... le problème ! :smiley:
Il ne t'imprime que le premier (ou dernier) titre "\header {title=""}"
partout, c'est ça ?
Mmmh, logique selon moi si tu as plusieurs bloc \header "top-level"
(i.e. en dehors de tout autre bloc \score , \book , ...).

Quid si tu inclus _le tout_ dans un grand bloc \book ?

  \book {
    \header {
      title = "titre 1"
    }
    \score {
      % notes
      \header {
        piece = "pièce 1"
      }
    }

    \header {
      title = "titre 2"
    }
    \score {
      % notes
      \header {
        piece = "pièce 2"
      }
    }
  }

Je ne sais pas ce qui est possible et n'ai pas testé pour le moment.
Sinon avec des \bookpart , ce qui ajouterait des sauts de page entre
chaque \bookpart :

  \book {
    \bookpart {
      \header {
        title = "titre 1"
      }
      \score {
        % notes
        \header {
          piece = "pièce 1"
        }
      }
    }
    %% saut de page
    \bookpart {
      \header {
        title = "titre 2"
      }
      \score {
        % notes
        \header {
          piece = "pièce 2"
        }
      }
    }
  }

Sinon, plus simple...
Utiliser de simples \markup au lieu des titres (\markup tout seul, en
dehors du bloc \score )...

Tout ce que je viens de dire est basé sur
NR 3.1.2 "Multiple scores in a book"

Si ça ne suffit pas tu peux m'envoyer personnellement tous tes fichier
(zippé par exemple), ainsi je pourrai à la fois comprendre et tester...

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

2010/5/23 Xavier Scheuer <****@****> :

Quid si tu inclus _le tout_ dans un grand bloc \book ?

Autrement dit (je ne sais pas si j'ai été très clair), dans ton cas,
cela correspondrait à "niveau 4" = un grand bloc \book contenant à
l'intérieur tous tes "niveau 3".

[...]

Je ne sais pas ce qui est possible et n'ai pas testé pour le moment.
Sinon avec des \bookpart , ce qui ajouterait des sauts de page entre
chaque \bookpart :

Idem ci-dessus mais cette fois chaque "niveau 3" se trouve dans un
\bookpart séparé, eux-mêmes à l'intérieur d'un grand bloc \book .

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

Bonsoir !
Et encore merci !
Avec seulement des \bookpart (et pas de \book) ça marche. Mais il a fallu
que je corrige quelques petites choses.
Je vais donc également essayer la table des matières (même si je ne suis pas
du tout sûr d'y arriver : je voudrais qu'elle affiche les "title"s de chacun
des 7 \bookpart{\include ""}}...)

J'ai juste un tout petit problème :
dans mon
\paper {
        oddHeaderMarkup = \markup {
                \fill-line {
                        \on-the-fly #not-first-page
                        \fromproperty #'header:title
                }
        }
        evenHeaderMarkup = \markup {
                \fill-line {
                        \fromproperty #'header:title
                }
        }
        oddFooterMarkup = \markup {
                \fill-line {
                        \on-the-fly #print-page-number-check-first
                        \fromproperty #'page:page-number-string
                }
        }
        evenFooterMarkup = \markup {
                \fill-line {
                        \on-the-fly #print-page-number-check-first
                        \fromproperty #'page:page-number-string
                }
        }
}
je dis #not-first-page pour #'header:title, mais du coup ça ne s'applique
que sur la first-first page, autrement dit bah... la première, pas la
première de chaque \bookpart. Du coup, à chaque début de bookpart j'ai deux
fois le titre (header + titre réel).

Encore merci !

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5091791.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

2010/5/23 Céladon <****@****> :

Bonsoir !
Et encore merci !
Avec seulement des \bookpart (et pas de \book) ça marche. Mais il a
fallu que je corrige quelques petites choses.
Je vais donc également essayer la table des matières (même si je ne
suis pas du tout sûr d'y arriver : je voudrais qu'elle affiche les
"title"s de chacun des 7 \bookpart{\include ""}}...)

Bonsoir.

Concernant la table des matières.
En sus de la doc, la discussion suivante pourrait éventuellement t'être
utile :
http://lilypond-french-users.1298960.n2.nabble.com/2-questions-Table-des-matieres-et-espacement-vertical-tp4606828p4607804.html

J'ai juste un tout petit problème :
dans mon

[...]

je dis #not-first-page pour #'header:title, mais du coup ça ne
s'applique que sur la first-first page, autrement dit bah... la
première, pas la première de chaque \bookpart. Du coup, à chaque
début de bookpart j'ai deux fois le titre (header + titre réel).

Oui, il me semble que Jean-François "Seventies" a eu le même genre de
problème. Il utilisait \bookpart pour les n° de mouvement.
Pourquoi ne pas utiliser "subtitle" dans les \bookpart (et "title"
uniquement pour le premier titre réel) ?

http://lilypond-french-users.1298960.n2.nabble.com/Succession-de-mouvements-sans-saut-de-page-td4568586.html

Ou bien peut-être qu'un pro Scheme pourrait bricoler une fonction
"not-first-bookpart-page", le message de Gilles ici pourrait y aider :?
http://lilypond-french-users.1298960.n2.nabble.com/Laisser-libre-les-numeros-de-page-de-couverture-tp4897413p4910829.html

Voila, désolé, je ne sais pas faire mieux...

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

Merci, c'est exactement ce qu'il faudrait, not-first-bookpart-page. Mais je
pense qu'une telle fonction existe déjà plus ou moins : en effet, en
regardant attentivement, LilyPond (2.12.2) imprime le header sur la première
page du bookpart, mais pas le numéro de page ! il y a donc quelque part une
fonction qui dit ça !
Et je viens d'aller voir (pour la première fois de ma vie) le fichier
titling.init.ly, il y a dedans
(chain-assoc-get 'page:is-bookpart-last-page props #f)
Donc il y a aussi une sorte de fonction bookpat-last-page (c'est dans %%
Book first page and last page predicates).
Je vais essayer de me plonger là-dedans, mais je ne connais rien au Scheme
donc c'est mal parti...
À bientôt !

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5093050.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

2010/5/23 Céladon <****@****> :

Bonsoir.

Concernant la table des matières.
En sus de la doc, la discussion suivante pourrait éventuellement t'être
utile :
http://lilypond-french-users.1298960.n2.nabble.com/2-questions-Table-des-matieres-et-espacement-vertical-tp4606828p4607804.html

Bonjour à tous,

Concernant la table des matières, voici la méthode que j'utilise sans aucun problème, après avoir sérieusement ramé la première fois, et grâce à l'aide précieuse de l'équipe Nabble :

  \markup {
    \column {
      \fill-line {\abs-fontsize #16 " "}
      \fontsize #3 \override #'(box-padding . 1.0) \override #'(thickness . 4.0)
      \override #'(baseline-skip . 2.7) \box
      \column {
        \fill-line { \lower #25 \couvCompositeur }
        \fill-line { \lower #10 \couvDates }
        \fill-line { \lower #20 \TocTitre }
        \fill-line { \lower #12 \couvinfoRecueil }
        \fill-line { \lower #35 \TocLigne }
        \fill-line { \lower #3 \draw-line #'(40 . 0) }
        \fill-line {\override #'(line-width . 90) \lower #10 \toc-line #'MvmtI "I - Allergo moderato"}
        \fill-line {\override #'(line-width . 90) \lower #6 \toc-line #'MvmtII "II - Scherzo - Vivace"}
        \fill-line {\override #'(line-width . 90) \lower #6 \toc-line #'MvmtIII "III - Adagio non troppo"}
        \fill-line {\override #'(line-width . 90) \lower #6 \toc-line #'MvmtIV "IV - Quasi menuetto"}
        \fill-line {\override #'(line-width . 90) \lower #6 \toc-line #'MvmtV "V - Rondo - Allegro"}
        \fill-line { \lower #13 \draw-line #'(40 . 0) }
        \fill-line { \lower #18 \couvfromPublisher }
        \fill-line { \lower #18 \couvEditorial }
        \fill-line { \lower #87 " "}
      }
    }
  }

Les variables \couvCompositeur et suivantes sont définies dans un fichier inclus.
\tocLigne renferme simplement le texte "Table des matières"
\box entoure la page d'un cadre rectangulaire, c'est évidemment optionnel.
\draw-line trace des petites lignes horizontales complémentaires
Le dernier \fill-line est utilisé pour que le cadre remplisse toute la page.

L'ensemble est inséré dans un bloc \book, qui lui-même contient un \bookpart par mouvement.

Pour l'appel, il suffit d'insérer
  \label #'MvmtI
au début de chaque \bookpart
Le 'label' n'a pas besoin d'être en haut de page. On peut ainsi avoir 2 références sur la même page.
Si un label n'existe pas, le numéro de page est remplacé par un '?'

Enfin, ne pas oublier de corriger le numéro des pages si on insère une couverture qui ne doit pas apparaître dans les pages numérotées.

Pour cela, insérer un
  first-page-number = -1
pour passer deux pages (la page -1 et la page 0). La page 3 sera 'numérotée' 1

À partir de ce schéma, on peut modifier la présentation, par exemple en introduisant une citation musicale, comme cela se faisait auparavant pour les recueils de petites pièces.

Amicalement,

Jean-François

Bonsoir !
Je n'ai toujours pas réglé le problème, mais je n'ai pas eu le courage de
faire des tests. Il faut que ma machine soit très disponible pour ça : le
fichier est volumineux, généralement ça prend 10 minutes pour le compiler,
mais la première fois ça en a pris 35...

J'ai en revanche testé la table des matières : merci à Jean-François ! Mais
en fait, j'ai appliqué la méthode de la doc, en la modifiant avec
\paper {
  tocItemMarkup = \markup \fill-line {
    \override #'(line-width . 70) \fill-line {
      \fromproperty #'toc:text \fromproperty #'toc:page
    }
  }
}
(suggéré par Nicolas Sceaux ici :
http://lilypond-french-users.1298960.n2.nabble.com/2-questions-Table-des-matieres-et-espacement-vertical-tp4606828p4607804.html)
Le résultat reste modeste (la maîtrise de la verticalité pour cette page eût
pu être souhaitable) mais je n'a pas le temps ni la motivation de me pencher
dessus !

Bien entendu, si je trouve comment virer mes doubles titres, je vous
tiendrai au courant !

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5100444.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

J'ai trouvé !
C'est du bidouillage, mais ça marche alors...

Comme je vous ai dit, LilyPond n'imprime pas le numéro de page sur la
première page de chaque bookpart. Du coup j'ai essayé de voir dans
titling-init.ly, et j'ai trouvé qu'il disait

evenHeaderMarkup = \markup
\fill-line {
  \on-the-fly #print-page-number-check-first \fromproperty
#'page:page-number-string
  \on-the-fly #not-first-page \fromproperty #'header:instrument
  " "
}

J'ai réutilisé #print-page-number-check-first même si ça n'est pas un numéro
de page qui m'intéresse, et ça donne :
\paper {
  oddHeaderMarkup = \markup {
    \fill-line {
      \on-the-fly #print-page-number-check-first
      \fromproperty #'header:title
    }
  }
}
(Je mets en gras ce que j'ai changé par rapport à avant.)
Et voilà, maintenant c'est comme je voulais : pas de titre dans l'en-tête
juste au-dessus du titre dans la page.

Maintenant je vais chercher à faire une belle page de titre, je sens que ce
sera toute une aventure encore.

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/plusieurs-titres-header-title-dans-le-meme-fichier-tp5090574p5102454.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

2010/5/26 Céladon <****@****> :

J'ai trouvé !
C'est du bidouillage, mais ça marche alors...

Félicitations !

J'ai réutilisé #print-page-number-check-first même si ça n'est pas un numéro
de page qui m'intéresse, et ça donne :

Ouais, en gros on pourrait conseiller aux devs de renommer
  #print-page-number-check-first en #check-first-page alors, non ?

Maintenant je vais chercher à faire une belle page de titre, je sens
que ce sera toute une aventure encore.

Il y a la macro prête à l'emploi de Nicolas "book-titling.ily" :
http://lsr.dsi.unimi.it/LSR/Item?id=368

qu'on peut aussi bidouiller pour correspondre à ses envies.

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>