%% http://lsr.di.unimi.it/LSR/Item?id=763 % 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 %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> \header { piece = "second piece" } }