% Livret musical avec tables des matières et index %Merci à Valentin V., Jean A.S., Pierre P-S. pour leur aide ! \version "2.20.0" %*************************************** % définition d'un compteur (nombre de morceaux et utilisation en table des matières) #(define ctrToc 0) #(define-markup-command (ctrToc layout props) () (set! ctrToc (1+ ctrToc)) (interpret-markup layout props (markup (number->string ctrToc)))) #(define counter 0) #(define-markup-command (counter layout props) () (set! counter (1+ counter)) (interpret-markup layout props (markup (number->string counter)))) #(define-markup-command (ctrTot layout props) () (interpret-markup layout props (markup (number->string counter)))) %------------------------------ %=== INDEX (source LSR) =============== %% http://lsr.di.unimi.it/LSR/Item?id=763 %% see also http://www.lilypond.org/doc/v2.18/Documentation/notation/table-of-contents % Usage: % - define and index item with \indexItem $sortstring $markup % - use \indexSection $sortstring $markup to divide the index into several sections % - display the alphabetical index with \markuplist \index % code ist mostly taken from ./ly/toc-init.ly and just renamed and slightly modfied %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % LSR workaround: %#(set! paper-alist (cons '("snippet" . (cons (* 190 mm) (* 230 mm))) paper-alist)) %\paper { % #(set-paper-size "snippet") % indent = 0 % tagline = ##f %} %\markup\vspace #.5 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %here starts the snippet: %% defined later, in a closure #(define-public (add-index-item! markup-symbol text sorttext) #f) #(define-public (index-items) #f) #(let ((index-item-list (list))) (set! add-index-item! (lambda (markup-symbol text sorttext) (let ((label (gensym "index"))) (set! index-item-list ;; We insert index items sorted from the beginning on and do ;; not sort them later - this saves pretty much computing time (insert-alphabetical-sorted! (list label markup-symbol text sorttext) index-item-list)) (make-music 'EventChord 'page-marker #t 'page-label label 'elements (list (make-music 'LabelEvent 'page-label label)))))) (set! index-items (lambda () index-item-list))) #(define (insert-alphabetical-sorted! iitem ilist) (if (null? ilist) (list iitem) (if (string-ci