Scribble: refine Latex output again to allow more page breaks
svn: r15505 original commit: 0fc2ad54db528fabed80ee895269b8e0e3bd3401
This commit is contained in:
parent
483607b4ca
commit
1966bd5bb7
|
@ -425,28 +425,29 @@
|
|||
(define/public (render-paragraph p part ri)
|
||||
(render-content (paragraph-content p) part ri))
|
||||
|
||||
(define/public (render-compound-paragraph p part ri)
|
||||
(define/public (render-compound-paragraph p part ri starting-item?)
|
||||
(apply append (let loop ([l (compound-paragraph-blocks p)]
|
||||
[first? #t])
|
||||
(cond
|
||||
[(null? l) null]
|
||||
[else (cons
|
||||
(render-intrapara-block (car l) part ri first? (null? (cdr l)))
|
||||
(render-intrapara-block (car l) part ri first? (null? (cdr l))
|
||||
(and first? starting-item?))
|
||||
(loop (cdr l) #f))]))))
|
||||
|
||||
(define/public (render-flow p part ri start-inline?)
|
||||
(define/public (render-flow p part ri starting-item?)
|
||||
(if (null? (flow-paragraphs p))
|
||||
null
|
||||
(append
|
||||
(render-block (car (flow-paragraphs p))
|
||||
part ri start-inline?)
|
||||
part ri starting-item?)
|
||||
(apply append
|
||||
(map (lambda (p)
|
||||
(render-block p part ri #f))
|
||||
(cdr (flow-paragraphs p)))))))
|
||||
|
||||
(define/public (render-intrapara-block p part ri first? last?)
|
||||
(render-block p part ri first?))
|
||||
(define/public (render-intrapara-block p part ri first? last? starting-item?)
|
||||
(render-block p part ri starting-item?))
|
||||
|
||||
(define/public (render-block p part ri inline?)
|
||||
(cond
|
||||
|
@ -455,7 +456,7 @@
|
|||
(render-table p part ri inline?))]
|
||||
[(itemization? p) (render-itemization p part ri)]
|
||||
[(blockquote? p) (render-blockquote p part ri)]
|
||||
[(compound-paragraph? p) (render-compound-paragraph p part ri)]
|
||||
[(compound-paragraph? p) (render-compound-paragraph p part ri inline?)]
|
||||
[(delayed-block? p)
|
||||
(render-block (delayed-block-blocks p ri) part ri inline?)]
|
||||
[else (render-paragraph p part ri)]))
|
||||
|
|
|
@ -837,21 +837,21 @@
|
|||
(append (render-part (car secs) ri)
|
||||
(loop (add1 pos) (cdr secs))))))))
|
||||
|
||||
(define/private (render-flow* p part ri start-inline? special-last?)
|
||||
(define/private (render-flow* p part ri starting-item? special-last?)
|
||||
;; Wrap each table with <p>, except for a trailing table
|
||||
;; when `special-last?' is #t
|
||||
(let loop ([f (flow-paragraphs p)] [inline? start-inline?])
|
||||
(let loop ([f (flow-paragraphs p)] [starting-item? starting-item?])
|
||||
(cond
|
||||
[(null? f) null]
|
||||
[(and (table? (car f))
|
||||
(or (not special-last?) (not (null? (cdr f)))))
|
||||
(cons `(p ,@(render-block (car f) part ri inline?))
|
||||
(cons `(p ,@(render-block (car f) part ri starting-item?))
|
||||
(loop (cdr f) #f))]
|
||||
[else (append (render-block (car f) part ri inline?)
|
||||
[else (append (render-block (car f) part ri starting-item?)
|
||||
(loop (cdr f) #f))])))
|
||||
|
||||
(define/override (render-flow p part ri start-inline?)
|
||||
(render-flow* p part ri start-inline? #t))
|
||||
(define/override (render-flow p part ri starting-item?)
|
||||
(render-flow* p part ri starting-item? #t))
|
||||
|
||||
(define/private (do-render-paragraph p part ri flatten-unstyled?)
|
||||
;; HACK: for the search, we need to be able to render a `div'
|
||||
|
@ -877,11 +877,11 @@
|
|||
(define/override (render-paragraph p part ri)
|
||||
(do-render-paragraph p part ri #f))
|
||||
|
||||
(define/override (render-intrapara-block p part ri first? last?)
|
||||
(define/override (render-intrapara-block p part ri first? last? starting-item?)
|
||||
`((div ([class "SIntrapara"])
|
||||
,@(cond
|
||||
[(paragraph? p) (do-render-paragraph p part ri #t)]
|
||||
[else (render-block p part ri #t)]))))
|
||||
[else (render-block p part ri starting-item?)]))))
|
||||
|
||||
(define/override (render-element e part ri)
|
||||
(cond
|
||||
|
@ -1067,7 +1067,7 @@
|
|||
,@sz))))]
|
||||
[else (render*)])))
|
||||
|
||||
(define/override (render-table t part ri need-inline?)
|
||||
(define/override (render-table t part ri starting-item?)
|
||||
(define raw-style (flatten-style (table-style t)))
|
||||
(define t-style (if (with-attributes? raw-style)
|
||||
(with-attributes-style raw-style)
|
||||
|
@ -1124,7 +1124,7 @@
|
|||
(render-flow d part ri #f)))
|
||||
(loop (cdr ds) (cdr as) (cdr vas) (cdr sts) #f)))]))))
|
||||
`((table ([cellspacing "0"]
|
||||
,@(if need-inline?
|
||||
,@(if starting-item?
|
||||
'([style "display: inline-table; vertical-align: text-top;"])
|
||||
null)
|
||||
,@(case t-style
|
||||
|
|
|
@ -130,11 +130,11 @@
|
|||
(when (string? style) (printf "}"))))
|
||||
null)
|
||||
|
||||
(define/override (render-intrapara-block p part ri first? last?)
|
||||
(define/override (render-intrapara-block p part ri first? last? starting-item?)
|
||||
(unless first?
|
||||
(printf "\n\n\\noindent "))
|
||||
(begin0
|
||||
(super render-intrapara-block p part ri first? last?)))
|
||||
(super render-intrapara-block p part ri first? last? starting-item?)))
|
||||
|
||||
(define/override (render-element e part ri)
|
||||
(when (render-element? e)
|
||||
|
@ -243,17 +243,17 @@
|
|||
[else (format "x~x" (char->integer c))]))
|
||||
(string->list (format "~s" s)))))
|
||||
|
||||
(define/override (render-flow p part ri start-inline?)
|
||||
(define/override (render-flow p part ri starting-item?)
|
||||
(if (null? (flow-paragraphs p))
|
||||
null
|
||||
(begin
|
||||
(render-block (car (flow-paragraphs p)) part ri start-inline?)
|
||||
(render-block (car (flow-paragraphs p)) part ri starting-item?)
|
||||
(for ([b (in-list (cdr (flow-paragraphs p)))])
|
||||
(printf "\n\n")
|
||||
(render-block b part ri #f))
|
||||
null)))
|
||||
|
||||
(define/override (render-table t part ri inline-table?)
|
||||
(define/override (render-table t part ri starting-item?)
|
||||
(let* ([boxed? (eq? 'boxed (table-style t))]
|
||||
[index? (eq? 'index (table-style t))]
|
||||
[tableform
|
||||
|
@ -267,30 +267,36 @@
|
|||
[row-styles (cdr (or (and (list? (table-style t))
|
||||
(assoc 'row-styles (table-style t)))
|
||||
(cons #f (map (lambda (x) #f) flowss))))]
|
||||
[inline?
|
||||
(and (not boxed?)
|
||||
(not index?)
|
||||
(ormap (lambda (rs) (equal? rs "inferencetop")) row-styles)
|
||||
(or (null? (table-flowss t))
|
||||
(= 1 (length (car (table-flowss t)))))
|
||||
(let ([m (current-table-mode)])
|
||||
(and m
|
||||
(equal? "bigtabular" (car m))
|
||||
(= 1 (length (car (table-flowss (cadr m))))))))]
|
||||
[boxline "{\\setlength{\\unitlength}{\\linewidth}\\begin{picture}(1,0)\\put(0,0){\\line(1,0){1}}\\end{picture}}"]
|
||||
[twidth (if (null? (table-flowss t))
|
||||
1
|
||||
(length (car (table-flowss t))))]
|
||||
[single-column? (and (= 1 twidth)
|
||||
(not (table-style t))
|
||||
(not (current-table-mode)))])
|
||||
(or (not (table-style t))
|
||||
(string? (table-style t)))
|
||||
(not (current-table-mode)))]
|
||||
[inline?
|
||||
(and (not single-column?)
|
||||
(not boxed?)
|
||||
(not index?)
|
||||
(ormap (lambda (rs) (equal? rs "inferencetop")) row-styles)
|
||||
(= 1 twidth)
|
||||
(let ([m (current-table-mode)])
|
||||
(and m
|
||||
(equal? "bigtabular" (car m))
|
||||
(= 1 (length (car (table-flowss (cadr m))))))))]
|
||||
[boxline "{\\setlength{\\unitlength}{\\linewidth}\\begin{picture}(1,0)\\put(0,0){\\line(1,0){1}}\\end{picture}}"])
|
||||
(if single-column?
|
||||
(do-render-blockquote
|
||||
(make-blockquote "SingleColumn"
|
||||
(apply append (map flow-paragraphs (map car (table-flowss t)))))
|
||||
part
|
||||
ri
|
||||
#t)
|
||||
(begin
|
||||
(when (string? (table-style t))
|
||||
(printf "\\begin{~a}" (table-style t)))
|
||||
(do-render-blockquote
|
||||
(make-blockquote "SingleColumn"
|
||||
(apply append (map flow-paragraphs (map car (table-flowss t)))))
|
||||
part
|
||||
ri
|
||||
#t)
|
||||
(when (string? (table-style t))
|
||||
(printf "\\end{~a}" (table-style t))))
|
||||
(unless (or (null? flowss) (null? (car flowss)))
|
||||
(parameterize ([current-table-mode
|
||||
(if inline? (current-table-mode) (list tableform t))]
|
||||
|
@ -302,7 +308,7 @@
|
|||
[single-column? (printf "\\begin{tabbing}\n")]
|
||||
[else
|
||||
(printf "~a~a\\begin{~a}~a{@{~a}~a}\n~a"
|
||||
(if (and inline-table? (equal? tableform "bigtabular"))
|
||||
(if (and starting-item? (equal? tableform "bigtabular"))
|
||||
"\\bigtableinlinecorrect"
|
||||
"")
|
||||
(if (string? (table-style t))
|
||||
|
@ -435,7 +441,8 @@
|
|||
(if (regexp-match #rx"^[\\]" kind)
|
||||
(printf "~a{" kind)
|
||||
(printf "\\begin{~a}" kind))
|
||||
(parameterize ([current-table-mode (if single-column?
|
||||
(parameterize ([current-table-mode (if (or single-column?
|
||||
(not (current-table-mode)))
|
||||
(current-table-mode)
|
||||
(list "blockquote" t))])
|
||||
(render-flow (make-flow (blockquote-paragraphs t)) part ri #f))
|
||||
|
@ -447,14 +454,13 @@
|
|||
(define/override (render-blockquote t part ri)
|
||||
(do-render-blockquote t part ri #f))
|
||||
|
||||
(define/override (render-compound-paragraph t part ri)
|
||||
(define/override (render-compound-paragraph t part ri starting-item?)
|
||||
(let ([kind (compound-paragraph-style t)])
|
||||
(when kind
|
||||
(if (regexp-match #rx"^[\\]" kind)
|
||||
(printf "~a{" kind)
|
||||
(printf "\\begin{~a}" kind)))
|
||||
(parameterize ([current-table-mode (list "blockquote" t)])
|
||||
(super render-compound-paragraph t part ri))
|
||||
(super render-compound-paragraph t part ri starting-item?)
|
||||
(when kind
|
||||
(if (regexp-match #rx"^[\\]" kind)
|
||||
(printf "}")
|
||||
|
|
|
@ -43,13 +43,13 @@
|
|||
(render-part (car secs) ht)
|
||||
(loop (add1 pos) (cdr secs))))))
|
||||
|
||||
(define/override (render-flow f part ht start-inline?)
|
||||
(define/override (render-flow f part ht starting-item?)
|
||||
(let ([f (flow-paragraphs f)])
|
||||
(if (null? f)
|
||||
null
|
||||
(apply
|
||||
append
|
||||
(render-block (car f) part ht start-inline?)
|
||||
(render-block (car f) part ht starting-item?)
|
||||
(map (lambda (p)
|
||||
(newline) (newline)
|
||||
(render-block p part ht #f))
|
||||
|
|
Loading…
Reference in New Issue
Block a user