[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: PDF hyperlinks
From: |
Dan Eble |
Subject: |
Re: PDF hyperlinks |
Date: |
Mon, 27 Dec 2010 15:14:15 -0500 |
Here's some prototype code which works for me in 2.13.9.
%%%%%%%%%%%%%%%%%%%%%
% in music-drawing-routines.ps
% llx lly urx ury page
/mark_page_link
{
/page exch def
/ury exch def
/urx exch def
/lly exch def
/llx exch def
[
/Rect [ llx lly urx ury ]
/Border [ 0 0 0 ]
/Page page
/Subtype /Link
/ANN
pdfmark
}
bind def
;;;;;;;;;;;;;;;;;;;;;
; in output-ps.scm
(define (page-link page-no x y)
(ly:format "~a ~a currentpoint vector_add ~a ~a currentpoint vector_add ~a
mark_page_link"
(car x)
(car y)
(cdr x)
(cdr y)
page-no))
;;;;;;;;;;;;;;;;;;;;;
; in define-markup-commands.scm
; [poorly named considering there is already a \with-url]
(define-markup-command (with-link layout props label arg)
(symbol? markup?)
#:category other
"
@cindex referencing page numbers in text
Add a link to the page holding label @var{label} around @{arg}. This
only works in the PDF backend."
(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))
(page-number (if (list? table)
(assoc-get label table)
#f))
(link-expr (list 'page-link page-number
`(quote ,x-ext) `(quote ,y-ext))))
(ly:stencil-add (ly:make-stencil link-expr x-ext y-ext)
arg-stencil)))))
x-ext
y-ext)))
Thanks,
--
Dan