- From: Christoph Päper <christoph.paeper@crissov.de>
- Date: Fri, 10 Apr 2009 19:36:41 +0200
- To: CSS 3 W3C Group <www-style@w3.org>
Grant, Melinda: > Assuming something like the following for overloading page-breaking > to handle column-breaking: > page-break-before > page-break-after > auto | column | always | right | left | avoid | avoid-page | > avoid-right | avoid-left | odd | even based on counter 'page' or | recto | verso based on block progression. Note that you usually have [l|r] := [-|1][2|3]..->..[n|-] = [e|o] = [v|r] in books (or [-|n]..<-..[3|2][1|-] = [1|-][3|2]..->..[-|n] = [o| e] for sinistrograde, i.e. leftwards or right-to-left scripts), but in binders or brochures you may also have [1|2]...[m|n] = [o|e]. > page-break-inside > auto | avoid | avoid-page | avoid-right | avoid-left | avoid-odd | avoid-even > (...avoid-right and avoid-left could be replaced by avoid-turn...) Probably, includes the logical equivalents. 1. Should there be a way to control whether two consecutive empty pages (-) generated by 'left' and 'right' are collapsed? I assume [-|-] should never happen (if not explicitly requested), but could someone want to avoid [a|-][-|b]? <a/><b/> <c/><d/> a,b,c,d {page-break-before: always; page-break-after: always;} a {page-break-after: left;} b {page-break-before: right;} c {page-break-after: right;} d {page-break-before: left;} abcd -> [a|-][-|b][c|d] or [a|b][c|d] aabbccdd -> [a|a][-|b][b|c][c|-][d|d] abbcdd -> [a|-][-|b][b|c][-|-][d|d] or [a|-][-|b][b|c][d|d] or [a|b][b|c][d|d] aabccd -> [a|a][-|b][c|c][-|-][d|-] or [a|a][-|b][c|c][d|-] a {page-break-after: right;} b {page-break-before: left;} c {page-break-after: left;} d {page-break-before: right;} abcd -> [a|-][b|c][-|d] aabbccdd -> [a|a][-|-][b|b][c|c][-|d][d|-] or [a|a][b|b][c|c][-|d] [d|-] abbcdd -> [a|-][b|b][c|-][-|d][d|-] or [a|-][b|b][c|d][d|-] aabccd -> [a|a][-|-][b|c][c|-][-|d] or [a|a][b|c][c|-][-|d] or [a|a][b|c][c|d] (( a {page-break-after: always;} b {page-break-before: right;} c {page-break-after: right;} d {page-break-before: always;} abcd -> [a|b][c|d] aabbccdd -> [a|a][-|b][b|c][c|d][d|-] abbcdd -> [a|b][b|c][-|d][d|-] aabccd -> [a|a][-|b][c|c][-|d] a {page-break-after: always;} b {page-break-before: left;} c {page-break-after: left;} d {page-break-before: always;} abcd -> [a|-][b|c][d|-] aabbccdd -> [a|a][b|b][c|c][d|d] abbcdd -> [a|-][b|b][c|-][d|d] aabccd -> [a|a][b|c][c|-][d|-] )) Each letter represents one page filled by, not one instance of the element. 2. Should there be a way to collapse an empty page generated by 'left' and 'right'? (I believe not.) <c><a/><b/></c> c {empty-page-inside: avoid;} /* X: stronger 'avoid' after a / before b */ a {page-break-after: avoid;} /* 'always'|'left' same but cancels X */ b {page-break-before: left;} /** or **/ a {page-break-after: left;} b {page-break-before: avoid;} /* 'always'|'left' same but cancels X */ ab -> [a|-][b|-] -X-> [a|b] aab -> [a|a][b|-] a {page-break-after: avoid;} /* 'always'|'right' same but cancels X */ b {page-break-before: right;} /** or **/ a {page-break-after: right;} b {page-break-before: avoid;} /* 'always'|'right' same but cancels X */ > ab -> [a|b] aab -> [a|a][-|b] -X-> [a|a][b|-] JFTR: > 1. page-break-before: auto; column-break-before: avoid; > 2. page-break-after: avoid; column-break-after: always; > 3. page-break-before: avoid; column-break-before: always; > 4. page-break-after: avoid; column-break-after: always; > page-break-before: avoid; column-break-before: always; For all but the most edgy cases 1. page-break-before: avoid-column; 2. page-break-after: column; 3. page-break-before: column; 4. page-break-after: column; page-break-before: column; should give the same results. > I feel that overloading the page-breaking properties results in > such counter-intuitive naming (...) Well, that's because it's backwards, column-break-before: page; = page-break-before: always; works better than page-break-before: column; = column-break-before: always; because of the common degenerate case of 1 column. Unfortunately we already have PBB/A:always (*), so cannot introduce CBB/A:page (#). Since 'avoid' works better the other way around (unlike 'always'), that's probably not too bad after all. -before / -after column-break- | page-break- | break- ===============+===============+=============== auto | auto *| auto ---------------+---------------+--------------- page #| always *| page ---------------+---------------+--------------- always | column | column = | | always ---------------+---------------+--------------- avoid | avoid-column | avoid-column = allow-page | avoid-column | prefer-page ---------------+---------------+--------------- avoid-page | avoid *| avoid-page = avoid-page | allow-column | prefer-column = | | avoid ---------------+---------------+--------------- column-break-before/-after: page | always | avoid |allow-page | avoid-page page-break-before/-after: always | col | avoid-col | avoid |allow-col break-before/-after: page | col|always | avoid-col|prefer-page | avoid-page|prefer- col|avoid 'left'/'right'/'odd'/'even'/'recto'/'verso' are special cases of 'page' and therefore are left out here for simplicity.
Received on Friday, 10 April 2009 17:36:37 UTC