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