W3C home > Mailing lists > Public > www-style@w3.org > July 2008

Re: [css3-gcpm] [css3-page] Named page lists

From: Håkon Wium Lie <howcome@opera.com>
Date: Fri, 11 Jul 2008 17:14:47 +0200
Message-ID: <18551.30951.462922.846793@opera.com>
To: fantasai <fantasai.lists@inkedblade.net>
Cc: www-style@w3.org

Also sprach fantasai:

 > > I support the idea of changing 'page' from being inherited to not
 > > being inherited. If we do so, we can probably address the issue that
 > > the named page lists in GCPM is (unsuccessfully) trying to address;
 > > setting a different style on the first page in a series of pages. For
 > > example, the chapter title is often printed on the first page of the
 > > chapter and the chapter title should therefore not be printed in the
 > > running header of that first page. One could then write:
 > > 
 > >   div.chapter { page: chapter }
 > >   h2 { string-set: title content() }
 > >   @page chapter:left { @top-left { content: string(title) }}
 > >   @page chapter:first { @top-left { content: none }}
 > > 
 > > This code feels right to me, but it wouldn't work as long as 'page' is
 > > inherited (because 'chapter:first' in practice would match all pages).
 > 
 > Currently if two consecutive elements have different values for 'page',
 > there is a forced break. However if two consecutive elements have the
 > same value for 'page', there is no forced break. Under this proposal,
 > how would you distinguish between continuing the same section and starting
 > a new one?

By making elements with an 'page: auto' (which is the initial value)
look to the nearest ancester with a non-auto value.

Let's look at Example XXI:

  @page narrow { size: 9cm 18cm }
  @page rotated { size: landscape }
  div { page: narrow }
  table { page: rotated }

  <div>
  <table>...</table>
  <table>...</table>
  <p>This text is rendered on a 'narrow' page</p>
  </div>

If we change 'page' from being inherited to not, the 'page' value on
the p element will be 'auto' instead of 'narrow'. By looking to the
nearest ancestor with none-auto value, we find 'narrow' on the div
element, which is used.

In practice, this equals inheritance so there should be no behavior
changes wrt. page breaks.

The benefit of making this change is that we can use non-auto values
on the 'page' property as a marker for the start of a "page group".
The first page of a "page group" can be styled in this manner:

  div.chapter { page: chapter }
  @page chapter:first { ... }

An alternative to this solution is to explicitly mark the start of
page groups. Prince has added support for a property called
'prince-page-group' for this purpose [1]. The example above could then
be written:

  div.chapter { page: chapter; prince-page-group: start }
  @page chapter:first { ... }

I don't like this solution -- it uses one property more than
necessary.

[1] http://www.princexml.com/doc/6.0/properties/prince-page-group/

-h&kon
              Håkon Wium Lie                          CTO °þe®ª
howcome@opera.com                  http://people.opera.com/howcome
Received on Friday, 11 July 2008 15:15:45 GMT

This archive was generated by hypermail 2.2.0+W3C-0.50 : Monday, 27 April 2009 13:55:10 GMT