[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Table des matières ordonnée
From: |
Jean Abou Samra |
Subject: |
Re: Table des matières ordonnée |
Date: |
Wed, 6 Jan 2021 23:46:39 +0100 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Thunderbird/78.5.0 |
Bonjour,
Le 05/01/2021 à 22:43, Domyck a écrit :
Décidément, rien n'apparaît entre les balises raw ! Désolé !
Le forum Nabble depuis lequel vous postez nous a joué des tours
plus d'une fois. Si vous écrivez par mail à la liste, tout devrait
bien se passer.
Par ailleurs, quand, tout en étant connecté, je réponds à un fil, le système
me renvoie la fenêtre suivante. Je clique sur le bouton "Je suis abonné,
laissez-moi poster maintenant". Après quoi je mets mon message et je valide
sans problème. - Ai-je fait une mauvaise manip ?
L'inscription à Nabble et l'inscription à la liste sont deux
choses différentes. Pour vous abonner à la liste de diffusion,
rendez-vous sur https://lists.gnu.org/mailman/listinfo/lilypond-user-fr .
Ce n'est pas une mauvaise manip tant que vous êtes effectivement
inscrit à la liste.
J'aimerais effectuer les 2 opérations suivantes :
1) afficher la table des matières dans l'ordre alphabétique des titres
2) Faire apparaître les numéros des partitions plutôt que les numéros de
page.
Table of Contents
A-mouvement . . . . 31
B-mouvement . . . . 33
C-mouvement . . . . 32
Ci-joint le code minimaliste.
J'ai essayé avec \tocnum, mais ça ne fonctionne pas.
Merci pour votre aide.
C'est possible automatiquement ; j'espère qu'il n'est pas trop
tard et que vous n'avez pas encore fait toute la table des
matières à la main (et quoi qu'il arrive, ce sera peut-être
utile à d'autres par le futur).
Le moyen le plus simple, à mon sens en tous cas, consiste à
copier un paquet de définitions depuis le fichier ly/toc-init.ly
et à les modifier légèrement. Vous trouverez l'original ici :
https://gitlab.com/lilypond/lilypond/-/blob/master/ly/toc-init.ly
J'ai commenté mes ajouts.
Veuillez noter qu'en raison de changements apportés à ce
code il y a six mois (la fonctionnalité permettant des tables
des matières à plusieurs niveaux imbriqués, implémentée par
Valentin), il vous faudra une version instable de LilyPond,
téléchargeable à l'adresse http://lilypond.org/development.fr.html
Le code, qui est donc un peu effrayant à première vue, mais il
ne s'agit que d'ajouts épars aux fonctions définies par LilyPond :
%%%%%%%%%%%%%%%%%%
\version "2.21.80"
#(let ((toc-item-list (list))
;;;; Compteur qui augmente au fur et à mesure que
;;;; des pièces sont ajoutées à la table des matières.
(no 1))
(set! add-toc-item!
(lambda* (markup-symbol text #:optional label)
(let* ((id (gensym "toc"))
(path (cond
((symbol? label) (list label))
((or (not label) (null? label)) (list id))
((list? label) (reverse label))
(else (begin
(ly:warning (_i "Invalid toc label:
~a")
label))
(list id))))
(name (car path))
(parents (cdr path)))
(set! toc-item-list
(acons id `((name . ,name)
(text . ,text)
(toc-markup . ,markup-symbol)
(parents . ,parents)
(children . ())
(level . ,(length parents))
;;;; Ajout du numéro de la pièce
(no . ,no))
toc-item-list))
;;;; Incrémenter le compteur.
(set! no (1+ no))
#{ \label $id #})))
(set! toc-items (lambda ()
;;;; Trier la table des matières par ordre
alphabétique
;;;; des valeurs du champ 'text.
(sort (setup-toc-hierarchy toc-item-list)
(lambda (entry1 entry2)
(string<?
(assq-ref (cdr entry1) 'text)
(assq-ref (cdr entry2) 'text)))))))
%%%% Redéfinition de la fonction \tocItem pour n'accepter
%%%% qu'une chaîne de caractères et pas un \markup, car
%%%% il faut pouvoir trier dans l'ordre alphabétique des
%%%% chaînes.
tocItem =
#(define-music-function (text) (string?)
(add-toc-item! 'tocItemMarkup text '()))
#(define-markup-list-command (table-of-contents layout props) ()
#:properties ((baseline-skip))
( _i "Outputs the table of contents, using the paper variable
@code{tocTitleMarkup} for its title, then the list of lines
built using the @code{tocItem} music function.
Usage: @code{\\markuplist \\table-of-contents}" )
(let* ((titleMarkup (ly:output-def-lookup layout 'tocTitleMarkup))
(indentMarkup (ly:output-def-lookup layout 'tocIndentMarkup))
(toplevelFormatter (ly:output-def-lookup layout 'tocFormatMarkup))
(toc-alist (toc-items)))
(ly:output-def-set-variable! layout 'label-alist-table
(append (ly:output-def-lookup layout
'label-alist-table)
toc-alist))
(cons (interpret-markup layout props titleMarkup)
(space-lines baseline-skip
(map (lambda (toc-item)
(let* ((label (car toc-item))
(alist (cdr toc-item))
(toc-markup (assoc-get 'toc-markup
alist))
(text (assoc-get 'text alist))
(level (assoc-get 'level alist))
;;;; Lire le numéro écrit
précédemment.
(no (assoc-get 'no alist)))
(interpret-markup
layout
(cons (list
(cons 'toc:page
(markup #:with-link label
#:page-ref label
"XXX" "?"))
(cons 'toc:text (markup
#:with-link label text))
(cons 'toc:label label)
(cons 'toc:level level)
;;;; Rendre le numéro visible
dans le \paper.
(cons 'toc:no (number->string no))
(cons 'toc:toplevel-formatter
toplevelFormatter)
(cons 'toc:indent
(make-line-markup
(make-list level
indentMarkup))))
props)
(ly:output-def-lookup layout
toc-markup))))
toc-alist)))))
\paper {
tocItemMarkup = \markup \on-the-fly #format-toc-toplevel \fill-line {
\line { \fromproperty #'toc:indent \fromproperty #'toc:text }
%%%% Au lieu du numéro de page, 'toc:page, on met le numéro
%%%% de la pièce.
\fromproperty #'toc:no
}
}
%% Exemple simpliste.
\markuplist \table-of-contents
\pageBreak
\tocItem \markup "C"
\score {
\header {
piece = "C"
}
{ c'1 }
}
\tocItem \markup "A"
\score {
\header {
piece = "A"
}
{ c'1 }
}
\tocItem \markup "B"
\score {
\header {
piece = "B"
}
{ c'1 }
}
%%%%%%%%%%%%%%%%%%%%%%%%%
Cordialement,
Jean
- Table des matières ordonnée, Domyck, 2021/01/04
- Re: Table des matières ordonnée, Domyck, 2021/01/05
- Re: Table des matières ordonnée, Domyck, 2021/01/06
- Re: Table des matières ordonnée, Christophe Pochon, 2021/01/06
- Re: Table des matières ordonnée, Domyck, 2021/01/06
- Re: Table des matières ordonnée, Jean-Charles Malahieude, 2021/01/06
- Re: Table des matières ordonnée, Christophe Pochon, 2021/01/06
- Re: Table des matières ordonnée, Christophe Pochon, 2021/01/06
- Re: Table des matières ordonnée,
Jean Abou Samra <=
- Table des matières ordonnée, Dominique Audéoud, 2021/01/07
- Re: Table des matières ordonnée, Jean Abou Samra, 2021/01/07
- Message not available
- Re: Table des matières ordonnée, Jean Abou Samra, 2021/01/09
- Message not available
- Re: Table des matières ordonnée, Jean Abou Samra, 2021/01/11
- Message not available
- Fwd: Table des matières ordonnée, Dominique Audéoud, 2021/01/11
- Fwd: Table des matières ordonnée, Dominique Audéoud, 2021/01/13
- Re: Table des matières ordonnée, Dominique Audéoud, 2021/01/13
- Re: Fwd: Table des matières ordonnée, Jean Abou Samra, 2021/01/13
- Re: Fwd: Table des matières ordonnée, Dominique Audéoud, 2021/01/14
Re: Table des matières ordonnée, Dominique Audéoud, 2021/01/09