Q: More complex page patterns?

---------------
Quickie summary  
---------------
We'd like to see more flexibility and control over the layout of paged
media in CSS.  Specifically, we need multiple columns, as well as things
like the ability to flow a story from one container on page N to another
container on later page M.

We assume that these issues may already be under consideration.  Would
someone please summarize any related efforts?

--------------------
More verbose version
--------------------
The new support for paged media in CSS2 is a welcome feature.  However, we
feel that the current spec does not offer enough flexibility.  We're
considering a set of extensions which allow more powerful control over the
layout of paged media.

We assume that these issues may already be under consideration.  However,
we have searched the mailing list archives (www-style) for discussion of
related subjects, to no avail.  Perhaps a private discussion of this
subject has occurred?  Specifically, we note that Xanthus has created CSS
extensions which address some of these concerns.  However, we have not seen
any written description of their proposed extensions.

SUMMARY PROBLEM STATEMENT:
The support for paged media in the CSS2 specification seems to make the
assumption that a "page" has only one rectangular content area into which
the flow of text proceeds.  This model seems insufficient for handling of
multiple column layouts, or publications such as newspapers where "stories"
are often continued on a later page.

CSS2 does not appear to have any facility which could be used to address
this need.  For example, the box model has no apparent mechanism for
specifying that content may flow to another box.

We're thinking of an extension which we refer to as "Page Patterns".  A
page pattern is a specification of the layout of one or more "containers"
on a page.  A "container" is similar in concept to a box, except that it is
not automatically generated from any particular element.  Rather, the
existence of a container is specified with a CSS at-rule (or something
similar), and another CSS directive is used to say that a given piece of
content should be flowed into that container.  

Using this terminology, we would say that the current CSS2 specification
supports only one page pattern, and that pattern always has exactly one
container, and when that container is "full", its content always flows into
an identical container on the page which immediately follows.  Furthermore,
the CSS2 spec seems to have an assumption that document content obtained
from the root element is automatically flowed into the first container on
the first page.

We would like to enable CSS style sheets to specify:
	1.  More complex page patterns.
		For example, specifying a pattern with two tall boxes
		side-by-side could be used to layout a 2-column paper.
		More generality than that would be useful.  Any given
		page pattern should allow an arbitrary number of containers
		in arbitrary positions.
	2.  Flow links from one container to the next
		When content is being flowed into a given container,
		and the container becomes filled, then the content
		should flow on to another container.  CSS markup should
		allow flexible specification of where that flow should
		go.
	3.  Ordering of pages and patterns
		A page is an instance of a page pattern.  Pages are
		created when the layout engine needs a specific container
		for flow.  For example, let's say a flow link indicates that
		content is to be continued in container FOO which is
		specified with pattern BAR.  If there are currently no
		more usable instances of pattern BAR, then a new page will
		be instantiated so that a FOO is available to continue the
		flow.

		Furthermore, we should be able to specify the ordering
		of page instances.  For example, I might want to say that
		my document should begin with up to 3 instances of pattern
		A, followed by all instances of pattern B, followed by
		any remaining instances of pattern C.  We've also considered
		that a rule-based scheme for specifying this kind of page
		ordering will need to take left and right pages into account.

	4.  Into which container an element should be flowed
		It should be possible to specify that a given block should
		be flowed starting out in a particular container.  For
		example, the style sheet might say that a given DIV
		should be flowed into container X on the 1st instance of
		pattern Y.  Extending the example, that particular container
		might specify that its flow link points to container W and
		the 3rd instance of pattern Z.

We've worked these ideas out into a design model which seems powerful
enough.  However, we have not yet worked out a mapping of our ideas onto a
CSS-compatible syntax.  It seemed prudent to mention our idea to this
mailing list before doing so.

1.  Does this kind of feature seem like a reasonable addition to CSS?

2.  Is a similar proposal already under consideration?

Thanks!


--
Eric W. Sink, Software Craftsman                   CSFactory, Inc.
eric@csfactory.com                       http://www.csfactory.com/

Received on Thursday, 4 June 1998 17:11:33 UTC