|
|
|
@ -17,46 +17,46 @@
|
|
|
|
|
|
|
|
|
|
(define-tag-function (p attrs exprs)
|
|
|
|
|
;; no font-family so that it adopts whatever the surrounding family is
|
|
|
|
|
(qexpr (append `((keep-first-lines "2")(keep-last-lines "3") (font-size-adjust "100%") (character-tracking "0") (hyphenate "true") (display ,(symbol->string (gensym)))) attrs) exprs))
|
|
|
|
|
(qexpr (append `((,:keep-first-lines "2")(,:keep-last-lines "3") (,:font-size-adjust "100%") (,:character-tracking "0") (,:hyphenate "true") (,:display ,(symbol->string (gensym)))) attrs) exprs))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (hr attrs exprs)
|
|
|
|
|
hrbr)
|
|
|
|
|
|
|
|
|
|
(define-tag-function (blockquote attrs exprs)
|
|
|
|
|
(qexpr (append '((display "block")
|
|
|
|
|
(first-line-indent "0")
|
|
|
|
|
(background-color "#eee")
|
|
|
|
|
(clip "true")
|
|
|
|
|
(font-family "blockquote") (font-size "10") (line-height "14")
|
|
|
|
|
(border-width-top "0.5") (border-color-top "gray") (border-inset-top "8")
|
|
|
|
|
(border-width-left "3") (border-color-left "gray") (border-inset-left "20")
|
|
|
|
|
(border-width-bottom "0.5") (border-color-bottom "gray") (border-inset-bottom "-2")
|
|
|
|
|
(border-width-right "0.5") (border-color-right "gray") (border-inset-right "20")
|
|
|
|
|
(inset-top "10") (inset-bottom "8") (inset-left "30") (inset-right "30")
|
|
|
|
|
(keep-all-lines "yes"))
|
|
|
|
|
(qexpr (append `((,:display "block")
|
|
|
|
|
(,:first-line-indent "0")
|
|
|
|
|
(,:background-color "#eee")
|
|
|
|
|
(,:block-clip "true")
|
|
|
|
|
(,:font-family "blockquote") (,:font-size "10") (,:line-height "14")
|
|
|
|
|
(,:border-width-top "0.5") (,:border-color-top "gray") (,:border-inset-top "8")
|
|
|
|
|
(,:border-width-left "3") (,:border-color-left "gray") (,:border-inset-left "20")
|
|
|
|
|
(,:border-width-bottom "0.5") (,:border-color-bottom "gray") (,:border-inset-bottom "-2")
|
|
|
|
|
(,:border-width-right "0.5") (,:border-color-right "gray") (,:border-inset-right "20")
|
|
|
|
|
(,:inset-top "10") (,:inset-bottom "8") (,:inset-left "30") (,:inset-right "30")
|
|
|
|
|
(,:keep-all-lines "yes"))
|
|
|
|
|
attrs) exprs))
|
|
|
|
|
|
|
|
|
|
(define id (default-tag-function 'id))
|
|
|
|
|
(define class (default-tag-function 'class))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (strong attrs exprs)
|
|
|
|
|
(qexpr (list* '(font-bold "true") '(font-size-adjust "100%") attrs) exprs))
|
|
|
|
|
(qexpr (list* `(,:font-bold "true") `(,:font-size-adjust "100%") attrs) exprs))
|
|
|
|
|
(define b strong)
|
|
|
|
|
|
|
|
|
|
(define-tag-function (a attrs exprs)
|
|
|
|
|
(qexpr `((link ,(cadr (assoc 'href attrs)))(font-color "MediumVioletRed")) exprs))
|
|
|
|
|
(qexpr `((link ,(cadr (assoc :href attrs)))(font-color "MediumVioletRed")) exprs))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (em attrs exprs)
|
|
|
|
|
(qexpr (list* '(font-italic "true") '(font-size-adjust "100%") attrs) exprs))
|
|
|
|
|
(qexpr (list* `(font-italic "true") `(font-size-adjust "100%") attrs) exprs))
|
|
|
|
|
(define i em)
|
|
|
|
|
|
|
|
|
|
(define-syntax-rule (attr-list . attrs) 'attrs)
|
|
|
|
|
|
|
|
|
|
(define (heading-base font-size attrs exprs)
|
|
|
|
|
(qexpr (append `((font-family "heading") (first-line-indent "0") (display "block") (font-size ,(number->string font-size))(line-height ,(number->string (* 1.2 font-size))) (border-width-top "0.5")(border-inset-top "9") (inset-bottom "-3") (inset-top "6") (keep-with-next "true")) attrs) exprs))
|
|
|
|
|
(qexpr (append `((,:font-family "heading") (,:first-line-indent "0") (,:display "block") (,:font-size ,(number->string font-size))(,:line-height ,(number->string (* 1.2 font-size))) (,:border-width-top "0.5")(,:border-inset-top "9") (,:inset-bottom "-3") (,:inset-top "6") (,:keep-with-next "true")) attrs) exprs))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (h1 attrs exprs)
|
|
|
|
|
(heading-base 20 (append '() attrs) exprs))
|
|
|
|
|
(heading-base 20 attrs exprs))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (h2 attrs exprs) (heading-base 16 attrs exprs))
|
|
|
|
|
(define-tag-function (h3 attrs exprs) (heading-base 14 attrs exprs))
|
|
|
|
@ -66,7 +66,7 @@
|
|
|
|
|
(define h6 h3)
|
|
|
|
|
|
|
|
|
|
(define-tag-function (code attrs exprs)
|
|
|
|
|
(qexpr (append '((font-family "code")#;(line-align "right")(font-size "10")(bg "aliceblue")) attrs) exprs))
|
|
|
|
|
(qexpr (append `((,:font-family "code")#;(,:line-align "right")(,:font-size "10")(,:bg "aliceblue")) attrs) exprs))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (pre attrs exprs)
|
|
|
|
|
;; pre needs to convert white space to equivalent layout elements
|
|
|
|
@ -75,25 +75,25 @@
|
|
|
|
|
[str (in-list (string-split (string-join (get-elements expr) "") "\n"))])
|
|
|
|
|
`(,(get-tag expr) ,(get-attrs expr) ,(string-replace str " " " ")))
|
|
|
|
|
line-break))
|
|
|
|
|
(qexpr (list* '(display "block") '(background-color "aliceblue")
|
|
|
|
|
'(first-line-indent "0")
|
|
|
|
|
'(clip "true")
|
|
|
|
|
'(font-family "code") '(font-size "11") '(line-height "14")
|
|
|
|
|
'(border-inset-top "10")
|
|
|
|
|
'(border-width-left "2") '(border-color-left "#669") '(border-inset-left "0")
|
|
|
|
|
'(border-inset-bottom "-4")
|
|
|
|
|
'(inset-left "12") '(inset-top "12") '(inset-bottom "8")
|
|
|
|
|
(qexpr (list* `(,:display "block") `(,:background-color "aliceblue")
|
|
|
|
|
`(,:first-line-indent "0")
|
|
|
|
|
`(,:block-clip "true")
|
|
|
|
|
`(,:font-family "code") `(,:font-size "11") `(,:line-height "14")
|
|
|
|
|
`(,:border-inset-top "10")
|
|
|
|
|
`(,:border-width-left "2") `(,:border-color-left "#669") `(,:border-inset-left "0")
|
|
|
|
|
`(,:border-inset-bottom "-4")
|
|
|
|
|
`(,:inset-left "12") `(,:inset-top "12") `(,:inset-bottom "8")
|
|
|
|
|
attrs) new-exprs))
|
|
|
|
|
|
|
|
|
|
(define (list-base attrs exprs [bullet-val #f])
|
|
|
|
|
(define bullet-space-factor 2.5)
|
|
|
|
|
(define em (dict-ref attrs 'font-size default-font-size))
|
|
|
|
|
(define em (dict-ref attrs :font-size default-font-size))
|
|
|
|
|
(define bullet-indent (* bullet-space-factor em))
|
|
|
|
|
(qexpr (list* `(inset-left ,(number->string bullet-indent)) attrs)
|
|
|
|
|
(qexpr (list* `(,:inset-left ,(number->string bullet-indent)) attrs)
|
|
|
|
|
(add-between
|
|
|
|
|
(for/list ([(expr idx) (in-indexed exprs)]
|
|
|
|
|
#:when (txexpr? expr))
|
|
|
|
|
(list* (get-tag expr) (cons (list 'list-index (or bullet-val (format "~a" (add1 idx)))) (get-attrs expr)) (get-elements expr)))
|
|
|
|
|
(list* (get-tag expr) (cons (list :list-index (or bullet-val (format "~a" (add1 idx)))) (get-attrs expr)) (get-elements expr)))
|
|
|
|
|
para-break)))
|
|
|
|
|
|
|
|
|
|
(define-tag-function (ol attrs exprs) (list-base attrs exprs))
|
|
|
|
|