diff --git a/scribble-doc/scriblib/scribblings/figure.scrbl b/scribble-doc/scriblib/scribblings/figure.scrbl index dc7a84be..daf75598 100644 --- a/scribble-doc/scriblib/scribblings/figure.scrbl +++ b/scribble-doc/scriblib/scribblings/figure.scrbl @@ -15,21 +15,29 @@ @defproc[(figure [tag string?] [caption content?] [p pre-flow?] ... [#:style style style? center-figure-style] + [#:label-sep label-sep pre-content? ": "] + [#:label-style label-style element-style? #f] [#:continue? continue? any/c #f]) block?] @defproc[(figure* [tag string?] [caption content?] [p pre-flow?] ... [#:style style style? center-figure-style] - [#:continue? continue? any/c #f]) + [#:label-sep label-sep pre-content? ": "] + [#:label-style label-style element-style? #f] + [#:continue? continue? any/c #f]) block?] @defproc[(figure** [tag string?] [caption content?] [p pre-flow?] ... [#:style style style? center-figure-style] + [#:label-sep label-sep pre-content? ": "] + [#:label-style label-style element-style? #f] [#:continue? continue? any/c #f]) block?] @defproc[(figure-here [tag string?] [caption content?] [pre-flow pre-flow?] ... [#:style style style? center-figure-style] + [#:label-sep label-sep pre-content? ": "] + [#:label-style label-style element-style? #f] [#:continue? continue? any/c #f]) block?] )]{ @@ -52,8 +60,18 @@ By default, @racket[style] is set so that the content of the figure is centered. Use @racket[left-figure-style], @racket[center-figure-style], or @racket[right-figure-style] to specify the alignment. +The @racket[label-sep] and @racket[label-style] arguments adjust the +way that the caption's label is shown. By default, the label is the +word ``Figure'' followed by a space, the figure number, ``:'', and a +space, but @racket[label-sep] can specify an alternative to the ``:'' +and ending space. The composed label is given the style specified by +@racket[label-style]. + If @racket[continue?] is a true value, then the figure counter is not -incremented.} +incremented. + +@history[#:changed "1.24" @elem{Added the @racket[#:label-sep] and + @racket[#:label-style] arguments.}]} @deftogether[( @defthing[left-figure-style style?] diff --git a/scribble-lib/info.rkt b/scribble-lib/info.rkt index f3ea6c15..fd47dfe9 100644 --- a/scribble-lib/info.rkt +++ b/scribble-lib/info.rkt @@ -23,4 +23,4 @@ (define pkg-authors '(mflatt eli)) -(define version "1.23") +(define version "1.24") diff --git a/scribble-lib/scriblib/figure.rkt b/scribble-lib/scriblib/figure.rkt index 16780d49..a95c9960 100644 --- a/scribble-lib/scriblib/figure.rkt +++ b/scribble-lib/scriblib/figure.rkt @@ -66,30 +66,40 @@ figure-style-extras)) c)) +(define default-label-sep ": ") + (define (figure tag caption #:style [style center-figure-style] + #:label-sep [label-sep default-label-sep] + #:label-style [label-style #f] #:continue? [continue? #f] . content) - (figure-helper figure-style style tag caption content continue?)) + (figure-helper figure-style style label-sep label-style tag caption content continue?)) (define (figure-here tag caption - #:style [style center-figure-style] + #:style [style center-figure-style] + #:label-sep [label-sep default-label-sep] + #:label-style [label-style #f] #:continue? [continue? #f] . content) - (figure-helper herefigure-style style tag caption content continue?)) + (figure-helper herefigure-style style label-sep label-style tag caption content continue?)) (define (figure* tag caption #:style [style center-figure-style] + #:label-sep [label-sep default-label-sep] + #:label-style [label-style #f] #:continue? [continue? #f] . content) - (figure-helper figuremulti-style style tag caption content continue?)) + (figure-helper figuremulti-style style label-sep label-style tag caption content continue?)) (define (figure** tag caption - #:style [style center-figure-style] + #:style [style center-figure-style] + #:label-sep [label-sep default-label-sep] + #:label-style [label-style #f] #:continue? [continue? #f] . content) - (figure-helper figuremultiwide-style style tag caption content continue?)) + (figure-helper figuremultiwide-style style label-sep label-style tag caption content continue?)) -(define (figure-helper figure-style content-style tag caption content continue?) +(define (figure-helper figure-style content-style label-sep label-style tag caption content continue?) (make-nested-flow figure-style (list @@ -101,15 +111,23 @@ (list (make-element (if continue? legend-continued-style legend-style) - (list (Figure-target tag #:continue? continue?) caption))))))) + (list (Figure-target tag + #:label-sep label-sep + #:label-style label-style + #:continue? continue?) + caption))))))) (define figures (new-counter "figure" #:target-wrap make-figure-target #:ref-wrap make-figure-ref)) -(define (Figure-target tag #:continue? [continue? #f]) +(define (Figure-target tag + #:continue? [continue? #f] + #:label-sep [label-sep ": "] + #:label-style [label-style #f]) (counter-target figures tag "Figure" - (if continue? " (continued): " ": ") + #:label-suffix (list (if continue? " (continued)" "") label-sep) + #:label-style label-style #:target-style figure-target-style #:continue? continue?)) diff --git a/scribble-lib/scriblib/private/counter.rkt b/scribble-lib/scriblib/private/counter.rkt index ff85a685..4111f481 100644 --- a/scribble-lib/scriblib/private/counter.rkt +++ b/scribble-lib/scriblib/private/counter.rkt @@ -21,6 +21,8 @@ (define (counter-target counter tag label #:target-style [target-style #f] + #:label-style [label-style #f] + #:label-suffix [label-suffix '()] #:continue? [continue? #f] . content) (let ([content (decode-content content)]) @@ -34,10 +36,13 @@ (make-delayed-element (lambda (renderer part ri) (let ([n (resolve-get part ri (tag->counter-tag counter tag "value"))]) - (let ([l (cons (format "~a" n) content)]) - (if label - (list* label 'nbsp l) - l)))) + (cons + (make-element label-style + (let ([l (cons (format "~a" n) (decode-content (list label-suffix)))]) + (if label + (list* label 'nbsp l) + l))) + content))) (lambda () (if label (list* label 'nbsp "N" content) (cons "N" content)))