]> granicus.if.org Git - docbook-dsssl/commitdiff
Completely rewrote pagesetup.xsl: more page models, more logical page margin setup
authorNorman Walsh <ndw@nwalsh.com>
Tue, 2 Jul 2002 12:00:46 +0000 (12:00 +0000)
committerNorman Walsh <ndw@nwalsh.com>
Tue, 2 Jul 2002 12:00:46 +0000 (12:00 +0000)
xsl/fo/component.xsl
xsl/fo/division.xsl
xsl/fo/index.xsl
xsl/fo/pagesetup.xsl
xsl/fo/param.ent
xsl/fo/param.xweb
xsl/fo/sections.xsl

index 1584ddf0c30bf317638ae73d291640481ef290fa..1e25e0b04139a3485746371b13472c45598fe90f 100644 (file)
@@ -72,6 +72,7 @@
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
 <xsl:template match="preface/titleabbrev"></xsl:template>
 <xsl:template match="preface/subtitle"></xsl:template>
 
+<!-- ==================================================================== -->
+
 <xsl:template match="chapter">
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
 
-    <!-- if there is a preceding chapter or this chapter appears in a part, the -->
-    <!-- page numbering will already be adjusted -->
-    <xsl:if test="not(preceding::chapter) and not(parent::part)">
-      <xsl:attribute name="initial-page-number">1</xsl:attribute>
-    </xsl:if>
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
 <xsl:template match="chapter/titleabbrev"></xsl:template>
 <xsl:template match="chapter/subtitle"></xsl:template>
 
+<!-- ==================================================================== -->
+
 <xsl:template match="appendix">
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
 
 <!-- ==================================================================== -->
 
-<xsl:template match="dedication" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<xsl:template match="preface" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<xsl:template match="chapter" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-  <xsl:choose>
-    <xsl:when test="@label">
-      <xsl:value-of select="@label"/>
-      <xsl:text>.</xsl:text>
-      <xsl:if test="$add.space">
-        <xsl:call-template name="gentext.space"/>
-      </xsl:if>
-    </xsl:when>
-    <xsl:when test="$chapter.autolabel">
-      <xsl:number from="book" count="chapter" format="1."/>
-      <xsl:if test="$add.space">
-        <xsl:call-template name="gentext.space"/>
-      </xsl:if>
-    </xsl:when>
-    <xsl:otherwise></xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="appendix" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-  <xsl:choose>
-    <xsl:when test="@label">
-      <xsl:value-of select="@label"/>
-      <xsl:text>.</xsl:text>
-      <xsl:if test="$add.space">
-        <xsl:call-template name="gentext.space"/>
-      </xsl:if>
-    </xsl:when>
-    <xsl:when test="$chapter.autolabel">
-      <xsl:number from="book" count="appendix" format="A."/>
-      <xsl:if test="$add.space">
-        <xsl:call-template name="gentext.space"/>
-      </xsl:if>
-    </xsl:when>
-    <xsl:otherwise></xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template match="article" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<xsl:template match="bibliography" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<xsl:template match="glossary" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<xsl:template match="index" mode="component.number">
-  <xsl:param name="add.space" select="false()"/>
-</xsl:template>
-
-<!-- ==================================================================== -->
-
 <xsl:template match="article">
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster"/>
   </xsl:variable>
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
+    <!-- if there is a preceding component or we're in a part, the -->
+    <!-- page numbering will already be adjusted -->
+    <xsl:if test="not(preceding::chapter
+                      or preceding::preface
+                      or preceding::appendix
+                      or preceding::article
+                      or preceding::dedication
+                      or parent::part
+                      or parent::reference)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:apply-templates select="." mode="running.head.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
       <xsl:with-param name="master-reference" select="$master-reference"/>
     </xsl:apply-templates>
index 2512818d6864346934e6d68cd3a0843646ae2916..b83bfeb96fbfd655545de25a5ce3bb605fe4bfe1 100644 (file)
 <!-- ==================================================================== -->
 
 <xsl:template match="set">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="preamble"
                 select="*[not(self::book or self::setindex)]"/>
+
   <xsl:variable name="content" select="book|setindex"/>
 
-  <xsl:variable name="id">
-    <xsl:call-template name="object.id"/>
+  <xsl:variable name="titlepage-master-reference">
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="pageclass" select="'titlepage'"/>
+    </xsl:call-template>
   </xsl:variable>
-  <xsl:variable name="master-reference">
-    <xsl:call-template name="select.pagemaster"/>
+
+  <xsl:variable name="lot-master-reference">
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="pageclass" select="'lot'"/>
+    </xsl:call-template>
   </xsl:variable>
 
   <xsl:if test="$preamble">
     <fo:page-sequence id="{$id}"
                       hyphenate="{$hyphenate}"
-                      master-reference="{$master-reference}">
+                      master-reference="{$titlepage-master-reference}">
+
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="set.titlepage"/>
       </fo:flow>
       <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
     </xsl:call-template>
   </xsl:variable>
+
   <xsl:if test="contains($toc.params, 'toc')">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="set.toc"/>
       </fo:flow>
 <!-- ==================================================================== -->
 
 <xsl:template match="book">
+  <xsl:variable name="id">
+    <xsl:call-template name="object.id"/>
+  </xsl:variable>
+
   <xsl:variable name="preamble"
                 select="title|subtitle|titleabbrev|bookinfo"/>
+
   <xsl:variable name="content"
                 select="*[not(self::title or self::subtitle
                             or self::titleabbrev
                             or self::bookinfo)]"/>
-  <xsl:variable name="id">
-    <xsl:call-template name="object.id"/>
+
+  <xsl:variable name="titlepage-master-reference">
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="pageclass" select="'titlepage'"/>
+    </xsl:call-template>
   </xsl:variable>
-  <xsl:variable name="master-reference">
-    <xsl:call-template name="select.pagemaster"/>
+
+  <xsl:variable name="lot-master-reference">
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="pageclass" select="'lot'"/>
+    </xsl:call-template>
   </xsl:variable>
 
   <xsl:if test="$preamble">
     <fo:page-sequence id="{$id}"
                       hyphenate="{$hyphenate}"
-                      master-reference="{$master-reference}">
+                      master-reference="{$titlepage-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="book.titlepage"/>
       </fo:flow>
       <xsl:with-param name="table" select="normalize-space($generate.toc)"/>
     </xsl:call-template>
   </xsl:variable>
+
   <xsl:if test="contains($toc.params, 'toc')">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="division.toc"/>
       </fo:flow>
   <xsl:if test="contains($toc.params,'figure') and .//figure">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="list.of.titles">
           <xsl:with-param name="titles" select="'figure'"/>
   <xsl:if test="contains($toc.params,'table') and .//table">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="list.of.titles">
           <xsl:with-param name="titles" select="'table'"/>
   <xsl:if test="contains($toc.params,'example') and .//example">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="list.of.titles">
           <xsl:with-param name="titles" select="'example'"/>
   <xsl:if test="contains($toc.params,'equation') and .//equation">
     <fo:page-sequence hyphenate="{$hyphenate}"
                       format="i"
-                      master-reference="{$master-reference}">
+                      master-reference="{$lot-master-reference}">
       <xsl:attribute name="language">
         <xsl:call-template name="l10n.language"/>
       </xsl:attribute>
+
       <xsl:if test="$double.sided != 0">
         <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
       </xsl:if>
 
       <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
+        <xsl:with-param name="master-reference" select="$lot-master-reference"/>
       </xsl:apply-templates>
+
       <fo:flow flow-name="xsl-region-body">
         <xsl:call-template name="list.of.titles">
           <xsl:with-param name="titles" select="'equation'"/>
 
 <xsl:template match="part">
   <xsl:if test="not(partintro)">
-    <xsl:variable name="id">
-      <xsl:call-template name="object.id"/>
-    </xsl:variable>
-    <xsl:variable name="master-reference">
-      <xsl:call-template name="select.pagemaster"/>
-    </xsl:variable>
-
-    <fo:page-sequence id="{$id}"
-                      hyphenate="{$hyphenate}"
-                      master-reference="{$master-reference}">
-      <xsl:attribute name="language">
-        <xsl:call-template name="l10n.language"/>
-      </xsl:attribute>
-
-      <!-- if there is a preceding chapter or part, page numbering will already -->
-      <!-- be adjusted, otherwise restart the page numbers -->
-      <xsl:if test="not(preceding::chapter) and not(preceding::part)">
-        <xsl:attribute name="initial-page-number">1</xsl:attribute>
-      </xsl:if>
-
-      <xsl:if test="$double.sided != 0">
-        <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
-      </xsl:if>
-
-      <xsl:apply-templates select="." mode="running.head.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
-      </xsl:apply-templates>
-      <xsl:apply-templates select="." mode="running.foot.mode">
-        <xsl:with-param name="master-reference" select="$master-reference"/>
-      </xsl:apply-templates>
-
-      <fo:flow flow-name="xsl-region-body">
-        <xsl:call-template name="part.titlepage"/>
-      </fo:flow>
-    </fo:page-sequence>
+    <xsl:apply-templates select="." mode="part.titlepage.mode"/>
   </xsl:if>
   <xsl:apply-templates/>
 </xsl:template>
 
 <xsl:template match="part" mode="part.titlepage.mode">
   <!-- done this way to force the context node to be the part -->
-  <xsl:call-template name="part.titlepage"/>
-</xsl:template>
-
-<xsl:template match="part/docinfo|partinfo"></xsl:template>
-<xsl:template match="part/title"></xsl:template>
-<xsl:template match="part/subtitle"></xsl:template>
+  <xsl:param name="additional.content"/>
 
-<xsl:template match="part/partintro">
   <xsl:variable name="id">
-    <xsl:call-template name="object.id">
-      <xsl:with-param name="object" select="ancestor::part"/>
-    </xsl:call-template>
+    <xsl:call-template name="object.id"/>
   </xsl:variable>
-  <xsl:variable name="master-reference">
-    <xsl:call-template name="select.pagemaster"/>
+
+  <xsl:variable name="titlepage-master-reference">
+    <xsl:call-template name="select.pagemaster">
+      <xsl:with-param name="pageclass" select="'titlepage'"/>
+    </xsl:call-template>
   </xsl:variable>
 
   <fo:page-sequence id="{$id}"
                     hyphenate="{$hyphenate}"
-                    master-reference="{$master-reference}">
+                    master-reference="{$titlepage-master-reference}">
     <xsl:attribute name="language">
       <xsl:call-template name="l10n.language"/>
     </xsl:attribute>
+
+    <!-- if there is a preceding chapter or part, page numbering will already -->
+    <!-- be adjusted, otherwise restart the page numbers -->
+    <xsl:if test="not(preceding::chapter or preceding::preface)
+                  and not(preceding::part)">
+      <xsl:attribute name="initial-page-number">1</xsl:attribute>
+    </xsl:if>
+
     <xsl:if test="$double.sided != 0">
       <xsl:attribute name="force-page-count">end-on-even</xsl:attribute>
     </xsl:if>
 
     <xsl:apply-templates select="." mode="running.head.mode">
-      <xsl:with-param name="master-reference" select="$master-reference"/>
+      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
     </xsl:apply-templates>
+
     <xsl:apply-templates select="." mode="running.foot.mode">
-      <xsl:with-param name="master-reference" select="$master-reference"/>
+      <xsl:with-param name="master-reference" select="$titlepage-master-reference"/>
     </xsl:apply-templates>
 
     <fo:flow flow-name="xsl-region-body">
-      <xsl:apply-templates select=".." mode="part.titlepage.mode"/>
+      <xsl:call-template name="part.titlepage"/>
+      <xsl:copy-of select="$additional.content"/>
+    </fo:flow>
+  </fo:page-sequence>
+</xsl:template>
+
+<xsl:template match="part/docinfo|partinfo"></xsl:template>
+<xsl:template match="part/title"></xsl:template>
+<xsl:template match="part/subtitle"></xsl:template>
+
+<!-- ==================================================================== -->
+
+<xsl:template match="part/partintro">
+  <xsl:apply-templates select=".." mode="part.titlepage.mode">
+    <xsl:with-param name="additional.content">
       <xsl:if test="title">
         <xsl:call-template name="partintro.titlepage"/>
       </xsl:if>
       <xsl:apply-templates/>
-    </fo:flow>
-  </fo:page-sequence>
+    </xsl:with-param>
+  </xsl:apply-templates>
 </xsl:template>
 
 <xsl:template match="partintro/title"></xsl:template>
index cf588e2eac4649bab65207224867c953a3a1f979..6241cdff20a12fbab1791a8d851263ee07cdd78e 100644 (file)
@@ -34,6 +34,7 @@
   <xsl:variable name="id">
     <xsl:call-template name="object.id"/>
   </xsl:variable>
+
   <xsl:variable name="master-reference">
     <xsl:call-template name="select.pagemaster">
       <xsl:with-param name="column.count"
index cb4694560a56409a1f81a5cf2b0df58769940137..541e8a4a2178b720ff389107960582dbb28439f1 100644 (file)
 
 <!-- ==================================================================== -->
 
+<xsl:param name="column.count.titlepage" select="1"/>
+<xsl:param name="column.count.lot" select="1"/>
+<xsl:param name="column.count.front" select="1"/>
+<xsl:param name="column.count.body" select="1"/>
+<xsl:param name="column.count.back" select="1"/>
+<xsl:param name="column.count.index" select="2"/>
+
 <xsl:template name="setup.pagemasters">
   <fo:layout-master-set>
-    <!-- one sided, single column -->
+    <!-- blank pages -->
     <fo:simple-page-master master-name="blank"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}">
+      </fo:region-body>
       <fo:region-before region-name="xsl-region-before-blank"
                         extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-blank"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- title pages -->
+    <fo:simple-page-master master-name="titlepage-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="titlepage-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="titlepage-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-even"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- list-of-title pages -->
+    <fo:simple-page-master master-name="lot-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="lot-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="lot-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-even"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- frontmatter pages -->
+    <fo:simple-page-master master-name="front-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="front-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="front-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-even"
+                       extent="{$region.after.extent}"
                         display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- body pages -->
+    <fo:simple-page-master master-name="body-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-body-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-first"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="body-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-body-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-odd"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="body-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-body-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-even"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- backmatter pages -->
+    <fo:simple-page-master master-name="back-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-first"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="back-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-odd"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="back-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-even"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- index pages -->
+    <fo:simple-page-master master-name="index-first"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-first"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="index-odd"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-odd"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="index-even"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-even"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- draft blank pages -->
+    <fo:simple-page-master master-name="blank-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-blank"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
       <fo:region-after region-name="xsl-region-after-blank"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- draft title pages -->
+    <fo:simple-page-master master-name="titlepage-first-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="titlepage-odd-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="titlepage-even-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.titlepage}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-titlepage-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-titlepage-even"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- draft list-of-title pages -->
+    <fo:simple-page-master master-name="lot-first-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="lot-odd-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="lot-even-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.lot}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-lot-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-lot-even"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- draft frontmatter pages -->
+    <fo:simple-page-master master-name="front-first-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-first"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="front-odd-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-odd"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <fo:simple-page-master master-name="front-even-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.front}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-front-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-front-even"
+                       extent="{$region.after.extent}"
+                        display-align="after"/>
+    </fo:simple-page-master>
+
+    <!-- draft body pages -->
+    <fo:simple-page-master master-name="body-first-draft"
+                           page-width="{$page.width}"
+                           page-height="{$page.height}"
+                           margin-top="{$page.margin.top}"
+                           margin-bottom="{$page.margin.bottom}"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-body-first"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-first"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- one sided, single column -->
-    <fo:simple-page-master master-name="simple1"
+    <fo:simple-page-master master-name="body-odd-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after extent="{$region.after.extent}"
-                        display-align="after"/>
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-body-odd"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-odd"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- one sided, single column, draft mode -->
-    <fo:simple-page-master master-name="draft1"
+    <fo:simple-page-master master-name="body-even-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
       <fo:region-body margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}">
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.body}">
         <xsl:if test="$draft.watermark.image != ''
                       and $fop.extensions = 0">
           <xsl:attribute name="background-image">
           <xsl:attribute name="background-position-vertical">center</xsl:attribute>
         </xsl:if>
       </fo:region-body>
-      <fo:region-before extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after extent="{$region.after.extent}"
-                        display-align="after"/>
-    </fo:simple-page-master>
-
-    <!-- for left-hand/even pages in twosided mode, single column -->
-    <fo:simple-page-master master-name="left1"
-                           page-width="{$page.width}"
-                           page-height="{$page.height}"
-                           margin-top="{$page.margin.top}"
-                           margin-bottom="{$page.margin.bottom}"
-                           margin-left="{$page.margin.outer}"
-                           margin-right="{$page.margin.inner}">
-      <fo:region-body
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-left"
+      <fo:region-before region-name="xsl-region-before-body-even"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-left"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-body-even"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- for right-hand/odd pages in twosided mode, single column -->
-    <fo:simple-page-master master-name="right1"
+    <!-- draft backmatter pages -->
+    <fo:simple-page-master master-name="back-first-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-right"
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-first"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-right"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-first"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- special case of first page in either mode, single column -->
-    <fo:simple-page-master master-name="first1"
+    <fo:simple-page-master master-name="back-odd-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-first"
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-odd"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-first"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-odd"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- for pages in one-side mode, 2 column -->
-    <fo:simple-page-master master-name="simple2"
+    <fo:simple-page-master master-name="back-even-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
       <fo:region-body margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}">
-        <xsl:attribute name="column-count">
-          <!-- FIXME: how bad is this hack? If the overall column.count is 1,
-               use 2 here. Otherwise, use whatever is specified. This allows
-               some pages to be 2 column and others to be 1 column. Perhaps
-               this should always be 2 and if you want a 3 column page, you should
-               make a new pagemaster? Or maybe if you want to mix single and multi-
-               column pages, you should write another pagemaster for the ones
-               you want to be two column... -->
-          <xsl:choose>
-            <xsl:when test="$column.count &lt; 2">2</xsl:when>
-            <xsl:otherwise>
-              <xsl:value-of select="$column.count"/>
-            </xsl:otherwise>
-          </xsl:choose>
-        </xsl:attribute>
-      </fo:region-body>
-
-      <fo:region-before extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after extent="{$region.after.extent}"
-                        display-align="after"/>
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.back}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-back-even"
+                        extent="{$region.before.extent}"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-back-even"
+                       extent="{$region.after.extent}"
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- for left-hand/even pages in twosided mode, 2 column -->
-    <fo:simple-page-master master-name="left2"
+    <!-- draft index pages -->
+    <fo:simple-page-master master-name="index-first-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
-                           margin-left="{$page.margin.outer}"
-                           margin-right="{$page.margin.inner}">
-      <fo:region-body
-                      column-count="{$column.count}"
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-left"
+                           margin-left="{$page.margin.inner}"
+                           margin-right="{$page.margin.outer}">
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-first"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-left"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-first"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- for right-hand/odd pages in twosided mode, 2 column -->
-    <fo:simple-page-master master-name="right2"
+    <fo:simple-page-master master-name="index-odd-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      column-count="{$column.count}"
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-right"
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-odd"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-right"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-odd"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- special case of first page in either mode -->
-    <fo:simple-page-master master-name="first2"
+    <fo:simple-page-master master-name="index-even-draft"
                            page-width="{$page.width}"
                            page-height="{$page.height}"
                            margin-top="{$page.margin.top}"
                            margin-bottom="{$page.margin.bottom}"
                            margin-left="{$page.margin.inner}"
                            margin-right="{$page.margin.outer}">
-      <fo:region-body
-                      column-count="1"
-                      margin-bottom="{$body.margin.bottom}"
-                      margin-top="{$body.margin.top}"/>
-      <fo:region-before region-name="xsl-region-before-first"
+      <fo:region-body margin-bottom="{$body.margin.bottom}"
+                      margin-top="{$body.margin.top}"
+                      column-count="{$column.count.index}">
+        <xsl:if test="$draft.watermark.image != ''
+                      and $fop.extensions = 0">
+          <xsl:attribute name="background-image">
+            <xsl:value-of select="$draft.watermark.image"/>
+          </xsl:attribute>
+          <xsl:attribute name="background-attachment">fixed</xsl:attribute>
+          <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
+          <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
+          <xsl:attribute name="background-position-vertical">center</xsl:attribute>
+        </xsl:if>
+      </fo:region-body>
+      <fo:region-before region-name="xsl-region-before-index-even"
                         extent="{$region.before.extent}"
-                        display-align="after"/>
-      <fo:region-after region-name="xsl-region-after-first"
+                        display-align="before"/>
+      <fo:region-after region-name="xsl-region-after-index-even"
                        extent="{$region.after.extent}"
-                        display-align="after"/>
+                       display-align="after"/>
     </fo:simple-page-master>
 
-    <!-- setup for title-page, 1 column -->
-    <fo:page-sequence-master master-name="titlepage1">
+    <!-- setup for title page(s) -->
+    <fo:page-sequence-master master-name="titlepage">
+      <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="titlepage-first"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="titlepage-odd"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="titlepage-even"
+                                              odd-or-even="even"/>
+      </fo:repeatable-page-master-alternatives>
+    </fo:page-sequence-master>
+
+    <!-- setup for lots -->
+    <fo:page-sequence-master master-name="lot">
+      <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="lot-first"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="lot-odd"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="lot-even"
+                                              odd-or-even="even"/>
+      </fo:repeatable-page-master-alternatives>
+    </fo:page-sequence-master>
+
+    <!-- setup front matter -->
+    <fo:page-sequence-master master-name="front">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="first1"/>
+        <fo:conditional-page-master-reference master-reference="blank"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="front-first"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="front-odd"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="front-even"
+                                              odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for single-sided, 1 column -->
-    <fo:page-sequence-master master-name="oneside1">
+    <!-- setup for body pages -->
+    <fo:page-sequence-master master-name="body">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="first1"
+        <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="simple1"/>
+        <fo:conditional-page-master-reference master-reference="body-odd"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="body-even"
+                                              odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for single-sided, 1 column -->
-    <fo:page-sequence-master master-name="onesidedraft1">
+    <!-- setup back matter -->
+    <fo:page-sequence-master master-name="back">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="draft1"/>
+        <fo:conditional-page-master-reference master-reference="blank"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="back-first"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="back-odd"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="back-even"
+                                              odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for double-sided, 1 column -->
-    <fo:page-sequence-master master-name="twoside1">
+    <!-- setup back matter -->
+    <fo:page-sequence-master master-name="index">
       <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="right1"
+        <fo:conditional-page-master-reference master-reference="index-first"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="index-odd"
                                               odd-or-even="odd"/>
-        <fo:conditional-page-master-reference master-reference="left1"
+        <fo:conditional-page-master-reference master-reference="index-even"
                                               odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for title-page, 2 column -->
-    <fo:page-sequence-master master-name="titlepage2">
+    <!-- setup for draft title page(s) -->
+    <fo:page-sequence-master master-name="titlepage-draft">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="first2"/>
+        <fo:conditional-page-master-reference master-reference="blank-draft"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="titlepage-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="titlepage-odd-draft"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="titlepage-even-draft"
+                                              odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for single-sided, 2 column -->
-    <fo:page-sequence-master master-name="oneside2">
+    <!-- setup for draft lots -->
+    <fo:page-sequence-master master-name="lot-draft">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="simple2"/>
+        <fo:conditional-page-master-reference master-reference="blank-draft"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="lot-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="lot-odd-draft"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="lot-even-draft"
+                                              odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
-    <!-- setup for double-sided, 2 column -->
-    <fo:page-sequence-master master-name="twoside2">
+    <!-- setup draft front matter -->
+    <fo:page-sequence-master master-name="front-draft">
       <fo:repeatable-page-master-alternatives>
-        <fo:conditional-page-master-reference master-reference="blank"
+        <fo:conditional-page-master-reference master-reference="blank-draft"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="front-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="front-odd-draft"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="front-even-draft"
+                                              odd-or-even="even"/>
+      </fo:repeatable-page-master-alternatives>
+    </fo:page-sequence-master>
+
+    <!-- setup for draft body pages -->
+    <fo:page-sequence-master master-name="body-draft">
+      <fo:repeatable-page-master-alternatives>
+        <fo:conditional-page-master-reference master-reference="blank-draft"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="body-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="body-odd-draft"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="body-even-draft"
+                                              odd-or-even="even"/>
+      </fo:repeatable-page-master-alternatives>
+    </fo:page-sequence-master>
+
+    <!-- setup draft back matter -->
+    <fo:page-sequence-master master-name="back-draft">
+      <fo:repeatable-page-master-alternatives>
+        <fo:conditional-page-master-reference master-reference="blank-draft"
+                                              blank-or-not-blank="blank"/>
+        <fo:conditional-page-master-reference master-reference="back-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="back-odd-draft"
+                                              odd-or-even="odd"/>
+        <fo:conditional-page-master-reference master-reference="back-even-draft"
+                                              odd-or-even="even"/>
+      </fo:repeatable-page-master-alternatives>
+    </fo:page-sequence-master>
+
+    <!-- setup draft index pages -->
+    <fo:page-sequence-master master-name="index-draft">
+      <fo:repeatable-page-master-alternatives>
+        <fo:conditional-page-master-reference master-reference="blank-draft"
                                               blank-or-not-blank="blank"/>
-        <fo:conditional-page-master-reference master-reference="right2"
+        <fo:conditional-page-master-reference master-reference="index-first-draft"
+                                              page-position="first"/>
+        <fo:conditional-page-master-reference master-reference="index-odd-draft"
                                               odd-or-even="odd"/>
-        <fo:conditional-page-master-reference master-reference="left2"
+        <fo:conditional-page-master-reference master-reference="index-even-draft"
                                               odd-or-even="even"/>
       </fo:repeatable-page-master-alternatives>
     </fo:page-sequence-master>
 
 <!-- ==================================================================== -->
 
-<!-- $double.sided, $column.count, and context -->
-
 <xsl:template name="select.pagemaster">
   <xsl:param name="element" select="local-name(.)"/>
-  <!-- column.count is a param so it can be selected dynamically; see index.xsl -->
-  <xsl:param name="column.count" select="$column.count"/>
+  <xsl:param name="pageclass" select="''"/>
 
   <xsl:choose>
-    <xsl:when test="$double.sided != 0">
-      <xsl:choose>
-        <xsl:when test="$column.count &gt; 1">
-          <xsl:call-template name="select.doublesided.multicolumn.pagemaster">
-            <xsl:with-param name="element" select="$element"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="select.doublesided.pagemaster">
-            <xsl:with-param name="element" select="$element"/>
-          </xsl:call-template>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:when>
-    <xsl:otherwise>
-      <xsl:choose>
-        <xsl:when test="$column.count &gt; 1">
-          <xsl:call-template name="select.singlesided.multicolumn.pagemaster">
-            <xsl:with-param name="element" select="$element"/>
-          </xsl:call-template>
-        </xsl:when>
-        <xsl:otherwise>
-          <xsl:call-template name="select.singlesided.pagemaster">
-            <xsl:with-param name="element" select="$element"/>
-          </xsl:call-template>
-        </xsl:otherwise>
-      </xsl:choose>
-    </xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template name="select.doublesided.multicolumn.pagemaster">
-  <xsl:param name="element" select="local-name(.)"/>
-  <xsl:choose>
-    <xsl:when test="$element='set' or $element='book' or $element='part'">
-      <xsl:text>titlepage2</xsl:text>
+    <xsl:when test="$pageclass != ''">
+      <xsl:value-of select="$pageclass"/>
     </xsl:when>
-    <xsl:otherwise>twoside2</xsl:otherwise>
+    <xsl:when test="$pageclass = 'lot'">lot</xsl:when>
+    <xsl:when test="$element = 'dedication'">front</xsl:when>
+    <xsl:when test="$element = 'preface'">front</xsl:when>
+    <xsl:when test="$element = 'appendix'">back</xsl:when>
+    <xsl:when test="$element = 'glossary'">back</xsl:when>
+    <xsl:when test="$element = 'bibliography'">back</xsl:when>
+    <xsl:when test="$element = 'index'">index</xsl:when>
+    <xsl:when test="$element = 'colophon'">back</xsl:when>
+    <xsl:otherwise>body</xsl:otherwise>
   </xsl:choose>
-</xsl:template>
 
-<xsl:template name="select.doublesided.pagemaster">
-  <xsl:param name="element" select="local-name(.)"/>
   <xsl:choose>
-    <xsl:when test="$element='set' or $element='book' or $element='part'">
-      <xsl:text>titlepage1</xsl:text>
+    <xsl:when test="$draft.mode = 'yes'">
+      <xsl:text>-draft</xsl:text>
     </xsl:when>
-    <xsl:otherwise>twoside1</xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template name="select.singlesided.multicolumn.pagemaster">
-  <xsl:param name="element" select="local-name(.)"/>
-  <xsl:choose>
-    <xsl:when test="$element='set' or $element='book' or $element='part'">
-      <xsl:text>titlepage2</xsl:text>
+    <xsl:when test="$draft.mode = 'no'">
+      <!-- nop -->
     </xsl:when>
-    <xsl:otherwise>oneside2</xsl:otherwise>
-  </xsl:choose>
-</xsl:template>
-
-<xsl:template name="select.singlesided.pagemaster">
-  <xsl:param name="element" select="local-name(.)"/>
-  <xsl:choose>
     <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
-      <xsl:text>onesidedraft1</xsl:text>
+      <xsl:text>-draft</xsl:text>
     </xsl:when>
-    <xsl:when test="$element='set' or $element='book' or $element='part'">
-      <xsl:text>titlepage1</xsl:text>
-    </xsl:when>
-    <xsl:otherwise>oneside1</xsl:otherwise>
+    <xsl:otherwise>
+      <!-- nop -->
+    </xsl:otherwise>
   </xsl:choose>
 </xsl:template>
 
 <xsl:template match="*" mode="running.head.mode">
   <xsl:param name="master-reference" select="'unknown'"/>
   <!-- by default, nothing -->
-  <xsl:choose>
-    <xsl:when test="$master-reference='titlepage1'">
-    </xsl:when>
-    <xsl:when test="$master-reference='oneside1'">
-    </xsl:when>
-    <xsl:when test="$master-reference='twoside1'">
-    </xsl:when>
-    <xsl:when test="$master-reference='titlepage2'">
-    </xsl:when>
-    <xsl:when test="$master-reference='oneside2'">
-    </xsl:when>
-    <xsl:when test="$master-reference='twoside2'">
-    </xsl:when>
-  </xsl:choose>
 </xsl:template>
 
-<xsl:template match="chapter|appendix" mode="running.head.mode">
+<xsl:template match="preface|chapter|appendix" mode="running.head.mode">
   <xsl:param name="master-reference" select="'unknown'"/>
-  <xsl:variable name="head">
-    <fo:block font-size="{$body.font.size}">
-      <xsl:apply-templates select="." mode="object.title.markup"/>
-    </fo:block>
+
+  <xsl:variable name="draft">
+    <xsl:choose>
+      <xsl:when test="$draft.mode = 'yes'">
+        <xsl:call-template name="gentext">
+          <xsl:with-param name="key" select="'Draft'"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:when test="$draft.mode = 'no'">
+        <!-- nop -->
+      </xsl:when>
+      <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
+        <xsl:call-template name="gentext">
+          <xsl:with-param name="key" select="'Draft'"/>
+        </xsl:call-template>
+      </xsl:when>
+      <xsl:otherwise>
+        <!-- nop -->
+      </xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="head-first">
+    <fo:table table-layout="fixed" width="100%">
+      <fo:table-column column-number="1" column-width="33%"/>
+      <fo:table-column column-number="2" column-width="34%"/>
+      <fo:table-column column-number="3" column-width="33%"/>
+      <fo:table-body>
+        <fo:table-row>
+          <fo:table-cell text-align="left"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block/>
+          </fo:table-cell>
+          <fo:table-cell text-align="center"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block/>
+          </fo:table-cell>
+          <fo:table-cell text-align="right"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block>
+              <xsl:value-of select="$draft"/>
+            </fo:block>
+          </fo:table-cell>
+        </fo:table-row>
+      </fo:table-body>
+    </fo:table>
+  </xsl:variable>
+
+  <xsl:variable name="head-odd">
+    <fo:table table-layout="fixed" width="100%">
+      <fo:table-column column-number="1" column-width="33%"/>
+      <fo:table-column column-number="2" column-width="34%"/>
+      <fo:table-column column-number="3" column-width="33%"/>
+      <fo:table-body>
+        <fo:table-row>
+          <fo:table-cell text-align="left"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block/>
+          </fo:table-cell>
+          <fo:table-cell text-align="center"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block>
+              <xsl:choose>
+                <xsl:when test="(/book or /set) and ($double.sided != 0)">
+                  <fo:retrieve-marker retrieve-class-name="section.head.marker"
+                                      retrieve-position="first-including-carryover"
+                                      retrieve-boundary="page"/>
+                </xsl:when>
+                <xsl:otherwise>
+                  <xsl:apply-templates select="." mode="object.title.markup"/>
+                </xsl:otherwise>
+              </xsl:choose>
+            </fo:block>
+          </fo:table-cell>
+          <fo:table-cell text-align="right"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block>
+              <xsl:value-of select="$draft"/>
+            </fo:block>
+          </fo:table-cell>
+        </fo:table-row>
+      </fo:table-body>
+    </fo:table>
+  </xsl:variable>
+
+  <xsl:variable name="head-even">
+    <fo:table table-layout="fixed" width="100%">
+      <fo:table-column column-number="1" column-width="33%"/>
+      <fo:table-column column-number="2" column-width="34%"/>
+      <fo:table-column column-number="3" column-width="33%"/>
+      <fo:table-body>
+        <fo:table-row>
+          <fo:table-cell text-align="left"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block>
+              <xsl:value-of select="$draft"/>
+            </fo:block>
+          </fo:table-cell>
+          <fo:table-cell text-align="center"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block>
+              <xsl:apply-templates select="." mode="object.title.markup"/>
+            </fo:block>
+          </fo:table-cell>
+          <fo:table-cell text-align="right"
+                         relative-align="baseline"
+                         display-align="before">
+            <fo:block/>
+          </fo:table-cell>
+        </fo:table-row>
+      </fo:table-body>
+    </fo:table>
   </xsl:variable>
 
   <xsl:choose>
-    <xsl:when test="$master-reference='titlepage1'"></xsl:when>
-    <xsl:when test="$master-reference='oneside1'">
-      <fo:static-content flow-name="xsl-region-before">
-        <fo:block text-align="center">
-          <xsl:copy-of select="$head"/>
-        </fo:block>
-      </fo:static-content>
+    <xsl:when test="starts-with($master-reference, 'titlepage')">
+      <!-- no headers -->
     </xsl:when>
-    <xsl:when test="$master-reference='twoside1'">
-      <fo:static-content flow-name="xsl-region-before-left">
-        <fo:block text-align="right">
-          <xsl:copy-of select="$head"/>
-        </fo:block>
-      </fo:static-content>
-      <fo:static-content flow-name="xsl-region-before-right">
-        <fo:block text-align="left">
-          <xsl:copy-of select="$head"/>
-        </fo:block>
-      </fo:static-content>
-    </xsl:when>
-    <xsl:when test="$master-reference='titlepage2'"></xsl:when>
-    <xsl:when test="$master-reference='oneside2'">
-      <fo:static-content flow-name="xsl-region-before">
-        <fo:block text-align="center">
-          <xsl:copy-of select="$head"/>
+    <xsl:when test="$master-reference = 'lot'
+                    or $master-reference = 'front'
+                    or $master-reference = 'body'
+                    or $master-reference = 'back'
+                    or $master-reference = 'index'
+                    or $master-reference = 'lot-draft'
+                    or $master-reference = 'front-draft'
+                    or $master-reference = 'body-draft'
+                    or $master-reference = 'back-draft'
+                    or $master-reference = 'index-draft'">
+      <xsl:if test="$master-reference != 'blank'">
+        <fo:static-content flow-name="xsl-region-before-{$master-reference}-first">
+          <fo:block margin-left="{$title.margin.left}">
+            <xsl:copy-of select="$head-first"/>
+            <fo:block/>
+          </fo:block>
+        </fo:static-content>
+      </xsl:if>
+
+      <fo:static-content flow-name="xsl-region-before-{$master-reference}-odd">
+        <fo:block margin-left="{$title.margin.left}">
+          <xsl:copy-of select="$head-odd"/>
         </fo:block>
       </fo:static-content>
-    </xsl:when>
-    <xsl:when test="$master-reference='twoside2'">
-      <fo:static-content flow-name="xsl-region-before-left">
-        <fo:block text-align="right">
-          <xsl:copy-of select="$head"/>
+
+      <fo:static-content flow-name="xsl-region-before-{$master-reference}-even">
+        <fo:block margin-left="{$title.margin.left}">
+          <xsl:copy-of select="$head-even"/>
         </fo:block>
       </fo:static-content>
-      <fo:static-content flow-name="xsl-region-before-right">
-        <fo:block text-align="left">
-          <xsl:copy-of select="$head"/>
+
+      <fo:static-content flow-name="xsl-region-before-blank">
+        <fo:block margin-left="{$title.margin.left}">
+          <!-- no headers on blank pages by default -->
         </fo:block>
       </fo:static-content>
     </xsl:when>
   </xsl:choose>
 </xsl:template>
 
+<!-- ==================================================================== -->
+
 <xsl:template match="*" mode="running.foot.mode">
   <xsl:param name="master-reference" select="'unknown'"/>
+
+  <!-- by default, the page number -->
   <xsl:variable name="foot">
     <fo:page-number/>
   </xsl:variable>
-  <!-- by default, the page number -->
+
+  <xsl:variable name="align-odd">
+    <xsl:choose>
+      <xsl:when test="$double.sided != 0">right</xsl:when>
+      <xsl:otherwise>center</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
+  <xsl:variable name="align-even">
+    <xsl:choose>
+      <xsl:when test="$double.sided != 0">left</xsl:when>
+      <xsl:otherwise>center</xsl:otherwise>
+    </xsl:choose>
+  </xsl:variable>
+
   <xsl:choose>
-    <xsl:when test="$master-reference='titlepage1'"></xsl:when>
-    <xsl:when test="$master-reference='oneside1'">
-      <fo:static-content flow-name="xsl-region-after">
-        <fo:block text-align="center" font-size="{$body.font.size}">
-          <xsl:copy-of select="$foot"/>
-        </fo:block>
-      </fo:static-content>
-    </xsl:when>
-    <xsl:when test="$master-reference='twoside1'">
-      <fo:static-content flow-name="xsl-region-after-left">
-        <fo:block text-align="left" font-size="{$body.font.size}">
-          <xsl:copy-of select="$foot"/>
-        </fo:block>
-      </fo:static-content>
-      <fo:static-content flow-name="xsl-region-after-right">
-        <fo:block text-align="right" font-size="{$body.font.size}">
-          <xsl:copy-of select="$foot"/>
-        </fo:block>
-      </fo:static-content>
+    <xsl:when test="starts-with($master-reference,'titlepage')">
+      <!-- no footers -->
     </xsl:when>
-    <xsl:when test="$master-reference='titlepage2'"></xsl:when>
-    <xsl:when test="$master-reference='oneside2'">
-      <fo:static-content flow-name="xsl-after-before">
-        <fo:block text-align="center" font-size="{$body.font.size}">
+    <xsl:when test="$master-reference = 'titlepage'
+                    or $master-reference = 'lot'
+                    or $master-reference = 'front'
+                    or $master-reference = 'body'
+                    or $master-reference = 'back'
+                    or $master-reference = 'index'
+                    or $master-reference = 'titlepage-draft'
+                    or $master-reference = 'lot-draft'
+                    or $master-reference = 'front-draft'
+                    or $master-reference = 'body-draft'
+                    or $master-reference = 'back-draft'
+                    or $master-reference = 'index-draft'">
+      <xsl:if test="$master-reference != 'blank'">
+        <fo:static-content flow-name="xsl-region-after-{$master-reference}-first">
+          <fo:block text-align="{$align-odd}" margin-left="{$title.margin.left}">
+            <xsl:copy-of select="$foot"/>
+          </fo:block>
+        </fo:static-content>
+      </xsl:if>
+      <fo:static-content flow-name="xsl-region-after-{$master-reference}-odd">
+        <fo:block text-align="{$align-odd}" margin-left="{$title.margin.left}">
           <xsl:copy-of select="$foot"/>
         </fo:block>
       </fo:static-content>
-    </xsl:when>
-    <xsl:when test="$master-reference='twoside2'">
-      <fo:static-content flow-name="xsl-region-after-left">
-        <fo:block text-align="left" font-size="{$body.font.size}">
+      <fo:static-content flow-name="xsl-region-after-{$master-reference}-even">
+        <fo:block text-align="{$align-even}" margin-left="{$title.margin.left}">
           <xsl:copy-of select="$foot"/>
         </fo:block>
       </fo:static-content>
-      <fo:static-content flow-name="xsl-region-after-right">
-        <fo:block text-align="right" font-size="{$body.font.size}">
+      <fo:static-content flow-name="xsl-region-after-blank">
+        <fo:block text-align="{$align-even}" margin-left="{$title.margin.left}">
           <xsl:copy-of select="$foot"/>
         </fo:block>
       </fo:static-content>
   </xsl:choose>
 </xsl:template>
 
-<xsl:template match="set|book|part|reference" mode="running.foot.mode">
-  <!-- nothing -->
-</xsl:template>
-
 <!-- ==================================================================== -->
 
 </xsl:stylesheet>
index 1df61393a316f6e324d07b9fac5bc9417a6d0d85..11a1e443b9a54f78ab777ebd0d39a105ad0e7378 100644 (file)
 <!ENTITY callout.unicode.start.character SYSTEM "../params/callout.unicode.start.character.xml">
 <!ENTITY callouts.extension SYSTEM "../params/callouts.extension.xml">
 <!ENTITY chapter.autolabel SYSTEM "../params/chapter.autolabel.xml">
-<!ENTITY column.count SYSTEM "../params/column.count.xml">
-<!ENTITY column.count.of.index SYSTEM "../params/column.count.of.index.xml">
+<!ENTITY column.count.back SYSTEM "../params/column.count.back.xml">
+<!ENTITY column.count.body SYSTEM "../params/column.count.body.xml">
+<!ENTITY column.count.front SYSTEM "../params/column.count.front.xml">
+<!ENTITY column.count.index SYSTEM "../params/column.count.index.xml">
+<!ENTITY column.count.lot SYSTEM "../params/column.count.lot.xml">
+<!ENTITY column.count.titlepage SYSTEM "../params/column.count.titlepage.xml">
 <!ENTITY compact.list.item.spacing SYSTEM "../params/compact.list.item.spacing.xml">
 <!ENTITY component.title.properties SYSTEM "../params/component.title.properties.xml">
 <!ENTITY default.table.width SYSTEM "../params/default.table.width.xml">
 <!ENTITY default.units SYSTEM "../params/default.units.xml">
 <!ENTITY dingbat.font.family SYSTEM "../params/dingbat.font.family.xml">
 <!ENTITY double.sided SYSTEM "../params/double.sided.xml">
+<!ENTITY draft.mode SYSTEM "../params/draft.mode.xml">
 <!ENTITY draft.watermark.image SYSTEM "../params/draft.watermark.image.xml">
 <!ENTITY firstterm.only.link SYSTEM "../params/firstterm.only.link.xml">
 <!ENTITY footnote.font.size SYSTEM "../params/footnote.font.size.xml">
index e9e69437c33f470893cd0af17f05ac61ff1bd81b..9b12aa1b0bafe90e63586e6c0be3ba9bfb83da93 100644 (file)
@@ -285,8 +285,12 @@ zero by default, so this is simply the page-master region-left.
 &alignment;
 &hyphenate;
 &line-height;
-&column.count;
-&column.count.of.index;
+&column.count.back;
+&column.count.body;
+&column.count.front;
+&column.count.index;
+&column.count.lot;
+&column.count.titlepage;
 &region.after.extent;
 &region.before.extent;
 &default.units;
@@ -295,6 +299,7 @@ zero by default, so this is simply the page-master region-left.
 &body.font.size;
 &footnote.font.size;
 &title.margin.left;
+&draft.mode;
 &draft.watermark.image;
 </reference>
 
@@ -406,14 +411,19 @@ around all these parameters.</para>
 <src:fragref linkend="callout.unicode.start.character.frag"/>
 <src:fragref linkend="callouts.extension.frag"/>
 <src:fragref linkend="chapter.autolabel.frag"/>
-<src:fragref linkend="column.count.frag"/>
-<src:fragref linkend="column.count.of.index.frag"/>
+<src:fragref linkend="column.count.back.frag"/>
+<src:fragref linkend="column.count.body.frag"/>
+<src:fragref linkend="column.count.front.frag"/>
+<src:fragref linkend="column.count.index.frag"/>
+<src:fragref linkend="column.count.lot.frag"/>
+<src:fragref linkend="column.count.titlepage.frag"/>
 <src:fragref linkend="compact.list.item.spacing.frag"/>
 <src:fragref linkend="component.title.properties.frag"/>
 <src:fragref linkend="default.table.width.frag"/>
 <src:fragref linkend="default.units.frag"/>
 <src:fragref linkend="dingbat.font.family.frag"/>
 <src:fragref linkend="double.sided.frag"/>
+<src:fragref linkend="draft.mode.frag"/>
 <src:fragref linkend="draft.watermark.image.frag"/>
 <src:fragref linkend="firstterm.only.link.frag"/>
 <src:fragref linkend="footnote.font.size.frag"/>
index d41063d36cb444c991b862187ba60c4bd56a426b..97d15b839a29f580e06aefca72231521dbc3719c 100644 (file)
   <fo:block xsl:use-attribute-sets="section.title.properties"
             font-size="{$fsize}pt">
     <xsl:copy-of select="$title"/>
+    <fo:marker marker-class-name="section.head.marker">
+      <xsl:copy-of select="$title"/>
+    </fo:marker>
   </fo:block>
 </xsl:template>