Style language - cross references

<style-specification id=figref use=hardcopy>

(element xref
  (map-constructor (let ((x (current-node)))
                     (lambda()
                       (process-xref x)))
                   (element (attribute-string "REFID"))))

(define (process-xref xref-node)
  (if (match-element? 'chapter (current-node))
      (with-mode xref
        (process-node-list (current-node)))
      (sosofo-append
       (literal "Figure "
                (format-number (element-number) "1"))
       (general-indirect-sosofo
        page-ref-if-different
        (page-number
         first-area-of-node: (current-node))
        (page-number first-area-of-node: xref-node)))))

(define (page-ref-if-different figure-page current-page)
  (if (equal? figure-page current-page)
      (empty-sosofo)
      (literal ", page "
               (format-number figure-page "1"))))

</style>
[Prev][Next]