W3C home > Mailing lists > Public > www-style@w3.org > February 2012

Re: [paginated-masters] Element master templates (was: planA/planB)

From: Håkon Wium Lie <howcome@opera.com>
Date: Thu, 23 Feb 2012 17:03:36 +0100
Message-ID: <20294.25432.870899.352728@gargle.gargle.HOWL>
To: Alan Stearns <stearns@adobe.com>
Cc: "www-style@w3.org Style" <www-style@w3.org>
Alan Stearns wrote:

 > There's been a bunch of discussion about extending @page rules to provide
 > master templates for paginated layout. That's where my thinking started as
 > well, but currently I'm considering using master templates at an element
 > level instead of for the entire document.

Indeed, element-level vs. document-level is an important axis. But in
your examples (below) you describe document-level templates, no?

 > I like the ideas in GCPM for paged presentations, and there you can set
 > overflow-style on a single element. I think it would be interesting to use
 > that switch for turning on a paginated display and provide a means to
 > associate such a paginated element with a master template.

Ok, so the "master templates" are defined globally, but can be
associated with single elements. Like named pages are associated with
elements through the 'page' property, right?

 > A master template can define boxes (or slots) that can contain content - the
 > content can come from the element, a named flow, or be generated content.
 > Since these master templates apply to paginated elements, if the content
 > associated with any slot overflows, a new paged view is created with
 > additional boxes until all of the content is displayed.

Good, I like the auto-generation part. What master page is selected
for the overflow content? What if the content of two slots on a page
overflow, do they overflow onto the same page?

 > Because I would like to make master templates work with the ideas from GCPM,
 > I have a notion of an implicit master template with an implicit slot. The
 > implicit master template has a single implicit slot that contains the
 > paginated element's content. So the following four examples are equivalent -
 > they all give the same rendering as specified in GCPM. Examples 2-4 would
 > never actually be used without adding more boxes to the template.
 > 
 > 1. (no master template defined)
 >    #content { overflow-style: paged-x; }
 > 
 > 2. (template with implicit content slot)
 >    #content { overflow-style:paged-x; }
 >    @master-template { }
 > 
 > 3. (template with explicit content slot)
 >    #content { overflow-style:paged-x; }
 >    @master-template {
 >      template-slots: content;
 >      <slot-syntax>(content) { }
 >    }
 > 
 > 4. (template using an explicit region slot)
 >    #content { overflow-style:paged-x; }
 >    #content > * { flow-into: content-flow; }
 >    @master-template {
 >      template-slots: main;
 >      <slot-syntax>(main) {
 >        flow-from: content-flow;
 >      }
 >    }

It's a noble goal to try to alingn mechanisms. And I kind of follow
your code examples. But I don't understand what you try to do in (4):
take all elements (including all text?) from #content and put them
somewhere else? Or, is the use case to have the tex paginated, while
the image are shown somewhere else? (The selector '#content > *' would
select all <em> elements, too)

 > I don't know what the correct syntax for addressing slots should be, so I'm
 > using <slot-syntax> here as a stand-in. The template-slots descriptor lets
 > you create named slots in the template and specify their order if that
 > matters for positioning.
 > 
 > Master templates can create more boxes to suit the intended design:
 > 
 > A simple header for each page:
 > 
 >    #content { overflow-style:paged-x; }
 >    @master-template {
 >      template-slots: header, content;
 >      <slot-syntax>(header) {
 >        content: "title string";
 >      }
 >      <slot-syntax>(content) { }
 >    }

What's the purpose of 'template-slots' -- to define an order for the slots?

 > A simple footer for each page:
 > 
 >    #content { overflow-style:paged-x; }
 >    @master-template {
 >      template-slots: content, footer;
 >      <slot-syntax>(content) { }
 >      <slot-syntax>(footer) {
 >        content: "author string";
 >      }
 >    }

If 'template-slots' define an order, chances are that the 'footer'
slot will get some content flowed into it. What will happen with
"author string" then?

 > Displaying two articles side-by-side:
 > 
 >    .article1 { overflow-style:paged-x; }
 >    .article2 { flow-into:second-article; }
 >    @master-template {
 >      template-slots: content, right;
 >      <slot-syntax>(content) {
 >        width: 40%;
 >        padding: 5%
 >        float:left;
 >      }
 >      <slot-syntax>(right) {
 >        flow-from: second-article;
 >        width: 40%;
 >        padding: 5%
 >        float:right;
 >      }
 >    }

Hmm. In the above example you flow the second article into the 'right'
slot, while the 'content' slot presumable is empty? If so, why are
they both declared in 'template-slots'? I guess I don't understand what it does.

Another problem is how to define a sequence of slot that appear on
different pages.

-h&kon
              Håkon Wium Lie                          CTO °þe®ª
howcome@opera.com                  http://people.opera.com/howcome
Received on Thursday, 23 February 2012 16:04:11 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 17:20:51 GMT