diff --git a/collects/scribble/base.ss b/collects/scribble/base.ss index c6a4f229..f0ba8d00 100644 --- a/collects/scribble/base.ss +++ b/collects/scribble/base.ss @@ -259,6 +259,7 @@ (->* () () #:rest (listof pre-content?) element?)) (provide/contract + [linebreak (-> element?)] [hspace (-> exact-nonnegative-integer? element?)] [elem (->* () (#:style element-style?) @@ -291,6 +292,9 @@ h)) (make-element 'hspace (list (make-string n #\space))))) +(define (linebreak) + (make-element 'newline '("\n"))) + (define (elem #:style [style plain] . str) (make-element style (decode-content str))) diff --git a/collects/scribble/base/lang/reader.ss b/collects/scribble/base/lang/reader.ss index 5839ac06..1cbdf6c0 100644 --- a/collects/scribble/base/lang/reader.ss +++ b/collects/scribble/base/lang/reader.ss @@ -6,5 +6,10 @@ scribble/base/lang #:read-syntax scribble:read-syntax-inside #:whole-body-readers? #t #:wrapper1 (lambda (t) (list* 'doc 'values '() (t))) +#:info (lambda (key default) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)] + [else (default key)])) (require (prefix-in scribble: "../../reader.ss")) diff --git a/collects/scribble/doc/lang/reader.ss b/collects/scribble/doc/lang/reader.ss index 7fb45817..9b2f93c0 100644 --- a/collects/scribble/doc/lang/reader.ss +++ b/collects/scribble/doc/lang/reader.ss @@ -1,3 +1,11 @@ #lang scheme/base (require (prefix-in doc: scribble/doc/reader)) -(provide (rename-out [doc:read read] [doc:read-syntax read-syntax])) +(provide (rename-out [doc:read read] [doc:read-syntax read-syntax]) + get-info) + +(define (get-info . args) + (lambda (key) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)] + [else #f]))) diff --git a/collects/scribble/manual/lang/reader.ss b/collects/scribble/manual/lang/reader.ss index b573019e..2407939f 100644 --- a/collects/scribble/manual/lang/reader.ss +++ b/collects/scribble/manual/lang/reader.ss @@ -6,5 +6,10 @@ scribble/manual/lang #:read-syntax scribble:read-syntax-inside #:whole-body-readers? #t #:wrapper1 (lambda (t) (cons 'doc (t))) +#:info (lambda (key default) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)] + [else (default key)])) (require (prefix-in scribble: "../../reader.ss")) diff --git a/collects/scribble/scheme.ss b/collects/scribble/scheme.ss index 1aec663b..0a25cdf8 100644 --- a/collects/scribble/scheme.ss +++ b/collects/scribble/scheme.ss @@ -47,6 +47,7 @@ (struct-out var-id) (struct-out shaped-parens) (struct-out just-context) + (struct-out alternate-display) (struct-out literal-syntax) (for-syntax make-variable-id variable-id? @@ -178,11 +179,12 @@ (memq (syntax-e c) (current-variable-list)))] [(s it? sub?) (let ([sc (syntax-e c)]) - (let ([s (format "~s" (if (literal-syntax? sc) - (literal-syntax-stx sc) - (if (var-id? sc) - (var-id-sym sc) - sc)))]) + (let ([s (or (syntax-property c 'display-string) + (format "~s" (if (literal-syntax? sc) + (literal-syntax-stx sc) + (if (var-id? sc) + (var-id-sym sc) + sc))))]) (if (and (symbol? sc) ((string-length s) . > . 1) (char=? (string-ref s 0) #\_) @@ -763,6 +765,7 @@ (define-struct var-id (sym)) (define-struct shaped-parens (val shape)) (define-struct just-context (val ctx)) + (define-struct alternate-display (id string)) (define-struct literal-syntax (stx)) (define-struct graph-reference (bx)) @@ -792,6 +795,11 @@ s s (just-context-ctx v)))] + [(alternate-display? v) + (let ([s (do-syntax-ize (alternate-display-id v) col line ht #f)]) + (syntax-property s + 'display-string + (alternate-display-string v)))] [(hash-ref (unbox ht) v #f) => (lambda (m) (unless (unbox m) diff --git a/collects/scribble/sigplan/lang/reader.ss b/collects/scribble/sigplan/lang/reader.ss index f0fd2162..f67d928a 100644 --- a/collects/scribble/sigplan/lang/reader.ss +++ b/collects/scribble/sigplan/lang/reader.ss @@ -6,5 +6,10 @@ scribble/sigplan/lang #:read-syntax scribble:read-syntax-inside #:whole-body-readers? #t #:wrapper1 (lambda (t) (cons 'doc (t))) +#:info (lambda (key default) + (case key + [(color-lexer) + (dynamic-require 'syntax-color/scribble-lexer 'scribble-inside-lexer)] + [else (default key)])) (require (prefix-in scribble: "../../reader.ss")) diff --git a/collects/scribblings/scribble/base.scrbl b/collects/scribblings/scribble/base.scrbl index 30d54df0..689bc466 100644 --- a/collects/scribblings/scribble/base.scrbl +++ b/collects/scribblings/scribble/base.scrbl @@ -272,6 +272,9 @@ gets progressively larger.} @defproc[(emph [pre-content pre-content?] ...) element?]{ The same as @scheme[italic].} +@defproc[(linebreak) element?]{ +Produces an element that forces a line break.} + @defproc[(hspace [n exact-nonnegative-integer?]) element?]{ Produces an element containing @scheme[n] spaces and style diff --git a/collects/scribblings/scribble/config.scrbl b/collects/scribblings/scribble/config.scrbl index 51bb08f0..e7c7c229 100644 --- a/collects/scribblings/scribble/config.scrbl +++ b/collects/scribblings/scribble/config.scrbl @@ -60,7 +60,7 @@ in the case of Latex). To add a mapping from your own style name to a CSS configuration, add a @scheme[css-addition] structure instance to a style's @tech{style property} list. To map a style name to a Latex macro or environment, add a -scheme[tex-addition] structure instance. A @scheme[css-addition] or +@scheme[tex-addition] structure instance. A @scheme[css-addition] or @scheme[tex-addition] is normally associated with the style whose name is implemented by the adition, but it can also be added to the style for an enclosing part. diff --git a/collects/scribblings/scribble/reader.scrbl b/collects/scribblings/scribble/reader.scrbl index 4bc757af..e04ca036 100644 --- a/collects/scribblings/scribble/reader.scrbl +++ b/collects/scribblings/scribble/reader.scrbl @@ -167,7 +167,7 @@ needed. @{blah @|foo|: blah} }===| -Actually, the command part can be any Scheme expression (that does +Actually, the command part can be any Scheme expression (that does not start with @litchar["["], @litchar["{"], or @litchar["|"]), which is particularly useful with such escapes since they can be used with any expression.