From 2630b3e901929d00410f486650107d5f9e473f64 Mon Sep 17 00:00:00 2001 From: Matthew Butterick Date: Thu, 10 Jan 2019 13:31:15 -0800 Subject: [PATCH] page numbers (to be centered) --- quad/qtest/markdown.rkt | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/quad/qtest/markdown.rkt b/quad/qtest/markdown.rkt index afde8d0c..066aa5d3 100644 --- a/quad/qtest/markdown.rkt +++ b/quad/qtest/markdown.rkt @@ -152,11 +152,16 @@ (pt w (apply max (cons h line-heights))))] [elems (consolidate-runs pcs)])))))) -(define vert-margin 48) +(define top-margin 60) +(define bottom-margin 120) (define side-margin 120) -(define page-offset (pt side-margin vert-margin)) +(define page-offset (pt side-margin top-margin)) (define q:page (q #:offset page-offset - #:pre-draw (λ (q doc) (add-page doc)))) + #:pre-draw (λ (q doc) (add-page doc)) + #:post-draw (λ (q doc) + (text doc (format "— ~a —" (hash-ref (quad-attrs q) 'page-number)) + 200 + (- (pdf-height doc) bottom-margin))))) (define q:doc (q #:pre-draw (λ (q doc) (start-doc doc)) #:post-draw (λ (q doc) (end-doc doc)))) @@ -165,7 +170,12 @@ (define (page-wrap xs vertical-height) (break xs vertical-height #:soft-break line-spacer? - #:finish-wrap (λ (pcs q idx) (list (struct-copy quad q:page [elems pcs]))))) + #:finish-wrap (λ (pcs q idx) (list (struct-copy quad q:page + [attrs (let ([page-number idx] + [h (hash-copy (quad-attrs q:page))]) + (hash-set! h 'page-number page-number) + h)] + [elems pcs]))))) (define (run xs path) (define pdf (time-name make-pdf (make-pdf #:compress #t @@ -173,7 +183,7 @@ #:output-path path #:size "legal"))) (define line-width (- (pdf-width pdf) (* 2 side-margin))) - (define vertical-height (- (pdf-height pdf) (* 2 vert-margin))) + (define vertical-height (- (pdf-height pdf) top-margin bottom-margin)) (let* ([x (time-name runify (runify (qexpr->quad xs)))] [x (time-name ->string-quad (map (λ (x) (->string-quad pdf x)) x))] [x (time-name line-wrap (line-wrap x line-width))]