- From: Håkon Wium Lie <howcome@opera.com>
- Date: Fri, 11 Jul 2008 18:58:22 +0200
- To: "Refstrup, Jacob Grundtvig" <jacob.refstrup@hp.com>
- Cc: "www-style@w3.org" <www-style@w3.org>
Also sprach Refstrup, Jacob Grundtvig: > One of the examples that you refered to had: > > > > div.chapter { page: chapter } > > > h2 { string-set: title content() } > > > @page chapter:left { @top-left { content: string(title) }} > > > @page chapter:first { @top-left { content: none }} > > With the following document fragment: > > <div class="chapter"> > <h2>Chapter 1 heading</h2> > This is the prose of the 1st chapter. Flows into 2nd page. > </div> > <div class="chapter"> > <h2>Chapter 2 heading</h2> > This is the prose of the 1st chapter. > </div> > > It would seem that the author would want the first page of each > chapter to have title in the top-left page margin. No, the last rule in the style sheet says that there should be no such title on the first page of each chapter. > Imagine this document generating two pages -- they'll both be named > 'chapter'; but in this case we want chapter:first to match both of > them. Yes. > Therefore when checking for <named-page>:first you'd have to go > back to the nearest ancestor with a page valid other than 'auto' > and match first iff the current page is the first page for that > ancestor to appear. I ran out of memory trying to parse that sentence :) In my mind, which is arguably quite simple, it appears easier. Here's a pseudo-algorithm: n = element.page; if (n == auto) then p = ancestor.page; /* and so forth until a non-auto value, or the root element is found */ if (n != name-of-the-current-page) then { page-break(); create-new-page(n); name-of-the-current-page = n; } When a new page is created, all the rules set on that page -- including left, right and first -- must be applied. Does this make sense? -h&kon Håkon Wium Lie CTO °þe®ª howcome@opera.com http://people.opera.com/howcome
Received on Friday, 11 July 2008 16:59:15 UTC