diff --git a/quad/quad/typewriter-test.rkt b/quad/quad/typewriter-test.rkt index 350e9683..e968e78c 100644 --- a/quad/quad/typewriter-test.rkt +++ b/quad/quad/typewriter-test.rkt @@ -1,3 +1,3 @@ #lang quad/typewriter -a b cd e f gh \ No newline at end of file +a b cd ef g h \ No newline at end of file diff --git a/quad/quad/typewriter.rkt b/quad/quad/typewriter.rkt index 4f24a66d..64882775 100644 --- a/quad/quad/typewriter.rkt +++ b/quad/quad/typewriter.rkt @@ -3,6 +3,14 @@ (provide (rename-out [mb #%module-begin])) (define optional-break? (λ (q) (and (quad? q) (memv (car (qe q)) '(#\space))))) +(struct $shim $quad () #:transparent) +(struct $char $quad () #:transparent) +(define (charify q) ($char (qa q) (qe q))) +(define (shimify xs) (add-between (map charify xs) + (list ($shim (hasheq) null)) + #:splice? #t + #:before-first (list ($shim (hasheq) null)) + #:after-last (list ($shim (hasheq) null)))) (struct $line $quad () #:transparent) (struct $page $quad () #:transparent) (struct $doc $quad () #:transparent) @@ -17,7 +25,7 @@ (delay (values 0 1 0)) (delay (values 1 1 1)))))]) (if (promise? val) (force val) (val)))) - #:finish-segment-proc (λ (pcs) (list ($line (hasheq) pcs))))) + #:finish-segment-proc (λ (pcs) (list ($line (hasheq) (map charify pcs)))))) (define (pbs xs size [debug #f]) (insert-breaks xs size debug