root/docs/docbook-xsl/fo/pagesetup.xsl

Revision 23dea7e00df87480acb58bb3398283c2bb227949, 95.5 kB (checked in by Theo Schlossnagle <jesus@omniti.com>, 3 years ago)

pull docs into master

  • Property mode set to 100644
Line 
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,v 1.56 2005/07/27 17:16:36 bobstayton Exp $
8      ********************************************************************
9
10      This file is part of the DocBook XSL Stylesheet distribution.
11      See ../README or http://docbook.sf.net/ for copyright
12      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 <!-- PassiveTeX can't handle the math expression for
33      title.margin.left being negative, so ignore it.
34      margin-left="{$page.margin.outer} - {$title.margin.left}"
35 -->
36 <xsl:param name="margin.left.outer">
37   <xsl:choose>
38     <xsl:when test="$passivetex.extensions != 0">
39       <xsl:value-of select="$page.margin.outer"/>
40     </xsl:when>
41     <xsl:otherwise>
42       <xsl:value-of select="$page.margin.outer"/>
43       <xsl:text> - </xsl:text>
44       <xsl:value-of select="$title.margin.left"/>
45     </xsl:otherwise>
46   </xsl:choose>
47 </xsl:param>
48
49 <xsl:param name="margin.left.inner">
50   <xsl:choose>
51     <xsl:when test="$passivetex.extensions != 0">
52       <xsl:value-of select="$page.margin.inner"/>
53     </xsl:when>
54     <xsl:otherwise>
55       <xsl:value-of select="$page.margin.inner"/>
56       <xsl:text> - </xsl:text>
57       <xsl:value-of select="$title.margin.left"/>
58     </xsl:otherwise>
59   </xsl:choose>
60 </xsl:param>
61
62 <xsl:template name="setup.pagemasters">
63   <fo:layout-master-set>
64     <!-- blank pages -->
65     <fo:simple-page-master master-name="blank"
66                            page-width="{$page.width}"
67                            page-height="{$page.height}"
68                            margin-top="{$page.margin.top}"
69                            margin-bottom="{$page.margin.bottom}"
70                            margin-left="{$margin.left.outer}"
71                            margin-right="{$page.margin.inner}">
72       <fo:region-body display-align="center"
73                       margin-bottom="{$body.margin.bottom}"
74                       margin-top="{$body.margin.top}">
75         <xsl:if test="$fop.extensions = 0">
76           <xsl:attribute name="region-name">blank-body</xsl:attribute>
77         </xsl:if>
78       </fo:region-body>
79       <fo:region-before region-name="xsl-region-before-blank"
80                         extent="{$region.before.extent}"
81                         display-align="before"/>
82       <fo:region-after region-name="xsl-region-after-blank"
83                        extent="{$region.after.extent}"
84                         display-align="after"/>
85     </fo:simple-page-master>
86
87     <!-- title pages -->
88     <fo:simple-page-master master-name="titlepage-first"
89                            page-width="{$page.width}"
90                            page-height="{$page.height}"
91                            margin-top="{$page.margin.top}"
92                            margin-bottom="{$page.margin.bottom}"
93                            margin-left="{$margin.left.inner}"
94                            margin-right="{$page.margin.outer}">
95       <fo:region-body margin-bottom="{$body.margin.bottom}"
96                       margin-top="{$body.margin.top}"
97                       column-gap="{$column.gap.titlepage}"
98                       column-count="{$column.count.titlepage}">
99       </fo:region-body>
100       <fo:region-before region-name="xsl-region-before-first"
101                         extent="{$region.before.extent}"
102                         display-align="before"/>
103       <fo:region-after region-name="xsl-region-after-first"
104                        extent="{$region.after.extent}"
105                         display-align="after"/>
106     </fo:simple-page-master>
107
108     <fo:simple-page-master master-name="titlepage-odd"
109                            page-width="{$page.width}"
110                            page-height="{$page.height}"
111                            margin-top="{$page.margin.top}"
112                            margin-bottom="{$page.margin.bottom}"
113                            margin-left="{$margin.left.inner}"
114                            margin-right="{$page.margin.outer}">
115       <fo:region-body margin-bottom="{$body.margin.bottom}"
116                       margin-top="{$body.margin.top}"
117                       column-gap="{$column.gap.titlepage}"
118                       column-count="{$column.count.titlepage}">
119       </fo:region-body>
120       <fo:region-before region-name="xsl-region-before-odd"
121                         extent="{$region.before.extent}"
122                         display-align="before"/>
123       <fo:region-after region-name="xsl-region-after-odd"
124                        extent="{$region.after.extent}"
125                         display-align="after"/>
126     </fo:simple-page-master>
127
128     <fo:simple-page-master master-name="titlepage-even"
129                            page-width="{$page.width}"
130                            page-height="{$page.height}"
131                            margin-top="{$page.margin.top}"
132                            margin-bottom="{$page.margin.bottom}"
133                            margin-left="{$margin.left.outer}"
134                            margin-right="{$page.margin.inner}">
135       <fo:region-body margin-bottom="{$body.margin.bottom}"
136                       margin-top="{$body.margin.top}"
137                       column-gap="{$column.gap.titlepage}"
138                       column-count="{$column.count.titlepage}">
139       </fo:region-body>
140       <fo:region-before region-name="xsl-region-before-even"
141                         extent="{$region.before.extent}"
142                         display-align="before"/>
143       <fo:region-after region-name="xsl-region-after-even"
144                        extent="{$region.after.extent}"
145                         display-align="after"/>
146     </fo:simple-page-master>
147
148     <!-- list-of-title pages -->
149     <fo:simple-page-master master-name="lot-first"
150                            page-width="{$page.width}"
151                            page-height="{$page.height}"
152                            margin-top="{$page.margin.top}"
153                            margin-bottom="{$page.margin.bottom}"
154                            margin-left="{$margin.left.inner}"
155                            margin-right="{$page.margin.outer}">
156       <fo:region-body margin-bottom="{$body.margin.bottom}"
157                       margin-top="{$body.margin.top}"
158                       column-gap="{$column.gap.lot}"
159                       column-count="{$column.count.lot}">
160       </fo:region-body>
161       <fo:region-before region-name="xsl-region-before-first"
162                         extent="{$region.before.extent}"
163                         display-align="before"/>
164       <fo:region-after region-name="xsl-region-after-first"
165                        extent="{$region.after.extent}"
166                        display-align="after"/>
167     </fo:simple-page-master>
168
169     <fo:simple-page-master master-name="lot-odd"
170                            page-width="{$page.width}"
171                            page-height="{$page.height}"
172                            margin-top="{$page.margin.top}"
173                            margin-bottom="{$page.margin.bottom}"
174                            margin-left="{$margin.left.inner}"
175                            margin-right="{$page.margin.outer}">
176       <fo:region-body margin-bottom="{$body.margin.bottom}"
177                       margin-top="{$body.margin.top}"
178                       column-gap="{$column.gap.lot}"
179                       column-count="{$column.count.lot}">
180       </fo:region-body>
181       <fo:region-before region-name="xsl-region-before-odd"
182                         extent="{$region.before.extent}"
183                         display-align="before"/>
184       <fo:region-after region-name="xsl-region-after-odd"
185                        extent="{$region.after.extent}"
186                         display-align="after"/>
187     </fo:simple-page-master>
188
189     <fo:simple-page-master master-name="lot-even"
190                            page-width="{$page.width}"
191                            page-height="{$page.height}"
192                            margin-top="{$page.margin.top}"
193                            margin-bottom="{$page.margin.bottom}"
194                            margin-left="{$margin.left.outer}"
195                            margin-right="{$page.margin.inner}">
196       <fo:region-body margin-bottom="{$body.margin.bottom}"
197                       margin-top="{$body.margin.top}"
198                       column-gap="{$column.gap.lot}"
199                       column-count="{$column.count.lot}">
200       </fo:region-body>
201       <fo:region-before region-name="xsl-region-before-even"
202                         extent="{$region.before.extent}"
203                         display-align="before"/>
204       <fo:region-after region-name="xsl-region-after-even"
205                        extent="{$region.after.extent}"
206                         display-align="after"/>
207     </fo:simple-page-master>
208
209     <!-- frontmatter pages -->
210     <fo:simple-page-master master-name="front-first"
211                            page-width="{$page.width}"
212                            page-height="{$page.height}"
213                            margin-top="{$page.margin.top}"
214                            margin-bottom="{$page.margin.bottom}"
215                            margin-left="{$margin.left.inner}"
216                            margin-right="{$page.margin.outer}">
217       <fo:region-body margin-bottom="{$body.margin.bottom}"
218                       margin-top="{$body.margin.top}"
219                       column-gap="{$column.gap.front}"
220                       column-count="{$column.count.front}">
221       </fo:region-body>
222       <fo:region-before region-name="xsl-region-before-first"
223                         extent="{$region.before.extent}"
224                         display-align="before"/>
225       <fo:region-after region-name="xsl-region-after-first"
226                        extent="{$region.after.extent}"
227                         display-align="after"/>
228     </fo:simple-page-master>
229
230     <fo:simple-page-master master-name="front-odd"
231                            page-width="{$page.width}"
232                            page-height="{$page.height}"
233                            margin-top="{$page.margin.top}"
234                            margin-bottom="{$page.margin.bottom}"
235                            margin-left="{$margin.left.inner}"
236                            margin-right="{$page.margin.outer}">
237       <fo:region-body margin-bottom="{$body.margin.bottom}"
238                       margin-top="{$body.margin.top}"
239                       column-gap="{$column.gap.front}"
240                       column-count="{$column.count.front}">
241       </fo:region-body>
242       <fo:region-before region-name="xsl-region-before-odd"
243                         extent="{$region.before.extent}"
244                         display-align="before"/>
245       <fo:region-after region-name="xsl-region-after-odd"
246                        extent="{$region.after.extent}"
247                         display-align="after"/>
248     </fo:simple-page-master>
249
250     <fo:simple-page-master master-name="front-even"
251                            page-width="{$page.width}"
252                            page-height="{$page.height}"
253                            margin-top="{$page.margin.top}"
254                            margin-bottom="{$page.margin.bottom}"
255                            margin-left="{$margin.left.outer}"
256                            margin-right="{$page.margin.inner}">
257       <fo:region-body margin-bottom="{$body.margin.bottom}"
258                       margin-top="{$body.margin.top}"
259                       column-gap="{$column.gap.front}"
260                       column-count="{$column.count.front}">
261       </fo:region-body>
262       <fo:region-before region-name="xsl-region-before-even"
263                         extent="{$region.before.extent}"
264                         display-align="before"/>
265       <fo:region-after region-name="xsl-region-after-even"
266                        extent="{$region.after.extent}"
267                         display-align="after"/>
268     </fo:simple-page-master>
269
270     <!-- body pages -->
271     <fo:simple-page-master master-name="body-first"
272                            page-width="{$page.width}"
273                            page-height="{$page.height}"
274                            margin-top="{$page.margin.top}"
275                            margin-bottom="{$page.margin.bottom}"
276                            margin-left="{$margin.left.inner}"
277                            margin-right="{$page.margin.outer}">
278       <fo:region-body margin-bottom="{$body.margin.bottom}"
279                       margin-top="{$body.margin.top}"
280                       column-gap="{$column.gap.body}"
281                       column-count="{$column.count.body}">
282       </fo:region-body>
283       <fo:region-before region-name="xsl-region-before-first"
284                         extent="{$region.before.extent}"
285                         display-align="before"/>
286       <fo:region-after region-name="xsl-region-after-first"
287                        extent="{$region.after.extent}"
288                        display-align="after"/>
289     </fo:simple-page-master>
290
291     <fo:simple-page-master master-name="body-odd"
292                            page-width="{$page.width}"
293                            page-height="{$page.height}"
294                            margin-top="{$page.margin.top}"
295                            margin-bottom="{$page.margin.bottom}"
296                            margin-left="{$margin.left.inner}"
297                            margin-right="{$page.margin.outer}">
298       <fo:region-body margin-bottom="{$body.margin.bottom}"
299                       margin-top="{$body.margin.top}"
300                       column-gap="{$column.gap.body}"
301                       column-count="{$column.count.body}">
302       </fo:region-body>
303       <fo:region-before region-name="xsl-region-before-odd"
304                         extent="{$region.before.extent}"
305                         display-align="before"/>
306       <fo:region-after region-name="xsl-region-after-odd"
307                        extent="{$region.after.extent}"
308                        display-align="after"/>
309     </fo:simple-page-master>
310
311     <fo:simple-page-master master-name="body-even"
312                            page-width="{$page.width}"
313                            page-height="{$page.height}"
314                            margin-top="{$page.margin.top}"
315                            margin-bottom="{$page.margin.bottom}"
316                            margin-left="{$margin.left.outer}"
317                            margin-right="{$page.margin.inner}">
318       <fo:region-body margin-bottom="{$body.margin.bottom}"
319                       margin-top="{$body.margin.top}"
320                       column-gap="{$column.gap.body}"
321                       column-count="{$column.count.body}">
322       </fo:region-body>
323       <fo:region-before region-name="xsl-region-before-even"
324                         extent="{$region.before.extent}"
325                         display-align="before"/>
326       <fo:region-after region-name="xsl-region-after-even"
327                        extent="{$region.after.extent}"
328                        display-align="after"/>
329     </fo:simple-page-master>
330
331     <!-- backmatter pages -->
332     <fo:simple-page-master master-name="back-first"
333                            page-width="{$page.width}"
334                            page-height="{$page.height}"
335                            margin-top="{$page.margin.top}"
336                            margin-bottom="{$page.margin.bottom}"
337                            margin-left="{$margin.left.inner}"
338                            margin-right="{$page.margin.outer}">
339       <fo:region-body margin-bottom="{$body.margin.bottom}"
340                       margin-top="{$body.margin.top}"
341                       column-gap="{$column.gap.back}"
342                       column-count="{$column.count.back}">
343       </fo:region-body>
344       <fo:region-before region-name="xsl-region-before-first"
345                         extent="{$region.before.extent}"
346                         display-align="before"/>
347       <fo:region-after region-name="xsl-region-after-first"
348                        extent="{$region.after.extent}"
349                        display-align="after"/>
350     </fo:simple-page-master>
351
352     <fo:simple-page-master master-name="back-odd"
353                            page-width="{$page.width}"
354                            page-height="{$page.height}"
355                            margin-top="{$page.margin.top}"
356                            margin-bottom="{$page.margin.bottom}"
357                            margin-left="{$margin.left.inner}"
358                            margin-right="{$page.margin.outer}">
359       <fo:region-body margin-bottom="{$body.margin.bottom}"
360                       margin-top="{$body.margin.top}"
361                       column-gap="{$column.gap.back}"
362                       column-count="{$column.count.back}">
363       </fo:region-body>
364       <fo:region-before region-name="xsl-region-before-odd"
365                         extent="{$region.before.extent}"
366                         display-align="before"/>
367       <fo:region-after region-name="xsl-region-after-odd"
368                        extent="{$region.after.extent}"
369                        display-align="after"/>
370     </fo:simple-page-master>
371
372     <fo:simple-page-master master-name="back-even"
373                            page-width="{$page.width}"
374                            page-height="{$page.height}"
375                            margin-top="{$page.margin.top}"
376                            margin-bottom="{$page.margin.bottom}"
377                            margin-left="{$margin.left.outer}"
378                            margin-right="{$page.margin.inner}">
379       <fo:region-body margin-bottom="{$body.margin.bottom}"
380                       margin-top="{$body.margin.top}"
381                       column-gap="{$column.gap.back}"
382                       column-count="{$column.count.back}">
383       </fo:region-body>
384       <fo:region-before region-name="xsl-region-before-even"
385                         extent="{$region.before.extent}"
386                         display-align="before"/>
387       <fo:region-after region-name="xsl-region-after-even"
388                        extent="{$region.after.extent}"
389                        display-align="after"/>
390     </fo:simple-page-master>
391
392     <!-- index pages -->
393     <fo:simple-page-master master-name="index-first"
394                            page-width="{$page.width}"
395                            page-height="{$page.height}"
396                            margin-top="{$page.margin.top}"
397                            margin-bottom="{$page.margin.bottom}"
398                            margin-left="{$page.margin.inner}"
399                            margin-right="{$page.margin.outer}">
400       <fo:region-body margin-bottom="{$body.margin.bottom}"
401                       margin-top="{$body.margin.top}"
402                       column-gap="{$column.gap.index}"
403                       column-count="{$column.count.index}">
404       </fo:region-body>
405       <fo:region-before region-name="xsl-region-before-first"
406                         extent="{$region.before.extent}"
407                         display-align="before"/>
408       <fo:region-after region-name="xsl-region-after-first"
409                        extent="{$region.after.extent}"
410                        display-align="after"/>
411     </fo:simple-page-master>
412
413     <fo:simple-page-master master-name="index-odd"
414                            page-width="{$page.width}"
415                            page-height="{$page.height}"
416                            margin-top="{$page.margin.top}"
417                            margin-bottom="{$page.margin.bottom}"
418                            margin-left="{$page.margin.inner}"
419                            margin-right="{$page.margin.outer}">
420       <fo:region-body margin-bottom="{$body.margin.bottom}"
421                       margin-top="{$body.margin.top}"
422                       column-gap="{$column.gap.index}"
423                       column-count="{$column.count.index}">
424       </fo:region-body>
425       <fo:region-before region-name="xsl-region-before-odd"
426                         extent="{$region.before.extent}"
427                         display-align="before"/>
428       <fo:region-after region-name="xsl-region-after-odd"
429                        extent="{$region.after.extent}"
430                        display-align="after"/>
431     </fo:simple-page-master>
432
433     <fo:simple-page-master master-name="index-even"
434                            page-width="{$page.width}"
435                            page-height="{$page.height}"
436                            margin-top="{$page.margin.top}"
437                            margin-bottom="{$page.margin.bottom}"
438                            margin-left="{$page.margin.outer}"
439                            margin-right="{$page.margin.inner}">
440       <fo:region-body margin-bottom="{$body.margin.bottom}"
441                       margin-top="{$body.margin.top}"
442                       column-gap="{$column.gap.index}"
443                       column-count="{$column.count.index}">
444       </fo:region-body>
445       <fo:region-before region-name="xsl-region-before-even"
446                         extent="{$region.before.extent}"
447                         display-align="before"/>
448       <fo:region-after region-name="xsl-region-after-even"
449                        extent="{$region.after.extent}"
450                        display-align="after"/>
451     </fo:simple-page-master>
452
453     <xsl:if test="$draft.mode != 'no'">
454       <!-- draft blank pages -->
455       <fo:simple-page-master master-name="blank-draft"
456                              page-width="{$page.width}"
457                              page-height="{$page.height}"
458                              margin-top="{$page.margin.top}"
459                              margin-bottom="{$page.margin.bottom}"
460                              margin-left="{$margin.left.outer}"
461                              margin-right="{$page.margin.inner}">
462         <fo:region-body margin-bottom="{$body.margin.bottom}"
463                         margin-top="{$body.margin.top}">
464           <xsl:if test="$draft.watermark.image != ''">
465             <xsl:attribute name="background-image">
466               <xsl:call-template name="fo-external-image">
467                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
468               </xsl:call-template>
469             </xsl:attribute>
470             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
471             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
472             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
473             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
474           </xsl:if>
475         </fo:region-body>
476         <fo:region-before region-name="xsl-region-before-blank"
477                           extent="{$region.before.extent}"
478                           display-align="before"/>
479         <fo:region-after region-name="xsl-region-after-blank"
480                          extent="{$region.after.extent}"
481                          display-align="after"/>
482       </fo:simple-page-master>
483
484       <!-- draft title pages -->
485       <fo:simple-page-master master-name="titlepage-first-draft"
486                              page-width="{$page.width}"
487                              page-height="{$page.height}"
488                              margin-top="{$page.margin.top}"
489                              margin-bottom="{$page.margin.bottom}"
490                              margin-left="{$margin.left.inner}"
491                              margin-right="{$page.margin.outer}">
492         <fo:region-body margin-bottom="{$body.margin.bottom}"
493                         margin-top="{$body.margin.top}"
494                         column-gap="{$column.gap.titlepage}"
495                         column-count="{$column.count.titlepage}">
496           <xsl:if test="$draft.watermark.image != ''">
497             <xsl:attribute name="background-image">
498               <xsl:call-template name="fo-external-image">
499                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
500               </xsl:call-template>
501             </xsl:attribute>
502             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
503             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
504             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
505             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
506           </xsl:if>
507         </fo:region-body>
508         <fo:region-before region-name="xsl-region-before-first"
509                           extent="{$region.before.extent}"
510                           display-align="before"/>
511         <fo:region-after region-name="xsl-region-after-first"
512                          extent="{$region.after.extent}"
513                          display-align="after"/>
514       </fo:simple-page-master>
515
516       <fo:simple-page-master master-name="titlepage-odd-draft"
517                              page-width="{$page.width}"
518                              page-height="{$page.height}"
519                              margin-top="{$page.margin.top}"
520                              margin-bottom="{$page.margin.bottom}"
521                              margin-left="{$margin.left.inner}"
522                              margin-right="{$page.margin.outer}">
523         <fo:region-body margin-bottom="{$body.margin.bottom}"
524                         margin-top="{$body.margin.top}"
525                         column-gap="{$column.gap.titlepage}"
526                         column-count="{$column.count.titlepage}">
527           <xsl:if test="$draft.watermark.image != ''">
528             <xsl:attribute name="background-image">
529               <xsl:call-template name="fo-external-image">
530                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
531               </xsl:call-template>
532             </xsl:attribute>
533             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
534             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
535             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
536             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
537           </xsl:if>
538         </fo:region-body>
539         <fo:region-before region-name="xsl-region-before-odd"
540                           extent="{$region.before.extent}"
541                           display-align="before"/>
542         <fo:region-after region-name="xsl-region-after-odd"
543                          extent="{$region.after.extent}"
544                          display-align="after"/>
545       </fo:simple-page-master>
546
547       <fo:simple-page-master master-name="titlepage-even-draft"
548                              page-width="{$page.width}"
549                              page-height="{$page.height}"
550                              margin-top="{$page.margin.top}"
551                              margin-bottom="{$page.margin.bottom}"
552                              margin-left="{$margin.left.outer}"
553                              margin-right="{$page.margin.inner}">
554         <fo:region-body margin-bottom="{$body.margin.bottom}"
555                         margin-top="{$body.margin.top}"
556                         column-gap="{$column.gap.titlepage}"
557                         column-count="{$column.count.titlepage}">
558           <xsl:if test="$draft.watermark.image != ''">
559             <xsl:attribute name="background-image">
560               <xsl:call-template name="fo-external-image">
561                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
562               </xsl:call-template>
563             </xsl:attribute>
564             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
565             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
566             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
567             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
568           </xsl:if>
569         </fo:region-body>
570         <fo:region-before region-name="xsl-region-before-even"
571                           extent="{$region.before.extent}"
572                           display-align="before"/>
573         <fo:region-after region-name="xsl-region-after-even"
574                          extent="{$region.after.extent}"
575                          display-align="after"/>
576       </fo:simple-page-master>
577
578       <!-- draft list-of-title pages -->
579       <fo:simple-page-master master-name="lot-first-draft"
580                              page-width="{$page.width}"
581                              page-height="{$page.height}"
582                              margin-top="{$page.margin.top}"
583                              margin-bottom="{$page.margin.bottom}"
584                              margin-left="{$margin.left.inner}"
585                              margin-right="{$page.margin.outer}">
586         <fo:region-body margin-bottom="{$body.margin.bottom}"
587                         margin-top="{$body.margin.top}"
588                         column-gap="{$column.gap.lot}"
589                         column-count="{$column.count.lot}">
590           <xsl:if test="$draft.watermark.image != ''">
591             <xsl:attribute name="background-image">
592               <xsl:call-template name="fo-external-image">
593                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
594               </xsl:call-template>
595             </xsl:attribute>
596             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
597             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
598             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
599             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
600           </xsl:if>
601         </fo:region-body>
602         <fo:region-before region-name="xsl-region-before-first"
603                           extent="{$region.before.extent}"
604                           display-align="before"/>
605         <fo:region-after region-name="xsl-region-after-first"
606                          extent="{$region.after.extent}"
607                          display-align="after"/>
608       </fo:simple-page-master>
609
610       <fo:simple-page-master master-name="lot-odd-draft"
611                              page-width="{$page.width}"
612                              page-height="{$page.height}"
613                              margin-top="{$page.margin.top}"
614                              margin-bottom="{$page.margin.bottom}"
615                              margin-left="{$margin.left.inner}"
616                              margin-right="{$page.margin.outer}">
617         <fo:region-body margin-bottom="{$body.margin.bottom}"
618                         margin-top="{$body.margin.top}"
619                         column-gap="{$column.gap.lot}"
620                         column-count="{$column.count.lot}">
621           <xsl:if test="$draft.watermark.image != ''">
622             <xsl:attribute name="background-image">
623               <xsl:call-template name="fo-external-image">
624                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
625               </xsl:call-template>
626             </xsl:attribute>
627             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
628             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
629             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
630             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
631           </xsl:if>
632         </fo:region-body>
633         <fo:region-before region-name="xsl-region-before-odd"
634                           extent="{$region.before.extent}"
635                           display-align="before"/>
636         <fo:region-after region-name="xsl-region-after-odd"
637                          extent="{$region.after.extent}"
638                          display-align="after"/>
639       </fo:simple-page-master>
640
641       <fo:simple-page-master master-name="lot-even-draft"
642                              page-width="{$page.width}"
643                              page-height="{$page.height}"
644                              margin-top="{$page.margin.top}"
645                              margin-bottom="{$page.margin.bottom}"
646                              margin-left="{$margin.left.outer}"
647                              margin-right="{$page.margin.inner}">
648         <fo:region-body margin-bottom="{$body.margin.bottom}"
649                         margin-top="{$body.margin.top}"
650                         column-gap="{$column.gap.lot}"
651                         column-count="{$column.count.lot}">
652           <xsl:if test="$draft.watermark.image != ''">
653             <xsl:attribute name="background-image">
654               <xsl:call-template name="fo-external-image">
655                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
656               </xsl:call-template>
657             </xsl:attribute>
658             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
659             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
660             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
661             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
662           </xsl:if>
663         </fo:region-body>
664         <fo:region-before region-name="xsl-region-before-even"
665                           extent="{$region.before.extent}"
666                           display-align="before"/>
667         <fo:region-after region-name="xsl-region-after-even"
668                          extent="{$region.after.extent}"
669                          display-align="after"/>
670       </fo:simple-page-master>
671
672       <!-- draft frontmatter pages -->
673       <fo:simple-page-master master-name="front-first-draft"
674                              page-width="{$page.width}"
675                              page-height="{$page.height}"
676                              margin-top="{$page.margin.top}"
677                              margin-bottom="{$page.margin.bottom}"
678                              margin-left="{$margin.left.inner}"
679                              margin-right="{$page.margin.outer}">
680         <fo:region-body margin-bottom="{$body.margin.bottom}"
681                         margin-top="{$body.margin.top}"
682                         column-gap="{$column.gap.front}"
683                         column-count="{$column.count.front}">
684           <xsl:if test="$draft.watermark.image != ''">
685             <xsl:attribute name="background-image">
686               <xsl:call-template name="fo-external-image">
687                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
688               </xsl:call-template>
689             </xsl:attribute>
690             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
691             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
692             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
693             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
694           </xsl:if>
695         </fo:region-body>
696         <fo:region-before region-name="xsl-region-before-first"
697                           extent="{$region.before.extent}"
698                           display-align="before"/>
699         <fo:region-after region-name="xsl-region-after-first"
700                          extent="{$region.after.extent}"
701                          display-align="after"/>
702       </fo:simple-page-master>
703
704       <fo:simple-page-master master-name="front-odd-draft"
705                              page-width="{$page.width}"
706                              page-height="{$page.height}"
707                              margin-top="{$page.margin.top}"
708                              margin-bottom="{$page.margin.bottom}"
709                              margin-left="{$margin.left.inner}"
710                              margin-right="{$page.margin.outer}">
711         <fo:region-body margin-bottom="{$body.margin.bottom}"
712                         margin-top="{$body.margin.top}"
713                         column-gap="{$column.gap.front}"
714                         column-count="{$column.count.front}">
715           <xsl:if test="$draft.watermark.image != ''">
716             <xsl:attribute name="background-image">
717               <xsl:call-template name="fo-external-image">
718                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
719               </xsl:call-template>
720             </xsl:attribute>
721             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
722             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
723             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
724             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
725           </xsl:if>
726         </fo:region-body>
727         <fo:region-before region-name="xsl-region-before-odd"
728                           extent="{$region.before.extent}"
729                           display-align="before"/>
730         <fo:region-after region-name="xsl-region-after-odd"
731                          extent="{$region.after.extent}"
732                          display-align="after"/>
733       </fo:simple-page-master>
734
735       <fo:simple-page-master master-name="front-even-draft"
736                              page-width="{$page.width}"
737                              page-height="{$page.height}"
738                              margin-top="{$page.margin.top}"
739                              margin-bottom="{$page.margin.bottom}"
740                              margin-left="{$margin.left.outer}"
741                              margin-right="{$page.margin.inner}">
742         <fo:region-body margin-bottom="{$body.margin.bottom}"
743                         margin-top="{$body.margin.top}"
744                         column-gap="{$column.gap.front}"
745                         column-count="{$column.count.front}">
746           <xsl:if test="$draft.watermark.image != ''">
747             <xsl:attribute name="background-image">
748               <xsl:call-template name="fo-external-image">
749                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
750               </xsl:call-template>
751             </xsl:attribute>
752             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
753             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
754             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
755             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
756           </xsl:if>
757         </fo:region-body>
758         <fo:region-before region-name="xsl-region-before-even"
759                           extent="{$region.before.extent}"
760                           display-align="before"/>
761         <fo:region-after region-name="xsl-region-after-even"
762                          extent="{$region.after.extent}"
763                          display-align="after"/>
764       </fo:simple-page-master>
765
766       <!-- draft body pages -->
767       <fo:simple-page-master master-name="body-first-draft"
768                              page-width="{$page.width}"
769                              page-height="{$page.height}"
770                              margin-top="{$page.margin.top}"
771                              margin-bottom="{$page.margin.bottom}"
772                              margin-left="{$margin.left.inner}"
773                              margin-right="{$page.margin.outer}">
774         <fo:region-body margin-bottom="{$body.margin.bottom}"
775                         margin-top="{$body.margin.top}"
776                         column-gap="{$column.gap.body}"
777                         column-count="{$column.count.body}">
778           <xsl:if test="$draft.watermark.image != ''">
779             <xsl:attribute name="background-image">
780               <xsl:call-template name="fo-external-image">
781                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
782               </xsl:call-template>
783             </xsl:attribute>
784             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
785             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
786             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
787             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
788           </xsl:if>
789         </fo:region-body>
790         <fo:region-before region-name="xsl-region-before-first"
791                           extent="{$region.before.extent}"
792                           display-align="before"/>
793         <fo:region-after region-name="xsl-region-after-first"
794                          extent="{$region.after.extent}"
795                          display-align="after"/>
796       </fo:simple-page-master>
797
798       <fo:simple-page-master master-name="body-odd-draft"
799                              page-width="{$page.width}"
800                              page-height="{$page.height}"
801                              margin-top="{$page.margin.top}"
802                              margin-bottom="{$page.margin.bottom}"
803                              margin-left="{$margin.left.inner}"
804                              margin-right="{$page.margin.outer}">
805         <fo:region-body margin-bottom="{$body.margin.bottom}"
806                         margin-top="{$body.margin.top}"
807                         column-gap="{$column.gap.body}"
808                         column-count="{$column.count.body}">
809           <xsl:if test="$draft.watermark.image != ''">
810             <xsl:attribute name="background-image">
811               <xsl:call-template name="fo-external-image">
812                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
813               </xsl:call-template>
814             </xsl:attribute>
815             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
816             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
817             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
818             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
819           </xsl:if>
820         </fo:region-body>
821         <fo:region-before region-name="xsl-region-before-odd"
822                           extent="{$region.before.extent}"
823                           display-align="before"/>
824         <fo:region-after region-name="xsl-region-after-odd"
825                          extent="{$region.after.extent}"
826                          display-align="after"/>
827       </fo:simple-page-master>
828
829       <fo:simple-page-master master-name="body-even-draft"
830                              page-width="{$page.width}"
831                              page-height="{$page.height}"
832                              margin-top="{$page.margin.top}"
833                              margin-bottom="{$page.margin.bottom}"
834                              margin-left="{$margin.left.outer}"
835                              margin-right="{$page.margin.inner}">
836         <fo:region-body margin-bottom="{$body.margin.bottom}"
837                         margin-top="{$body.margin.top}"
838                         column-gap="{$column.gap.body}"
839                         column-count="{$column.count.body}">
840           <xsl:if test="$draft.watermark.image != ''">
841             <xsl:attribute name="background-image">
842               <xsl:call-template name="fo-external-image">
843                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
844               </xsl:call-template>
845             </xsl:attribute>
846             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
847             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
848             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
849             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
850           </xsl:if>
851         </fo:region-body>
852         <fo:region-before region-name="xsl-region-before-even"
853                           extent="{$region.before.extent}"
854                           display-align="before"/>
855         <fo:region-after region-name="xsl-region-after-even"
856                          extent="{$region.after.extent}"
857                          display-align="after"/>
858       </fo:simple-page-master>
859
860       <!-- draft backmatter pages -->
861       <fo:simple-page-master master-name="back-first-draft"
862                              page-width="{$page.width}"
863                              page-height="{$page.height}"
864                              margin-top="{$page.margin.top}"
865                              margin-bottom="{$page.margin.bottom}"
866                              margin-left="{$margin.left.inner}"
867                              margin-right="{$page.margin.outer}">
868         <fo:region-body margin-bottom="{$body.margin.bottom}"
869                         margin-top="{$body.margin.top}"
870                         column-gap="{$column.gap.back}"
871                         column-count="{$column.count.back}">
872           <xsl:if test="$draft.watermark.image != ''">
873             <xsl:attribute name="background-image">
874               <xsl:call-template name="fo-external-image">
875                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
876               </xsl:call-template>
877             </xsl:attribute>
878             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
879             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
880             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
881             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
882           </xsl:if>
883         </fo:region-body>
884         <fo:region-before region-name="xsl-region-before-first"
885                           extent="{$region.before.extent}"
886                           display-align="before"/>
887         <fo:region-after region-name="xsl-region-after-first"
888                          extent="{$region.after.extent}"
889                          display-align="after"/>
890       </fo:simple-page-master>
891
892       <fo:simple-page-master master-name="back-odd-draft"
893                              page-width="{$page.width}"
894                              page-height="{$page.height}"
895                              margin-top="{$page.margin.top}"
896                              margin-bottom="{$page.margin.bottom}"
897                              margin-left="{$margin.left.inner}"
898                              margin-right="{$page.margin.outer}">
899         <fo:region-body margin-bottom="{$body.margin.bottom}"
900                         margin-top="{$body.margin.top}"
901                         column-gap="{$column.gap.back}"
902                         column-count="{$column.count.back}">
903           <xsl:if test="$draft.watermark.image != ''">
904             <xsl:attribute name="background-image">
905               <xsl:call-template name="fo-external-image">
906                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
907               </xsl:call-template>
908             </xsl:attribute>
909             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
910             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
911             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
912             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
913           </xsl:if>
914         </fo:region-body>
915         <fo:region-before region-name="xsl-region-before-odd"
916                           extent="{$region.before.extent}"
917                           display-align="before"/>
918         <fo:region-after region-name="xsl-region-after-odd"
919                          extent="{$region.after.extent}"
920                          display-align="after"/>
921       </fo:simple-page-master>
922
923       <fo:simple-page-master master-name="back-even-draft"
924                              page-width="{$page.width}"
925                              page-height="{$page.height}"
926                              margin-top="{$page.margin.top}"
927                              margin-bottom="{$page.margin.bottom}"
928                              margin-left="{$margin.left.outer}"
929                              margin-right="{$page.margin.inner}">
930         <fo:region-body margin-bottom="{$body.margin.bottom}"
931                         margin-top="{$body.margin.top}"
932                         column-gap="{$column.gap.back}"
933                         column-count="{$column.count.back}">
934           <xsl:if test="$draft.watermark.image != ''">
935             <xsl:attribute name="background-image">
936               <xsl:call-template name="fo-external-image">
937                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
938               </xsl:call-template>
939             </xsl:attribute>
940             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
941             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
942             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
943             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
944           </xsl:if>
945         </fo:region-body>
946         <fo:region-before region-name="xsl-region-before-even"
947                           extent="{$region.before.extent}"
948                           display-align="before"/>
949         <fo:region-after region-name="xsl-region-after-even"
950                          extent="{$region.after.extent}"
951                          display-align="after"/>
952       </fo:simple-page-master>
953
954       <!-- draft index pages -->
955       <fo:simple-page-master master-name="index-first-draft"
956                              page-width="{$page.width}"
957                              page-height="{$page.height}"
958                              margin-top="{$page.margin.top}"
959                              margin-bottom="{$page.margin.bottom}"
960                              margin-left="{$page.margin.inner}"
961                              margin-right="{$page.margin.outer}">
962         <fo:region-body margin-bottom="{$body.margin.bottom}"
963                         margin-top="{$body.margin.top}"
964                         column-gap="{$column.gap.index}"
965                         column-count="{$column.count.index}">
966           <xsl:if test="$draft.watermark.image != ''">
967             <xsl:attribute name="background-image">
968               <xsl:call-template name="fo-external-image">
969                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
970               </xsl:call-template>
971             </xsl:attribute>
972             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
973             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
974             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
975             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
976           </xsl:if>
977         </fo:region-body>
978         <fo:region-before region-name="xsl-region-before-first"
979                           extent="{$region.before.extent}"
980                           display-align="before"/>
981         <fo:region-after region-name="xsl-region-after-first"
982                          extent="{$region.after.extent}"
983                          display-align="after"/>
984       </fo:simple-page-master>
985
986       <fo:simple-page-master master-name="index-odd-draft"
987                              page-width="{$page.width}"
988                              page-height="{$page.height}"
989                              margin-top="{$page.margin.top}"
990                              margin-bottom="{$page.margin.bottom}"
991                              margin-left="{$page.margin.inner}"
992                              margin-right="{$page.margin.outer}">
993         <fo:region-body margin-bottom="{$body.margin.bottom}"
994                         margin-top="{$body.margin.top}"
995                         column-gap="{$column.gap.index}"
996                         column-count="{$column.count.index}">
997           <xsl:if test="$draft.watermark.image != ''">
998             <xsl:attribute name="background-image">
999               <xsl:call-template name="fo-external-image">
1000                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1001               </xsl:call-template>
1002             </xsl:attribute>
1003             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1004             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1005             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1006             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1007           </xsl:if>
1008         </fo:region-body>
1009         <fo:region-before region-name="xsl-region-before-odd"
1010                           extent="{$region.before.extent}"
1011                           display-align="before"/>
1012         <fo:region-after region-name="xsl-region-after-odd"
1013                          extent="{$region.after.extent}"
1014                          display-align="after"/>
1015       </fo:simple-page-master>
1016
1017       <fo:simple-page-master master-name="index-even-draft"
1018                              page-width="{$page.width}"
1019                              page-height="{$page.height}"
1020                              margin-top="{$page.margin.top}"
1021                              margin-bottom="{$page.margin.bottom}"
1022                              margin-right="{$page.margin.inner}"
1023                              margin-left="{$page.margin.outer}">
1024         <fo:region-body margin-bottom="{$body.margin.bottom}"
1025                         margin-top="{$body.margin.top}"
1026                         column-gap="{$column.gap.index}"
1027                         column-count="{$column.count.index}">
1028           <xsl:if test="$draft.watermark.image != ''">
1029             <xsl:attribute name="background-image">
1030               <xsl:call-template name="fo-external-image">
1031                 <xsl:with-param name="filename" select="$draft.watermark.image"/>
1032               </xsl:call-template>
1033             </xsl:attribute>
1034             <xsl:attribute name="background-attachment">fixed</xsl:attribute>
1035             <xsl:attribute name="background-repeat">no-repeat</xsl:attribute>
1036             <xsl:attribute name="background-position-horizontal">center</xsl:attribute>
1037             <xsl:attribute name="background-position-vertical">center</xsl:attribute>
1038           </xsl:if>
1039         </fo:region-body>
1040         <fo:region-before region-name="xsl-region-before-even"
1041                           extent="{$region.before.extent}"
1042                           display-align="before"/>
1043         <fo:region-after region-name="xsl-region-after-even"
1044                          extent="{$region.after.extent}"
1045                          display-align="after"/>
1046       </fo:simple-page-master>
1047     </xsl:if>
1048
1049     <!-- setup for title page(s) -->
1050     <fo:page-sequence-master master-name="titlepage">
1051       <fo:repeatable-page-master-alternatives>
1052         <fo:conditional-page-master-reference master-reference="blank"
1053                                               blank-or-not-blank="blank"/>
1054         <fo:conditional-page-master-reference master-reference="titlepage-first"
1055                                               page-position="first"/>
1056         <fo:conditional-page-master-reference master-reference="titlepage-odd"
1057                                               odd-or-even="odd"/>
1058         <fo:conditional-page-master-reference
1059                                               odd-or-even="even">
1060           <xsl:attribute name="master-reference">
1061             <xsl:choose>
1062               <xsl:when test="$double.sided != 0">titlepage-even</xsl:when>
1063               <xsl:otherwise>titlepage-odd</xsl:otherwise>
1064             </xsl:choose>
1065           </xsl:attribute>
1066         </fo:conditional-page-master-reference>
1067       </fo:repeatable-page-master-alternatives>
1068     </fo:page-sequence-master>
1069
1070     <!-- setup for lots -->
1071     <fo:page-sequence-master master-name="lot">
1072       <fo:repeatable-page-master-alternatives>
1073         <fo:conditional-page-master-reference master-reference="blank"
1074                                               blank-or-not-blank="blank"/>
1075         <fo:conditional-page-master-reference master-reference="lot-first"
1076                                               page-position="first"/>
1077         <fo:conditional-page-master-reference master-reference="lot-odd"
1078                                               odd-or-even="odd"/>
1079         <fo:conditional-page-master-reference
1080                                               odd-or-even="even">
1081           <xsl:attribute name="master-reference">
1082             <xsl:choose>
1083               <xsl:when test="$double.sided != 0">lot-even</xsl:when>
1084               <xsl:otherwise>lot-odd</xsl:otherwise>
1085             </xsl:choose>
1086           </xsl:attribute>
1087         </fo:conditional-page-master-reference>
1088       </fo:repeatable-page-master-alternatives>
1089     </fo:page-sequence-master>
1090
1091     <!-- setup front matter -->
1092     <fo:page-sequence-master master-name="front">
1093       <fo:repeatable-page-master-alternatives>
1094         <fo:conditional-page-master-reference master-reference="blank"
1095                                               blank-or-not-blank="blank"/>
1096         <fo:conditional-page-master-reference master-reference="front-first"
1097                                               page-position="first"/>
1098         <fo:conditional-page-master-reference master-reference="front-odd"
1099                                               odd-or-even="odd"/>
1100         <fo:conditional-page-master-reference
1101                                               odd-or-even="even">
1102           <xsl:attribute name="master-reference">
1103             <xsl:choose>
1104               <xsl:when test="$double.sided != 0">front-even</xsl:when>
1105               <xsl:otherwise>front-odd</xsl:otherwise>
1106             </xsl:choose>
1107           </xsl:attribute>
1108         </fo:conditional-page-master-reference>
1109       </fo:repeatable-page-master-alternatives>
1110     </fo:page-sequence-master>
1111
1112     <!-- setup for body pages -->
1113     <fo:page-sequence-master master-name="body">
1114       <fo:repeatable-page-master-alternatives>
1115         <fo:conditional-page-master-reference master-reference="blank"
1116                                               blank-or-not-blank="blank"/>
1117         <fo:conditional-page-master-reference master-reference="body-first"
1118                                               page-position="first"/>
1119         <fo:conditional-page-master-reference master-reference="body-odd"
1120                                               odd-or-even="odd"/>
1121         <fo:conditional-page-master-reference
1122                                               odd-or-even="even">
1123           <xsl:attribute name="master-reference">
1124             <xsl:choose>
1125               <xsl:when test="$double.sided != 0">body-even</xsl:when>
1126               <xsl:otherwise>body-odd</xsl:otherwise>
1127             </xsl:choose>
1128           </xsl:attribute>
1129         </fo:conditional-page-master-reference>
1130       </fo:repeatable-page-master-alternatives>
1131     </fo:page-sequence-master>
1132
1133     <!-- setup back matter -->
1134     <fo:page-sequence-master master-name="back">
1135       <fo:repeatable-page-master-alternatives>
1136         <fo:conditional-page-master-reference master-reference="blank"
1137                                               blank-or-not-blank="blank"/>
1138         <fo:conditional-page-master-reference master-reference="back-first"
1139                                               page-position="first"/>
1140         <fo:conditional-page-master-reference master-reference="back-odd"
1141                                               odd-or-even="odd"/>
1142         <fo:conditional-page-master-reference
1143                                               odd-or-even="even">
1144           <xsl:attribute name="master-reference">
1145             <xsl:choose>
1146               <xsl:when test="$double.sided != 0">back-even</xsl:when>
1147               <xsl:otherwise>back-odd</xsl:otherwise>
1148             </xsl:choose>
1149           </xsl:attribute>
1150         </fo:conditional-page-master-reference>
1151       </fo:repeatable-page-master-alternatives>
1152     </fo:page-sequence-master>
1153
1154     <!-- setup back matter -->
1155     <fo:page-sequence-master master-name="index">
1156       <fo:repeatable-page-master-alternatives>
1157         <fo:conditional-page-master-reference master-reference="blank"
1158                                               blank-or-not-blank="blank"/>
1159         <fo:conditional-page-master-reference master-reference="index-first"
1160                                               page-position="first"/>
1161         <fo:conditional-page-master-reference master-reference="index-odd"
1162                                               odd-or-even="odd"/>
1163         <fo:conditional-page-master-reference
1164                                               odd-or-even="even">
1165           <xsl:attribute name="master-reference">
1166             <xsl:choose>
1167               <xsl:when test="$double.sided != 0">index-even</xsl:when>
1168               <xsl:otherwise>index-odd</xsl:otherwise>
1169             </xsl:choose>
1170           </xsl:attribute>
1171         </fo:conditional-page-master-reference>
1172       </fo:repeatable-page-master-alternatives>
1173     </fo:page-sequence-master>
1174
1175     <xsl:if test="$draft.mode != 'no'">
1176       <!-- setup for draft title page(s) -->
1177       <fo:page-sequence-master master-name="titlepage-draft">
1178         <fo:repeatable-page-master-alternatives>
1179           <fo:conditional-page-master-reference master-reference="blank-draft"
1180                                                 blank-or-not-blank="blank"/>
1181           <fo:conditional-page-master-reference master-reference="titlepage-first-draft"
1182                                                 page-position="first"/>
1183           <fo:conditional-page-master-reference master-reference="titlepage-odd-draft"
1184                                                 odd-or-even="odd"/>
1185           <fo:conditional-page-master-reference
1186                                                 odd-or-even="even">
1187             <xsl:attribute name="master-reference">
1188               <xsl:choose>
1189                 <xsl:when test="$double.sided != 0">titlepage-even-draft</xsl:when>
1190                 <xsl:otherwise>titlepage-odd-draft</xsl:otherwise>
1191               </xsl:choose>
1192             </xsl:attribute>
1193           </fo:conditional-page-master-reference>
1194         </fo:repeatable-page-master-alternatives>
1195       </fo:page-sequence-master>
1196
1197       <!-- setup for draft lots -->
1198       <fo:page-sequence-master master-name="lot-draft">
1199         <fo:repeatable-page-master-alternatives>
1200           <fo:conditional-page-master-reference master-reference="blank-draft"
1201                                                 blank-or-not-blank="blank"/>
1202           <fo:conditional-page-master-reference master-reference="lot-first-draft"
1203                                                 page-position="first"/>
1204           <fo:conditional-page-master-reference master-reference="lot-odd-draft"
1205                                                 odd-or-even="odd"/>
1206           <fo:conditional-page-master-reference
1207                                                 odd-or-even="even">
1208             <xsl:attribute name="master-reference">
1209               <xsl:choose>
1210                 <xsl:when test="$double.sided != 0">lot-even-draft</xsl:when>
1211                 <xsl:otherwise>lot-odd-draft</xsl:otherwise>
1212               </xsl:choose>
1213             </xsl:attribute>
1214           </fo:conditional-page-master-reference>
1215         </fo:repeatable-page-master-alternatives>
1216       </fo:page-sequence-master>
1217
1218       <!-- setup draft front matter -->
1219       <fo:page-sequence-master master-name="front-draft">
1220         <fo:repeatable-page-master-alternatives>
1221           <fo:conditional-page-master-reference master-reference="blank-draft"
1222                                                 blank-or-not-blank="blank"/>
1223           <fo:conditional-page-master-reference master-reference="front-first-draft"
1224                                                 page-position="first"/>
1225           <fo:conditional-page-master-reference master-reference="front-odd-draft"
1226                                                 odd-or-even="odd"/>
1227           <fo:conditional-page-master-reference
1228                                                 odd-or-even="even">
1229             <xsl:attribute name="master-reference">
1230               <xsl:choose>
1231                 <xsl:when test="$double.sided != 0">front-even-draft</xsl:when>
1232                 <xsl:otherwise>front-odd-draft</xsl:otherwise>
1233               </xsl:choose>
1234             </xsl:attribute>
1235           </fo:conditional-page-master-reference>
1236         </fo:repeatable-page-master-alternatives>
1237       </fo:page-sequence-master>
1238
1239       <!-- setup for draft body pages -->
1240       <fo:page-sequence-master master-name="body-draft">
1241         <fo:repeatable-page-master-alternatives>
1242           <fo:conditional-page-master-reference master-reference="blank-draft"
1243                                                 blank-or-not-blank="blank"/>
1244           <fo:conditional-page-master-reference master-reference="body-first-draft"
1245                                                 page-position="first"/>
1246           <fo:conditional-page-master-reference master-reference="body-odd-draft"
1247                                                 odd-or-even="odd"/>
1248           <fo:conditional-page-master-reference
1249                                                 odd-or-even="even">
1250             <xsl:attribute name="master-reference">
1251               <xsl:choose>
1252                 <xsl:when test="$double.sided != 0">body-even-draft</xsl:when>
1253                 <xsl:otherwise>body-odd-draft</xsl:otherwise>
1254               </xsl:choose>
1255             </xsl:attribute>
1256           </fo:conditional-page-master-reference>
1257         </fo:repeatable-page-master-alternatives>
1258       </fo:page-sequence-master>
1259
1260       <!-- setup draft back matter -->
1261       <fo:page-sequence-master master-name="back-draft">
1262         <fo:repeatable-page-master-alternatives>
1263           <fo:conditional-page-master-reference master-reference="blank-draft"
1264                                                 blank-or-not-blank="blank"/>
1265           <fo:conditional-page-master-reference master-reference="back-first-draft"
1266                                                 page-position="first"/>
1267           <fo:conditional-page-master-reference master-reference="back-odd-draft"
1268                                                 odd-or-even="odd"/>
1269           <fo:conditional-page-master-reference
1270                                                 odd-or-even="even">
1271             <xsl:attribute name="master-reference">
1272               <xsl:choose>
1273                 <xsl:when test="$double.sided != 0">back-even-draft</xsl:when>
1274                 <xsl:otherwise>back-odd-draft</xsl:otherwise>
1275               </xsl:choose>
1276             </xsl:attribute>
1277           </fo:conditional-page-master-reference>
1278         </fo:repeatable-page-master-alternatives>
1279       </fo:page-sequence-master>
1280
1281       <!-- setup draft index pages -->
1282       <fo:page-sequence-master master-name="index-draft">
1283         <fo:repeatable-page-master-alternatives>
1284           <fo:conditional-page-master-reference master-reference="blank-draft"
1285                                                 blank-or-not-blank="blank"/>
1286           <fo:conditional-page-master-reference master-reference="index-first-draft"
1287                                                 page-position="first"/>
1288           <fo:conditional-page-master-reference master-reference="index-odd-draft"
1289                                                 odd-or-even="odd"/>
1290           <fo:conditional-page-master-reference
1291                                                 odd-or-even="even">
1292             <xsl:attribute name="master-reference">
1293               <xsl:choose>
1294                 <xsl:when test="$double.sided != 0">index-even-draft</xsl:when>
1295                 <xsl:otherwise>index-odd-draft</xsl:otherwise>
1296               </xsl:choose>
1297             </xsl:attribute>
1298           </fo:conditional-page-master-reference>
1299         </fo:repeatable-page-master-alternatives>
1300       </fo:page-sequence-master>
1301     </xsl:if>
1302
1303     <xsl:call-template name="user.pagemasters"/>
1304
1305     </fo:layout-master-set>
1306 </xsl:template>
1307
1308 <!-- ==================================================================== -->
1309
1310 <xsl:template name="user.pagemasters"/> <!-- intentionally empty -->
1311
1312 <!-- ==================================================================== -->
1313
1314 <xsl:template name="select.pagemaster">
1315   <xsl:param name="element" select="local-name(.)"/>
1316   <xsl:param name="pageclass" select="''"/>
1317
1318   <xsl:variable name="pagemaster">
1319     <xsl:choose>
1320       <xsl:when test="$pageclass != ''">
1321         <xsl:value-of select="$pageclass"/>
1322       </xsl:when>
1323       <xsl:when test="$pageclass = 'lot'">lot</xsl:when>
1324       <xsl:when test="$element = 'dedication'">front</xsl:when>
1325       <xsl:when test="$element = 'preface'">front</xsl:when>
1326       <xsl:when test="$element = 'appendix'">back</xsl:when>
1327       <xsl:when test="$element = 'glossary'">back</xsl:when>
1328       <xsl:when test="$element = 'bibliography'">back</xsl:when>
1329       <xsl:when test="$element = 'index'">index</xsl:when>
1330       <xsl:when test="$element = 'colophon'">back</xsl:when>
1331       <xsl:otherwise>body</xsl:otherwise>
1332     </xsl:choose>
1333
1334     <xsl:choose>
1335       <xsl:when test="$draft.mode = 'yes'">
1336         <xsl:text>-draft</xsl:text>
1337       </xsl:when>
1338       <xsl:when test="$draft.mode = 'no'">
1339         <!-- nop -->
1340       </xsl:when>
1341       <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
1342         <xsl:text>-draft</xsl:text>
1343       </xsl:when>
1344       <xsl:otherwise>
1345         <!-- nop -->
1346       </xsl:otherwise>
1347     </xsl:choose>
1348   </xsl:variable>
1349
1350   <xsl:call-template name="select.user.pagemaster">
1351     <xsl:with-param name="element" select="$element"/>
1352     <xsl:with-param name="pageclass" select="$pageclass"/>
1353     <xsl:with-param name="default-pagemaster" select="$pagemaster"/>
1354   </xsl:call-template>
1355 </xsl:template>
1356
1357 <xsl:template name="select.user.pagemaster">
1358   <xsl:param name="element"/>
1359   <xsl:param name="pageclass"/>
1360   <xsl:param name="default-pagemaster"/>
1361
1362   <!-- by default, return the default. But if you've created your own
1363        pagemasters in user.pagemasters, you might want to select one here. -->
1364   <xsl:value-of select="$default-pagemaster"/>
1365 </xsl:template>
1366
1367 <!-- ==================================================================== -->
1368
1369 <xsl:template name="head.sep.rule">
1370   <xsl:param name="pageclass"/>
1371   <xsl:param name="sequence"/>
1372   <xsl:param name="gentext-key"/>
1373
1374   <xsl:if test="$header.rule != 0">
1375     <xsl:attribute name="border-bottom-width">0.5pt</xsl:attribute>
1376     <xsl:attribute name="border-bottom-style">solid</xsl:attribute>
1377     <xsl:attribute name="border-bottom-color">black</xsl:attribute>
1378   </xsl:if>
1379 </xsl:template>
1380
1381 <xsl:template name="foot.sep.rule">
1382   <xsl:param name="pageclass"/>
1383   <xsl:param name="sequence"/>
1384   <xsl:param name="gentext-key"/>
1385
1386   <xsl:if test="$footer.rule != 0">
1387     <xsl:attribute name="border-top-width">0.5pt</xsl:attribute>
1388     <xsl:attribute name="border-top-style">solid</xsl:attribute>
1389     <xsl:attribute name="border-top-color">black</xsl:attribute>
1390   </xsl:if>
1391 </xsl:template>
1392
1393 <!-- ==================================================================== -->
1394
1395 <xsl:template match="*" mode="running.head.mode">
1396   <xsl:param name="master-reference" select="'unknown'"/>
1397   <xsl:param name="gentext-key" select="name(.)"/>
1398
1399   <!-- remove -draft from reference -->
1400   <xsl:variable name="pageclass">
1401     <xsl:choose>
1402       <xsl:when test="contains($master-reference, '-draft')">
1403         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
1404       </xsl:when>
1405       <xsl:otherwise>
1406         <xsl:value-of select="$master-reference"/>
1407       </xsl:otherwise>
1408     </xsl:choose>
1409   </xsl:variable>
1410
1411   <fo:static-content flow-name="xsl-region-before-first">
1412     <fo:block xsl:use-attribute-sets="header.content.properties">
1413       <xsl:call-template name="header.table">
1414         <xsl:with-param name="pageclass" select="$pageclass"/>
1415         <xsl:with-param name="sequence" select="'first'"/>
1416         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1417       </xsl:call-template>
1418     </fo:block>
1419   </fo:static-content>
1420
1421   <fo:static-content flow-name="xsl-region-before-odd">
1422     <fo:block xsl:use-attribute-sets="header.content.properties">
1423       <xsl:call-template name="header.table">
1424         <xsl:with-param name="pageclass" select="$pageclass"/>
1425         <xsl:with-param name="sequence" select="'odd'"/>
1426         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1427       </xsl:call-template>
1428     </fo:block>
1429   </fo:static-content>
1430
1431   <fo:static-content flow-name="xsl-region-before-even">
1432     <fo:block xsl:use-attribute-sets="header.content.properties">
1433       <xsl:call-template name="header.table">
1434         <xsl:with-param name="pageclass" select="$pageclass"/>
1435         <xsl:with-param name="sequence" select="'even'"/>
1436         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1437       </xsl:call-template>
1438     </fo:block>
1439   </fo:static-content>
1440
1441   <fo:static-content flow-name="xsl-region-before-blank">
1442     <fo:block xsl:use-attribute-sets="header.content.properties">
1443       <xsl:call-template name="header.table">
1444         <xsl:with-param name="pageclass" select="$pageclass"/>
1445         <xsl:with-param name="sequence" select="'blank'"/>
1446         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1447       </xsl:call-template>
1448     </fo:block>
1449   </fo:static-content>
1450
1451   <xsl:call-template name="footnote-separator"/>
1452
1453   <xsl:if test="$fop.extensions = 0">
1454     <xsl:call-template name="blank.page.content"/>
1455   </xsl:if>
1456 </xsl:template>
1457
1458 <xsl:template name="footnote-separator">
1459   <fo:static-content flow-name="xsl-footnote-separator">
1460     <fo:block>
1461       <fo:leader xsl:use-attribute-sets="footnote.sep.leader.properties"/>
1462     </fo:block>
1463   </fo:static-content>
1464 </xsl:template>
1465
1466 <xsl:template name="blank.page.content">
1467   <fo:static-content flow-name="blank-body">
1468     <fo:block text-align="center"/>
1469   </fo:static-content>
1470 </xsl:template>
1471
1472 <xsl:template name="header.table">
1473   <xsl:param name="pageclass" select="''"/>
1474   <xsl:param name="sequence" select="''"/>
1475   <xsl:param name="gentext-key" select="''"/>
1476
1477   <!-- default is a single table style for all headers -->
1478   <!-- Customize it for different page classes or sequence location -->
1479
1480   <xsl:choose>
1481       <xsl:when test="$pageclass = 'index'">
1482           <xsl:attribute name="margin-left">0pt</xsl:attribute>
1483       </xsl:when>
1484   </xsl:choose>
1485
1486   <xsl:variable name="column1">
1487     <xsl:choose>
1488       <xsl:when test="$double.sided = 0">1</xsl:when>
1489       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
1490       <xsl:otherwise>3</xsl:otherwise>
1491     </xsl:choose>
1492   </xsl:variable>
1493
1494   <xsl:variable name="column3">
1495     <xsl:choose>
1496       <xsl:when test="$double.sided = 0">3</xsl:when>
1497       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
1498       <xsl:otherwise>1</xsl:otherwise>
1499     </xsl:choose>
1500   </xsl:variable>
1501
1502   <xsl:variable name="candidate">
1503     <fo:table table-layout="fixed" width="100%">
1504       <xsl:call-template name="head.sep.rule">
1505         <xsl:with-param name="pageclass" select="$pageclass"/>
1506         <xsl:with-param name="sequence" select="$sequence"/>
1507         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1508       </xsl:call-template>
1509
1510       <fo:table-column column-number="1">
1511         <xsl:attribute name="column-width">
1512           <xsl:text>proportional-column-width(</xsl:text>
1513           <xsl:call-template name="header.footer.width">
1514             <xsl:with-param name="location">header</xsl:with-param>
1515             <xsl:with-param name="position" select="$column1"/>
1516           </xsl:call-template>
1517           <xsl:text>)</xsl:text>
1518         </xsl:attribute>
1519       </fo:table-column>
1520       <fo:table-column column-number="2">
1521         <xsl:attribute name="column-width">
1522           <xsl:text>proportional-column-width(</xsl:text>
1523           <xsl:call-template name="header.footer.width">
1524             <xsl:with-param name="location">header</xsl:with-param>
1525             <xsl:with-param name="position" select="2"/>
1526           </xsl:call-template>
1527           <xsl:text>)</xsl:text>
1528         </xsl:attribute>
1529       </fo:table-column>
1530       <fo:table-column column-number="3">
1531         <xsl:attribute name="column-width">
1532           <xsl:text>proportional-column-width(</xsl:text>
1533           <xsl:call-template name="header.footer.width">
1534             <xsl:with-param name="location">header</xsl:with-param>
1535             <xsl:with-param name="position" select="$column3"/>
1536           </xsl:call-template>
1537           <xsl:text>)</xsl:text>
1538         </xsl:attribute>
1539       </fo:table-column>
1540
1541       <fo:table-body>
1542         <fo:table-row height="14pt">
1543           <fo:table-cell text-align="left"
1544                          display-align="before">
1545             <xsl:if test="$fop.extensions = 0">
1546               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1547             </xsl:if>
1548             <fo:block>
1549               <xsl:call-template name="header.content">
1550                 <xsl:with-param name="pageclass" select="$pageclass"/>
1551                 <xsl:with-param name="sequence" select="$sequence"/>
1552                 <xsl:with-param name="position" select="'left'"/>
1553                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1554               </xsl:call-template>
1555             </fo:block>
1556           </fo:table-cell>
1557           <fo:table-cell text-align="center"
1558                          display-align="before">
1559             <xsl:if test="$fop.extensions = 0">
1560               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1561             </xsl:if>
1562             <fo:block>
1563               <xsl:call-template name="header.content">
1564                 <xsl:with-param name="pageclass" select="$pageclass"/>
1565                 <xsl:with-param name="sequence" select="$sequence"/>
1566                 <xsl:with-param name="position" select="'center'"/>
1567                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1568               </xsl:call-template>
1569             </fo:block>
1570           </fo:table-cell>
1571           <fo:table-cell text-align="right"
1572                          display-align="before">
1573             <xsl:if test="$fop.extensions = 0">
1574               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1575             </xsl:if>
1576             <fo:block>
1577               <xsl:call-template name="header.content">
1578                 <xsl:with-param name="pageclass" select="$pageclass"/>
1579                 <xsl:with-param name="sequence" select="$sequence"/>
1580                 <xsl:with-param name="position" select="'right'"/>
1581                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1582               </xsl:call-template>
1583             </fo:block>
1584           </fo:table-cell>
1585         </fo:table-row>
1586       </fo:table-body>
1587     </fo:table>
1588   </xsl:variable>
1589
1590   <!-- Really output a header? -->
1591   <xsl:choose>
1592     <xsl:when test="$pageclass = 'titlepage' and $gentext-key = 'book'
1593                     and $sequence='first'">
1594       <!-- no, book titlepages have no headers at all -->
1595     </xsl:when>
1596     <xsl:when test="$sequence = 'blank' and $headers.on.blank.pages = 0">
1597       <!-- no output -->
1598     </xsl:when>
1599     <xsl:otherwise>
1600       <xsl:copy-of select="$candidate"/>
1601     </xsl:otherwise>
1602   </xsl:choose>
1603 </xsl:template>
1604
1605 <xsl:template name="header.content">
1606   <xsl:param name="pageclass" select="''"/>
1607   <xsl:param name="sequence" select="''"/>
1608   <xsl:param name="position" select="''"/>
1609   <xsl:param name="gentext-key" select="''"/>
1610
1611 <!--
1612   <fo:block>
1613     <xsl:value-of select="$pageclass"/>
1614     <xsl:text>, </xsl:text>
1615     <xsl:value-of select="$sequence"/>
1616     <xsl:text>, </xsl:text>
1617     <xsl:value-of select="$position"/>
1618     <xsl:text>, </xsl:text>
1619     <xsl:value-of select="$gentext-key"/>
1620   </fo:block>
1621 -->
1622
1623   <fo:block>
1624
1625     <!-- sequence can be odd, even, first, blank -->
1626     <!-- position can be left, center, right -->
1627     <xsl:choose>
1628       <xsl:when test="$sequence = 'blank'">
1629         <!-- nothing -->
1630       </xsl:when>
1631
1632       <xsl:when test="$position='left'">
1633         <!-- Same for odd, even, empty, and blank sequences -->
1634         <xsl:call-template name="draft.text"/>
1635       </xsl:when>
1636
1637       <xsl:when test="($sequence='odd' or $sequence='even') and $position='center'">
1638         <xsl:if test="$pageclass != 'titlepage'">
1639           <xsl:choose>
1640             <xsl:when test="ancestor::book and ($double.sided != 0)">
1641               <fo:retrieve-marker retrieve-class-name="section.head.marker"
1642                                   retrieve-position="first-including-carryover"
1643                                   retrieve-boundary="page-sequence"/>
1644             </xsl:when>
1645             <xsl:otherwise>
1646               <xsl:apply-templates select="." mode="titleabbrev.markup"/>
1647             </xsl:otherwise>
1648           </xsl:choose>
1649         </xsl:if>
1650       </xsl:when>
1651
1652       <xsl:when test="$position='center'">
1653         <!-- nothing for empty and blank sequences -->
1654       </xsl:when>
1655
1656       <xsl:when test="$position='right'">
1657         <!-- Same for odd, even, empty, and blank sequences -->
1658         <xsl:call-template name="draft.text"/>
1659       </xsl:when>
1660
1661       <xsl:when test="$sequence = 'first'">
1662         <!-- nothing for first pages -->
1663       </xsl:when>
1664
1665       <xsl:when test="$sequence = 'blank'">
1666         <!-- nothing for blank pages -->
1667       </xsl:when>
1668     </xsl:choose>
1669   </fo:block>
1670 </xsl:template>
1671
1672 <xsl:template name="header.footer.width">
1673   <xsl:param name="location" select="'header'"/>
1674   <xsl:param name="position" select="1"/>
1675
1676   <xsl:variable name="width.set">
1677     <xsl:choose>
1678       <xsl:when test="$location = 'header'">
1679         <xsl:value-of select="normalize-space($header.column.widths)"/>
1680       </xsl:when>
1681       <xsl:otherwise>
1682         <xsl:value-of select="normalize-space($footer.column.widths)"/>
1683       </xsl:otherwise>
1684     </xsl:choose>
1685   </xsl:variable>
1686
1687
1688   <xsl:variable name="width">
1689     <xsl:choose>
1690       <xsl:when test="$position = 1">
1691         <xsl:value-of select="substring-before($width.set, ' ')"/>
1692       </xsl:when>
1693       <xsl:when test="$position = 2">
1694         <xsl:value-of select="substring-before(substring-after($width.set, ' '), ' ')"/>
1695       </xsl:when>
1696       <xsl:otherwise>
1697         <xsl:value-of select="substring-after(substring-after($width.set, ' '), ' ')"/>
1698       </xsl:otherwise>
1699     </xsl:choose>
1700   </xsl:variable>
1701
1702   <!-- Make sure it is a number -->
1703   <xsl:choose>
1704     <xsl:when test = "$width = number($width)">
1705       <xsl:value-of select="$width"/>
1706     </xsl:when>
1707     <xsl:otherwise>
1708       <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>
1709       <xsl:text>1</xsl:text>
1710     </xsl:otherwise>
1711   </xsl:choose>
1712 </xsl:template>
1713
1714 <xsl:template name="draft.text">
1715   <xsl:choose>
1716     <xsl:when test="$draft.mode = 'yes'">
1717       <xsl:call-template name="gentext">
1718         <xsl:with-param name="key" select="'Draft'"/>
1719       </xsl:call-template>
1720     </xsl:when>
1721     <xsl:when test="$draft.mode = 'no'">
1722       <!-- nop -->
1723     </xsl:when>
1724     <xsl:when test="ancestor-or-self::*[@status][1]/@status = 'draft'">
1725       <xsl:call-template name="gentext">
1726         <xsl:with-param name="key" select="'Draft'"/>
1727       </xsl:call-template>
1728     </xsl:when>
1729     <xsl:otherwise>
1730       <!-- nop -->
1731     </xsl:otherwise>
1732   </xsl:choose>
1733 </xsl:template>
1734
1735 <!-- ==================================================================== -->
1736
1737 <xsl:template match="*" mode="running.foot.mode">
1738   <xsl:param name="master-reference" select="'unknown'"/>
1739   <xsl:param name="gentext-key" select="name(.)"/>
1740
1741   <!-- remove -draft from reference -->
1742   <xsl:variable name="pageclass">
1743     <xsl:choose>
1744       <xsl:when test="contains($master-reference, '-draft')">
1745         <xsl:value-of select="substring-before($master-reference, '-draft')"/>
1746       </xsl:when>
1747       <xsl:otherwise>
1748         <xsl:value-of select="$master-reference"/>
1749       </xsl:otherwise>
1750     </xsl:choose>
1751   </xsl:variable>
1752
1753   <fo:static-content flow-name="xsl-region-after-first">
1754     <fo:block xsl:use-attribute-sets="footer.content.properties">
1755       <xsl:call-template name="footer.table">
1756         <xsl:with-param name="pageclass" select="$pageclass"/>
1757         <xsl:with-param name="sequence" select="'first'"/>
1758         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1759       </xsl:call-template>
1760     </fo:block>
1761   </fo:static-content>
1762
1763   <fo:static-content flow-name="xsl-region-after-odd">
1764     <fo:block xsl:use-attribute-sets="footer.content.properties">
1765       <xsl:call-template name="footer.table">
1766         <xsl:with-param name="pageclass" select="$pageclass"/>
1767         <xsl:with-param name="sequence" select="'odd'"/>
1768         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1769       </xsl:call-template>
1770     </fo:block>
1771   </fo:static-content>
1772
1773   <fo:static-content flow-name="xsl-region-after-even">
1774     <fo:block xsl:use-attribute-sets="footer.content.properties">
1775       <xsl:call-template name="footer.table">
1776         <xsl:with-param name="pageclass" select="$pageclass"/>
1777         <xsl:with-param name="sequence" select="'even'"/>
1778         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1779       </xsl:call-template>
1780     </fo:block>
1781   </fo:static-content>
1782
1783   <fo:static-content flow-name="xsl-region-after-blank">
1784     <fo:block xsl:use-attribute-sets="footer.content.properties">
1785       <xsl:call-template name="footer.table">
1786         <xsl:with-param name="pageclass" select="$pageclass"/>
1787         <xsl:with-param name="sequence" select="'blank'"/>
1788         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1789       </xsl:call-template>
1790     </fo:block>
1791   </fo:static-content>
1792 </xsl:template>
1793
1794 <xsl:template name="footer.table">
1795   <xsl:param name="pageclass" select="''"/>
1796   <xsl:param name="sequence" select="''"/>
1797   <xsl:param name="gentext-key" select="''"/>
1798
1799   <!-- default is a single table style for all footers -->
1800   <!-- Customize it for different page classes or sequence location -->
1801
1802   <xsl:choose>
1803       <xsl:when test="$pageclass = 'index'">
1804           <xsl:attribute name="margin-left">0pt</xsl:attribute>
1805       </xsl:when>
1806   </xsl:choose>
1807
1808   <xsl:variable name="column1">
1809     <xsl:choose>
1810       <xsl:when test="$double.sided = 0">1</xsl:when>
1811       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">1</xsl:when>
1812       <xsl:otherwise>3</xsl:otherwise>
1813     </xsl:choose>
1814   </xsl:variable>
1815
1816   <xsl:variable name="column3">
1817     <xsl:choose>
1818       <xsl:when test="$double.sided = 0">3</xsl:when>
1819       <xsl:when test="$sequence = 'first' or $sequence = 'odd'">3</xsl:when>
1820       <xsl:otherwise>1</xsl:otherwise>
1821     </xsl:choose>
1822   </xsl:variable>
1823
1824   <xsl:variable name="candidate">
1825     <fo:table table-layout="fixed" width="100%">
1826       <xsl:call-template name="foot.sep.rule">
1827         <xsl:with-param name="pageclass" select="$pageclass"/>
1828         <xsl:with-param name="sequence" select="$sequence"/>
1829         <xsl:with-param name="gentext-key" select="$gentext-key"/>
1830       </xsl:call-template>
1831       <fo:table-column column-number="1">
1832         <xsl:attribute name="column-width">
1833           <xsl:text>proportional-column-width(</xsl:text>
1834           <xsl:call-template name="header.footer.width">
1835             <xsl:with-param name="location">footer</xsl:with-param>
1836             <xsl:with-param name="position" select="$column1"/>
1837           </xsl:call-template>
1838           <xsl:text>)</xsl:text>
1839         </xsl:attribute>
1840       </fo:table-column>
1841       <fo:table-column column-number="2">
1842         <xsl:attribute name="column-width">
1843           <xsl:text>proportional-column-width(</xsl:text>
1844           <xsl:call-template name="header.footer.width">
1845             <xsl:with-param name="location">footer</xsl:with-param>
1846             <xsl:with-param name="position" select="2"/>
1847           </xsl:call-template>
1848           <xsl:text>)</xsl:text>
1849         </xsl:attribute>
1850       </fo:table-column>
1851       <fo:table-column column-number="3">
1852         <xsl:attribute name="column-width">
1853           <xsl:text>proportional-column-width(</xsl:text>
1854           <xsl:call-template name="header.footer.width">
1855             <xsl:with-param name="location">footer</xsl:with-param>
1856             <xsl:with-param name="position" select="$column3"/>
1857           </xsl:call-template>
1858           <xsl:text>)</xsl:text>
1859         </xsl:attribute>
1860       </fo:table-column>
1861
1862       <fo:table-body>
1863         <fo:table-row height="14pt">
1864           <fo:table-cell text-align="left"
1865                          display-align="after">
1866             <xsl:if test="$fop.extensions = 0">
1867               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1868             </xsl:if>
1869             <fo:block>
1870               <xsl:call-template name="footer.content">
1871                 <xsl:with-param name="pageclass" select="$pageclass"/>
1872                 <xsl:with-param name="sequence" select="$sequence"/>
1873                 <xsl:with-param name="position" select="'left'"/>
1874                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1875               </xsl:call-template>
1876             </fo:block>
1877           </fo:table-cell>
1878           <fo:table-cell text-align="center"
1879                          display-align="after">
1880             <xsl:if test="$fop.extensions = 0">
1881               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1882             </xsl:if>
1883             <fo:block>
1884               <xsl:call-template name="footer.content">
1885                 <xsl:with-param name="pageclass" select="$pageclass"/>
1886                 <xsl:with-param name="sequence" select="$sequence"/>
1887                 <xsl:with-param name="position" select="'center'"/>
1888                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1889               </xsl:call-template>
1890             </fo:block>
1891           </fo:table-cell>
1892           <fo:table-cell text-align="right"
1893                          display-align="after">
1894             <xsl:if test="$fop.extensions = 0">
1895               <xsl:attribute name="relative-align">baseline</xsl:attribute>
1896             </xsl:if>
1897             <fo:block>
1898               <xsl:call-template name="footer.content">
1899                 <xsl:with-param name="pageclass" select="$pageclass"/>
1900                 <xsl:with-param name="sequence" select="$sequence"/>
1901                 <xsl:with-param name="position" select="'right'"/>
1902                 <xsl:with-param name="gentext-key" select="$gentext-key"/>
1903               </xsl:call-template>
1904             </fo:block>
1905           </fo:table-cell>
1906         </fo:table-row>
1907       </fo:table-body>
1908     </fo:table>
1909   </xsl:variable>
1910
1911   <!-- Really output a footer? -->
1912   <xsl:choose>
1913     <xsl:when test="$pageclass='titlepage' and $gentext-key='book'
1914                     and $sequence='first'">
1915       <!-- no, book titlepages have no footers at all -->
1916     </xsl:when>
1917     <xsl:when test="$sequence = 'blank' and $footers.on.blank.pages = 0">
1918       <!-- no output -->
1919     </xsl:when>
1920     <xsl:otherwise>
1921       <xsl:copy-of select="$candidate"/>
1922     </xsl:otherwise>
1923   </xsl:choose>
1924 </xsl:template>
1925
1926 <xsl:template name="footer.content">
1927   <xsl:param name="pageclass" select="''"/>
1928   <xsl:param name="sequence" select="''"/>
1929   <xsl:param name="position" select="''"/>
1930   <xsl:param name="gentext-key" select="''"/>
1931
1932 <!--
1933   <fo:block>
1934     <xsl:value-of select="$pageclass"/>
1935     <xsl:text>, </xsl:text>
1936     <xsl:value-of select="$sequence"/>
1937     <xsl:text>, </xsl:text>
1938     <xsl:value-of select="$position"/>
1939     <xsl:text>, </xsl:text>
1940     <xsl:value-of select="$gentext-key"/>
1941   </fo:block>
1942 -->
1943
1944   <fo:block>
1945     <!-- pageclass can be front, body, back -->
1946     <!-- sequence can be odd, even, first, blank -->
1947     <!-- position can be left, center, right -->
1948     <xsl:choose>
1949       <xsl:when test="$pageclass = 'titlepage'">
1950         <!-- nop; no footer on title pages -->
1951       </xsl:when>
1952
1953       <xsl:when test="$double.sided != 0 and $sequence = 'even'
1954                       and $position='left'">
1955         <fo:page-number/>
1956       </xsl:when>
1957
1958       <xsl:when test="$double.sided != 0 and ($sequence = 'odd' or $sequence = 'first')
1959                       and $position='right'">
1960         <fo:page-number/>
1961       </xsl:when>
1962
1963       <xsl:when test="$double.sided = 0 and $position='center'">
1964         <fo:page-number/>
1965       </xsl:when>
1966
1967       <xsl:when test="$sequence='blank'">
1968         <xsl:choose>
1969           <xsl:when test="$double.sided != 0 and $position = 'left'">
1970             <fo:page-number/>
1971           </xsl:when>
1972           <xsl:when test="$double.sided = 0 and $position = 'center'">
1973             <fo:page-number/>
1974           </xsl:when>
1975           <xsl:otherwise>
1976             <!-- nop -->
1977           </xsl:otherwise>
1978         </xsl:choose>
1979       </xsl:when>
1980
1981
1982       <xsl:otherwise>
1983         <!-- nop -->
1984       </xsl:otherwise>
1985     </xsl:choose>
1986   </fo:block>
1987 </xsl:template>
1988
1989 <!-- ==================================================================== -->
1990
1991 <xsl:template name="page.number.format">
1992   <xsl:param name="element" select="local-name(.)"/>
1993   <xsl:param name="master-reference" select="''"/>
1994
1995   <xsl:choose>
1996     <xsl:when test="$element = 'toc' and self::book">i</xsl:when>
1997     <xsl:when test="$element = 'preface'">i</xsl:when>
1998     <xsl:when test="$element = 'dedication'">i</xsl:when>
1999     <xsl:otherwise>1</xsl:otherwise>
2000   </xsl:choose>
2001 </xsl:template>
2002
2003 <xsl:template name="initial.page.number">
2004   <xsl:param name="element" select="local-name(.)"/>
2005   <xsl:param name="master-reference" select="''"/>
2006
2007   <xsl:choose>
2008     <!-- double-sided output -->
2009     <xsl:when test="$double.sided != 0">
2010       <xsl:choose>
2011         <xsl:when test="$element = 'toc'">auto-odd</xsl:when>
2012         <xsl:when test="$element = 'book'">1</xsl:when>
2013         <xsl:when test="$element = 'preface'">auto-odd</xsl:when>
2014         <xsl:when test="$element = 'part' and not(preceding::chapter)
2015                         and not(preceding::part)">1</xsl:when>
2016         <xsl:when test="($element = 'dedication' or $element = 'article') and
2017                         not(preceding::chapter
2018                             or preceding::preface
2019                             or preceding::appendix
2020                             or preceding::article
2021                             or preceding::dedication
2022                             or parent::part
2023                             or parent::reference)">1</xsl:when>
2024         <xsl:when test="($element = 'chapter' or $element = 'appendix') and
2025                         not(preceding::chapter
2026                             or preceding::appendix
2027                             or preceding::article
2028                             or preceding::dedication
2029                             or parent::part
2030                             or parent::reference)">1</xsl:when>
2031         <xsl:otherwise>auto-odd</xsl:otherwise>
2032       </xsl:choose>
2033     </xsl:when>
2034
2035     <!-- single-sided output -->
2036     <xsl:otherwise>
2037       <xsl:choose>
2038         <xsl:when test="$element = 'toc'">auto</xsl:when>
2039         <xsl:when test="$element = 'book'">1</xsl:when>
2040         <xsl:when test="$element = 'preface'">auto</xsl:when>
2041         <xsl:when test="$element = 'part' and not(preceding::chapter)
2042                         and not(preceding::part)">1</xsl:when>
2043         <xsl:when test="($element = 'dedication' or $element = 'article') and
2044                         not(preceding::chapter
2045                             or preceding::preface
2046                             or preceding::appendix
2047                             or preceding::article
2048                             or preceding::dedication
2049                             or parent::part
2050                             or parent::reference)">1</xsl:when>
2051         <xsl:when test="($element = 'chapter' or $element = 'appendix') and
2052                         not(preceding::chapter
2053                             or preceding::appendix
2054                             or preceding::article
2055                             or preceding::dedication
2056                             or parent::part
2057                             or parent::reference)">1</xsl:when>
2058         <xsl:otherwise>auto</xsl:otherwise>
2059       </xsl:choose>
2060     </xsl:otherwise>
2061   </xsl:choose>
2062 </xsl:template>
2063
2064 <xsl:template name="force.page.count">
2065   <xsl:param name="element" select="local-name(.)"/>
2066   <xsl:param name="master-reference" select="''"/>
2067
2068   <xsl:choose>
2069     <!-- double-sided output -->
2070     <xsl:when test="$double.sided != 0">end-on-even</xsl:when>
2071     <!-- single-sided output -->
2072     <xsl:otherwise>no-force</xsl:otherwise>
2073   </xsl:choose>
2074 </xsl:template>
2075
2076 <xsl:template name="set.flow.properties">
2077   <xsl:param name="element" select="local-name(.)"/>
2078   <xsl:param name="master-reference" select="''"/>
2079
2080   <!-- This template is called after each <fo:flow> starts. -->
2081   <!-- Customize this template to set attributes on fo:flow -->
2082
2083   <xsl:choose>
2084     <xsl:when test="$fop.extensions != 0 or $passivetex.extensions != 0">
2085       <!-- body.start.indent does not work well with these processors -->
2086     </xsl:when>
2087     <xsl:when test="$master-reference = 'body' or
2088                     $master-reference = 'lot' or
2089                     $master-reference = 'front' or
2090                     $element = 'preface' or
2091                     ($master-reference = 'back' and
2092                     $element = 'appendix')">
2093       <xsl:attribute name="start-indent">
2094         <xsl:value-of select="$body.start.indent"/>
2095       </xsl:attribute>
2096       <xsl:attribute name="end-indent">
2097         <xsl:value-of select="$body.end.indent"/>
2098       </xsl:attribute>
2099     </xsl:when>
2100   </xsl:choose>
2101
2102 </xsl:template>
2103 <!-- ==================================================================== -->
2104
2105 </xsl:stylesheet>
Note: See TracBrowser for help on using the browser.