OASIS Mailing List ArchivesView the OASIS mailing list archive below
or browse/search using MarkMail.

 


Help: OASIS Mailing Lists Help | MarkMail Help

docbook-apps message

[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]


Subject: RE: [docbook-apps] Starting a page sequence at the section level


Bob,

Thank you very much for this answer.

I looked at the PSMI technique which is very interesting; however it
has the limitation that the psmi:page-sequence element must be a direct
children of fo:flow.

In our case we have to deal with more deeply nested sections.

So PSMI inspired me to try a more generic approach as follows:

. the first pass can output fo:page-sequence for any section
  (according to specific rules); this is obtained by customizing
  the template match="/section" in sections.xsl (the match
  attribute is modified to trigger the template for sections
  that need their own page-sequence)

. the resulting fo is of course *not* valid

. a second pass brings any fo:page-sequence to the upper level
  (direct child of root) by "cutting and reconstructing" the
  elements where any fo:page-sequence is found

The second pass does the following: given this source and the
instruction to cut at 'z' elements:

<a>
   <b>
      <c/>
      </b>
   <d/>
   <e/>
   <z num="5"/>
   <z num="6">
      <n/>
      <z num="6.5"/>
      <o/>
      </z>
   <z num="7"/>
   <f id="conflit">
      <g>
         <z num="1"/>
         <k>
            <h/>
            <i/>
            <z num="2">
               <x/>
               <z num="3"/>
               <y/>
               </z>
            <j/>
            </k>
         </g>
      </f>
   </a>

it outputs this:

<a>
   <b>
      <c/>
   </b>
   <d/>
   <e/>
   <z num="5"/>
   <z num="6">
      <n/>
   </z>
   <z num="6.5"/>
   <z num="6">
      <o/>
   </z>
   <z num="7"/>
   <f>
      <g/>
   </f>
   <z num="1"/>
   <f>
      <g>
         <k>
            <h/>
            <i/>
         </k>
      </g>
   </f>
   <z num="2">
      <x/>
   </z>
   <z num="3"/>
   <z num="2">
      <y/>
   </z>
   <f>
      <g>
         <k>
            <j/>
         </k>
      </g>
   </f>
</a>

ie, any element containing a 'z' element is split at the 'z'
element, the 'z' element is output, then the rest of the parent
element is output inside a 'reconstruction' of the element.

This seems to work fine, on a fairly long document (900 pages),
and requires only a very limited customization of the stylesheets
(without the need to insert special markers: the markers are
the fo:page-sequence themselves); however there are some problems

. the most important problem is that since the second pass
  duplicates elements to "reconstruct" the rest of the
  page-sequence, there are some id conflict; brutally removing
  duplicate ids of course break some internal references,
  but finding which id should be saved and which ones should
  be deleted or replaced proves quite difficult

. some fo:retrieve-marker seem to be lost in the process

. we don't use any special page-numbering which would probably
  not survive to this...


It would help if I knew more about FO in general: which good
detailed book about FO would you recommend? (I have your
book on docbook stylesheets, and it's great! ;-)

Regards,
EB



> -----Original Message-----
> From: Bob Stayton [mailto:bobs@sagehill.net]
> Sent: Wednesday, February 27, 2008 6:08 PM
> To: Emmanuel Bégué; docbook-apps@lists.oasis-open.org
> Subject: Re: [docbook-apps] Starting a page sequence at the section
> level
>
> Another appoach uses the PSMI technique [1] that G. Ken Holman
> created.  It is typically used to insert a landscape page sequence
> in the middle of a page sequence to handle a landscape table, but
> it could be adapted to your two-column page sequences instead.
>
> [1] http://www.cranesoftwrights.com/resources/psmi/index.htm
>




[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]