scribble-enhanced/collects/scriblib/figure.rkt
Eli Barzilay 45a9cd48c2 ".ss" -> ".rkt" scan done.
original commit: 3157955d40f89d83fb3d5fa7a2f20639cda69579
2011-07-02 10:37:53 -04:00

81 lines
2.5 KiB
Racket

#lang scheme/base
(require scribble/manual
scribble/core
scribble/decode
scribble/html-properties
scribble/latex-properties
setup/main-collects
"private/counter.rkt")
(provide figure
figure*
figure**
figure-here
Figure-target
Figure-ref
figure-ref)
(define figure-style-extras
(let ([abs (lambda (s)
(path->main-collects-relative
(collection-file-path s "scriblib")))])
(list (make-css-addition (abs "figure.css"))
(make-tex-addition (abs "figure.tex")))))
(define centerfigure-style (make-style "Centerfigure" figure-style-extras))
(define herefigure-style (make-style "Herefigure" figure-style-extras))
(define figureinside-style (make-style "FigureInside" figure-style-extras))
(define legend-style (make-style "Legend" figure-style-extras))
(define centerfiguremulti-style (make-style "CenterfigureMulti" figure-style-extras))
(define centerfiguremultiwide-style (make-style "CenterfigureMultiWide" figure-style-extras))
(define (figure tag caption . content)
(apply figure-helper centerfigure-style tag caption content))
(define (figure-here tag caption . content)
(apply figure-helper herefigure-style tag caption content))
(define (figure-helper style tag caption . content)
(make-nested-flow
style
(list
(make-nested-flow
figureinside-style
(append
(decode-flow content)
(list
(make-paragraph
plain
(list
(make-element legend-style
(list (Figure-target tag) ": "
caption))))))))))
(define (*figure style tag caption content)
(make-nested-flow
style
(list
(make-nested-flow
figureinside-style
(append
(decode-flow content)
(list
(make-paragraph
plain
(list
(make-element legend-style
(list (Figure-target tag) ": "
caption))))))))))
(define (figure* tag caption . content)
(*figure centerfiguremulti-style tag caption content))
(define (figure** tag caption . content)
(*figure centerfiguremultiwide-style tag caption content))
(define figures (new-counter "figure"))
(define (Figure-target tag)
(counter-target figures tag "Figure"))
(define (Figure-ref tag)
(make-element #f (list (counter-ref figures tag "Figure"))))
(define (figure-ref tag)
(make-element #f (list (counter-ref figures tag "figure"))))