Victor Mote wrote:
Yes, but that still leaves some very difficult problems, especially where last-page, footnotes and floats are concerned.Just to be clear, I should point out that there is not a layout that is impossible to perform. The standard allows (and would have to) implementation-specific handling of what they call "over-constrained" requirements. In other words, requirements can be prioritized and allowed to slip when they are contradictory or "impossible".
So scrap SAX. Or, to be more precise, reduce SAX to the role of XML event server to a top-down tree builder, which in turn provides event notification and read-only tree access to the top-down layout engine.From a design standpoint, the best ideas I have seen/heard revolve aroundsome scoring system. I think the HZ program, TeX, and Lout all use this approach. To do this, you would need for each break manager to return not just the best break, but a collection of possible breaks with some ranking mechanism. Ideally, somebody at the highest level (page-sequence) decides what is best, based on information that percolates up from the lower levels. This implies to me that we can see the entire page-sequence sub-tree at one time, which may not be true in our SAX event-based model. It seems that the page-sequence would attempt to lay itself out using the "best" breaks that came up from sub-nodes, then adjust if over-constrained, perhaps with the concept of a layout Plan or Proposal.
I know it is easier said than done,
Definitely.
Well, the part about reducing SAX to an event server has already been done, and the part about building the FO tree top-down is almost finished. The last bit, unfortunately, has not even been started. I was getting ready to post some details about this, but I wanted to finish the creation of the FO objects first. I will now post them this weekend.and may already be done.
Peter
--
Peter B. West [EMAIL PROTECTED] http://www.powerup.com.au/~pbwest/
"Lord, to whom shall we go?"
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]