lilypond-user
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: table-of-contents page links


From: Jan-Peter Voigt
Subject: Re: table-of-contents page links
Date: Sat, 28 Apr 2012 08:52:38 +0200
User-agent: Mozilla/5.0 (X11; Linux i686; rv:11.0) Gecko/20120412 Thunderbird/11.0.1

Hello Harm,

thanks alot! This seems to do the trick.
I will have a deeper look at it next days.

Cheers, Jan-Peter

On 28.04.2012 01:53, Thomas Morley wrote:
\version "2.15.36"

#(define (book-first-page layout props)
    (define (ancestor layout)
      "Return the topmost layout ancestor"
      (let ((parent (ly:output-def-parent layout)))
        (if (not (ly:output-def? parent))
            layout
            (ancestor parent))))
       (ly:output-def-lookup (ancestor layout) 'first-page-number))

#(define-markup-command (with-link layout props label arg)
   (symbol? markup?)
   (let* ((arg-stencil (interpret-markup layout props arg))
          (x-ext (ly:stencil-extent arg-stencil X))
          (y-ext (ly:stencil-extent arg-stencil Y)))
     (ly:make-stencil
      `(delay-stencil-evaluation
        ,(delay (ly:stencil-expr
                 (let* ((table (ly:output-def-lookup layout 'label-page-table))
                        (first-page-number (book-first-page layout props))
                        (orig-page-number (if (list? table)
                                         (assoc-get label table)
                                         #f))
                        (p-nr (ly:output-def-lookup layout 'first-page-number))
                        (page-number (+ orig-page-number (+ 1 (* -1
first-page-number) )))
                        (link-expr (list 'page-link page-number
                                         `(quote ,x-ext) `(quote ,y-ext))))

(newline)(display "first-page-number__")(display first-page-number)
(newline)(display "p-nr_______________")(display p-nr)

                   (ly:stencil-add (ly:make-stencil link-expr x-ext y-ext)
       arg-stencil)))))
            x-ext
            y-ext)))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%---- Test
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\paper {
           first-page-number = #-2
}

mus = \relative c'' {
         \repeat unfold 10 { c1 \break }
}

\book {
         \bookpart {
                \markup \bold \fontsize #10 \fill-line { "TITLE" }
         }

         \bookpart {
                \markup \fontsize #2 \fill-line { "Some Text" }
                
                \paper {
                        oddHeaderMarkup = \markup { \null }
                        evenHeaderMarkup = \markup { \null }
                }
         }
         \bookpart {
                \markuplist \table-of-contents
                
                \paper {
                        oddHeaderMarkup = \markup { \null }
                        evenHeaderMarkup = \markup { \null }
                }
         }
         \bookpart {
                \tocItem \markup { "Piece 1" }
                \score {
                        \mus
                        \header { piece = "Piece 1" }
                }
         }
         \bookpart {
                \tocItem \markup { "Piece 2" }
                \score {
                        \transpose c cis \mus
                        \header { piece = "Piece 2" }
                }
         }
         \bookpart {
                \tocItem \markup { "Piece 3" }
                \score {
                        \transpose c d \mus
                        \header { piece = "Piece 3" }
                }
         }
}

%%%%%%%%%%%%

The lines with p-nr and (display ...) should be deleted. I let them in
for testing-purpose.





reply via email to

[Prev in Thread] Current Thread [Next in Thread]