commit 1966bd5bb786e6aa62ca2f9935819387739745d3
parent 483607b4ca46f11c0d215f1795d692093a760615
Author: Matthew Flatt <mflatt@racket-lang.org>
Date: Mon, 20 Jul 2009 19:40:14 +0000
Scribble: refine Latex output again to allow more page breaks
svn: r15505
original commit: 0fc2ad54db528fabed80ee895269b8e0e3bd3401
Diffstat:
4 files changed, 52 insertions(+), 45 deletions(-)
diff --git a/collects/scribble/base-render.ss b/collects/scribble/base-render.ss
@@ -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)]))
diff --git a/collects/scribble/html-render.ss b/collects/scribble/html-render.ss
@@ -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
diff --git a/collects/scribble/latex-render.ss b/collects/scribble/latex-render.ss
@@ -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))))]
+ [twidth (if (null? (table-flowss t))
+ 1
+ (length (car (table-flowss t))))]
+ [single-column? (and (= 1 twidth)
+ (or (not (table-style t))
+ (string? (table-style t)))
+ (not (current-table-mode)))]
[inline?
- (and (not boxed?)
+ (and (not single-column?)
+ (not boxed?)
(not index?)
(ormap (lambda (rs) (equal? rs "inferencetop")) row-styles)
- (or (null? (table-flowss t))
- (= 1 (length (car (table-flowss t)))))
+ (= 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}}"]
- [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)))])
+ [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 "}")
diff --git a/collects/scribble/text-render.ss b/collects/scribble/text-render.ss
@@ -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))