Thanks to Bob's post, my articles now start on the next available page, odd
or even.
Except immediately after the Table of Contents.

>From reading Ch.10 of The Complete Guide this looks like it would be
controlled by the

<t:titlepage t:element="table.of.contents" t:wrapper="fo:block">


element in titlepages.templates.xml; more specifically, by
titlepage-separator and titlepage-before children of it. These child
elements are empty, yet I still get a blank page after the ToC instead of
the first article. (There is no List of Tables, &c.)

How should I control this?

Stephen Taylor


2008/9/12 Bob Stayton <[EMAIL PROTECTED]>

>  [I'm also copying this to the docbook-apps mailing list so it gets into
> the mail archive there]
>
> Sorry, I forgot that there was more to it than that when you are using
> double.sided output.   Two other changes are needed in that case:
>
> - the force.page.count template must also be customized, since it causes
> each article to end on an even page by default.
>
> - the body page master must be customized to turn off the selection of the
> 'body-first' simple page master when page-position="first", because it will
> use the right-hand page margins for the first page, even if it is evenly
> numbered.  This requires defining a new page master without the "first"
> page, and then customizing the template named "select.user.pagemaster" to
> select it.
>
> So here is a complete customization that does what you need.
>
>
> <xsl:template name="user.pagemasters">
>
>     <fo:page-sequence-master master-name="body-article">
>       <fo:repeatable-page-master-alternatives>
>         <fo:conditional-page-master-reference master-reference="blank"
>                                               blank-or-not-blank="blank"/>
>  <!--
>         <fo:conditional-page-master-reference master-reference="body-first"
>                                               page-position="first"/>
>  -->
>         <fo:conditional-page-master-reference master-reference="body-odd"
>                                               odd-or-even="odd"/>
>         <fo:conditional-page-master-reference
>                                               odd-or-even="even">
>           <xsl:attribute name="master-reference">
>             <xsl:choose>
>               <xsl:when test="$double.sided != 0">body-even</xsl:when>
>               <xsl:otherwise>body-odd</xsl:otherwise>
>             </xsl:choose>
>           </xsl:attribute>
>         </fo:conditional-page-master-reference>
>       </fo:repeatable-page-master-alternatives>
>     </fo:page-sequence-master>
>
> </xsl:template>
>
> <xsl:template name="select.user.pagemaster">
>   <xsl:param name="element"/>
>   <xsl:param name="pageclass"/>
>   <xsl:param name="default-pagemaster"/>
>
>   <!-- by default, return the default. But if you've created your own
>        pagemasters in user.pagemasters, you might want to select one here.
> -->
>   <xsl:choose>
>     <xsl:when test="$element = 'article'">
>       <xsl:value-of select="'body-article"/>
>     </xsl:when>
>     <xsl:otherwise>
>       <xsl:value-of select="$default-pagemaster"/>
>     </xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
>
>
>
>
> <xsl:template name="force.page.count">
>   <xsl:param name="element" select="local-name(.)"/>
>   <xsl:param name="master-reference" select="''"/>
>
>   <xsl:choose>
>     <xsl:when test="$element = 'article'">auto</xsl:when>
>     <!-- double-sided output -->
>     <xsl:when test="$double.sided != 0">end-on-even</xsl:when>
>     <!-- single-sided output -->
>     <xsl:otherwise>no-force</xsl:otherwise>
>   </xsl:choose>
> </xsl:template>
>
>  <!-- from fo/pagesetup.xsl -->
>  <xsl:template name="initial.page.number">
>    <xsl:param name="element" select="local-name(.)"/>
>    <xsl:param name="master-reference" select="''"/>
>
>    <!-- Select the first content that the stylesheet places
>         after the TOC -->
>    <xsl:variable name="first.book.content"
>                  select="ancestor::d:book/*[
>                            not(self::d:title or
>                                self::d:subtitle or
>                                self::d:titleabbrev or
>                                self::d:bookinfo or
>                                self::d:info or
>                                self::d:dedication or
>                                self::d:preface or
>                                self::d:toc or
>                                self::d:lot)][1]"/>
>    <xsl:choose>
>      <!-- double-sided output -->
>      <xsl:when test="$double.sided != 0">
>        <xsl:choose>
>         <!-- customisation to start article on next available page, odd or
> even: begin -->
>         <xsl:when test="$element = 'article'">auto</xsl:when>
>         <!-- customisation end -->
>          <xsl:when test="$element = 'toc'">auto-odd</xsl:when>
>          <xsl:when test="$element = 'book'">1</xsl:when>
>          <!-- preface typically continues TOC roman numerals -->
>          <!-- Change page.number.format if not -->
>          <xsl:when test="$element = 'preface'">auto-odd</xsl:when>
>          <xsl:when test="($element = 'dedication' or $element = 'article')
>                      and not(preceding::d:chapter
>                              or preceding::d:preface
>                              or preceding::d:appendix
>                              or preceding::d:article
>                              or preceding::d:dedication
>                              or parent::d:part
>                              or parent::d:reference)">1</xsl:when>
>          <xsl:when test="generate-id($first.book.content) =
>                          generate-id(.)">1</xsl:when>
>          <xsl:otherwise>auto-odd</xsl:otherwise>
>        </xsl:choose>
>      </xsl:when>
>
>      <!-- single-sided output -->
>      <xsl:otherwise>
>        <xsl:choose>
>          <xsl:when test="$element = 'toc'">auto</xsl:when>
>          <xsl:when test="$element = 'book'">1</xsl:when>
>          <xsl:when test="$element = 'preface'">auto</xsl:when>
>         <xsl:when test="($element = 'dedication' or $element = 'article')
> and
>                          not(preceding::d:chapter
>                              or preceding::d:preface
>                              or preceding::d:appendix
>                              or preceding::d:article
>                              or preceding::d:dedication
>                              or parent::d:part
>                              or parent::d:reference)">1</xsl:when>
>          <xsl:when test="generate-id($first.book.content) =
>                          generate-id(.)">1</xsl:when>
>          <xsl:otherwise>auto</xsl:otherwise>
>        </xsl:choose>
>      </xsl:otherwise>
>    </xsl:choose>
>  </xsl:template>
>
>
>
> Bob Stayton
> Sagehill Enterprises
> [EMAIL PROTECTED]
>
>
>
> ----- Original Message -----
> *From:* Stephen Taylor <[EMAIL PROTECTED]>
> *To:* Bob Stayton <[EMAIL PROTECTED]>
> *Cc:* DocBook Mailingliste <[email protected]>
> *Sent:* Friday, September 12, 2008 2:54 AM
> *Subject:* Re: [docbook] Journal article title pages
>
> Bob
> Not seeing any effect. I wonder if I misunderstood what I should do:
>
>    1. copy the initial.page.number template (about 60 lines) from
>    fo/pagesetup.xsl to my customisation layer;
>    2. insert your <xsl:when> element as the first child of the
>    <xsl:choose> element inside the <xsl:when test="$double.sided != 0">
>    element.
>
> I take it that the jump to an odd page is governed by the
> <xsl:otherwise>auto-odd</xsl:otherwise> that is the last child of the
> double-sided <xsl:choose>; and I infer that execution is following this
> path, (a) because I'm getting a gutter on the left of odd pages and the
> right of even pages and (b) because I have this problem to solve in the
> first place.
>
> I've attached my customisation layer in case you can spot something else
> I'm doing that obstructs your solution.
>
> Once more, deeply grateful for your advice
>
> Stephen
>
>
>
> 2008/9/11 Bob Stayton <[EMAIL PROTECTED]>
>
>>  Hi,
>> This documentation describes how to customize the template named
>> initial.page.number to set the starting page number for a page-sequence
>> (each article is a page-sequence).
>>
>> http://www.sagehill.net/docbookxsl/PrintHeaders.html#InitialPageNumber
>>
>> If you add:
>>
>> <xsl:when test="$element = 'article'">auto</xsl:when>
>>
>> then articles should start on the next available page.
>>
>> Bob Stayton
>> Sagehill Enterprises
>> [EMAIL PROTECTED]
>>
>>
>>
>> ----- Original Message -----
>> *From:* Stephen Taylor <[EMAIL PROTECTED]>
>> *To:* DocBook Mailingliste <[email protected]>
>> *Sent:* Thursday, September 11, 2008 8:17 AM
>> *Subject:* [docbook] Journal article title pages
>>
>> My journal is a book, its children articles. Articles start by default on
>> recto pages, but recto or verso both work for me; I don't want the blank
>> pages.
>> What small intervention can I make to allow articles to start on verso
>> pages when available?
>>
>> Stephen Taylor
>>
>>
>

Reply via email to