Imported Upstream version 1.79.2
[platform/upstream/docbook-xsl-stylesheets.git] / fo / pagesetup.xsl
1 <?xml version="1.0"?>
2 <xsl:stylesheet exclude-result-prefixes="d"
3                 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4                 xmlns:d="http://docbook.org/ns/docbook"
5                 xmlns:fo="http://www.w3.org/1999/XSL/Format"
6                 version="1.0">
7
8 <!-- ********************************************************************
9
10      This file is part of the DocBook XSL Stylesheet distribution.
11      See ../README or http://docbook.sf.net/ for copyright
12      copyright and other information.
13
14      ******************************************************************** -->
15
16 <!-- ==================================================================== -->
17
18 <xsl:param name="body.fontset">
19   <xsl:value-of select="$body.font.family"/>
20   <xsl:if test="$body.font.family != ''
21                 and $symbol.font.family  != ''">,</xsl:if>
22   <xsl:value-of select="$symbol.font.family"/>
23 </xsl:param>
24
25 <xsl:param name="title.fontset">
26   <xsl:value-of select="$title.font.family"/>
27   <xsl:if test="$title.font.family != ''
28                 and $symbol.font.family  != ''">,</xsl:if>
29   <xsl:value-of select="$symbol.font.family"/>
30 </xsl:param>
31
32 <xsl:param name="dingbat.fontset">
33   <xsl:value-of select="$dingbat.font.family"/>
34   <xsl:if test="$dingbat.font.family != ''
35                 and $symbol.font.family  != ''">,</xsl:if>
36   <xsl:value-of select="$symbol.font.family"/>
37 </xsl:param>
38
39 <!-- These are internal parameters are for the individual precedence attributes -->
40 <xsl:param name="region.start.precedence">
41   <xsl:choose>
42     <xsl:when test="$side.region.precedence = 'true'">true</xsl:when>
43     <xsl:otherwise>false</xsl:otherwise>
44   </xsl:choose>
45 </xsl:param>
46
47 <xsl:param name="region.end.precedence">
48   <xsl:choose>
49     <xsl:when test="$side.region.precedence = 'true'">true</xsl:when>
50     <xsl:otherwise>false</xsl:otherwise>
51   </xsl:choose>
52 </xsl:param>
53
54 <xsl:param name="region.before.precedence">
55   <xsl:choose>
56     <xsl:when test="$side.region.precedence = 'true'">false</xsl:when>
57     <xsl:otherwise>true</xsl:otherwise>
58   </xsl:choose>
59 </xsl:param>
60
61 <xsl:param name="region.after.precedence">
62   <xsl:choose>
63     <xsl:when test="$side.region.precedence = 'true'">false</xsl:when>
64     <xsl:otherwise>true</xsl:otherwise>
65   </xsl:choose>
66 </xsl:param>
67
68 <xsl:template name="setup.pagemasters">
69   <fo:layout-master-set>
70     <!-- blank pages -->
71     <fo:simple-page-master master-name="blank"
72                            page-width="{$page.width}"
73                            page-height="{$page.height}"
74                            margin-top="{$page.margin.top}"
75                            margin-bottom="{$page.margin.bottom}">
76       <xsl:attribute name="margin-{$direction.align.start}">
77         <xsl:value-of select="$page.margin.outer"/>
78         <xsl:if test="$fop.extensions != 0">
79           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
80         </xsl:if>
81       </xsl:attribute>
82       <xsl:attribute name="margin-{$direction.align.end}">
83         <xsl:value-of select="$page.margin.inner"/>
84       </xsl:attribute>
85       <xsl:if test="$axf.extensions != 0">
86         <xsl:call-template name="axf-page-master-properties">
87           <xsl:with-param name="page.master">blank</xsl:with-param>
88         </xsl:call-template>
89       </xsl:if>
90       <fo:region-body display-align="center"
91                       margin-bottom="{$body.margin.bottom}"
92                       margin-top="{$body.margin.top}">
93         <xsl:attribute name="margin-{$direction.align.start}">
94           <xsl:value-of select="$body.margin.outer"/>
95         </xsl:attribute>
96         <xsl:attribute name="margin-{$direction.align.end}">
97           <xsl:value-of select="$body.margin.inner"/>
98         </xsl:attribute>
99         <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0">
100           <xsl:attribute name="region-name">blank-body</xsl:attribute>
101         </xsl:if>
102       </fo:region-body>
103       <fo:region-before region-name="xsl-region-before-blank"
104                         extent="{$region.before.extent}"
105                         precedence="{$region.before.precedence}"
106                         display-align="before"/>
107       <fo:region-after region-name="xsl-region-after-blank"
108                        extent="{$region.after.extent}"
109                        precedence="{$region.after.precedence}"
110                        display-align="after"/>
111       <xsl:call-template name="region.outer">
112         <xsl:with-param name="sequence">blank</xsl:with-param>
113         <xsl:with-param name="pageclass">blank</xsl:with-param>
114       </xsl:call-template>
115       <xsl:call-template name="region.inner">
116         <xsl:with-param name="sequence">blank</xsl:with-param>
117         <xsl:with-param name="pageclass">blank</xsl:with-param>
118       </xsl:call-template>
119     </fo:simple-page-master>
120
121     <!-- title pages -->
122     <fo:simple-page-master master-name="titlepage-first"
123                            page-width="{$page.width}"
124                            page-height="{$page.height}"
125                            margin-top="{$page.margin.top}"
126                            margin-bottom="{$page.margin.bottom}">
127       <xsl:attribute name="margin-{$direction.align.start}">
128         <xsl:value-of select="$page.margin.inner"/>
129         <xsl:if test="$fop.extensions != 0">
130           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
131         </xsl:if>
132       </xsl:attribute>
133       <xsl:attribute name="margin-{$direction.align.end}">
134         <xsl:value-of select="$page.margin.outer"/>
135       </xsl:attribute>
136       <xsl:if test="$axf.extensions != 0">
137         <xsl:call-template name="axf-page-master-properties">
138           <xsl:with-param name="page.master">titlepage-first</xsl:with-param>
139         </xsl:call-template>
140       </xsl:if>
141       <fo:region-body margin-bottom="{$body.margin.bottom}"
142                       margin-top="{$body.margin.top}"
143                       column-gap="{$column.gap.titlepage}"
144                       column-count="{$column.count.titlepage}">
145         <xsl:attribute name="margin-{$direction.align.start}">
146           <xsl:value-of select="$body.margin.inner"/>
147         </xsl:attribute>
148         <xsl:attribute name="margin-{$direction.align.end}">
149           <xsl:value-of select="$body.margin.outer"/>
150         </xsl:attribute>
151       </fo:region-body>
152       <fo:region-before region-name="xsl-region-before-first"
153                         extent="{$region.before.extent}"
154                         precedence="{$region.before.precedence}"
155                         display-align="before"/>
156       <fo:region-after region-name="xsl-region-after-first"
157                        extent="{$region.after.extent}"
158                         precedence="{$region.after.precedence}"
159                         display-align="after"/>
160       <xsl:call-template name="region.inner">
161         <xsl:with-param name="sequence">first</xsl:with-param>
162         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
163       </xsl:call-template>
164       <xsl:call-template name="region.outer">
165         <xsl:with-param name="sequence">first</xsl:with-param>
166         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
167       </xsl:call-template>
168     </fo:simple-page-master>
169
170     <fo:simple-page-master master-name="titlepage-odd"
171                            page-width="{$page.width}"
172                            page-height="{$page.height}"
173                            margin-top="{$page.margin.top}"
174                            margin-bottom="{$page.margin.bottom}">
175       <xsl:attribute name="margin-{$direction.align.start}">
176         <xsl:value-of select="$page.margin.inner"/>
177         <xsl:if test="$fop.extensions != 0">
178           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
179         </xsl:if>
180       </xsl:attribute>
181       <xsl:attribute name="margin-{$direction.align.end}">
182         <xsl:value-of select="$page.margin.outer"/>
183       </xsl:attribute>
184       <xsl:if test="$axf.extensions != 0">
185         <xsl:call-template name="axf-page-master-properties">
186           <xsl:with-param name="page.master">titlepage-odd</xsl:with-param>
187         </xsl:call-template>
188       </xsl:if>
189       <fo:region-body margin-bottom="{$body.margin.bottom}"
190                       margin-top="{$body.margin.top}"
191                       column-gap="{$column.gap.titlepage}"
192                       column-count="{$column.count.titlepage}">
193         <xsl:attribute name="margin-{$direction.align.start}">
194           <xsl:value-of select="$body.margin.inner"/>
195         </xsl:attribute>
196         <xsl:attribute name="margin-{$direction.align.end}">
197           <xsl:value-of select="$body.margin.outer"/>
198         </xsl:attribute>
199       </fo:region-body>
200       <fo:region-before region-name="xsl-region-before-odd"
201                         extent="{$region.before.extent}"
202                         precedence="{$region.before.precedence}"
203                         display-align="before"/>
204       <fo:region-after region-name="xsl-region-after-odd"
205                        extent="{$region.after.extent}"
206                         precedence="{$region.after.precedence}"
207                         display-align="after"/>
208       <xsl:call-template name="region.inner">
209         <xsl:with-param name="sequence">odd</xsl:with-param>
210         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
211       </xsl:call-template>
212       <xsl:call-template name="region.outer">
213         <xsl:with-param name="sequence">odd</xsl:with-param>
214         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
215       </xsl:call-template>
216     </fo:simple-page-master>
217
218     <fo:simple-page-master master-name="titlepage-even"
219                            page-width="{$page.width}"
220                            page-height="{$page.height}"
221                            margin-top="{$page.margin.top}"
222                            margin-bottom="{$page.margin.bottom}">
223       <xsl:attribute name="margin-{$direction.align.start}">
224         <xsl:value-of select="$page.margin.outer"/>
225         <xsl:if test="$fop.extensions != 0">
226           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
227         </xsl:if>
228       </xsl:attribute>
229       <xsl:attribute name="margin-{$direction.align.end}">
230         <xsl:value-of select="$page.margin.inner"/>
231       </xsl:attribute>
232       <xsl:if test="$axf.extensions != 0">
233         <xsl:call-template name="axf-page-master-properties">
234           <xsl:with-param name="page.master">titlepage-even</xsl:with-param>
235         </xsl:call-template>
236       </xsl:if>
237       <fo:region-body margin-bottom="{$body.margin.bottom}"
238                       margin-top="{$body.margin.top}"
239                       column-gap="{$column.gap.titlepage}"
240                       column-count="{$column.count.titlepage}">
241         <xsl:attribute name="margin-{$direction.align.start}">
242           <xsl:value-of select="$body.margin.outer"/>
243         </xsl:attribute>
244         <xsl:attribute name="margin-{$direction.align.end}">
245           <xsl:value-of select="$body.margin.inner"/>
246         </xsl:attribute>
247       </fo:region-body>
248       <fo:region-before region-name="xsl-region-before-even"
249                         extent="{$region.before.extent}"
250                         precedence="{$region.before.precedence}"
251                         display-align="before"/>
252       <fo:region-after region-name="xsl-region-after-even"
253                        extent="{$region.after.extent}"
254                         precedence="{$region.after.precedence}"
255                         display-align="after"/>
256       <xsl:call-template name="region.outer">
257         <xsl:with-param name="sequence">even</xsl:with-param>
258         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
259       </xsl:call-template>
260       <xsl:call-template name="region.inner">
261         <xsl:with-param name="sequence">even</xsl:with-param>
262         <xsl:with-param name="pageclass">titlepage</xsl:with-param>
263       </xsl:call-template>
264     </fo:simple-page-master>
265
266     <!-- list-of-title pages -->
267     <fo:simple-page-master master-name="lot-first"
268                            page-width="{$page.width}"
269                            page-height="{$page.height}"
270                            margin-top="{$page.margin.top}"
271                            margin-bottom="{$page.margin.bottom}">
272       <xsl:attribute name="margin-{$direction.align.start}">
273         <xsl:value-of select="$page.margin.inner"/>
274         <xsl:if test="$fop.extensions != 0">
275           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
276         </xsl:if>
277       </xsl:attribute>
278       <xsl:attribute name="margin-{$direction.align.end}">
279         <xsl:value-of select="$page.margin.outer"/>
280       </xsl:attribute>
281       <xsl:if test="$axf.extensions != 0">
282         <xsl:call-template name="axf-page-master-properties">
283           <xsl:with-param name="page.master">lot-first</xsl:with-param>
284         </xsl:call-template>
285       </xsl:if>
286       <fo:region-body margin-bottom="{$body.margin.bottom}"
287                       margin-top="{$body.margin.top}"
288                       column-gap="{$column.gap.lot}"
289                       column-count="{$column.count.lot}">
290         <xsl:attribute name="margin-{$direction.align.start}">
291           <xsl:value-of select="$body.margin.inner"/>
292         </xsl:attribute>
293         <xsl:attribute name="margin-{$direction.align.end}">
294           <xsl:value-of select="$body.margin.outer"/>
295         </xsl:attribute>
296       </fo:region-body>
297       <fo:region-before region-name="xsl-region-before-first"
298                         extent="{$region.before.extent}"
299                         precedence="{$region.before.precedence}"
300                         display-align="before"/>
301       <fo:region-after region-name="xsl-region-after-first"
302                        extent="{$region.after.extent}"
303                         precedence="{$region.after.precedence}"
304                        display-align="after"/>
305       <xsl:call-template name="region.inner">
306         <xsl:with-param name="sequence">first</xsl:with-param>
307         <xsl:with-param name="pageclass">lot</xsl:with-param>
308       </xsl:call-template>
309       <xsl:call-template name="region.outer">
310         <xsl:with-param name="sequence">first</xsl:with-param>
311         <xsl:with-param name="pageclass">lot</xsl:with-param>
312       </xsl:call-template>
313     </fo:simple-page-master>
314
315     <fo:simple-page-master master-name="lot-odd"
316                            page-width="{$page.width}"
317                            page-height="{$page.height}"
318                            margin-top="{$page.margin.top}"
319                            margin-bottom="{$page.margin.bottom}">
320       <xsl:attribute name="margin-{$direction.align.start}">
321         <xsl:value-of select="$page.margin.inner"/>
322         <xsl:if test="$fop.extensions != 0">
323           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
324         </xsl:if>
325       </xsl:attribute>
326       <xsl:attribute name="margin-{$direction.align.end}">
327         <xsl:value-of select="$page.margin.outer"/>
328       </xsl:attribute>
329       <xsl:if test="$axf.extensions != 0">
330         <xsl:call-template name="axf-page-master-properties">
331           <xsl:with-param name="page.master">lot-odd</xsl:with-param>
332         </xsl:call-template>
333       </xsl:if>
334       <fo:region-body margin-bottom="{$body.margin.bottom}"
335                       margin-top="{$body.margin.top}"
336                       column-gap="{$column.gap.lot}"
337                       column-count="{$column.count.lot}">
338         <xsl:attribute name="margin-{$direction.align.start}">
339           <xsl:value-of select="$body.margin.inner"/>
340         </xsl:attribute>
341         <xsl:attribute name="margin-{$direction.align.end}">
342           <xsl:value-of select="$body.margin.outer"/>
343         </xsl:attribute>
344       </fo:region-body>
345       <fo:region-before region-name="xsl-region-before-odd"
346                         extent="{$region.before.extent}"
347                         precedence="{$region.before.precedence}"
348                         display-align="before"/>
349       <fo:region-after region-name="xsl-region-after-odd"
350                        extent="{$region.after.extent}"
351                         precedence="{$region.after.precedence}"
352                         display-align="after"/>
353       <xsl:call-template name="region.inner">
354         <xsl:with-param name="sequence">odd</xsl:with-param>
355         <xsl:with-param name="pageclass">lot</xsl:with-param>
356       </xsl:call-template>
357       <xsl:call-template name="region.outer">
358         <xsl:with-param name="sequence">odd</xsl:with-param>
359         <xsl:with-param name="pageclass">lot</xsl:with-param>
360       </xsl:call-template>
361     </fo:simple-page-master>
362
363     <fo:simple-page-master master-name="lot-even"
364                            page-width="{$page.width}"
365                            page-height="{$page.height}"
366                            margin-top="{$page.margin.top}"
367                            margin-bottom="{$page.margin.bottom}">
368       <xsl:attribute name="margin-{$direction.align.start}">
369         <xsl:value-of select="$page.margin.outer"/>
370         <xsl:if test="$fop.extensions != 0">
371           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
372         </xsl:if>
373       </xsl:attribute>
374       <xsl:attribute name="margin-{$direction.align.end}">
375         <xsl:value-of select="$page.margin.inner"/>
376       </xsl:attribute>
377       <xsl:if test="$axf.extensions != 0">
378         <xsl:call-template name="axf-page-master-properties">
379           <xsl:with-param name="page.master">lot-even</xsl:with-param>
380         </xsl:call-template>
381       </xsl:if>
382       <fo:region-body margin-bottom="{$body.margin.bottom}"
383                       margin-top="{$body.margin.top}"
384                       column-gap="{$column.gap.lot}"
385                       column-count="{$column.count.lot}">
386         <xsl:attribute name="margin-{$direction.align.start}">
387           <xsl:value-of select="$body.margin.outer"/>
388         </xsl:attribute>
389         <xsl:attribute name="margin-{$direction.align.end}">
390           <xsl:value-of select="$body.margin.inner"/>
391         </xsl:attribute>
392       </fo:region-body>
393       <fo:region-before region-name="xsl-region-before-even"
394                         extent="{$region.before.extent}"
395                         precedence="{$region.before.precedence}"
396                         display-align="before"/>
397       <fo:region-after region-name="xsl-region-after-even"
398                        extent="{$region.after.extent}"
399                         precedence="{$region.after.precedence}"
400                         display-align="after"/>
401       <xsl:call-template name="region.outer">
402         <xsl:with-param name="sequence">even</xsl:with-param>
403         <xsl:with-param name="pageclass">lot</xsl:with-param>
404       </xsl:call-template>
405       <xsl:call-template name="region.inner">
406         <xsl:with-param name="sequence">even</xsl:with-param>
407         <xsl:with-param name="pageclass">lot</xsl:with-param>
408       </xsl:call-template>
409     </fo:simple-page-master>
410
411     <!-- frontmatter pages -->
412     <fo:simple-page-master master-name="front-first"
413                            page-width="{$page.width}"
414                            page-height="{$page.height}"
415                            margin-top="{$page.margin.top}"
416                            margin-bottom="{$page.margin.bottom}">
417       <xsl:attribute name="margin-{$direction.align.start}">
418         <xsl:value-of select="$page.margin.inner"/>
419         <xsl:if test="$fop.extensions != 0">
420           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
421         </xsl:if>
422       </xsl:attribute>
423       <xsl:attribute name="margin-{$direction.align.end}">
424         <xsl:value-of select="$page.margin.outer"/>
425       </xsl:attribute>
426       <xsl:if test="$axf.extensions != 0">
427         <xsl:call-template name="axf-page-master-properties">
428           <xsl:with-param name="page.master">front-first</xsl:with-param>
429         </xsl:call-template>
430       </xsl:if>
431       <fo:region-body margin-bottom="{$body.margin.bottom}"
432                       margin-top="{$body.margin.top}"
433                       column-gap="{$column.gap.front}"
434                       column-count="{$column.count.front}">
435         <xsl:attribute name="margin-{$direction.align.start}">
436           <xsl:value-of select="$body.margin.inner"/>
437         </xsl:attribute>
438         <xsl:attribute name="margin-{$direction.align.end}">
439           <xsl:value-of select="$body.margin.outer"/>
440         </xsl:attribute>
441       </fo:region-body>
442       <fo:region-before region-name="xsl-region-before-first"
443                         extent="{$region.before.extent}"
444                         precedence="{$region.before.precedence}"
445                         display-align="before"/>
446       <fo:region-after region-name="xsl-region-after-first"
447                        extent="{$region.after.extent}"
448                         precedence="{$region.after.precedence}"
449                         display-align="after"/>
450       <xsl:call-template name="region.inner">
451         <xsl:with-param name="sequence">first</xsl:with-param>
452         <xsl:with-param name="pageclass">front</xsl:with-param>
453       </xsl:call-template>
454       <xsl:call-template name="region.outer">
455         <xsl:with-param name="sequence">first</xsl:with-param>
456         <xsl:with-param name="pageclass">front</xsl:with-param>
457       </xsl:call-template>
458     </fo:simple-page-master>
459
460     <fo:simple-page-master master-name="front-odd"
461                            page-width="{$page.width}"
462                            page-height="{$page.height}"
463                            margin-top="{$page.margin.top}"
464                            margin-bottom="{$page.margin.bottom}">
465       <xsl:attribute name="margin-{$direction.align.start}">
466         <xsl:value-of select="$page.margin.inner"/>
467         <xsl:if test="$fop.extensions != 0">
468           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
469         </xsl:if>
470       </xsl:attribute>
471       <xsl:attribute name="margin-{$direction.align.end}">
472         <xsl:value-of select="$page.margin.outer"/>
473       </xsl:attribute>
474       <xsl:if test="$axf.extensions != 0">
475         <xsl:call-template name="axf-page-master-properties">
476           <xsl:with-param name="page.master">front-odd</xsl:with-param>
477         </xsl:call-template>
478       </xsl:if>
479       <fo:region-body margin-bottom="{$body.margin.bottom}"
480                       margin-top="{$body.margin.top}"
481                       column-gap="{$column.gap.front}"
482                       column-count="{$column.count.front}">
483         <xsl:attribute name="margin-{$direction.align.start}">
484           <xsl:value-of select="$body.margin.inner"/>
485         </xsl:attribute>
486         <xsl:attribute name="margin-{$direction.align.end}">
487           <xsl:value-of select="$body.margin.outer"/>
488         </xsl:attribute>
489       </fo:region-body>
490       <fo:region-before region-name="xsl-region-before-odd"
491                         extent="{$region.before.extent}"
492                         precedence="{$region.before.precedence}"
493                         display-align="before"/>
494       <fo:region-after region-name="xsl-region-after-odd"
495                        extent="{$region.after.extent}"
496                         precedence="{$region.after.precedence}"
497                         display-align="after"/>
498       <xsl:call-template name="region.inner">
499         <xsl:with-param name="sequence">odd</xsl:with-param>
500         <xsl:with-param name="pageclass">front</xsl:with-param>
501       </xsl:call-template>
502       <xsl:call-template name="region.outer">
503         <xsl:with-param name="sequence">odd</xsl:with-param>
504         <xsl:with-param name="pageclass">front</xsl:with-param>
505       </xsl:call-template>
506     </fo:simple-page-master>
507
508     <fo:simple-page-master master-name="front-even"
509                            page-width="{$page.width}"
510                            page-height="{$page.height}"
511                            margin-top="{$page.margin.top}"
512                            margin-bottom="{$page.margin.bottom}">
513       <xsl:attribute name="margin-{$direction.align.start}">
514         <xsl:value-of select="$page.margin.outer"/>
515         <xsl:if test="$fop.extensions != 0">
516           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
517         </xsl:if>
518       </xsl:attribute>
519       <xsl:attribute name="margin-{$direction.align.end}">
520         <xsl:value-of select="$page.margin.inner"/>
521       </xsl:attribute>
522       <xsl:if test="$axf.extensions != 0">
523         <xsl:call-template name="axf-page-master-properties">
524           <xsl:with-param name="page.master">front-even</xsl:with-param>
525         </xsl:call-template>
526       </xsl:if>
527       <fo:region-body margin-bottom="{$body.margin.bottom}"
528                       margin-top="{$body.margin.top}"
529                       column-gap="{$column.gap.front}"
530                       column-count="{$column.count.front}">
531         <xsl:attribute name="margin-{$direction.align.start}">
532           <xsl:value-of select="$body.margin.outer"/>
533         </xsl:attribute>
534         <xsl:attribute name="margin-{$direction.align.end}">
535           <xsl:value-of select="$body.margin.inner"/>
536         </xsl:attribute>
537       </fo:region-body>
538       <fo:region-before region-name="xsl-region-before-even"
539                         extent="{$region.before.extent}"
540                         precedence="{$region.before.precedence}"
541                         display-align="before"/>
542       <fo:region-after region-name="xsl-region-after-even"
543                        extent="{$region.after.extent}"
544                         precedence="{$region.after.precedence}"
545                         display-align="after"/>
546       <xsl:call-template name="region.outer">
547         <xsl:with-param name="sequence">even</xsl:with-param>
548         <xsl:with-param name="pageclass">front</xsl:with-param>
549       </xsl:call-template>
550       <xsl:call-template name="region.inner">
551         <xsl:with-param name="sequence">even</xsl:with-param>
552         <xsl:with-param name="pageclass">front</xsl:with-param>
553       </xsl:call-template>
554     </fo:simple-page-master>
555
556     <!-- body pages -->
557     <fo:simple-page-master master-name="body-first"
558                            page-width="{$page.width}"
559                            page-height="{$page.height}"
560                            margin-top="{$page.margin.top}"
561                            margin-bottom="{$page.margin.bottom}">
562       <xsl:attribute name="margin-{$direction.align.start}">
563         <xsl:value-of select="$page.margin.inner"/>
564         <xsl:if test="$fop.extensions != 0">
565           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
566         </xsl:if>
567         <xsl:if test="$fop.extensions != 0">
568           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
569         </xsl:if>
570       </xsl:attribute>
571       <xsl:attribute name="margin-{$direction.align.end}">
572         <xsl:value-of select="$page.margin.outer"/>
573       </xsl:attribute>
574       <xsl:if test="$axf.extensions != 0">
575         <xsl:call-template name="axf-page-master-properties">
576           <xsl:with-param name="page.master">body-first</xsl:with-param>
577         </xsl:call-template>
578       </xsl:if>
579       <fo:region-body margin-bottom="{$body.margin.bottom}"
580                       margin-top="{$body.margin.top}"
581                       column-gap="{$column.gap.body}"
582                       column-count="{$column.count.body}">
583         <xsl:attribute name="margin-{$direction.align.start}">
584           <xsl:value-of select="$body.margin.inner"/>
585         </xsl:attribute>
586         <xsl:attribute name="margin-{$direction.align.end}">
587           <xsl:value-of select="$body.margin.outer"/>
588         </xsl:attribute>
589       </fo:region-body>
590       <fo:region-before region-name="xsl-region-before-first"
591                         extent="{$region.before.extent}"
592                         precedence="{$region.before.precedence}"
593                         display-align="before"/>
594       <fo:region-after region-name="xsl-region-after-first"
595                        extent="{$region.after.extent}"
596                         precedence="{$region.after.precedence}"
597                        display-align="after"/>
598       <xsl:call-template name="region.inner">
599         <xsl:with-param name="sequence">first</xsl:with-param>
600         <xsl:with-param name="pageclass">body</xsl:with-param>
601       </xsl:call-template>
602       <xsl:call-template name="region.outer">
603         <xsl:with-param name="sequence">first</xsl:with-param>
604         <xsl:with-param name="pageclass">body</xsl:with-param>
605       </xsl:call-template>
606     </fo:simple-page-master>
607
608     <fo:simple-page-master master-name="body-odd"
609                            page-width="{$page.width}"
610                            page-height="{$page.height}"
611                            margin-top="{$page.margin.top}"
612                            margin-bottom="{$page.margin.bottom}">
613       <xsl:attribute name="margin-{$direction.align.start}">
614         <xsl:value-of select="$page.margin.inner"/>
615         <xsl:if test="$fop.extensions != 0">
616           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
617         </xsl:if>
618       </xsl:attribute>
619       <xsl:attribute name="margin-{$direction.align.end}">
620         <xsl:value-of select="$page.margin.outer"/>
621       </xsl:attribute>
622       <xsl:if test="$axf.extensions != 0">
623         <xsl:call-template name="axf-page-master-properties">
624           <xsl:with-param name="page.master">body-odd</xsl:with-param>
625         </xsl:call-template>
626       </xsl:if>
627       <fo:region-body margin-bottom="{$body.margin.bottom}"
628                       margin-top="{$body.margin.top}"
629                       column-gap="{$column.gap.body}"
630                       column-count="{$column.count.body}">
631         <xsl:attribute name="margin-{$direction.align.start}">
632           <xsl:value-of select="$body.margin.inner"/>
633         </xsl:attribute>
634         <xsl:attribute name="margin-{$direction.align.end}">
635           <xsl:value-of select="$body.margin.outer"/>
636         </xsl:attribute>
637       </fo:region-body>
638       <fo:region-before region-name="xsl-region-before-odd"
639                         extent="{$region.before.extent}"
640                         precedence="{$region.before.precedence}"
641                         display-align="before"/>
642       <fo:region-after region-name="xsl-region-after-odd"
643                        extent="{$region.after.extent}"
644                        precedence="{$region.after.precedence}"
645                        display-align="after"/>
646       <xsl:call-template name="region.inner">
647         <xsl:with-param name="pageclass">body</xsl:with-param>
648         <xsl:with-param name="sequence">odd</xsl:with-param>
649       </xsl:call-template>
650       <xsl:call-template name="region.outer">
651         <xsl:with-param name="pageclass">body</xsl:with-param>
652         <xsl:with-param name="sequence">odd</xsl:with-param>
653       </xsl:call-template>
654     </fo:simple-page-master>
655
656     <fo:simple-page-master master-name="body-even"
657                            page-width="{$page.width}"
658                            page-height="{$page.height}"
659                            margin-top="{$page.margin.top}"
660                            margin-bottom="{$page.margin.bottom}">
661       <xsl:attribute name="margin-{$direction.align.start}">
662         <xsl:value-of select="$page.margin.outer"/>
663         <xsl:if test="$fop.extensions != 0">
664           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
665         </xsl:if>
666       </xsl:attribute>
667       <xsl:attribute name="margin-{$direction.align.end}">
668         <xsl:value-of select="$page.margin.inner"/>
669       </xsl:attribute>
670       <xsl:if test="$axf.extensions != 0">
671         <xsl:call-template name="axf-page-master-properties">
672           <xsl:with-param name="page.master">body-even</xsl:with-param>
673         </xsl:call-template>
674       </xsl:if>
675       <fo:region-body margin-bottom="{$body.margin.bottom}"
676                       margin-top="{$body.margin.top}"
677                       column-gap="{$column.gap.body}"
678                       column-count="{$column.count.body}">
679         <xsl:attribute name="margin-{$direction.align.start}">
680           <xsl:value-of select="$body.margin.outer"/>
681         </xsl:attribute>
682         <xsl:attribute name="margin-{$direction.align.end}">
683           <xsl:value-of select="$body.margin.inner"/>
684         </xsl:attribute>
685       </fo:region-body>
686       <fo:region-before region-name="xsl-region-before-even"
687                         extent="{$region.before.extent}"
688                         precedence="{$region.before.precedence}"
689                         display-align="before"/>
690       <fo:region-after region-name="xsl-region-after-even"
691                        extent="{$region.after.extent}"
692                        precedence="{$region.after.precedence}"
693                        display-align="after"/>
694       <xsl:call-template name="region.outer">
695         <xsl:with-param name="pageclass">body</xsl:with-param>
696         <xsl:with-param name="sequence">even</xsl:with-param>
697       </xsl:call-template>
698       <xsl:call-template name="region.inner">
699         <xsl:with-param name="pageclass">body</xsl:with-param>
700         <xsl:with-param name="sequence">even</xsl:with-param>
701       </xsl:call-template>
702     </fo:simple-page-master>
703
704     <!-- backmatter pages -->
705     <fo:simple-page-master master-name="back-first"
706                            page-width="{$page.width}"
707                            page-height="{$page.height}"
708                            margin-top="{$page.margin.top}"
709                            margin-bottom="{$page.margin.bottom}">
710       <xsl:attribute name="margin-{$direction.align.start}">
711         <xsl:value-of select="$page.margin.inner"/>
712         <xsl:if test="$fop.extensions != 0">
713           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
714         </xsl:if>
715       </xsl:attribute>
716       <xsl:attribute name="margin-{$direction.align.end}">
717         <xsl:value-of select="$page.margin.outer"/>
718       </xsl:attribute>
719       <xsl:if test="$axf.extensions != 0">
720         <xsl:call-template name="axf-page-master-properties">
721           <xsl:with-param name="page.master">back-first</xsl:with-param>
722         </xsl:call-template>
723       </xsl:if>
724       <fo:region-body margin-bottom="{$body.margin.bottom}"
725                       margin-top="{$body.margin.top}"
726                       column-gap="{$column.gap.back}"
727                       column-count="{$column.count.back}">
728         <xsl:attribute name="margin-{$direction.align.start}">
729           <xsl:value-of select="$body.margin.inner"/>
730         </xsl:attribute>
731         <xsl:attribute name="margin-{$direction.align.end}">
732           <xsl:value-of select="$body.margin.outer"/>
733         </xsl:attribute>
734       </fo:region-body>
735       <fo:region-before region-name="xsl-region-before-first"
736                         extent="{$region.before.extent}"
737                         precedence="{$region.before.precedence}"
738                         display-align="before"/>
739       <fo:region-after region-name="xsl-region-after-first"
740                        extent="{$region.after.extent}"
741                         precedence="{$region.after.precedence}"
742                        display-align="after"/>
743       <xsl:call-template name="region.inner">
744         <xsl:with-param name="sequence">first</xsl:with-param>
745         <xsl:with-param name="pageclass">back</xsl:with-param>
746       </xsl:call-template>
747       <xsl:call-template name="region.outer">
748         <xsl:with-param name="sequence">first</xsl:with-param>
749         <xsl:with-param name="pageclass">back</xsl:with-param>
750       </xsl:call-template>
751     </fo:simple-page-master>
752
753     <fo:simple-page-master master-name="back-odd"
754                            page-width="{$page.width}"
755                            page-height="{$page.height}"
756                            margin-top="{$page.margin.top}"
757                            margin-bottom="{$page.margin.bottom}">
758       <xsl:attribute name="margin-{$direction.align.start}">
759         <xsl:value-of select="$page.margin.inner"/>
760         <xsl:if test="$fop.extensions != 0">
761           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
762         </xsl:if>
763       </xsl:attribute>
764       <xsl:attribute name="margin-{$direction.align.end}">
765         <xsl:value-of select="$page.margin.outer"/>
766       </xsl:attribute>
767       <xsl:if test="$axf.extensions != 0">
768         <xsl:call-template name="axf-page-master-properties">
769           <xsl:with-param name="page.master">back-odd</xsl:with-param>
770         </xsl:call-template>
771       </xsl:if>
772       <fo:region-body margin-bottom="{$body.margin.bottom}"
773                       margin-top="{$body.margin.top}"
774                       column-gap="{$column.gap.back}"
775                       column-count="{$column.count.back}">
776         <xsl:attribute name="margin-{$direction.align.start}">
777           <xsl:value-of select="$body.margin.inner"/>
778         </xsl:attribute>
779         <xsl:attribute name="margin-{$direction.align.end}">
780           <xsl:value-of select="$body.margin.outer"/>
781         </xsl:attribute>
782       </fo:region-body>
783       <fo:region-before region-name="xsl-region-before-odd"
784                         extent="{$region.before.extent}"
785                         precedence="{$region.before.precedence}"
786                         display-align="before"/>
787       <fo:region-after region-name="xsl-region-after-odd"
788                        extent="{$region.after.extent}"
789                         precedence="{$region.after.precedence}"
790                        display-align="after"/>
791       <xsl:call-template name="region.inner">
792         <xsl:with-param name="sequence">odd</xsl:with-param>
793         <xsl:with-param name="pageclass">back</xsl:with-param>
794       </xsl:call-template>
795       <xsl:call-template name="region.outer">
796         <xsl:with-param name="sequence">odd</xsl:with-param>
797         <xsl:with-param name="pageclass">back</xsl:with-param>
798       </xsl:call-template>
799     </fo:simple-page-master>
800
801     <fo:simple-page-master master-name="back-even"
802                            page-width="{$page.width}"
803                            page-height="{$page.height}"
804                            margin-top="{$page.margin.top}"
805                            margin-bottom="{$page.margin.bottom}">
806       <xsl:attribute name="margin-{$direction.align.start}">
807         <xsl:value-of select="$page.margin.outer"/>
808         <xsl:if test="$fop.extensions != 0">
809           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
810         </xsl:if>
811       </xsl:attribute>
812       <xsl:attribute name="margin-{$direction.align.end}">
813         <xsl:value-of select="$page.margin.inner"/>
814       </xsl:attribute>
815       <xsl:if test="$axf.extensions != 0">
816         <xsl:call-template name="axf-page-master-properties">
817           <xsl:with-param name="page.master">back-even</xsl:with-param>
818         </xsl:call-template>
819       </xsl:if>
820       <fo:region-body margin-bottom="{$body.margin.bottom}"
821                       margin-top="{$body.margin.top}"
822                       column-gap="{$column.gap.back}"
823                       column-count="{$column.count.back}">
824         <xsl:attribute name="margin-{$direction.align.start}">
825           <xsl:value-of select="$body.margin.outer"/>
826         </xsl:attribute>
827         <xsl:attribute name="margin-{$direction.align.end}">
828           <xsl:value-of select="$body.margin.inner"/>
829         </xsl:attribute>
830       </fo:region-body>
831       <fo:region-before region-name="xsl-region-before-even"
832                         extent="{$region.before.extent}"
833                         precedence="{$region.before.precedence}"
834                         display-align="before"/>
835       <fo:region-after region-name="xsl-region-after-even"
836                        extent="{$region.after.extent}"
837                         precedence="{$region.after.precedence}"
838                        display-align="after"/>
839       <xsl:call-template name="region.outer">
840         <xsl:with-param name="sequence">even</xsl:with-param>
841         <xsl:with-param name="pageclass">back</xsl:with-param>
842       </xsl:call-template>
843       <xsl:call-template name="region.inner">
844         <xsl:with-param name="sequence">even</xsl:with-param>
845         <xsl:with-param name="pageclass">back</xsl:with-param>
846       </xsl:call-template>
847     </fo:simple-page-master>
848
849     <!-- index pages -->
850     <fo:simple-page-master master-name="index-first"
851                            page-width="{$page.width}"
852                            page-height="{$page.height}"
853                            margin-top="{$page.margin.top}"
854                            margin-bottom="{$page.margin.bottom}">
855       <xsl:attribute name="margin-{$direction.align.start}">
856         <xsl:value-of select="$page.margin.inner"/>
857         <xsl:if test="$fop.extensions != 0">
858           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
859         </xsl:if>
860       </xsl:attribute>
861       <xsl:attribute name="margin-{$direction.align.end}">
862         <xsl:value-of select="$page.margin.outer"/>
863       </xsl:attribute>
864       <xsl:if test="$axf.extensions != 0">
865         <xsl:call-template name="axf-page-master-properties">
866           <xsl:with-param name="page.master">index-first</xsl:with-param>
867         </xsl:call-template>
868       </xsl:if>
869       <fo:region-body margin-bottom="{$body.margin.bottom}"
870                       margin-top="{$body.margin.top}"
871                       column-gap="{$column.gap.index}"
872                       column-count="{$column.count.index}">
873         <xsl:attribute name="margin-{$direction.align.start}">
874           <xsl:value-of select="$body.margin.inner"/>
875         </xsl:attribute>
876         <xsl:attribute name="margin-{$direction.align.end}">
877           <xsl:value-of select="$body.margin.outer"/>
878         </xsl:attribute>
879       </fo:region-body>
880       <fo:region-before region-name="xsl-region-before-first"
881                         extent="{$region.before.extent}"
882                         precedence="{$region.before.precedence}"
883                         display-align="before"/>
884       <fo:region-after region-name="xsl-region-after-first"
885                        extent="{$region.after.extent}"
886                         precedence="{$region.after.precedence}"
887                        display-align="after"/>
888       <xsl:call-template name="region.inner">
889         <xsl:with-param name="sequence">first</xsl:with-param>
890         <xsl:with-param name="pageclass">index</xsl:with-param>
891       </xsl:call-template>
892       <xsl:call-template name="region.outer">
893         <xsl:with-param name="sequence">first</xsl:with-param>
894         <xsl:with-param name="pageclass">index</xsl:with-param>
895       </xsl:call-template>
896     </fo:simple-page-master>
897
898     <fo:simple-page-master master-name="index-odd"
899                            page-width="{$page.width}"
900                            page-height="{$page.height}"
901                            margin-top="{$page.margin.top}"
902                            margin-bottom="{$page.margin.bottom}">
903       <xsl:attribute name="margin-{$direction.align.start}">
904         <xsl:value-of select="$page.margin.inner"/>
905         <xsl:if test="$fop.extensions != 0">
906           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
907         </xsl:if>
908       </xsl:attribute>
909       <xsl:attribute name="margin-{$direction.align.end}">
910         <xsl:value-of select="$page.margin.outer"/>
911       </xsl:attribute>
912       <xsl:if test="$axf.extensions != 0">
913         <xsl:call-template name="axf-page-master-properties">
914           <xsl:with-param name="page.master">index-odd</xsl:with-param>
915         </xsl:call-template>
916       </xsl:if>
917       <fo:region-body margin-bottom="{$body.margin.bottom}"
918                       margin-top="{$body.margin.top}"
919                       column-gap="{$column.gap.index}"
920                       column-count="{$column.count.index}">
921         <xsl:attribute name="margin-{$direction.align.start}">
922           <xsl:value-of select="$body.margin.inner"/>
923         </xsl:attribute>
924         <xsl:attribute name="margin-{$direction.align.end}">
925           <xsl:value-of select="$body.margin.outer"/>
926         </xsl:attribute>
927       </fo:region-body>
928       <fo:region-before region-name="xsl-region-before-odd"
929                         extent="{$region.before.extent}"
930                         precedence="{$region.before.precedence}"
931                         display-align="before"/>
932       <fo:region-after region-name="xsl-region-after-odd"
933                        extent="{$region.after.extent}"
934                         precedence="{$region.after.precedence}"
935                        display-align="after"/>
936       <xsl:call-template name="region.inner">
937         <xsl:with-param name="sequence">odd</xsl:with-param>
938         <xsl:with-param name="pageclass">index</xsl:with-param>
939       </xsl:call-template>
940       <xsl:call-template name="region.outer">
941         <xsl:with-param name="sequence">odd</xsl:with-param>
942         <xsl:with-param name="pageclass">index</xsl:with-param>
943       </xsl:call-template>
944     </fo:simple-page-master>
945
946     <fo:simple-page-master master-name="index-even"
947                            page-width="{$page.width}"
948                            page-height="{$page.height}"
949                            margin-top="{$page.margin.top}"
950                            margin-bottom="{$page.margin.bottom}">
951       <xsl:attribute name="margin-{$direction.align.start}">
952         <xsl:value-of select="$page.margin.outer"/>
953         <xsl:if test="$fop.extensions != 0">
954           <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
955         </xsl:if>
956       </xsl:attribute>
957       <xsl:attribute name="margin-{$direction.align.end}">
958         <xsl:value-of select="$page.margin.inner"/>
959       </xsl:attribute>
960       <xsl:if test="$axf.extensions != 0">
961         <xsl:call-template name="axf-page-master-properties">
962           <xsl:with-param name="page.master">index-even</xsl:with-param>
963         </xsl:call-template>
964       </xsl:if>
965       <fo:region-body margin-bottom="{$body.margin.bottom}"
966                       margin-top="{$body.margin.top}"
967                       column-gap="{$column.gap.index}"
968                       column-count="{$column.count.index}">
969         <xsl:attribute name="margin-{$direction.align.start}">
970           <xsl:value-of select="$body.margin.outer"/>
971         </xsl:attribute>
972         <xsl:attribute name="margin-{$direction.align.end}">
973           <xsl:value-of select="$body.margin.inner"/>
974         </xsl:attribute>
975       </fo:region-body>
976       <fo:region-before region-name="xsl-region-before-even"
977                         extent="{$region.before.extent}"
978                         precedence="{$region.before.precedence}"
979                         display-align="before"/>
980       <fo:region-after region-name="xsl-region-after-even"
981                        extent="{$region.after.extent}"
982                         precedence="{$region.after.precedence}"
983                        display-align="after"/>
984       <xsl:call-template name="region.outer">
985         <xsl:with-param name="sequence">even</xsl:with-param>
986         <xsl:with-param name="pageclass">index</xsl:with-param>
987       </xsl:call-template>
988       <xsl:call-template name="region.inner">
989         <xsl:with-param name="sequence">even</xsl:with-param>
990         <xsl:with-param name="pageclass">index</xsl:with-param>
991       </xsl:call-template>
992     </fo:simple-page-master>
993
994     <xsl:if test="$draft.mode != 'no'">
995       <!-- draft blank pages -->
996       <fo:simple-page-master master-name="blank-draft"
997                              page-width="{$page.width}"
998                              page-height="{$page.height}"
999                              margin-top="{$page.margin.top}"
1000                              margin-bottom="{$page.margin.bottom}">
1001         <xsl:attribute name="margin-{$direction.align.start}">
1002           <xsl:value-of select="$page.margin.outer"/>
1003           <xsl:if test="$fop.extensions != 0">
1004             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1005           </xsl:if>
1006         </xsl:attribute>
1007         <xsl:attribute name="margin-{$direction.align.end}">
1008           <xsl:value-of select="$page.margin.inner"/>
1009         </xsl:attribute>
1010         <xsl:if test="$axf.extensions != 0">
1011           <xsl:call-template name="axf-page-master-properties">
1012             <xsl:with-param name="page.master">blank-draft</xsl:with-param>
1013           </xsl:call-template>
1014         </xsl:if>
1015         <fo:region-body margin-bottom="{$body.margin.bottom}"
1016                         margin-top="{$body.margin.top}">
1017           <xsl:attribute name="margin-{$direction.align.start}">
1018             <xsl:value-of select="$body.margin.outer"/>
1019           </xsl:attribute>
1020           <xsl:attribute name="margin-{$direction.align.end}">
1021             <xsl:value-of select="$body.margin.inner"/>
1022           </xsl:attribute>
1023           <xsl:if test="$draft.watermark.image != ''">
1024             <xsl:attribute name="background-image">
1025               <xsl:call-template name="fo-external-image">
1026                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1027               </xsl:call-template>
1028             </xsl:attribute>
1029             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1030             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1031             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1032             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1033           </xsl:if>
1034         </fo:region-body>
1035         <fo:region-before region-name="xsl-region-before-blank"
1036                           extent="{$region.before.extent}"
1037                           precedence="{$region.before.precedence}"
1038                           display-align="before"/>
1039         <fo:region-after region-name="xsl-region-after-blank"
1040                          extent="{$region.after.extent}"
1041                           precedence="{$region.after.precedence}"
1042                          display-align="after"/>
1043         <xsl:call-template name="region.outer">
1044           <xsl:with-param name="sequence">blank</xsl:with-param>
1045           <xsl:with-param name="pageclass">blank</xsl:with-param>
1046         </xsl:call-template>
1047         <xsl:call-template name="region.inner">
1048           <xsl:with-param name="sequence">blank</xsl:with-param>
1049           <xsl:with-param name="pageclass">blank</xsl:with-param>
1050         </xsl:call-template>
1051       </fo:simple-page-master>
1052
1053       <!-- draft title pages -->
1054       <fo:simple-page-master master-name="titlepage-first-draft"
1055                              page-width="{$page.width}"
1056                              page-height="{$page.height}"
1057                              margin-top="{$page.margin.top}"
1058                              margin-bottom="{$page.margin.bottom}">
1059         <xsl:attribute name="margin-{$direction.align.start}">
1060           <xsl:value-of select="$page.margin.inner"/>
1061           <xsl:if test="$fop.extensions != 0">
1062             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1063           </xsl:if>
1064         </xsl:attribute>
1065         <xsl:attribute name="margin-{$direction.align.end}">
1066           <xsl:value-of select="$page.margin.outer"/>
1067         </xsl:attribute>
1068         <xsl:if test="$axf.extensions != 0">
1069           <xsl:call-template name="axf-page-master-properties">
1070             <xsl:with-param name="page.master">titlepage-first-draft</xsl:with-param>
1071           </xsl:call-template>
1072         </xsl:if>
1073         <fo:region-body margin-bottom="{$body.margin.bottom}"
1074                         margin-top="{$body.margin.top}"
1075                         column-gap="{$column.gap.titlepage}"
1076                         column-count="{$column.count.titlepage}">
1077           <xsl:attribute name="margin-{$direction.align.start}">
1078             <xsl:value-of select="$body.margin.inner"/>
1079           </xsl:attribute>
1080           <xsl:attribute name="margin-{$direction.align.end}">
1081             <xsl:value-of select="$body.margin.outer"/>
1082           </xsl:attribute>
1083           <xsl:if test="$draft.watermark.image != ''">
1084             <xsl:attribute name="background-image">
1085               <xsl:call-template name="fo-external-image">
1086                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1087               </xsl:call-template>
1088             </xsl:attribute>
1089             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1090             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1091             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1092             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1093           </xsl:if>
1094         </fo:region-body>
1095         <fo:region-before region-name="xsl-region-before-first"
1096                           extent="{$region.before.extent}"
1097                           precedence="{$region.before.precedence}"
1098                           display-align="before"/>
1099         <fo:region-after region-name="xsl-region-after-first"
1100                          extent="{$region.after.extent}"
1101                           precedence="{$region.after.precedence}"
1102                          display-align="after"/>
1103         <xsl:call-template name="region.inner">
1104           <xsl:with-param name="sequence">first</xsl:with-param>
1105           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1106         </xsl:call-template>
1107         <xsl:call-template name="region.outer">
1108           <xsl:with-param name="sequence">first</xsl:with-param>
1109           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1110         </xsl:call-template>
1111       </fo:simple-page-master>
1112
1113       <fo:simple-page-master master-name="titlepage-odd-draft"
1114                              page-width="{$page.width}"
1115                              page-height="{$page.height}"
1116                              margin-top="{$page.margin.top}"
1117                              margin-bottom="{$page.margin.bottom}">
1118         <xsl:attribute name="margin-{$direction.align.start}">
1119           <xsl:value-of select="$page.margin.inner"/>
1120           <xsl:if test="$fop.extensions != 0">
1121             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1122           </xsl:if>
1123         </xsl:attribute>
1124         <xsl:attribute name="margin-{$direction.align.end}">
1125           <xsl:value-of select="$page.margin.outer"/>
1126         </xsl:attribute>
1127         <xsl:if test="$axf.extensions != 0">
1128           <xsl:call-template name="axf-page-master-properties">
1129             <xsl:with-param name="page.master">titlepage-odd-draft</xsl:with-param>
1130           </xsl:call-template>
1131         </xsl:if>
1132         <fo:region-body margin-bottom="{$body.margin.bottom}"
1133                         margin-top="{$body.margin.top}"
1134                         column-gap="{$column.gap.titlepage}"
1135                         column-count="{$column.count.titlepage}">
1136           <xsl:attribute name="margin-{$direction.align.start}">
1137             <xsl:value-of select="$body.margin.inner"/>
1138           </xsl:attribute>
1139           <xsl:attribute name="margin-{$direction.align.end}">
1140             <xsl:value-of select="$body.margin.outer"/>
1141           </xsl:attribute>
1142           <xsl:if test="$draft.watermark.image != ''">
1143             <xsl:attribute name="background-image">
1144               <xsl:call-template name="fo-external-image">
1145                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1146               </xsl:call-template>
1147             </xsl:attribute>
1148             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1149             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1150             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1151             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1152           </xsl:if>
1153         </fo:region-body>
1154         <fo:region-before region-name="xsl-region-before-odd"
1155                           extent="{$region.before.extent}"
1156                           precedence="{$region.before.precedence}"
1157                           display-align="before"/>
1158         <fo:region-after region-name="xsl-region-after-odd"
1159                          extent="{$region.after.extent}"
1160                           precedence="{$region.after.precedence}"
1161                          display-align="after"/>
1162         <xsl:call-template name="region.inner">
1163           <xsl:with-param name="sequence">odd</xsl:with-param>
1164           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1165         </xsl:call-template>
1166         <xsl:call-template name="region.outer">
1167           <xsl:with-param name="sequence">odd</xsl:with-param>
1168           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1169         </xsl:call-template>
1170       </fo:simple-page-master>
1171
1172       <fo:simple-page-master master-name="titlepage-even-draft"
1173                              page-width="{$page.width}"
1174                              page-height="{$page.height}"
1175                              margin-top="{$page.margin.top}"
1176                              margin-bottom="{$page.margin.bottom}">
1177         <xsl:attribute name="margin-{$direction.align.start}">
1178           <xsl:value-of select="$page.margin.outer"/>
1179           <xsl:if test="$fop.extensions != 0">
1180             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1181           </xsl:if>
1182         </xsl:attribute>
1183         <xsl:attribute name="margin-{$direction.align.end}">
1184           <xsl:value-of select="$page.margin.inner"/>
1185         </xsl:attribute>
1186         <xsl:if test="$axf.extensions != 0">
1187           <xsl:call-template name="axf-page-master-properties">
1188             <xsl:with-param name="page.master">titlepage-even-draft</xsl:with-param>
1189           </xsl:call-template>
1190         </xsl:if>
1191         <fo:region-body margin-bottom="{$body.margin.bottom}"
1192                         margin-top="{$body.margin.top}"
1193                         column-gap="{$column.gap.titlepage}"
1194                         column-count="{$column.count.titlepage}">
1195           <xsl:attribute name="margin-{$direction.align.start}">
1196             <xsl:value-of select="$body.margin.outer"/>
1197           </xsl:attribute>
1198           <xsl:attribute name="margin-{$direction.align.end}">
1199             <xsl:value-of select="$body.margin.inner"/>
1200           </xsl:attribute>
1201           <xsl:if test="$draft.watermark.image != ''">
1202             <xsl:attribute name="background-image">
1203               <xsl:call-template name="fo-external-image">
1204                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1205               </xsl:call-template>
1206             </xsl:attribute>
1207             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1208             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1209             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1210             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1211           </xsl:if>
1212         </fo:region-body>
1213         <fo:region-before region-name="xsl-region-before-even"
1214                           extent="{$region.before.extent}"
1215                           precedence="{$region.before.precedence}"
1216                           display-align="before"/>
1217         <fo:region-after region-name="xsl-region-after-even"
1218                          extent="{$region.after.extent}"
1219                           precedence="{$region.after.precedence}"
1220                          display-align="after"/>
1221         <xsl:call-template name="region.outer">
1222           <xsl:with-param name="sequence">even</xsl:with-param>
1223           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1224         </xsl:call-template>
1225         <xsl:call-template name="region.inner">
1226           <xsl:with-param name="sequence">even</xsl:with-param>
1227           <xsl:with-param name="pageclass">titlepage</xsl:with-param>
1228         </xsl:call-template>
1229       </fo:simple-page-master>
1230
1231       <!-- draft list-of-title pages -->
1232       <fo:simple-page-master master-name="lot-first-draft"
1233                              page-width="{$page.width}"
1234                              page-height="{$page.height}"
1235                              margin-top="{$page.margin.top}"
1236                              margin-bottom="{$page.margin.bottom}">
1237         <xsl:attribute name="margin-{$direction.align.start}">
1238           <xsl:value-of select="$page.margin.inner"/>
1239           <xsl:if test="$fop.extensions != 0">
1240             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1241           </xsl:if>
1242         </xsl:attribute>
1243         <xsl:attribute name="margin-{$direction.align.end}">
1244           <xsl:value-of select="$page.margin.outer"/>
1245         </xsl:attribute>
1246         <xsl:if test="$axf.extensions != 0">
1247           <xsl:call-template name="axf-page-master-properties">
1248             <xsl:with-param name="page.master">lot-first-draft</xsl:with-param>
1249           </xsl:call-template>
1250         </xsl:if>
1251         <fo:region-body margin-bottom="{$body.margin.bottom}"
1252                         margin-top="{$body.margin.top}"
1253                         column-gap="{$column.gap.lot}"
1254                         column-count="{$column.count.lot}">
1255           <xsl:attribute name="margin-{$direction.align.start}">
1256             <xsl:value-of select="$body.margin.inner"/>
1257           </xsl:attribute>
1258           <xsl:attribute name="margin-{$direction.align.end}">
1259             <xsl:value-of select="$body.margin.outer"/>
1260           </xsl:attribute>
1261           <xsl:if test="$draft.watermark.image != ''">
1262             <xsl:attribute name="background-image">
1263               <xsl:call-template name="fo-external-image">
1264                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1265               </xsl:call-template>
1266             </xsl:attribute>
1267             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1268             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1269             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1270             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1271           </xsl:if>
1272         </fo:region-body>
1273         <fo:region-before region-name="xsl-region-before-first"
1274                           extent="{$region.before.extent}"
1275                           precedence="{$region.before.precedence}"
1276                           display-align="before"/>
1277         <fo:region-after region-name="xsl-region-after-first"
1278                          extent="{$region.after.extent}"
1279                           precedence="{$region.after.precedence}"
1280                          display-align="after"/>
1281         <xsl:call-template name="region.inner">
1282           <xsl:with-param name="sequence">first</xsl:with-param>
1283           <xsl:with-param name="pageclass">lot</xsl:with-param>
1284         </xsl:call-template>
1285         <xsl:call-template name="region.outer">
1286           <xsl:with-param name="sequence">first</xsl:with-param>
1287           <xsl:with-param name="pageclass">lot</xsl:with-param>
1288         </xsl:call-template>
1289       </fo:simple-page-master>
1290
1291       <fo:simple-page-master master-name="lot-odd-draft"
1292                              page-width="{$page.width}"
1293                              page-height="{$page.height}"
1294                              margin-top="{$page.margin.top}"
1295                              margin-bottom="{$page.margin.bottom}">
1296         <xsl:attribute name="margin-{$direction.align.start}">
1297           <xsl:value-of select="$page.margin.inner"/>
1298           <xsl:if test="$fop.extensions != 0">
1299             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1300           </xsl:if>
1301         </xsl:attribute>
1302         <xsl:attribute name="margin-{$direction.align.end}">
1303           <xsl:value-of select="$page.margin.outer"/>
1304         </xsl:attribute>
1305         <xsl:if test="$axf.extensions != 0">
1306           <xsl:call-template name="axf-page-master-properties">
1307             <xsl:with-param name="page.master">lot-odd-draft</xsl:with-param>
1308           </xsl:call-template>
1309         </xsl:if>
1310         <fo:region-body margin-bottom="{$body.margin.bottom}"
1311                         margin-top="{$body.margin.top}"
1312                         column-gap="{$column.gap.lot}"
1313                         column-count="{$column.count.lot}">
1314           <xsl:attribute name="margin-{$direction.align.start}">
1315             <xsl:value-of select="$body.margin.inner"/>
1316           </xsl:attribute>
1317           <xsl:attribute name="margin-{$direction.align.end}">
1318             <xsl:value-of select="$body.margin.outer"/>
1319           </xsl:attribute>
1320           <xsl:if test="$draft.watermark.image != ''">
1321             <xsl:attribute name="background-image">
1322               <xsl:call-template name="fo-external-image">
1323                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1324               </xsl:call-template>
1325             </xsl:attribute>
1326             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1327             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1328             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1329             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1330           </xsl:if>
1331         </fo:region-body>
1332         <fo:region-before region-name="xsl-region-before-odd"
1333                           extent="{$region.before.extent}"
1334                           precedence="{$region.before.precedence}"
1335                           display-align="before"/>
1336         <fo:region-after region-name="xsl-region-after-odd"
1337                          extent="{$region.after.extent}"
1338                           precedence="{$region.after.precedence}"
1339                          display-align="after"/>
1340         <xsl:call-template name="region.inner">
1341           <xsl:with-param name="sequence">odd</xsl:with-param>
1342           <xsl:with-param name="pageclass">lot</xsl:with-param>
1343         </xsl:call-template>
1344         <xsl:call-template name="region.outer">
1345           <xsl:with-param name="sequence">odd</xsl:with-param>
1346           <xsl:with-param name="pageclass">lot</xsl:with-param>
1347         </xsl:call-template>
1348       </fo:simple-page-master>
1349
1350       <fo:simple-page-master master-name="lot-even-draft"
1351                              page-width="{$page.width}"
1352                              page-height="{$page.height}"
1353                              margin-top="{$page.margin.top}"
1354                              margin-bottom="{$page.margin.bottom}">
1355         <xsl:attribute name="margin-{$direction.align.start}">
1356           <xsl:value-of select="$page.margin.outer"/>
1357           <xsl:if test="$fop.extensions != 0">
1358             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1359           </xsl:if>
1360         </xsl:attribute>
1361         <xsl:attribute name="margin-{$direction.align.end}">
1362           <xsl:value-of select="$page.margin.inner"/>
1363         </xsl:attribute>
1364         <xsl:if test="$axf.extensions != 0">
1365           <xsl:call-template name="axf-page-master-properties">
1366             <xsl:with-param name="page.master">lot-even-draft</xsl:with-param>
1367           </xsl:call-template>
1368         </xsl:if>
1369         <fo:region-body margin-bottom="{$body.margin.bottom}"
1370                         margin-top="{$body.margin.top}"
1371                         column-gap="{$column.gap.lot}"
1372                         column-count="{$column.count.lot}">
1373           <xsl:attribute name="margin-{$direction.align.start}">
1374             <xsl:value-of select="$body.margin.outer"/>
1375           </xsl:attribute>
1376           <xsl:attribute name="margin-{$direction.align.end}">
1377             <xsl:value-of select="$body.margin.inner"/>
1378           </xsl:attribute>
1379           <xsl:if test="$draft.watermark.image != ''">
1380             <xsl:attribute name="background-image">
1381               <xsl:call-template name="fo-external-image">
1382                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1383               </xsl:call-template>
1384             </xsl:attribute>
1385             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1386             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1387             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1388             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1389           </xsl:if>
1390         </fo:region-body>
1391         <fo:region-before region-name="xsl-region-before-even"
1392                           extent="{$region.before.extent}"
1393                           precedence="{$region.before.precedence}"
1394                           display-align="before"/>
1395         <fo:region-after region-name="xsl-region-after-even"
1396                          extent="{$region.after.extent}"
1397                           precedence="{$region.after.precedence}"
1398                          display-align="after"/>
1399         <xsl:call-template name="region.outer">
1400           <xsl:with-param name="sequence">even</xsl:with-param>
1401           <xsl:with-param name="pageclass">lot</xsl:with-param>
1402         </xsl:call-template>
1403         <xsl:call-template name="region.inner">
1404           <xsl:with-param name="sequence">even</xsl:with-param>
1405           <xsl:with-param name="pageclass">lot</xsl:with-param>
1406         </xsl:call-template>
1407       </fo:simple-page-master>
1408
1409       <!-- draft frontmatter pages -->
1410       <fo:simple-page-master master-name="front-first-draft"
1411                              page-width="{$page.width}"
1412                              page-height="{$page.height}"
1413                              margin-top="{$page.margin.top}"
1414                              margin-bottom="{$page.margin.bottom}">
1415         <xsl:attribute name="margin-{$direction.align.start}">
1416           <xsl:value-of select="$page.margin.inner"/>
1417           <xsl:if test="$fop.extensions != 0">
1418             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1419           </xsl:if>
1420         </xsl:attribute>
1421         <xsl:attribute name="margin-{$direction.align.end}">
1422           <xsl:value-of select="$page.margin.outer"/>
1423         </xsl:attribute>
1424         <xsl:if test="$axf.extensions != 0">
1425           <xsl:call-template name="axf-page-master-properties">
1426             <xsl:with-param name="page.master">front-first-draft</xsl:with-param>
1427           </xsl:call-template>
1428         </xsl:if>
1429         <fo:region-body margin-bottom="{$body.margin.bottom}"
1430                         margin-top="{$body.margin.top}"
1431                         column-gap="{$column.gap.front}"
1432                         column-count="{$column.count.front}">
1433           <xsl:attribute name="margin-{$direction.align.start}">
1434             <xsl:value-of select="$body.margin.inner"/>
1435           </xsl:attribute>
1436           <xsl:attribute name="margin-{$direction.align.end}">
1437             <xsl:value-of select="$body.margin.outer"/>
1438           </xsl:attribute>
1439           <xsl:if test="$draft.watermark.image != ''">
1440             <xsl:attribute name="background-image">
1441               <xsl:call-template name="fo-external-image">
1442                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1443               </xsl:call-template>
1444             </xsl:attribute>
1445             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1446             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1447             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1448             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1449           </xsl:if>
1450         </fo:region-body>
1451         <fo:region-before region-name="xsl-region-before-first"
1452                           extent="{$region.before.extent}"
1453                           precedence="{$region.before.precedence}"
1454                           display-align="before"/>
1455         <fo:region-after region-name="xsl-region-after-first"
1456                          extent="{$region.after.extent}"
1457                           precedence="{$region.after.precedence}"
1458                          display-align="after"/>
1459         <xsl:call-template name="region.inner">
1460           <xsl:with-param name="sequence">first</xsl:with-param>
1461           <xsl:with-param name="pageclass">front</xsl:with-param>
1462         </xsl:call-template>
1463         <xsl:call-template name="region.outer">
1464           <xsl:with-param name="sequence">first</xsl:with-param>
1465           <xsl:with-param name="pageclass">front</xsl:with-param>
1466         </xsl:call-template>
1467       </fo:simple-page-master>
1468
1469       <fo:simple-page-master master-name="front-odd-draft"
1470                              page-width="{$page.width}"
1471                              page-height="{$page.height}"
1472                              margin-top="{$page.margin.top}"
1473                              margin-bottom="{$page.margin.bottom}">
1474         <xsl:attribute name="margin-{$direction.align.start}">
1475           <xsl:value-of select="$page.margin.inner"/>
1476           <xsl:if test="$fop.extensions != 0">
1477             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1478           </xsl:if>
1479         </xsl:attribute>
1480         <xsl:attribute name="margin-{$direction.align.end}">
1481           <xsl:value-of select="$page.margin.outer"/>
1482         </xsl:attribute>
1483         <xsl:if test="$axf.extensions != 0">
1484           <xsl:call-template name="axf-page-master-properties">
1485             <xsl:with-param name="page.master">front-odd-draft</xsl:with-param>
1486           </xsl:call-template>
1487         </xsl:if>
1488         <fo:region-body margin-bottom="{$body.margin.bottom}"
1489                         margin-top="{$body.margin.top}"
1490                         column-gap="{$column.gap.front}"
1491                         column-count="{$column.count.front}">
1492           <xsl:attribute name="margin-{$direction.align.start}">
1493             <xsl:value-of select="$body.margin.inner"/>
1494           </xsl:attribute>
1495           <xsl:attribute name="margin-{$direction.align.end}">
1496             <xsl:value-of select="$body.margin.outer"/>
1497           </xsl:attribute>
1498           <xsl:if test="$draft.watermark.image != ''">
1499             <xsl:attribute name="background-image">
1500               <xsl:call-template name="fo-external-image">
1501                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1502               </xsl:call-template>
1503             </xsl:attribute>
1504             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1505             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1506             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1507             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1508           </xsl:if>
1509         </fo:region-body>
1510         <fo:region-before region-name="xsl-region-before-odd"
1511                           extent="{$region.before.extent}"
1512                           precedence="{$region.before.precedence}"
1513                           display-align="before"/>
1514         <fo:region-after region-name="xsl-region-after-odd"
1515                          extent="{$region.after.extent}"
1516                           precedence="{$region.after.precedence}"
1517                          display-align="after"/>
1518         <xsl:call-template name="region.inner">
1519           <xsl:with-param name="sequence">odd</xsl:with-param>
1520           <xsl:with-param name="pageclass">front</xsl:with-param>
1521         </xsl:call-template>
1522         <xsl:call-template name="region.outer">
1523           <xsl:with-param name="sequence">odd</xsl:with-param>
1524           <xsl:with-param name="pageclass">front</xsl:with-param>
1525         </xsl:call-template>
1526       </fo:simple-page-master>
1527
1528       <fo:simple-page-master master-name="front-even-draft"
1529                              page-width="{$page.width}"
1530                              page-height="{$page.height}"
1531                              margin-top="{$page.margin.top}"
1532                              margin-bottom="{$page.margin.bottom}">
1533         <xsl:attribute name="margin-{$direction.align.start}">
1534           <xsl:value-of select="$page.margin.outer"/>
1535           <xsl:if test="$fop.extensions != 0">
1536             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1537           </xsl:if>
1538         </xsl:attribute>
1539         <xsl:attribute name="margin-{$direction.align.end}">
1540           <xsl:value-of select="$page.margin.inner"/>
1541         </xsl:attribute>
1542         <xsl:if test="$axf.extensions != 0">
1543           <xsl:call-template name="axf-page-master-properties">
1544             <xsl:with-param name="page.master">front-even-draft</xsl:with-param>
1545           </xsl:call-template>
1546         </xsl:if>
1547         <fo:region-body margin-bottom="{$body.margin.bottom}"
1548                         margin-top="{$body.margin.top}"
1549                         column-gap="{$column.gap.front}"
1550                         column-count="{$column.count.front}">
1551           <xsl:attribute name="margin-{$direction.align.start}">
1552             <xsl:value-of select="$body.margin.outer"/>
1553           </xsl:attribute>
1554           <xsl:attribute name="margin-{$direction.align.end}">
1555             <xsl:value-of select="$body.margin.inner"/>
1556           </xsl:attribute>
1557           <xsl:if test="$draft.watermark.image != ''">
1558             <xsl:attribute name="background-image">
1559               <xsl:call-template name="fo-external-image">
1560                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1561               </xsl:call-template>
1562             </xsl:attribute>
1563             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1564             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1565             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1566             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1567           </xsl:if>
1568         </fo:region-body>
1569         <fo:region-before region-name="xsl-region-before-even"
1570                           extent="{$region.before.extent}"
1571                           precedence="{$region.before.precedence}"
1572                           display-align="before"/>
1573         <fo:region-after region-name="xsl-region-after-even"
1574                          extent="{$region.after.extent}"
1575                           precedence="{$region.after.precedence}"
1576                          display-align="after"/>
1577         <xsl:call-template name="region.outer">
1578           <xsl:with-param name="sequence">even</xsl:with-param>
1579           <xsl:with-param name="pageclass">front</xsl:with-param>
1580         </xsl:call-template>
1581         <xsl:call-template name="region.inner">
1582           <xsl:with-param name="sequence">even</xsl:with-param>
1583           <xsl:with-param name="pageclass">front</xsl:with-param>
1584         </xsl:call-template>
1585       </fo:simple-page-master>
1586
1587       <!-- draft body pages -->
1588       <fo:simple-page-master master-name="body-first-draft"
1589                              page-width="{$page.width}"
1590                              page-height="{$page.height}"
1591                              margin-top="{$page.margin.top}"
1592                              margin-bottom="{$page.margin.bottom}">
1593         <xsl:attribute name="margin-{$direction.align.start}">
1594           <xsl:value-of select="$page.margin.inner"/>
1595           <xsl:if test="$fop.extensions != 0">
1596             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1597           </xsl:if>
1598         </xsl:attribute>
1599         <xsl:attribute name="margin-{$direction.align.end}">
1600           <xsl:value-of select="$page.margin.outer"/>
1601         </xsl:attribute>
1602         <xsl:if test="$axf.extensions != 0">
1603           <xsl:call-template name="axf-page-master-properties">
1604             <xsl:with-param name="page.master">body-first-draft</xsl:with-param>
1605           </xsl:call-template>
1606         </xsl:if>
1607         <fo:region-body margin-bottom="{$body.margin.bottom}"
1608                         margin-top="{$body.margin.top}"
1609                         column-gap="{$column.gap.body}"
1610                         column-count="{$column.count.body}">
1611           <xsl:attribute name="margin-{$direction.align.start}">
1612             <xsl:value-of select="$body.margin.inner"/>
1613           </xsl:attribute>
1614           <xsl:attribute name="margin-{$direction.align.end}">
1615             <xsl:value-of select="$body.margin.outer"/>
1616           </xsl:attribute>
1617           <xsl:if test="$draft.watermark.image != ''">
1618             <xsl:attribute name="background-image">
1619               <xsl:call-template name="fo-external-image">
1620                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1621               </xsl:call-template>
1622             </xsl:attribute>
1623             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1624             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1625             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1626             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1627           </xsl:if>
1628         </fo:region-body>
1629         <fo:region-before region-name="xsl-region-before-first"
1630                           extent="{$region.before.extent}"
1631                           precedence="{$region.before.precedence}"
1632                           display-align="before"/>
1633         <fo:region-after region-name="xsl-region-after-first"
1634                          extent="{$region.after.extent}"
1635                           precedence="{$region.after.precedence}"
1636                          display-align="after"/>
1637         <xsl:call-template name="region.inner">
1638           <xsl:with-param name="sequence">first</xsl:with-param>
1639           <xsl:with-param name="pageclass">body</xsl:with-param>
1640         </xsl:call-template>
1641         <xsl:call-template name="region.outer">
1642           <xsl:with-param name="sequence">first</xsl:with-param>
1643           <xsl:with-param name="pageclass">body</xsl:with-param>
1644         </xsl:call-template>
1645       </fo:simple-page-master>
1646
1647       <fo:simple-page-master master-name="body-odd-draft"
1648                              page-width="{$page.width}"
1649                              page-height="{$page.height}"
1650                              margin-top="{$page.margin.top}"
1651                              margin-bottom="{$page.margin.bottom}">
1652         <xsl:attribute name="margin-{$direction.align.start}">
1653           <xsl:value-of select="$page.margin.inner"/>
1654           <xsl:if test="$fop.extensions != 0">
1655             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1656           </xsl:if>
1657         </xsl:attribute>
1658         <xsl:attribute name="margin-{$direction.align.end}">
1659           <xsl:value-of select="$page.margin.outer"/>
1660         </xsl:attribute>
1661         <xsl:if test="$axf.extensions != 0">
1662           <xsl:call-template name="axf-page-master-properties">
1663             <xsl:with-param name="page.master">body-odd-draft</xsl:with-param>
1664           </xsl:call-template>
1665         </xsl:if>
1666         <fo:region-body margin-bottom="{$body.margin.bottom}"
1667                         margin-top="{$body.margin.top}"
1668                         column-gap="{$column.gap.body}"
1669                         column-count="{$column.count.body}">
1670           <xsl:attribute name="margin-{$direction.align.start}">
1671             <xsl:value-of select="$body.margin.inner"/>
1672           </xsl:attribute>
1673           <xsl:attribute name="margin-{$direction.align.end}">
1674             <xsl:value-of select="$body.margin.outer"/>
1675           </xsl:attribute>
1676           <xsl:if test="$draft.watermark.image != ''">
1677             <xsl:attribute name="background-image">
1678               <xsl:call-template name="fo-external-image">
1679                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1680               </xsl:call-template>
1681             </xsl:attribute>
1682             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1683             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1684             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1685             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1686           </xsl:if>
1687         </fo:region-body>
1688         <fo:region-before region-name="xsl-region-before-odd"
1689                           extent="{$region.before.extent}"
1690                           precedence="{$region.before.precedence}"
1691                           display-align="before"/>
1692         <fo:region-after region-name="xsl-region-after-odd"
1693                          extent="{$region.after.extent}"
1694                           precedence="{$region.after.precedence}"
1695                          display-align="after"/>
1696         <xsl:call-template name="region.inner">
1697           <xsl:with-param name="sequence">odd</xsl:with-param>
1698           <xsl:with-param name="pageclass">body</xsl:with-param>
1699         </xsl:call-template>
1700         <xsl:call-template name="region.outer">
1701           <xsl:with-param name="sequence">odd</xsl:with-param>
1702           <xsl:with-param name="pageclass">body</xsl:with-param>
1703         </xsl:call-template>
1704       </fo:simple-page-master>
1705
1706       <fo:simple-page-master master-name="body-even-draft"
1707                              page-width="{$page.width}"
1708                              page-height="{$page.height}"
1709                              margin-top="{$page.margin.top}"
1710                              margin-bottom="{$page.margin.bottom}">
1711         <xsl:attribute name="margin-{$direction.align.start}">
1712           <xsl:value-of select="$page.margin.outer"/>
1713           <xsl:if test="$fop.extensions != 0">
1714             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1715           </xsl:if>
1716         </xsl:attribute>
1717         <xsl:attribute name="margin-{$direction.align.end}">
1718           <xsl:value-of select="$page.margin.inner"/>
1719         </xsl:attribute>
1720         <xsl:if test="$axf.extensions != 0">
1721           <xsl:call-template name="axf-page-master-properties">
1722             <xsl:with-param name="page.master">body-even-draft</xsl:with-param>
1723           </xsl:call-template>
1724         </xsl:if>
1725         <fo:region-body margin-bottom="{$body.margin.bottom}"
1726                         margin-top="{$body.margin.top}"
1727                         column-gap="{$column.gap.body}"
1728                         column-count="{$column.count.body}">
1729           <xsl:attribute name="margin-{$direction.align.start}">
1730             <xsl:value-of select="$body.margin.outer"/>
1731           </xsl:attribute>
1732           <xsl:attribute name="margin-{$direction.align.end}">
1733             <xsl:value-of select="$body.margin.inner"/>
1734           </xsl:attribute>
1735           <xsl:if test="$draft.watermark.image != ''">
1736             <xsl:attribute name="background-image">
1737               <xsl:call-template name="fo-external-image">
1738                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1739               </xsl:call-template>
1740             </xsl:attribute>
1741             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1742             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1743             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1744             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1745           </xsl:if>
1746         </fo:region-body>
1747         <fo:region-before region-name="xsl-region-before-even"
1748                           extent="{$region.before.extent}"
1749                           precedence="{$region.before.precedence}"
1750                           display-align="before"/>
1751         <fo:region-after region-name="xsl-region-after-even"
1752                          extent="{$region.after.extent}"
1753                           precedence="{$region.after.precedence}"
1754                          display-align="after"/>
1755         <xsl:call-template name="region.outer">
1756           <xsl:with-param name="sequence">even</xsl:with-param>
1757           <xsl:with-param name="pageclass">body</xsl:with-param>
1758         </xsl:call-template>
1759         <xsl:call-template name="region.inner">
1760           <xsl:with-param name="sequence">even</xsl:with-param>
1761           <xsl:with-param name="pageclass">body</xsl:with-param>
1762         </xsl:call-template>
1763       </fo:simple-page-master>
1764
1765       <!-- draft backmatter pages -->
1766       <fo:simple-page-master master-name="back-first-draft"
1767                              page-width="{$page.width}"
1768                              page-height="{$page.height}"
1769                              margin-top="{$page.margin.top}"
1770                              margin-bottom="{$page.margin.bottom}">
1771         <xsl:attribute name="margin-{$direction.align.start}">
1772           <xsl:value-of select="$page.margin.inner"/>
1773           <xsl:if test="$fop.extensions != 0">
1774             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1775           </xsl:if>
1776         </xsl:attribute>
1777         <xsl:attribute name="margin-{$direction.align.end}">
1778           <xsl:value-of select="$page.margin.outer"/>
1779         </xsl:attribute>
1780         <xsl:if test="$axf.extensions != 0">
1781           <xsl:call-template name="axf-page-master-properties">
1782             <xsl:with-param name="page.master">back-first-draft</xsl:with-param>
1783           </xsl:call-template>
1784         </xsl:if>
1785         <fo:region-body margin-bottom="{$body.margin.bottom}"
1786                         margin-top="{$body.margin.top}"
1787                         column-gap="{$column.gap.back}"
1788                         column-count="{$column.count.back}">
1789           <xsl:attribute name="margin-{$direction.align.start}">
1790             <xsl:value-of select="$body.margin.inner"/>
1791           </xsl:attribute>
1792           <xsl:attribute name="margin-{$direction.align.end}">
1793             <xsl:value-of select="$body.margin.outer"/>
1794           </xsl:attribute>
1795           <xsl:if test="$draft.watermark.image != ''">
1796             <xsl:attribute name="background-image">
1797               <xsl:call-template name="fo-external-image">
1798                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1799               </xsl:call-template>
1800             </xsl:attribute>
1801             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1802             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1803             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1804             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1805           </xsl:if>
1806         </fo:region-body>
1807         <fo:region-before region-name="xsl-region-before-first"
1808                           extent="{$region.before.extent}"
1809                           precedence="{$region.before.precedence}"
1810                           display-align="before"/>
1811         <fo:region-after region-name="xsl-region-after-first"
1812                          extent="{$region.after.extent}"
1813                           precedence="{$region.after.precedence}"
1814                          display-align="after"/>
1815         <xsl:call-template name="region.inner">
1816           <xsl:with-param name="sequence">first</xsl:with-param>
1817           <xsl:with-param name="pageclass">back</xsl:with-param>
1818         </xsl:call-template>
1819         <xsl:call-template name="region.outer">
1820           <xsl:with-param name="sequence">first</xsl:with-param>
1821           <xsl:with-param name="pageclass">back</xsl:with-param>
1822         </xsl:call-template>
1823       </fo:simple-page-master>
1824
1825       <fo:simple-page-master master-name="back-odd-draft"
1826                              page-width="{$page.width}"
1827                              page-height="{$page.height}"
1828                              margin-top="{$page.margin.top}"
1829                              margin-bottom="{$page.margin.bottom}">
1830         <xsl:attribute name="margin-{$direction.align.start}">
1831           <xsl:value-of select="$page.margin.inner"/>
1832           <xsl:if test="$fop.extensions != 0">
1833             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1834           </xsl:if>
1835         </xsl:attribute>
1836         <xsl:attribute name="margin-{$direction.align.end}">
1837           <xsl:value-of select="$page.margin.outer"/>
1838         </xsl:attribute>
1839         <xsl:if test="$axf.extensions != 0">
1840           <xsl:call-template name="axf-page-master-properties">
1841             <xsl:with-param name="page.master">back-odd-draft</xsl:with-param>
1842           </xsl:call-template>
1843         </xsl:if>
1844         <fo:region-body margin-bottom="{$body.margin.bottom}"
1845                         margin-top="{$body.margin.top}"
1846                         column-gap="{$column.gap.back}"
1847                         column-count="{$column.count.back}">
1848           <xsl:attribute name="margin-{$direction.align.start}">
1849             <xsl:value-of select="$body.margin.inner"/>
1850           </xsl:attribute>
1851           <xsl:attribute name="margin-{$direction.align.end}">
1852             <xsl:value-of select="$body.margin.outer"/>
1853           </xsl:attribute>
1854           <xsl:if test="$draft.watermark.image != ''">
1855             <xsl:attribute name="background-image">
1856               <xsl:call-template name="fo-external-image">
1857                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1858               </xsl:call-template>
1859             </xsl:attribute>
1860             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1861             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1862             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1863             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1864           </xsl:if>
1865         </fo:region-body>
1866         <fo:region-before region-name="xsl-region-before-odd"
1867                           extent="{$region.before.extent}"
1868                           precedence="{$region.before.precedence}"
1869                           display-align="before"/>
1870         <fo:region-after region-name="xsl-region-after-odd"
1871                          extent="{$region.after.extent}"
1872                           precedence="{$region.after.precedence}"
1873                          display-align="after"/>
1874         <xsl:call-template name="region.inner">
1875           <xsl:with-param name="sequence">odd</xsl:with-param>
1876           <xsl:with-param name="pageclass">back</xsl:with-param>
1877         </xsl:call-template>
1878         <xsl:call-template name="region.outer">
1879           <xsl:with-param name="sequence">odd</xsl:with-param>
1880           <xsl:with-param name="pageclass">back</xsl:with-param>
1881         </xsl:call-template>
1882       </fo:simple-page-master>
1883
1884       <fo:simple-page-master master-name="back-even-draft"
1885                              page-width="{$page.width}"
1886                              page-height="{$page.height}"
1887                              margin-top="{$page.margin.top}"
1888                              margin-bottom="{$page.margin.bottom}">
1889         <xsl:attribute name="margin-{$direction.align.start}">
1890           <xsl:value-of select="$page.margin.outer"/>
1891           <xsl:if test="$fop.extensions != 0">
1892             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1893           </xsl:if>
1894         </xsl:attribute>
1895         <xsl:attribute name="margin-{$direction.align.end}">
1896           <xsl:value-of select="$page.margin.inner"/>
1897         </xsl:attribute>
1898         <xsl:if test="$axf.extensions != 0">
1899           <xsl:call-template name="axf-page-master-properties">
1900             <xsl:with-param name="page.master">back-even-draft</xsl:with-param>
1901           </xsl:call-template>
1902         </xsl:if>
1903         <fo:region-body margin-bottom="{$body.margin.bottom}"
1904                         margin-top="{$body.margin.top}"
1905                         column-gap="{$column.gap.back}"
1906                         column-count="{$column.count.back}">
1907           <xsl:attribute name="margin-{$direction.align.start}">
1908             <xsl:value-of select="$body.margin.outer"/>
1909           </xsl:attribute>
1910           <xsl:attribute name="margin-{$direction.align.end}">
1911             <xsl:value-of select="$body.margin.inner"/>
1912           </xsl:attribute>
1913           <xsl:if test="$draft.watermark.image != ''">
1914             <xsl:attribute name="background-image">
1915               <xsl:call-template name="fo-external-image">
1916                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1917               </xsl:call-template>
1918             </xsl:attribute>
1919             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1920             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1921             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1922             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1923           </xsl:if>
1924         </fo:region-body>
1925         <fo:region-before region-name="xsl-region-before-even"
1926                           extent="{$region.before.extent}"
1927                           precedence="{$region.before.precedence}"
1928                           display-align="before"/>
1929         <fo:region-after region-name="xsl-region-after-even"
1930                          extent="{$region.after.extent}"
1931                           precedence="{$region.after.precedence}"
1932                          display-align="after"/>
1933         <xsl:call-template name="region.outer">
1934           <xsl:with-param name="sequence">even</xsl:with-param>
1935           <xsl:with-param name="pageclass">back</xsl:with-param>
1936         </xsl:call-template>
1937         <xsl:call-template name="region.inner">
1938           <xsl:with-param name="sequence">even</xsl:with-param>
1939           <xsl:with-param name="pageclass">back</xsl:with-param>
1940         </xsl:call-template>
1941       </fo:simple-page-master>
1942
1943       <!-- draft index pages -->
1944       <fo:simple-page-master master-name="index-first-draft"
1945                              page-width="{$page.width}"
1946                              page-height="{$page.height}"
1947                              margin-top="{$page.margin.top}"
1948                              margin-bottom="{$page.margin.bottom}">
1949         <xsl:attribute name="margin-{$direction.align.start}">
1950           <xsl:value-of select="$page.margin.inner"/>
1951           <xsl:if test="$fop.extensions != 0">
1952             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
1953           </xsl:if>
1954         </xsl:attribute>
1955         <xsl:attribute name="margin-{$direction.align.end}">
1956           <xsl:value-of select="$page.margin.outer"/>
1957         </xsl:attribute>
1958         <xsl:if test="$axf.extensions != 0">
1959           <xsl:call-template name="axf-page-master-properties">
1960             <xsl:with-param name="page.master">index-first-draft</xsl:with-param>
1961           </xsl:call-template>
1962         </xsl:if>
1963         <fo:region-body margin-bottom="{$body.margin.bottom}"
1964                         margin-top="{$body.margin.top}"
1965                         column-gap="{$column.gap.index}"
1966                         column-count="{$column.count.index}">
1967           <xsl:attribute name="margin-{$direction.align.start}">
1968             <xsl:value-of select="$body.margin.inner"/>
1969           </xsl:attribute>
1970           <xsl:attribute name="margin-{$direction.align.end}">
1971             <xsl:value-of select="$body.margin.outer"/>
1972           </xsl:attribute>
1973           <xsl:if test="$draft.watermark.image != ''">
1974             <xsl:attribute name="background-image">
1975               <xsl:call-template name="fo-external-image">
1976                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1977               </xsl:call-template>
1978             </xsl:attribute>
1979             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1980             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1981             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1982             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1983           </xsl:if>
1984         </fo:region-body>
1985         <fo:region-before region-name="xsl-region-before-first"
1986                           extent="{$region.before.extent}"
1987                           precedence="{$region.before.precedence}"
1988                           display-align="before"/>
1989         <fo:region-after region-name="xsl-region-after-first"
1990                          extent="{$region.after.extent}"
1991                           precedence="{$region.after.precedence}"
1992                          display-align="after"/>
1993         <xsl:call-template name="region.inner">
1994           <xsl:with-param name="sequence">first</xsl:with-param>
1995           <xsl:with-param name="pageclass">index</xsl:with-param>
1996         </xsl:call-template>
1997         <xsl:call-template name="region.outer">
1998           <xsl:with-param name="sequence">first</xsl:with-param>
1999           <xsl:with-param name="pageclass">index</xsl:with-param>
2000         </xsl:call-template>
2001       </fo:simple-page-master>
2002
2003       <fo:simple-page-master master-name="index-odd-draft"
2004                              page-width="{$page.width}"
2005                              page-height="{$page.height}"
2006                              margin-top="{$page.margin.top}"
2007                              margin-bottom="{$page.margin.bottom}">
2008         <xsl:attribute name="margin-{$direction.align.start}">
2009           <xsl:value-of select="$page.margin.inner"/>
2010           <xsl:if test="$fop.extensions != 0">
2011             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
2012           </xsl:if>
2013         </xsl:attribute>
2014         <xsl:attribute name="margin-{$direction.align.end}">
2015           <xsl:value-of select="$page.margin.outer"/>
2016         </xsl:attribute>
2017         <xsl:if test="$axf.extensions != 0">
2018           <xsl:call-template name="axf-page-master-properties">
2019             <xsl:with-param name="page.master">index-odd-draft</xsl:with-param>
2020           </xsl:call-template>
2021         </xsl:if>
2022         <fo:region-body margin-bottom="{$body.margin.bottom}"
2023                         margin-top="{$body.margin.top}"
2024                         column-gap="{$column.gap.index}"
2025                         column-count="{$column.count.index}">
2026           <xsl:attribute name="margin-{$direction.align.start}">
2027             <xsl:value-of select="$body.margin.inner"/>
2028           </xsl:attribute>
2029           <xsl:attribute name="margin-{$direction.align.end}">
2030             <xsl:value-of select="$body.margin.outer"/>
2031           </xsl:attribute>
2032           <xsl:if test="$draft.watermark.image != ''">
2033             <xsl:attribute name="background-image">
2034               <xsl:call-template name="fo-external-image">
2035                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
2036               </xsl:call-template>
2037             </xsl:attribute>
2038             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
2039             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
2040             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
2041             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
2042           </xsl:if>
2043         </fo:region-body>
2044         <fo:region-before region-name="xsl-region-before-odd"
2045                           extent="{$region.before.extent}"
2046                           precedence="{$region.before.precedence}"
2047                           display-align="before"/>
2048         <fo:region-after region-name="xsl-region-after-odd"
2049                          extent="{$region.after.extent}"
2050                           precedence="{$region.after.precedence}"
2051                          display-align="after"/>
2052         <xsl:call-template name="region.inner">
2053           <xsl:with-param name="sequence">odd</xsl:with-param>
2054           <xsl:with-param name="pageclass">index</xsl:with-param>
2055         </xsl:call-template>
2056         <xsl:call-template name="region.outer">
2057           <xsl:with-param name="sequence">odd</xsl:with-param>
2058           <xsl:with-param name="pageclass">index</xsl:with-param>
2059         </xsl:call-template>
2060       </fo:simple-page-master>
2061
2062       <fo:simple-page-master master-name="index-even-draft"
2063                              page-width="{$page.width}"
2064                              page-height="{$page.height}"
2065                              margin-top="{$page.margin.top}"
2066                              margin-bottom="{$page.margin.bottom}">
2067         <xsl:attribute name="margin-{$direction.align.start}">
2068           <xsl:value-of select="$page.margin.outer"/>
2069           <xsl:if test="$fop.extensions != 0">
2070             <xsl:value-of select="concat(' - (',$title.margin.left,')')"/>
2071           </xsl:if>
2072         </xsl:attribute>
2073         <xsl:attribute name="margin-{$direction.align.end}">
2074           <xsl:value-of select="$page.margin.inner"/>
2075         </xsl:attribute>
2076         <xsl:if test="$axf.extensions != 0">
2077           <xsl:call-template name="axf-page-master-properties">
2078             <xsl:with-param name="page.master">index-even-draft</xsl:with-param>
2079           </xsl:call-template>
2080         </xsl:if>
2081         <fo:region-body margin-bottom="{$body.margin.bottom}"
2082                         margin-top="{$body.margin.top}"
2083                         column-gap="{$column.gap.index}"
2084                         column-count="{$column.count.index}">
2085           <xsl:attribute name="margin-{$direction.align.start}">
2086             <xsl:value-of select="$body.margin.outer"/>
2087           </xsl:attribute>
2088           <xsl:attribute name="margin-{$direction.align.end}">
2089             <xsl:value-of select="$body.margin.inner"/>
2090           </xsl:attribute>
2091           <xsl:if test="$draft.watermark.image != ''">
2092             <xsl:attribute name="background-image">
2093               <xsl:call-template name="fo-external-image">
2094                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
2095               </xsl:call-template>
2096             </xsl:attribute>
2097             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
2098             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
2099             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
2100             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
2101           </xsl:if>
2102         </fo:region-body>
2103         <fo:region-before region-name="xsl-region-before-even"
2104                           extent="{$region.before.extent}"
2105                           precedence="{$region.before.precedence}"
2106                           display-align="before"/>
2107         <fo:region-after region-name="xsl-region-after-even"
2108                          extent="{$region.after.extent}"
2109                           precedence="{$region.after.precedence}"
2110                          display-align="after"/>
2111         <xsl:call-template name="region.outer">
2112           <xsl:with-param name="sequence">even</xsl:with-param>
2113           <xsl:with-param name="pageclass">index</xsl:with-param>
2114         </xsl:call-template>
2115         <xsl:call-template name="region.inner">
2116           <xsl:with-param name="sequence">even</xsl:with-param>
2117           <xsl:with-param name="pageclass">index</xsl:with-param>
2118         </xsl:call-template>
2119       </fo:simple-page-master>
2120     </xsl:if>
2121
2122     <!-- setup for title page(s) -->
2123     <fo:page-sequence-master master-name="titlepage">
2124       <fo:repeatable-page-master-alternatives>
2125         <fo:conditional-page-master-reference master-reference="blank"
2126                                               blank-or-not-blank="blank"/>
2127         <xsl:if test="$force.blank.pages != 0">
2128           <fo:conditional-page-master-reference master-reference="titlepage-first"
2129                                                 page-position="first"/>
2130         </xsl:if>
2131         <fo:conditional-page-master-reference master-reference="titlepage-odd"
2132                                               odd-or-even="odd"/>
2133         <fo:conditional-page-master-reference 
2134                                               odd-or-even="even">
2135           <xsl:attribute name="master-reference">
2136             <xsl:choose>
2137               <xsl:when test="$double.sided != 0">titlepage-even</xsl:when>
2138               <xsl:otherwise>titlepage-odd</xsl:otherwise>
2139             </xsl:choose>
2140           </xsl:attribute>
2141         </fo:conditional-page-master-reference>
2142       </fo:repeatable-page-master-alternatives>
2143     </fo:page-sequence-master>
2144
2145     <!-- setup for lots -->
2146     <fo:page-sequence-master master-name="lot">
2147       <fo:repeatable-page-master-alternatives>
2148         <fo:conditional-page-master-reference master-reference="blank"
2149                                               blank-or-not-blank="blank"/>
2150         <xsl:if test="$force.blank.pages != 0">
2151           <fo:conditional-page-master-reference master-reference="lot-first"
2152                                                 page-position="first"/>
2153         </xsl:if>
2154         <fo:conditional-page-master-reference master-reference="lot-odd"
2155                                               odd-or-even="odd"/>
2156         <fo:conditional-page-master-reference 
2157                                               odd-or-even="even">
2158           <xsl:attribute name="master-reference">
2159             <xsl:choose>
2160               <xsl:when test="$double.sided != 0">lot-even</xsl:when>
2161               <xsl:otherwise>lot-odd</xsl:otherwise>
2162             </xsl:choose>
2163           </xsl:attribute>
2164         </fo:conditional-page-master-reference>
2165       </fo:repeatable-page-master-alternatives>
2166     </fo:page-sequence-master>
2167
2168     <!-- setup front matter -->
2169     <fo:page-sequence-master master-name="front">
2170       <fo:repeatable-page-master-alternatives>
2171         <fo:conditional-page-master-reference master-reference="blank"
2172                                               blank-or-not-blank="blank"/>
2173         <xsl:if test="$force.blank.pages != 0">
2174           <fo:conditional-page-master-reference master-reference="front-first"
2175                                                 page-position="first"/>
2176         </xsl:if>
2177         <fo:conditional-page-master-reference master-reference="front-odd"
2178                                               odd-or-even="odd"/>
2179         <fo:conditional-page-master-reference 
2180                                               odd-or-even="even">
2181           <xsl:attribute name="master-reference">
2182             <xsl:choose>
2183               <xsl:when test="$double.sided != 0">front-even</xsl:when>
2184               <xsl:otherwise>front-odd</xsl:otherwise>
2185             </xsl:choose>
2186           </xsl:attribute>
2187         </fo:conditional-page-master-reference>
2188       </fo:repeatable-page-master-alternatives>
2189     </fo:page-sequence-master>
2190
2191     <!-- setup for body pages -->
2192     <fo:page-sequence-master master-name="body">
2193       <fo:repeatable-page-master-alternatives>
2194         <fo:conditional-page-master-reference master-reference="blank"
2195                                               blank-or-not-blank="blank"/>
2196         <xsl:if test="$force.blank.pages != 0">
2197           <fo:conditional-page-master-reference master-reference="body-first"
2198                                                 page-position="first"/>
2199         </xsl:if>
2200         <fo:conditional-page-master-reference master-reference="body-odd"
2201                                               odd-or-even="odd"/>
2202         <fo:conditional-page-master-reference 
2203                                               odd-or-even="even">
2204           <xsl:attribute name="master-reference">
2205             <xsl:choose>
2206               <xsl:when test="$double.sided != 0">body-even</xsl:when>
2207               <xsl:otherwise>body-odd</xsl:otherwise>
2208             </xsl:choose>
2209           </xsl:attribute>
2210         </fo:conditional-page-master-reference>
2211       </fo:repeatable-page-master-alternatives>
2212     </fo:page-sequence-master>
2213
2214     <!-- setup back matter -->
2215     <fo:page-sequence-master master-name="back">
2216       <fo:repeatable-page-master-alternatives>
2217         <fo:conditional-page-master-reference master-reference="blank"
2218                                               blank-or-not-blank="blank"/>
2219         <xsl:if test="$force.blank.pages != 0">
2220           <fo:conditional-page-master-reference master-reference="back-first"
2221                                                 page-position="first"/>
2222         </xsl:if>
2223         <fo:conditional-page-master-reference master-reference="back-odd"
2224                                               odd-or-even="odd"/>
2225         <fo:conditional-page-master-reference 
2226                                               odd-or-even="even">
2227           <xsl:attribute name="master-reference">
2228             <xsl:choose>
2229               <xsl:when test="$double.sided != 0">back-even</xsl:when>
2230               <xsl:otherwise>back-odd</xsl:otherwise>
2231             </xsl:choose>
2232           </xsl:attribute>
2233         </fo:conditional-page-master-reference>
2234       </fo:repeatable-page-master-alternatives>
2235     </fo:page-sequence-master>
2236
2237     <!-- setup back matter -->
2238     <fo:page-sequence-master master-name="index">
2239       <fo:repeatable-page-master-alternatives>
2240         <fo:conditional-page-master-reference master-reference="blank"
2241                                               blank-or-not-blank="blank"/>
2242         <xsl:if test="$force.blank.pages != 0">
2243           <fo:conditional-page-master-reference master-reference="index-first"
2244                                                 page-position="first"/>
2245         </xsl:if>
2246         <fo:conditional-page-master-reference master-reference="index-odd"
2247                                               odd-or-even="odd"/>
2248         <fo:conditional-page-master-reference 
2249                                               odd-or-even="even">
2250           <xsl:attribute name="master-reference">
2251             <xsl:choose>
2252               <xsl:when test="$double.sided != 0">index-even</xsl:when>
2253               <xsl:otherwise>index-odd</xsl:otherwise>
2254             </xsl:choose>
2255           </xsl:attribute>
2256         </fo:conditional-page-master-reference>
2257       </fo:repeatable-page-master-alternatives>
2258     </fo:page-sequence-master>
2259
2260     <xsl:if test="$draft.mode != 'no'">
2261       <!-- setup for draft title page(s) -->
2262       <fo:page-sequence-master master-name="titlepage-draft">
2263         <fo:repeatable-page-master-alternatives>
2264           <fo:conditional-page-master-reference master-reference="blank-draft"
2265                                                 blank-or-not-blank="blank"/>
2266           <xsl:if test="$force.blank.pages != 0">
2267             <fo:conditional-page-master-reference master-reference="titlepage-first-draft"
2268                                                   page-position="first"/>
2269           </xsl:if>
2270           <fo:conditional-page-master-reference master-reference="titlepage-odd-draft"
2271                                                 odd-or-even="odd"/>
2272           <fo:conditional-page-master-reference 
2273                                                 odd-or-even="even">
2274             <xsl:attribute name="master-reference">
2275               <xsl:choose>
2276                 <xsl:when test="$double.sided != 0">titlepage-even-draft</xsl:when>
2277                 <xsl:otherwise>titlepage-odd-draft</xsl:otherwise>
2278               </xsl:choose>
2279             </xsl:attribute>
2280           </fo:conditional-page-master-reference>
2281         </fo:repeatable-page-master-alternatives>
2282       </fo:page-sequence-master>
2283
2284       <!-- setup for draft lots -->
2285       <fo:page-sequence-master master-name="lot-draft">
2286         <fo:repeatable-page-master-alternatives>
2287           <fo:conditional-page-master-reference master-reference="blank-draft"
2288                                                 blank-or-not-blank="blank"/>
2289           <xsl:if test="$force.blank.pages != 0">
2290             <fo:conditional-page-master-reference master-reference="lot-first-draft"
2291                                                   page-position="first"/>
2292           </xsl:if>
2293           <fo:conditional-page-master-reference master-reference="lot-odd-draft"
2294                                                 odd-or-even="odd"/>
2295           <fo:conditional-page-master-reference 
2296                                                 odd-or-even="even">
2297             <xsl:attribute name="master-reference">
2298               <xsl:choose>
2299                 <xsl:when test="$double.sided != 0">lot-even-draft</xsl:when>
2300                 <xsl:otherwise>lot-odd-draft</xsl:otherwise>
2301               </xsl:choose>
2302             </xsl:attribute>
2303           </fo:conditional-page-master-reference>
2304         </fo:repeatable-page-master-alternatives>
2305       </fo:page-sequence-master>
2306
2307       <!-- setup draft front matter -->
2308       <fo:page-sequence-master master-name="front-draft">
2309         <fo:repeatable-page-master-alternatives>
2310           <fo:conditional-page-master-reference master-reference="blank-draft"
2311                                                 blank-or-not-blank="blank"/>
2312           <xsl:if test="$force.blank.pages != 0">
2313             <fo:conditional-page-master-reference master-reference="front-first-draft"
2314                                                   page-position="first"/>
2315           </xsl:if>
2316           <fo:conditional-page-master-reference master-reference="front-odd-draft"
2317                                                 odd-or-even="odd"/>
2318           <fo:conditional-page-master-reference 
2319                                                 odd-or-even="even">
2320             <xsl:attribute name="master-reference">
2321               <xsl:choose>
2322                 <xsl:when test="$double.sided != 0">front-even-draft</xsl:when>
2323                 <xsl:otherwise>front-odd-draft</xsl:otherwise>
2324               </xsl:choose>
2325             </xsl:attribute>
2326           </fo:conditional-page-master-reference>
2327         </fo:repeatable-page-master-alternatives>
2328       </fo:page-sequence-master>
2329
2330       <!-- setup for draft body pages -->
2331       <fo:page-sequence-master master-name="body-draft">
2332         <fo:repeatable-page-master-alternatives>
2333           <fo:conditional-page-master-reference master-reference="blank-draft"
2334                                                 blank-or-not-blank="blank"/>
2335           <xsl:if test="$force.blank.pages != 0">
2336             <fo:conditional-page-master-reference master-reference="body-first-draft"
2337                                                   page-position="first"/>
2338           </xsl:if>
2339           <fo:conditional-page-master-reference master-reference="body-odd-draft"
2340                                                 odd-or-even="odd"/>
2341           <fo:conditional-page-master-reference 
2342                                                 odd-or-even="even">
2343             <xsl:attribute name="master-reference">
2344               <xsl:choose>
2345                 <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
2346                 <xsl:otherwise>body-odd-draft</xsl:otherwise>
2347               </xsl:choose>
2348             </xsl:attribute>
2349           </fo:conditional-page-master-reference>
2350         </fo:repeatable-page-master-alternatives>
2351       </fo:page-sequence-master>
2352
2353       <!-- setup draft back matter -->
2354       <fo:page-sequence-master master-name="back-draft">
2355         <fo:repeatable-page-master-alternatives>
2356           <fo:conditional-page-master-reference master-reference="blank-draft"
2357                                                 blank-or-not-blank="blank"/>
2358           <xsl:if test="$force.blank.pages != 0">
2359             <fo:conditional-page-master-reference master-reference="back-first-draft"
2360                                                   page-position="first"/>
2361           </xsl:if>
2362           <fo:conditional-page-master-reference master-reference="back-odd-draft"
2363                                                 odd-or-even="odd"/>
2364           <fo:conditional-page-master-reference 
2365                                                 odd-or-even="even">
2366             <xsl:attribute name="master-reference">
2367               <xsl:choose>
2368                 <xsl:when test="$double.sided != 0">back-even-draft</xsl:when>
2369                 <xsl:otherwise>back-odd-draft</xsl:otherwise>
2370               </xsl:choose>
2371             </xsl:attribute>
2372           </fo:conditional-page-master-reference>
2373         </fo:repeatable-page-master-alternatives>
2374       </fo:page-sequence-master>
2375
2376       <!-- setup draft index pages -->
2377       <fo:page-sequence-master master-name="index-draft">
2378         <fo:repeatable-page-master-alternatives>
2379           <fo:conditional-page-master-reference master-reference="blank-draft"
2380                                                 blank-or-not-blank="blank"/>
2381           <xsl:if test="$force.blank.pages != 0">
2382             <fo:conditional-page-master-reference master-reference="index-first-draft"
2383                                                   page-position="first"/>
2384           </xsl:if>
2385           <fo:conditional-page-master-reference master-reference="index-odd-draft"
2386                                                 odd-or-even="odd"/>
2387           <fo:conditional-page-master-reference 
2388                                                 odd-or-even="even">
2389             <xsl:attribute name="master-reference">
2390               <xsl:choose>
2391                 <xsl:when test="$double.sided != 0">index-even-draft</xsl:when>
2392                 <xsl:otherwise>index-odd-draft</xsl:otherwise>
2393               </xsl:choose>
2394             </xsl:attribute>
2395           </fo:conditional-page-master-reference>
2396         </fo:repeatable-page-master-alternatives>
2397       </fo:page-sequence-master>
2398     </xsl:if>
2399
2400     <xsl:call-template name="user.pagemasters"/>
2401
2402     </fo:layout-master-set>
2403   
2404     <xsl:call-template name="user.declarations"/>
2405 </xsl:template>
2406
2407 <!-- ==================================================================== -->
2408
2409 <xsl:template name="user.pagemasters"/> <!-- intentionally empty -->
2410
2411 <!-- ==================================================================== -->
2412
2413 <xsl:template name="user.declarations"/> <!-- intentionally empty; add your fo:declarations -->
2414
2415
2416 <!-- ==================================================================== -->
2417
2418 <xsl:template name="select.pagemaster">
2419   <xsl:param name="element" select="local-name(.)"/>
2420   <xsl:param name="pageclass" select="''"/>
2421
2422   <xsl:variable name="pagemaster">
2423     <xsl:choose>
2424       <xsl:when test="$pageclass != ''">
2425         <xsl:value-of select="$pageclass"/>
2426       </xsl:when>
2427       <xsl:when test="$pageclass = 'lot'">lot</xsl:when>
2428       <xsl:when test="$element = 'dedication'">front</xsl:when>
2429       <xsl:when test="$element = 'acknowledgements'">front</xsl:when>
2430       <xsl:when test="$element = 'preface'">front</xsl:when>
2431       <xsl:when test="$element = 'appendix'">back</xsl:when>
2432       <xsl:when test="$element = 'glossary'">back</xsl:when>
2433       <xsl:when test="$element = 'bibliography'">back</xsl:when>
2434       <xsl:when test="$element = 'index'">index</xsl:when>
2435       <xsl:when test="$element = 'colophon'">back</xsl:when>
2436       <xsl:otherwise>body</xsl:otherwise>
2437     </xsl:choose>
2438
2439     <xsl:choose>
2440       <xsl:when test="$draft.mode = 'yes'">
2441         <xsl:text>-draft</xsl:text>
2442       </xsl:when>
2443       <xsl:when test="$draft.mode = 'no'">
2444         <!-- nop -->
2445       </xsl:when>
2446       <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
2447         <xsl:text>-draft</xsl:text>
2448       </xsl:when>
2449       <xsl:otherwise>
2450         <!-- nop -->
2451       </xsl:otherwise>
2452     </xsl:choose>
2453   </xsl:variable>
2454
2455   <xsl:call-template name="select.user.pagemaster">
2456     <xsl:with-param name="element" select="$element"/>
2457     <xsl:with-param name="pageclass" select="$pageclass"/>
2458     <xsl:with-param name="default-pagemaster" select="$pagemaster"/>
2459   </xsl:call-template>
2460 </xsl:template>
2461
2462 <xsl:template name="select.user.pagemaster">
2463   <xsl:param name="element"/>
2464   <xsl:param name="pageclass"/>
2465   <xsl:param name="default-pagemaster"/>
2466
2467   <!-- by default, return the default. But if you've created your own
2468        pagemasters in user.pagemasters, you might want to select one here. -->
2469   <xsl:value-of select="$default-pagemaster"/>
2470 </xsl:template>
2471
2472 <!-- ==================================================================== -->
2473
2474 <xsl:template name="head.sep.rule">
2475   <xsl:param name="pageclass"/>
2476   <xsl:param name="sequence"/>
2477   <xsl:param name="gentext-key"/>
2478
2479   <xsl:if test="$header.rule != 0">
2480     <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
2481     <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
2482     <xsl:attribute name="border-bottom-color">black</xsl:attribute>
2483   </xsl:if>
2484 </xsl:template>
2485
2486 <xsl:template name="foot.sep.rule">
2487   <xsl:param name="pageclass"/>
2488   <xsl:param name="sequence"/>
2489   <xsl:param name="gentext-key"/>
2490
2491   <xsl:if test="$footer.rule != 0">
2492     <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
2493     <xsl:attribute name="border-top-style">solid</xsl:attribute>
2494     <xsl:attribute name="border-top-color">black</xsl:attribute>
2495   </xsl:if>
2496 </xsl:template>
2497
2498 <!-- ==================================================================== -->
2499
2500 <xsl:template match="*" mode="running.head.mode">
2501   <xsl:param name="master-reference" select="'unknown'"/>
2502   <xsl:param name="gentext-key" select="local-name(.)"/>
2503
2504   <!-- remove -draft from reference -->
2505   <xsl:variable name="pageclass">
2506     <xsl:choose>
2507       <xsl:when test="contains($master-reference, '-draft')">
2508         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
2509       </xsl:when>
2510       <xsl:otherwise>
2511         <xsl:value-of select="$master-reference"/>
2512       </xsl:otherwise>
2513     </xsl:choose>
2514   </xsl:variable>
2515
2516   <fo:static-content flow-name="xsl-region-before-first">
2517     <fo:block xsl:use-attribute-sets="header.content.properties">
2518       <xsl:call-template name="header.table">
2519         <xsl:with-param name="pageclass" select="$pageclass"/>
2520         <xsl:with-param name="sequence" select="'first'"/>
2521         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2522       </xsl:call-template>
2523     </fo:block>
2524   </fo:static-content>
2525
2526   <fo:static-content flow-name="xsl-region-before-odd">
2527     <fo:block xsl:use-attribute-sets="header.content.properties">
2528       <xsl:call-template name="header.table">
2529         <xsl:with-param name="pageclass" select="$pageclass"/>
2530         <xsl:with-param name="sequence" select="'odd'"/>
2531         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2532       </xsl:call-template>
2533     </fo:block>
2534   </fo:static-content>
2535
2536   <fo:static-content flow-name="xsl-region-before-even">
2537     <fo:block xsl:use-attribute-sets="header.content.properties">
2538       <xsl:call-template name="header.table">
2539         <xsl:with-param name="pageclass" select="$pageclass"/>
2540         <xsl:with-param name="sequence" select="'even'"/>
2541         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2542       </xsl:call-template>
2543     </fo:block>
2544   </fo:static-content>
2545
2546   <fo:static-content flow-name="xsl-region-before-blank">
2547     <fo:block xsl:use-attribute-sets="header.content.properties">
2548       <xsl:call-template name="header.table">
2549         <xsl:with-param name="pageclass" select="$pageclass"/>
2550         <xsl:with-param name="sequence" select="'blank'"/>
2551         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2552       </xsl:call-template>
2553     </fo:block>
2554   </fo:static-content>
2555
2556   <xsl:call-template name="footnote-separator"/>
2557
2558   <xsl:if test="$fop.extensions = 0 and $fop1.extensions = 0">
2559     <xsl:call-template name="blank.page.content"/>
2560   </xsl:if>
2561
2562   <xsl:apply-templates select="." mode="region.inner.mode">
2563     <xsl:with-param name="master-reference" select="$master-reference"/>
2564     <xsl:with-param name="gentext-key" select="$gentext-key"/>
2565   </xsl:apply-templates>
2566
2567   <xsl:apply-templates select="." mode="region.outer.mode">
2568     <xsl:with-param name="master-reference" select="$master-reference"/>
2569     <xsl:with-param name="gentext-key" select="$gentext-key"/>
2570   </xsl:apply-templates>
2571
2572 </xsl:template>
2573
2574 <xsl:template name="footnote-separator">
2575   <fo:static-content flow-name="xsl-footnote-separator">
2576     <fo:block>
2577       <fo:leader xsl:use-attribute-sets="footnote.sep.leader.properties"/>
2578     </fo:block>
2579   </fo:static-content>
2580 </xsl:template>
2581
2582 <xsl:template name="blank.page.content">
2583   <fo:static-content flow-name="blank-body">
2584     <fo:block text-align="center"/>
2585   </fo:static-content>
2586 </xsl:template>
2587
2588 <xsl:template name="running.side.content">
2589   <xsl:apply-templates select="." mode="region.inner.mode"/>
2590 </xsl:template>
2591
2592 <xsl:template name="header.table">
2593   <xsl:param name="pageclass" select="''"/>
2594   <xsl:param name="sequence" select="''"/>
2595   <xsl:param name="gentext-key" select="''"/>
2596
2597   <!-- default is a single table style for all headers -->
2598   <!-- Customize it for different page classes or sequence location -->
2599
2600   <xsl:variable name="column1">
2601     <xsl:choose>
2602       <xsl:when test="$double.sided = 0">1</xsl:when>
2603       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
2604       <xsl:otherwise>3</xsl:otherwise>
2605     </xsl:choose>
2606   </xsl:variable>
2607
2608   <xsl:variable name="column3">
2609     <xsl:choose>
2610       <xsl:when test="$double.sided = 0">3</xsl:when>
2611       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
2612       <xsl:otherwise>1</xsl:otherwise>
2613     </xsl:choose>
2614   </xsl:variable>
2615
2616   <xsl:variable name="candidate">
2617     <fo:table xsl:use-attribute-sets="header.table.properties">
2618       <xsl:call-template name="head.sep.rule">
2619         <xsl:with-param name="pageclass" select="$pageclass"/>
2620         <xsl:with-param name="sequence" select="$sequence"/>
2621         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2622       </xsl:call-template>
2623
2624       <fo:table-column column-number="1">
2625         <xsl:attribute name="column-width">
2626           <xsl:text>proportional-column-width(</xsl:text>
2627           <xsl:call-template name="header.footer.width">
2628             <xsl:with-param name="location">header</xsl:with-param>
2629             <xsl:with-param name="position" select="$column1"/>
2630             <xsl:with-param name="pageclass" select="$pageclass"/>
2631             <xsl:with-param name="sequence" select="$sequence"/>
2632             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2633           </xsl:call-template>
2634           <xsl:text>)</xsl:text>
2635         </xsl:attribute>
2636       </fo:table-column>
2637       <fo:table-column column-number="2">
2638         <xsl:attribute name="column-width">
2639           <xsl:text>proportional-column-width(</xsl:text>
2640           <xsl:call-template name="header.footer.width">
2641             <xsl:with-param name="location">header</xsl:with-param>
2642             <xsl:with-param name="position" select="2"/>
2643             <xsl:with-param name="pageclass" select="$pageclass"/>
2644             <xsl:with-param name="sequence" select="$sequence"/>
2645             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2646           </xsl:call-template>
2647           <xsl:text>)</xsl:text>
2648         </xsl:attribute>
2649       </fo:table-column>
2650       <fo:table-column column-number="3">
2651         <xsl:attribute name="column-width">
2652           <xsl:text>proportional-column-width(</xsl:text>
2653           <xsl:call-template name="header.footer.width">
2654             <xsl:with-param name="location">header</xsl:with-param>
2655             <xsl:with-param name="position" select="$column3"/>
2656             <xsl:with-param name="pageclass" select="$pageclass"/>
2657             <xsl:with-param name="sequence" select="$sequence"/>
2658             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2659           </xsl:call-template>
2660           <xsl:text>)</xsl:text>
2661         </xsl:attribute>
2662       </fo:table-column>
2663
2664       <fo:table-body>
2665         <fo:table-row>
2666           <xsl:attribute name="block-progression-dimension.minimum">
2667             <xsl:value-of select="$header.table.height"/>
2668           </xsl:attribute>
2669           <fo:table-cell text-align="start"
2670                          display-align="before">
2671             <xsl:if test="$fop.extensions = 0">
2672               <xsl:attribute name="relative-align">baseline</xsl:attribute>
2673             </xsl:if>
2674             <fo:block>
2675               <xsl:call-template name="header.content">
2676                 <xsl:with-param name="pageclass" select="$pageclass"/>
2677                 <xsl:with-param name="sequence" select="$sequence"/>
2678                 <xsl:with-param name="position" select="$direction.align.start"/>
2679                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
2680               </xsl:call-template>
2681             </fo:block>
2682           </fo:table-cell>
2683           <fo:table-cell text-align="center"
2684                          display-align="before">
2685             <xsl:if test="$fop.extensions = 0">
2686               <xsl:attribute name="relative-align">baseline</xsl:attribute>
2687             </xsl:if>
2688             <fo:block>
2689               <xsl:call-template name="header.content">
2690                 <xsl:with-param name="pageclass" select="$pageclass"/>
2691                 <xsl:with-param name="sequence" select="$sequence"/>
2692                 <xsl:with-param name="position" select="'center'"/>
2693                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
2694               </xsl:call-template>
2695             </fo:block>
2696           </fo:table-cell>
2697           <fo:table-cell text-align="right"
2698                          display-align="before">
2699             <xsl:if test="$fop.extensions = 0">
2700               <xsl:attribute name="relative-align">baseline</xsl:attribute>
2701             </xsl:if>
2702             <fo:block>
2703               <xsl:call-template name="header.content">
2704                 <xsl:with-param name="pageclass" select="$pageclass"/>
2705                 <xsl:with-param name="sequence" select="$sequence"/>
2706                 <xsl:with-param name="position" select="$direction.align.end"/>
2707                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
2708               </xsl:call-template>
2709             </fo:block>
2710           </fo:table-cell>
2711         </fo:table-row>
2712       </fo:table-body>
2713     </fo:table>
2714   </xsl:variable>
2715
2716   <!-- Really output a header? -->
2717   <xsl:choose>
2718     <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
2719                     and $sequence='first'">
2720       <!-- no, book titlepages have no headers at all -->
2721     </xsl:when>
2722     <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
2723       <!-- no output -->
2724     </xsl:when>
2725     <xsl:otherwise>
2726       <xsl:copy-of select="$candidate"/>
2727     </xsl:otherwise>
2728   </xsl:choose>
2729 </xsl:template>
2730
2731 <xsl:template name="header.content">
2732   <xsl:param name="pageclass" select="''"/>
2733   <xsl:param name="sequence" select="''"/>
2734   <xsl:param name="position" select="''"/>
2735   <xsl:param name="gentext-key" select="''"/>
2736
2737 <!--
2738   <fo:block>
2739     <xsl:value-of select="$pageclass"/>
2740     <xsl:text>, </xsl:text>
2741     <xsl:value-of select="$sequence"/>
2742     <xsl:text>, </xsl:text>
2743     <xsl:value-of select="$position"/>
2744     <xsl:text>, </xsl:text>
2745     <xsl:value-of select="$gentext-key"/>
2746   </fo:block>
2747 -->
2748
2749   <fo:block>
2750
2751     <!-- sequence can be odd, even, first, blank -->
2752     <!-- position can be left, center, right -->
2753     <xsl:choose>
2754       <xsl:when test="$sequence = 'blank'">
2755         <!-- nothing -->
2756       </xsl:when>
2757
2758       <xsl:when test="$position='left'">
2759         <!-- Same for odd, even, empty, and blank sequences -->
2760         <xsl:call-template name="draft.text"/>
2761       </xsl:when>
2762
2763       <xsl:when test="($sequence='odd' or $sequence='even') and $position='center'">
2764         <xsl:if test="$pageclass != 'titlepage'">
2765           <xsl:choose>
2766             <xsl:when test="ancestor::d:book and ($double.sided != 0)">
2767               <fo:retrieve-marker retrieve-class-name="section.head.marker"
2768                                   retrieve-position="first-including-carryover"
2769                                   retrieve-boundary="page-sequence"/>
2770             </xsl:when>
2771             <xsl:otherwise>
2772               <xsl:apply-templates select="." mode="titleabbrev.markup"/>
2773             </xsl:otherwise>
2774           </xsl:choose>
2775         </xsl:if>
2776       </xsl:when>
2777
2778       <xsl:when test="$position='center'">
2779         <!-- nothing for empty and blank sequences -->
2780       </xsl:when>
2781
2782       <xsl:when test="$position='right'">
2783         <!-- Same for odd, even, empty, and blank sequences -->
2784         <xsl:call-template name="draft.text"/>
2785       </xsl:when>
2786
2787       <xsl:when test="$sequence = 'first'">
2788         <!-- nothing for first pages -->
2789       </xsl:when>
2790
2791       <xsl:when test="$sequence = 'blank'">
2792         <!-- nothing for blank pages -->
2793       </xsl:when>
2794     </xsl:choose>
2795   </fo:block>
2796 </xsl:template>
2797
2798 <xsl:template name="header.footer.width">
2799   <xsl:param name="location" select="'header'"/>
2800   <xsl:param name="position" select="1"/>
2801   <xsl:param name="pageclass" select="''"/>
2802   <xsl:param name="sequence" select="''"/>
2803   <xsl:param name="gentext-key" select="''"/>
2804
2805   <!-- The location param is either 'header' or 'footer'.
2806        The position param is one of '1', '2', or '3' to indicate
2807        which column of the header or footer table. -->
2808        
2809   <!-- The pageclass, sequence, and gentext-key values are passed
2810        from the header.table or footer.table template.  They are
2811        not currently used, but are made available here
2812        for customization of this template. -->
2813
2814   <xsl:variable name="width.set">
2815     <xsl:choose>
2816       <xsl:when test="$location = 'header'">
2817         <xsl:value-of select="normalize-space($header.column.widths)"/>
2818       </xsl:when>
2819       <xsl:otherwise>
2820         <xsl:value-of select="normalize-space($footer.column.widths)"/>
2821       </xsl:otherwise>
2822     </xsl:choose>
2823   </xsl:variable>
2824
2825
2826   <xsl:variable name="width">
2827     <xsl:choose>
2828       <xsl:when test="$position = 1">
2829         <xsl:value-of select="substring-before($width.set, ' ')"/>
2830       </xsl:when>
2831       <xsl:when test="$position = 2">
2832         <xsl:value-of select="substring-before(substring-after($width.set, ' '), ' ')"/>
2833       </xsl:when>
2834       <xsl:otherwise>
2835         <xsl:value-of select="substring-after(substring-after($width.set, ' '), ' ')"/>
2836       </xsl:otherwise>
2837     </xsl:choose>
2838   </xsl:variable>
2839
2840   <!-- Make sure it is a number -->
2841   <xsl:choose>
2842     <xsl:when test = "$width = number($width)">
2843       <xsl:value-of select="$width"/>
2844     </xsl:when>
2845     <xsl:otherwise>
2846       <xsl:message>Error: value in <xsl:value-of select="$location"/>.column.widths at position <xsl:value-of select="$position"/> is not a number.</xsl:message>
2847       <xsl:text>1</xsl:text>
2848     </xsl:otherwise>
2849   </xsl:choose>
2850 </xsl:template>
2851
2852 <xsl:template name="draft.text">
2853   <xsl:choose>
2854     <xsl:when test="$draft.mode = 'yes'">
2855       <xsl:call-template name="gentext">
2856         <xsl:with-param name="key" select="'Draft'"/>
2857       </xsl:call-template>
2858     </xsl:when>
2859     <xsl:when test="$draft.mode = 'no'">
2860       <!-- nop -->
2861     </xsl:when>
2862     <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
2863       <xsl:call-template name="gentext">
2864         <xsl:with-param name="key" select="'Draft'"/>
2865       </xsl:call-template>
2866     </xsl:when>
2867     <xsl:otherwise>
2868       <!-- nop -->
2869     </xsl:otherwise>
2870   </xsl:choose>
2871 </xsl:template>
2872
2873 <!-- ==================================================================== -->
2874
2875 <xsl:template match="*" mode="running.foot.mode">
2876   <xsl:param name="master-reference" select="'unknown'"/>
2877   <xsl:param name="gentext-key" select="local-name(.)"/>
2878
2879   <!-- remove -draft from reference -->
2880   <xsl:variable name="pageclass">
2881     <xsl:choose>
2882       <xsl:when test="contains($master-reference, '-draft')">
2883         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
2884       </xsl:when>
2885       <xsl:otherwise>
2886         <xsl:value-of select="$master-reference"/>
2887       </xsl:otherwise>
2888     </xsl:choose>
2889   </xsl:variable>
2890
2891   <fo:static-content flow-name="xsl-region-after-first">
2892     <fo:block xsl:use-attribute-sets="footer.content.properties">
2893       <xsl:call-template name="footer.table">
2894         <xsl:with-param name="pageclass" select="$pageclass"/>
2895         <xsl:with-param name="sequence" select="'first'"/>
2896         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2897       </xsl:call-template>
2898     </fo:block>
2899   </fo:static-content>
2900
2901   <fo:static-content flow-name="xsl-region-after-odd">
2902     <fo:block xsl:use-attribute-sets="footer.content.properties">
2903       <xsl:call-template name="footer.table">
2904         <xsl:with-param name="pageclass" select="$pageclass"/>
2905         <xsl:with-param name="sequence" select="'odd'"/>
2906         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2907       </xsl:call-template>
2908     </fo:block>
2909   </fo:static-content>
2910
2911   <fo:static-content flow-name="xsl-region-after-even">
2912     <fo:block xsl:use-attribute-sets="footer.content.properties">
2913       <xsl:call-template name="footer.table">
2914         <xsl:with-param name="pageclass" select="$pageclass"/>
2915         <xsl:with-param name="sequence" select="'even'"/>
2916         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2917       </xsl:call-template>
2918     </fo:block>
2919   </fo:static-content>
2920
2921   <fo:static-content flow-name="xsl-region-after-blank">
2922     <fo:block xsl:use-attribute-sets="footer.content.properties">
2923       <xsl:call-template name="footer.table">
2924         <xsl:with-param name="pageclass" select="$pageclass"/>
2925         <xsl:with-param name="sequence" select="'blank'"/>
2926         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2927       </xsl:call-template>
2928     </fo:block>
2929   </fo:static-content>
2930 </xsl:template>
2931
2932 <xsl:template name="footer.table">
2933   <xsl:param name="pageclass" select="''"/>
2934   <xsl:param name="sequence" select="''"/>
2935   <xsl:param name="gentext-key" select="''"/>
2936
2937   <!-- default is a single table style for all footers -->
2938   <!-- Customize it for different page classes or sequence location -->
2939
2940   <xsl:variable name="column1">
2941     <xsl:choose>
2942       <xsl:when test="$double.sided = 0">1</xsl:when>
2943       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
2944       <xsl:otherwise>3</xsl:otherwise>
2945     </xsl:choose>
2946   </xsl:variable>
2947
2948   <xsl:variable name="column3">
2949     <xsl:choose>
2950       <xsl:when test="$double.sided = 0">3</xsl:when>
2951       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
2952       <xsl:otherwise>1</xsl:otherwise>
2953     </xsl:choose>
2954   </xsl:variable>
2955
2956   <xsl:variable name="candidate">
2957     <fo:table xsl:use-attribute-sets="footer.table.properties">
2958       <xsl:call-template name="foot.sep.rule">
2959         <xsl:with-param name="pageclass" select="$pageclass"/>
2960         <xsl:with-param name="sequence" select="$sequence"/>
2961         <xsl:with-param name="gentext-key" select="$gentext-key"/>
2962       </xsl:call-template>
2963       <fo:table-column column-number="1">
2964         <xsl:attribute name="column-width">
2965           <xsl:text>proportional-column-width(</xsl:text>
2966           <xsl:call-template name="header.footer.width">
2967             <xsl:with-param name="location">footer</xsl:with-param>
2968             <xsl:with-param name="position" select="$column1"/>
2969             <xsl:with-param name="pageclass" select="$pageclass"/>
2970             <xsl:with-param name="sequence" select="$sequence"/>
2971             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2972           </xsl:call-template>
2973           <xsl:text>)</xsl:text>
2974         </xsl:attribute>
2975       </fo:table-column>
2976       <fo:table-column column-number="2">
2977         <xsl:attribute name="column-width">
2978           <xsl:text>proportional-column-width(</xsl:text>
2979           <xsl:call-template name="header.footer.width">
2980             <xsl:with-param name="location">footer</xsl:with-param>
2981             <xsl:with-param name="position" select="2"/>
2982             <xsl:with-param name="pageclass" select="$pageclass"/>
2983             <xsl:with-param name="sequence" select="$sequence"/>
2984             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2985           </xsl:call-template>
2986           <xsl:text>)</xsl:text>
2987         </xsl:attribute>
2988       </fo:table-column>
2989       <fo:table-column column-number="3">
2990         <xsl:attribute name="column-width">
2991           <xsl:text>proportional-column-width(</xsl:text>
2992           <xsl:call-template name="header.footer.width">
2993             <xsl:with-param name="location">footer</xsl:with-param>
2994             <xsl:with-param name="position" select="$column3"/>
2995             <xsl:with-param name="pageclass" select="$pageclass"/>
2996             <xsl:with-param name="sequence" select="$sequence"/>
2997             <xsl:with-param name="gentext-key" select="$gentext-key"/>
2998           </xsl:call-template>
2999           <xsl:text>)</xsl:text>
3000         </xsl:attribute>
3001       </fo:table-column>
3002
3003       <fo:table-body>
3004         <fo:table-row>
3005           <xsl:attribute name="block-progression-dimension.minimum">
3006             <xsl:value-of select="$footer.table.height"/>
3007           </xsl:attribute>
3008           <fo:table-cell text-align="start"
3009                          display-align="after">
3010             <xsl:if test="$fop.extensions = 0">
3011               <xsl:attribute name="relative-align">baseline</xsl:attribute>
3012             </xsl:if>
3013             <fo:block>
3014               <xsl:call-template name="footer.content">
3015                 <xsl:with-param name="pageclass" select="$pageclass"/>
3016                 <xsl:with-param name="sequence" select="$sequence"/>
3017                 <xsl:with-param name="position" select="$direction.align.start"/>
3018                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
3019               </xsl:call-template>
3020             </fo:block>
3021           </fo:table-cell>
3022           <fo:table-cell text-align="center"
3023                          display-align="after">
3024             <xsl:if test="$fop.extensions = 0">
3025               <xsl:attribute name="relative-align">baseline</xsl:attribute>
3026             </xsl:if>
3027             <fo:block>
3028               <xsl:call-template name="footer.content">
3029                 <xsl:with-param name="pageclass" select="$pageclass"/>
3030                 <xsl:with-param name="sequence" select="$sequence"/>
3031                 <xsl:with-param name="position" select="'center'"/>
3032                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
3033               </xsl:call-template>
3034             </fo:block>
3035           </fo:table-cell>
3036           <fo:table-cell text-align="end"
3037                          display-align="after">
3038             <xsl:if test="$fop.extensions = 0">
3039               <xsl:attribute name="relative-align">baseline</xsl:attribute>
3040             </xsl:if>
3041             <fo:block>
3042               <xsl:call-template name="footer.content">
3043                 <xsl:with-param name="pageclass" select="$pageclass"/>
3044                 <xsl:with-param name="sequence" select="$sequence"/>
3045                 <xsl:with-param name="position" select="$direction.align.end"/>
3046                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
3047               </xsl:call-template>
3048             </fo:block>
3049           </fo:table-cell>
3050         </fo:table-row>
3051       </fo:table-body>
3052     </fo:table>
3053   </xsl:variable>
3054
3055   <!-- Really output a footer? -->
3056   <xsl:choose>
3057     <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
3058                     and $sequence='first'">
3059       <!-- no, book titlepages have no footers at all -->
3060     </xsl:when>
3061     <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
3062       <!-- no output -->
3063     </xsl:when>
3064     <xsl:otherwise>
3065       <xsl:copy-of select="$candidate"/>
3066     </xsl:otherwise>
3067   </xsl:choose>
3068 </xsl:template>
3069
3070 <xsl:template name="footer.content">
3071   <xsl:param name="pageclass" select="''"/>
3072   <xsl:param name="sequence" select="''"/>
3073   <xsl:param name="position" select="''"/>
3074   <xsl:param name="gentext-key" select="''"/>
3075
3076 <!--
3077   <fo:block>
3078     <xsl:value-of select="$pageclass"/>
3079     <xsl:text>, </xsl:text>
3080     <xsl:value-of select="$sequence"/>
3081     <xsl:text>, </xsl:text>
3082     <xsl:value-of select="$position"/>
3083     <xsl:text>, </xsl:text>
3084     <xsl:value-of select="$gentext-key"/>
3085   </fo:block>
3086 -->
3087
3088   <fo:block>
3089     <!-- pageclass can be front, body, back -->
3090     <!-- sequence can be odd, even, first, blank -->
3091     <!-- position can be left, center, right -->
3092     <xsl:choose>
3093       <xsl:when test="$pageclass = 'titlepage'">
3094         <!-- nop; no footer on title pages -->
3095       </xsl:when>
3096
3097       <xsl:when test="$double.sided != 0 and $sequence = 'even'
3098                       and $position='left'">
3099         <fo:page-number/>
3100       </xsl:when>
3101
3102       <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first')
3103                       and $position='right'">
3104         <fo:page-number/>
3105       </xsl:when>
3106
3107       <xsl:when test="$double.sided = 0 and $position='center'">
3108         <fo:page-number/>
3109       </xsl:when>
3110
3111       <xsl:when test="$sequence='blank'">
3112         <xsl:choose>
3113           <xsl:when test="$double.sided != 0 and $position = 'left'">
3114             <fo:page-number/>
3115           </xsl:when>
3116           <xsl:when test="$double.sided = 0 and $position = 'center'">
3117             <fo:page-number/>
3118           </xsl:when>
3119           <xsl:otherwise>
3120             <!-- nop -->
3121           </xsl:otherwise>
3122         </xsl:choose>
3123       </xsl:when>
3124
3125
3126       <xsl:otherwise>
3127         <!-- nop -->
3128       </xsl:otherwise>
3129     </xsl:choose>
3130   </fo:block>
3131 </xsl:template>
3132
3133 <!-- ==================================================================== -->
3134 <xsl:template match="*" mode="region.inner.mode">
3135   <xsl:param name="master-reference" select="'unknown'"/>
3136   <xsl:param name="gentext-key" select="local-name(.)"/>
3137
3138   <!-- remove -draft from reference -->
3139   <xsl:variable name="pageclass">
3140     <xsl:choose>
3141       <xsl:when test="contains($master-reference, '-draft')">
3142         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
3143       </xsl:when>
3144       <xsl:otherwise>
3145         <xsl:value-of select="$master-reference"/>
3146       </xsl:otherwise>
3147     </xsl:choose>
3148   </xsl:variable>
3149
3150   <fo:static-content flow-name="xsl-region-inner-first">
3151     <xsl:call-template name="inner.region.content">
3152       <xsl:with-param name="pageclass" select="$pageclass"/>
3153       <xsl:with-param name="sequence" select="'first'"/>
3154       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3155     </xsl:call-template>
3156   </fo:static-content>
3157
3158   <fo:static-content flow-name="xsl-region-inner-odd">
3159     <xsl:call-template name="inner.region.content">
3160       <xsl:with-param name="pageclass" select="$pageclass"/>
3161       <xsl:with-param name="sequence" select="'odd'"/>
3162       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3163     </xsl:call-template>
3164   </fo:static-content>
3165
3166   <fo:static-content flow-name="xsl-region-inner-even">
3167     <xsl:call-template name="inner.region.content">
3168       <xsl:with-param name="pageclass" select="$pageclass"/>
3169       <xsl:with-param name="sequence" select="'even'"/>
3170       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3171     </xsl:call-template>
3172   </fo:static-content>
3173
3174   <fo:static-content flow-name="xsl-region-inner-blank">
3175     <xsl:call-template name="inner.region.content">
3176       <xsl:with-param name="pageclass" select="$pageclass"/>
3177       <xsl:with-param name="sequence" select="'blank'"/>
3178       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3179     </xsl:call-template>
3180   </fo:static-content>
3181
3182 </xsl:template>
3183
3184 <xsl:template match="*" mode="region.outer.mode">
3185   <xsl:param name="master-reference" select="'unknown'"/>
3186   <xsl:param name="gentext-key" select="local-name(.)"/>
3187
3188   <!-- remove -draft from reference -->
3189   <xsl:variable name="pageclass">
3190     <xsl:choose>
3191       <xsl:when test="contains($master-reference, '-draft')">
3192         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
3193       </xsl:when>
3194       <xsl:otherwise>
3195         <xsl:value-of select="$master-reference"/>
3196       </xsl:otherwise>
3197     </xsl:choose>
3198   </xsl:variable>
3199
3200   <fo:static-content flow-name="xsl-region-outer-first">
3201     <xsl:call-template name="outer.region.content">
3202       <xsl:with-param name="pageclass" select="$pageclass"/>
3203       <xsl:with-param name="sequence" select="'first'"/>
3204       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3205     </xsl:call-template>
3206   </fo:static-content>
3207
3208   <fo:static-content flow-name="xsl-region-outer-odd">
3209     <xsl:call-template name="outer.region.content">
3210       <xsl:with-param name="pageclass" select="$pageclass"/>
3211       <xsl:with-param name="sequence" select="'odd'"/>
3212       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3213     </xsl:call-template>
3214   </fo:static-content>
3215
3216   <fo:static-content flow-name="xsl-region-outer-even">
3217     <xsl:call-template name="outer.region.content">
3218       <xsl:with-param name="pageclass" select="$pageclass"/>
3219       <xsl:with-param name="sequence" select="'even'"/>
3220       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3221     </xsl:call-template>
3222   </fo:static-content>
3223
3224   <fo:static-content flow-name="xsl-region-outer-blank">
3225     <xsl:call-template name="outer.region.content">
3226       <xsl:with-param name="pageclass" select="$pageclass"/>
3227       <xsl:with-param name="sequence" select="'blank'"/>
3228       <xsl:with-param name="gentext-key" select="$gentext-key"/>
3229     </xsl:call-template>
3230   </fo:static-content>
3231
3232 </xsl:template>
3233
3234 <xsl:template name="inner.region.content">
3235   <xsl:param name="pageclass" select="''"/>
3236   <xsl:param name="sequence" select="''"/>
3237   <xsl:param name="position" select="''"/>
3238   <xsl:param name="gentext-key" select="''"/>
3239
3240   <!-- pageclass can be front, body, back -->
3241   <!-- sequence can be odd, even, first, blank -->
3242   <!-- position can be left, center, right -->
3243
3244   <!-- Customize to add side region content-->
3245   <fo:block xsl:use-attribute-sets="inner.region.content.properties">
3246     <!-- Add your content here -->
3247   </fo:block>
3248 </xsl:template>
3249
3250 <xsl:template name="outer.region.content">
3251   <xsl:param name="pageclass" select="''"/>
3252   <xsl:param name="sequence" select="''"/>
3253   <xsl:param name="position" select="''"/>
3254   <xsl:param name="gentext-key" select="''"/>
3255
3256   <!-- pageclass can be front, body, back -->
3257   <!-- sequence can be odd, even, first, blank -->
3258   <!-- position can be left, center, right -->
3259
3260   <!-- Customize to add side region content-->
3261   <fo:block xsl:use-attribute-sets="outer.region.content.properties">
3262     <!-- Add your content here -->
3263   </fo:block>
3264 </xsl:template>
3265
3266 <!-- ==================================================================== -->
3267
3268 <xsl:template name="page.number.format">
3269   <xsl:param name="element" select="local-name(.)"/>
3270   <xsl:param name="master-reference" select="''"/>
3271
3272   <xsl:choose>
3273     <xsl:when test="$element = 'toc' and self::d:book">i</xsl:when>
3274     <xsl:when test="$element = 'set'">i</xsl:when>
3275     <xsl:when test="$element = 'book'">i</xsl:when>
3276     <xsl:when test="$element = 'preface'">i</xsl:when>
3277     <xsl:when test="$element = 'dedication'">i</xsl:when>
3278     <xsl:when test="$element = 'acknowledgements'">i</xsl:when>
3279     <xsl:otherwise>1</xsl:otherwise>
3280   </xsl:choose>
3281 </xsl:template>
3282
3283 <xsl:template name="initial.page.number">
3284   <xsl:param name="element" select="local-name(.)"/>
3285   <xsl:param name="master-reference" select="''"/>
3286
3287   <xsl:variable name="first">
3288     <xsl:choose>
3289       <xsl:when test="$force.blank.pages = 0">auto</xsl:when>
3290       <xsl:otherwise>auto-odd</xsl:otherwise>
3291     </xsl:choose>
3292   </xsl:variable>
3293   <!-- Select the first content that the stylesheet places
3294        after the TOC -->
3295   <xsl:variable name="first.book.content" 
3296                 select="ancestor::d:book/*[
3297                           not(self::d:title or
3298                               self::d:subtitle or
3299                               self::d:titleabbrev or
3300                               self::d:bookinfo or
3301                               self::d:info or
3302                               self::d:dedication or
3303                               self::d:acknowledgements or
3304                               self::d:preface or
3305                               self::d:toc or
3306                               self::d:lot)][1]"/>
3307   <xsl:choose>
3308     <!-- double-sided output -->
3309     <xsl:when test="$double.sided != 0">
3310       <xsl:choose>
3311         <xsl:when test="$element = 'toc'"><xsl:value-of select="$first"/></xsl:when>
3312         <xsl:when test="$element = 'book'"><xsl:value-of select="$first"/></xsl:when>
3313         <!-- preface typically continues TOC roman numerals -->
3314         <!-- If changed to 1 here, then change page.number.format too -->
3315         <xsl:when test="$element = 'preface'"><xsl:value-of select="$first"/></xsl:when>
3316         <xsl:when test="($element = 'dedication' or $element = 'article') 
3317                     and not(preceding::d:chapter
3318                             or preceding::d:preface
3319                             or preceding::d:appendix
3320                             or preceding::d:article
3321                             or preceding::d:dedication
3322                             or parent::d:part
3323                             or parent::d:reference)">1</xsl:when>
3324         <xsl:when test="generate-id($first.book.content) =
3325                         generate-id(.)">1</xsl:when>
3326         <xsl:otherwise><xsl:value-of select="$first"/></xsl:otherwise>
3327       </xsl:choose>
3328     </xsl:when>
3329
3330     <!-- single-sided output -->
3331     <xsl:otherwise>
3332       <xsl:choose>
3333         <xsl:when test="$element = 'toc'">auto</xsl:when>
3334         <xsl:when test="$element = 'book'">auto</xsl:when>
3335         <xsl:when test="$element = 'preface'">auto</xsl:when>
3336        <xsl:when test="($element = 'dedication' or $element = 'article') and
3337                         not(preceding::d:chapter
3338                             or preceding::d:preface
3339                             or preceding::d:appendix
3340                             or preceding::d:article
3341                             or preceding::d:dedication
3342                             or parent::d:part
3343                             or parent::d:reference)">1</xsl:when>
3344         <xsl:when test="generate-id($first.book.content) =
3345                         generate-id(.)">1</xsl:when>
3346         <xsl:otherwise>auto</xsl:otherwise>
3347       </xsl:choose>
3348     </xsl:otherwise>
3349   </xsl:choose>
3350 </xsl:template>
3351
3352 <xsl:template name="force.page.count">
3353   <xsl:param name="element" select="local-name(.)"/>
3354   <xsl:param name="master-reference" select="''"/>
3355
3356   <xsl:choose>
3357     <!-- no automatic even blank pages at end of chapters -->
3358     <xsl:when test="$force.blank.pages = 0">no-force</xsl:when>
3359     <!-- double-sided output -->
3360     <xsl:when test="$double.sided != 0">end-on-even</xsl:when>
3361     <!-- single-sided output -->
3362     <xsl:otherwise>no-force</xsl:otherwise>
3363   </xsl:choose>
3364 </xsl:template>
3365
3366 <xsl:template name="set.flow.properties">
3367   <xsl:param name="element" select="local-name(.)"/>
3368   <xsl:param name="master-reference" select="''"/>
3369
3370   <!-- This template is called after each <fo:flow> starts. -->
3371   <!-- Customize this template to set attributes on fo:flow -->
3372
3373   <!-- remove -draft from reference -->
3374   <xsl:variable name="pageclass">
3375     <xsl:choose>
3376       <xsl:when test="contains($master-reference, '-draft')">
3377         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
3378       </xsl:when>
3379       <xsl:otherwise>
3380         <xsl:value-of select="$master-reference"/>
3381       </xsl:otherwise>
3382     </xsl:choose>
3383   </xsl:variable>
3384
3385   <xsl:choose>
3386     <xsl:when test="$fop.extensions != 0">
3387       <!-- body.start.indent does not work well with these processors -->
3388     </xsl:when>
3389     <xsl:when test="starts-with($pageclass, 'body') or
3390                     starts-with($pageclass, 'lot') or
3391                     starts-with($pageclass, 'front') or
3392                     $element = 'preface' or
3393                     (starts-with($pageclass, 'back') and
3394                     $element = 'appendix')">
3395       <xsl:attribute name="start-indent">
3396         <xsl:value-of select="$body.start.indent"/>
3397       </xsl:attribute>
3398       <xsl:attribute name="end-indent">
3399         <xsl:value-of select="$body.end.indent"/>
3400       </xsl:attribute>
3401     </xsl:when>
3402   </xsl:choose>
3403
3404 </xsl:template>
3405 <!-- ==================================================================== -->
3406
3407 <!-- Customize this template for custom side regions -->
3408 <xsl:template name="region.inner">
3409   <xsl:param name="sequence">blank</xsl:param>
3410   <xsl:param name="classname">blank</xsl:param>
3411
3412   <xsl:choose>
3413     <xsl:when test="$sequence = 'first' or $sequence = 'odd'">
3414       <fo:region-start xsl:use-attribute-sets="region.inner.properties">
3415         <xsl:attribute name="region-name">
3416           <xsl:text>xsl-region-inner-</xsl:text>
3417           <xsl:value-of select="$sequence"/>
3418         </xsl:attribute>
3419         <xsl:attribute name="precedence">
3420           <xsl:value-of select="$region.start.precedence"/>
3421         </xsl:attribute>
3422         <xsl:attribute name="extent">
3423           <xsl:value-of select="$region.inner.extent"/>
3424         </xsl:attribute>
3425       </fo:region-start>
3426     </xsl:when>
3427     <xsl:otherwise>
3428       <fo:region-end xsl:use-attribute-sets="region.inner.properties">
3429         <xsl:attribute name="region-name">
3430           <xsl:text>xsl-region-inner-</xsl:text>
3431           <xsl:value-of select="$sequence"/>
3432         </xsl:attribute>
3433         <xsl:attribute name="precedence">
3434           <xsl:value-of select="$region.end.precedence"/>
3435         </xsl:attribute>
3436         <xsl:attribute name="extent">
3437           <xsl:value-of select="$region.inner.extent"/>
3438         </xsl:attribute>
3439       </fo:region-end>
3440     </xsl:otherwise>
3441   </xsl:choose>
3442 </xsl:template>
3443
3444 <!-- Customize this template for custom side regions -->
3445 <xsl:template name="region.outer">
3446   <xsl:param name="sequence">blank</xsl:param>
3447   <xsl:param name="classname">blank</xsl:param>
3448
3449   <xsl:choose>
3450     <xsl:when test="$sequence = 'first' or $sequence = 'odd'">
3451       <fo:region-end xsl:use-attribute-sets="region.outer.properties">
3452         <xsl:attribute name="region-name">
3453           <xsl:text>xsl-region-outer-</xsl:text>
3454           <xsl:value-of select="$sequence"/>
3455         </xsl:attribute>
3456         <xsl:attribute name="precedence">
3457           <xsl:value-of select="$region.start.precedence"/>
3458         </xsl:attribute>
3459         <xsl:attribute name="extent">
3460           <xsl:value-of select="$region.outer.extent"/>
3461         </xsl:attribute>
3462       </fo:region-end>
3463     </xsl:when>
3464     <xsl:otherwise>
3465       <fo:region-start xsl:use-attribute-sets="region.outer.properties">
3466         <xsl:attribute name="region-name">
3467           <xsl:text>xsl-region-outer-</xsl:text>
3468           <xsl:value-of select="$sequence"/>
3469         </xsl:attribute>
3470         <xsl:attribute name="precedence">
3471           <xsl:value-of select="$region.end.precedence"/>
3472         </xsl:attribute>
3473         <xsl:attribute name="extent">
3474           <xsl:value-of select="$region.outer.extent"/>
3475         </xsl:attribute>
3476       </fo:region-start>
3477     </xsl:otherwise>
3478   </xsl:choose>
3479 </xsl:template>
3480
3481 </xsl:stylesheet>