W3C home > Mailing lists > Public > www-xsl-fo@w3.org > March 2002

Pushing the Limits

From: Arved Sandstrom <asandstrom@accesswave.ca>
Date: Fri, 22 Mar 2002 23:24:20 -0500 (EST)
To: "'Www-Xsl-Fo" <www-xsl-fo@w3.org>
Message-ID: <NIECINNOJOOPPAIFLMIGAEGBCEAA.asandstrom@accesswave.ca>
Hi, all

I've got a question related to keeps. Let's say that I have 2
simple-page-masters defined: one called "small", with a fairly small
region-body, and one called "large", with a larger region-body.

The flow content looks like

<fo:block break-after="page">NOT MUCH STUFF</fo:block>

<fo:block keep-together.within-page="1">
    .... QUITE A LOT OF STUFF ....

The fo:flow, for sake of simplicity, contains these only. Simple-page-master
(SPM) "small" cannot accommodate the second block, but SPM "large" can.
Furthermore, the containing page-sequence maps to

<fo:page-sequence-master master-name="psm">
    <fo:single-page-master-reference master-reference="small"/>
    <fo:single-page-master-reference master-reference="small"/>
    <fo:repeatable-page-master-reference master-reference="large"/>

With this you can probably already see where I am going. :-) Now, without
casting aspersions on RenderX, I used the latest XEP to test this out, and I
see an initial page, laid out using simple-page-master (SPM) "small",
containing the areas generated by the first block, and a second page laid
out using SPM "large", containing the areas generated by the first block, as
a result.

_I_ expect to see a SPM "small", with content from block 1, a blank page
using SPM "small", and a third page using SPM "large", that contains (and is
designed to contain) all the areas generated by block 2.

The reason I expect to see this is because, number one, the spec (in Section
6.4.7) states that

"A page-sequence satisfies the constraint determined by an
fo:page-sequence-master if (a) it can be partitioned into a sequence of
sub-sequences of pages that map one-to-one to an initial sub-sequence of the
sequence of sub-sequence-specifiers that are the children of the
fo:page-sequence-master and, (b) for each sub-sequence of pages in the
partition, that sub-sequence satisfies the constraints of the corresponding
sub-sequence specifier. The sequence of sub-sequences of pages can be
shorter than the sequence of sub-sequence-specifiers."

Clause (a) indicates that we MUST make use of SPM "small" exactly twice:
one-to-one mapping to an _initial_ subsequence. Or we don't make use of the
page-sequence-master at all; I figure a reasonable fallback is to switch to
SPM "large" for all pages but I don't know one way or the other.

The Recommendation section on keeps also makes it clear that the keep
condition on block 2 MUST be satisfied - there are no breaks, or stronger
keeps, that conflict. And it can be satisfied by starting block 2 on page 3.

I submit that my expected result is the logical conclusion of spec
constraints, as jarring as it may be to have that blank page 2.

Counter-arguments? Comments? Proofs that I really should be asleep by now?

Arved Sandstrom
Sr Software Developer
Platform Products Group
Halifax R&D Office
Hummingbird Ltd
Received on Saturday, 23 March 2002 07:12:54 UTC

This archive was generated by hypermail 2.4.0 : Friday, 17 January 2020 23:09:54 UTC