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$ 8 ******************************************************************** 9 10 This file is part of the XSL DocBook Stylesheet distribution. 11 See /README or http://nwalsh.com/docbook/xsl/ for copyright 12 and other information. 13 14 ******************************************************************** --> 15 16<!-- ==================================================================== --> 17 18<xsl:template match="section"> 19 <xsl:variable name="id"> 20 <xsl:call-template name="object.id"/> 21 </xsl:variable> 22 23 <fo:block id="{$id}"> 24 <xsl:call-template name="section.titlepage"/> 25 <xsl:apply-templates/> 26 </fo:block> 27</xsl:template> 28 29<xsl:template match="/section"> 30 <xsl:variable name="id"> 31 <xsl:call-template name="object.id"> 32 <xsl:with-param name="object" select="ancestor::reference"/> 33 </xsl:call-template> 34 </xsl:variable> 35 <xsl:variable name="master-name"> 36 <xsl:call-template name="select.pagemaster"/> 37 </xsl:variable> 38 39 <fo:page-sequence id="{$id}" 40 hyphenate="{$hyphenate}" 41 master-name="{$master-name}"> 42 <xsl:attribute name="language"> 43 <xsl:call-template name="l10n.language"/> 44 </xsl:attribute> 45 <xsl:if test="$double.sided != 0"> 46 <xsl:attribute name="force-page-count">end-on-even</xsl:attribute> 47 </xsl:if> 48 49 <xsl:apply-templates select="." mode="running.head.mode"> 50 <xsl:with-param name="master-name" select="$master-name"/> 51 </xsl:apply-templates> 52 <xsl:apply-templates select="." mode="running.foot.mode"> 53 <xsl:with-param name="master-name" select="$master-name"/> 54 </xsl:apply-templates> 55 56 <fo:flow flow-name="xsl-region-body"> 57 <xsl:call-template name="section.titlepage"/> 58 <xsl:apply-templates/> 59 </fo:flow> 60 </fo:page-sequence> 61</xsl:template> 62 63<xsl:template match="title" mode="section.titlepage.recto.mode"> 64 <xsl:variable name="section" select="(ancestor::section 65 |ancestor::simplesect 66 |ancestor::sect1 67 |ancestor::sect2 68 |ancestor::sect3 69 |ancestor::sect4 70 |ancestor::sect5)[last()]"/> 71 <fo:block keep-with-next.within-column="always"> 72 <xsl:variable name="id"> 73 <xsl:call-template name="object.id"> 74 <xsl:with-param name="object" select="$section"/> 75 </xsl:call-template> 76 </xsl:variable> 77 78 <xsl:variable name="level"> 79 <xsl:call-template name="section.level"> 80 <xsl:with-param name="node" select="$section"/> 81 </xsl:call-template> 82 </xsl:variable> 83 84 <xsl:variable name="title"> 85 <xsl:apply-templates select="$section" mode="object.title.markup"/> 86 </xsl:variable> 87 88 <xsl:if test="$passivetex.extensions != 0"> 89 <fotex:bookmark xmlns:fotex="http://www.tug.org/fotex" 90 fotex-bookmark-level="{$level + 1}" 91 fotex-bookmark-label="{$id}"> 92 <xsl:value-of select="$title"/> 93 </fotex:bookmark> 94 </xsl:if> 95 96 <xsl:call-template name="section.heading"> 97 <xsl:with-param name="level" select="$level"/> 98 <xsl:with-param name="title" select="$title"/> 99 </xsl:call-template> 100 </fo:block> 101</xsl:template> 102 103<xsl:template match="sect1"> 104 <xsl:variable name="id"> 105 <xsl:call-template name="object.id"/> 106 </xsl:variable> 107 108 <fo:block id="{$id}"> 109 <xsl:call-template name="sect1.titlepage"/> 110 <xsl:apply-templates/> 111 </fo:block> 112</xsl:template> 113 114<xsl:template match="/sect1"> 115 <xsl:variable name="id"> 116 <xsl:call-template name="object.id"> 117 <xsl:with-param name="object" select="ancestor::reference"/> 118 </xsl:call-template> 119 </xsl:variable> 120 <xsl:variable name="master-name"> 121 <xsl:call-template name="select.pagemaster"/> 122 </xsl:variable> 123 124 <fo:page-sequence id="{$id}" 125 hyphenate="{$hyphenate}" 126 master-name="{$master-name}"> 127 <xsl:attribute name="language"> 128 <xsl:call-template name="l10n.language"/> 129 </xsl:attribute> 130 <xsl:if test="$double.sided != 0"> 131 <xsl:attribute name="force-page-count">end-on-even</xsl:attribute> 132 </xsl:if> 133 134 <xsl:apply-templates select="." mode="running.head.mode"> 135 <xsl:with-param name="master-name" select="$master-name"/> 136 </xsl:apply-templates> 137 <xsl:apply-templates select="." mode="running.foot.mode"> 138 <xsl:with-param name="master-name" select="$master-name"/> 139 </xsl:apply-templates> 140 141 <fo:flow flow-name="xsl-region-body"> 142 <xsl:call-template name="sect1.titlepage"/> 143 <xsl:apply-templates/> 144 </fo:flow> 145 </fo:page-sequence> 146</xsl:template> 147 148<xsl:template match="title" mode="sect1.titlepage.recto.mode"> 149 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 150</xsl:template> 151 152<xsl:template match="sect2"> 153 <xsl:variable name="id"> 154 <xsl:call-template name="object.id"/> 155 </xsl:variable> 156 157 <fo:block id="{$id}"> 158 <xsl:call-template name="sect2.titlepage"/> 159 <xsl:apply-templates/> 160 </fo:block> 161</xsl:template> 162 163<xsl:template match="title" mode="sect2.titlepage.recto.mode"> 164 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 165</xsl:template> 166 167<xsl:template match="sect3"> 168 <xsl:variable name="id"> 169 <xsl:call-template name="object.id"/> 170 </xsl:variable> 171 172 <fo:block id="{$id}"> 173 <xsl:call-template name="sect3.titlepage"/> 174 <xsl:apply-templates/> 175 </fo:block> 176</xsl:template> 177 178<xsl:template match="title" mode="sect3.titlepage.recto.mode"> 179 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 180</xsl:template> 181 182<xsl:template match="sect4"> 183 <xsl:variable name="id"> 184 <xsl:call-template name="object.id"/> 185 </xsl:variable> 186 187 <fo:block id="{$id}"> 188 <xsl:call-template name="sect4.titlepage"/> 189 <xsl:apply-templates/> 190 </fo:block> 191</xsl:template> 192 193<xsl:template match="title" mode="sect4.titlepage.recto.mode"> 194 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 195</xsl:template> 196 197<xsl:template match="sect5"> 198 <xsl:variable name="id"> 199 <xsl:call-template name="object.id"/> 200 </xsl:variable> 201 202 <fo:block id="{$id}"> 203 <xsl:call-template name="sect5.titlepage"/> 204 <xsl:apply-templates/> 205 </fo:block> 206</xsl:template> 207 208<xsl:template match="title" mode="sect5.titlepage.recto.mode"> 209 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 210</xsl:template> 211 212<xsl:template match="simplesect"> 213 <xsl:variable name="id"> 214 <xsl:call-template name="object.id"/> 215 </xsl:variable> 216 217 <fo:block id="{$id}"> 218 <xsl:call-template name="simplesect.titlepage"/> 219 <xsl:apply-templates/> 220 </fo:block> 221</xsl:template> 222 223<xsl:template match="title" mode="simplesect.titlepage.recto.mode"> 224 <xsl:apply-templates select="." mode="section.titlepage.recto.mode"/> 225</xsl:template> 226 227<xsl:template match="section/subtitle"></xsl:template> 228<xsl:template match="section/title"></xsl:template> 229<xsl:template match="sectioninfo"></xsl:template> 230 231<xsl:template match="sect1/title"></xsl:template> 232<xsl:template match="sect1/subtitle"></xsl:template> 233<xsl:template match="sect1info"></xsl:template> 234 235<xsl:template match="sect2/title"></xsl:template> 236<xsl:template match="sect2/subtitle"></xsl:template> 237<xsl:template match="sect2info"></xsl:template> 238 239<xsl:template match="sect3/title"></xsl:template> 240<xsl:template match="sect3/subtitle"></xsl:template> 241<xsl:template match="sect3info"></xsl:template> 242 243<xsl:template match="sect4/title"></xsl:template> 244<xsl:template match="sect4/subtitle"></xsl:template> 245<xsl:template match="sect4info"></xsl:template> 246 247<xsl:template match="sect5/title"></xsl:template> 248<xsl:template match="sect5/subtitle"></xsl:template> 249<xsl:template match="sect5info"></xsl:template> 250 251<xsl:template match="simplesect/title"></xsl:template> 252<xsl:template match="simplesect/subtitle"></xsl:template> 253 254<!-- ==================================================================== --> 255 256<xsl:template name="section.heading"> 257 <xsl:param name="level">1</xsl:param> 258 <xsl:param name="title"></xsl:param> 259 <xsl:variable name="fsize"> 260 <xsl:choose> 261 <xsl:when test="$level=1">18</xsl:when> 262 <xsl:when test="$level=2">16</xsl:when> 263 <xsl:when test="$level=3">14</xsl:when> 264 <xsl:when test="$level=4">12</xsl:when> 265 <xsl:when test="$level=5">12</xsl:when> 266 <xsl:otherwise>10</xsl:otherwise> 267 </xsl:choose> 268 </xsl:variable> 269 <fo:block font-size="{$fsize}pt" 270 font-weight="bold" 271 font-family="{$title.font.family}" 272 space-before.minimum="1em" 273 space-before.optimum="1.5em" 274 space-before.maximum="2em"> 275 <xsl:copy-of select="$title"/> 276 </fo:block> 277</xsl:template> 278 279<!-- ==================================================================== --> 280 281<xsl:template match="bridgehead"> 282 <xsl:variable name="container" 283 select="(ancestor::appendix 284 |ancestor::article 285 |ancestor::bibliography 286 |ancestor::chapter 287 |ancestor::glossary 288 |ancestor::glossdiv 289 |ancestor::index 290 |ancestor::partintro 291 |ancestor::preface 292 |ancestor::refsect1 293 |ancestor::refsect2 294 |ancestor::refsect3 295 |ancestor::sect1 296 |ancestor::sect2 297 |ancestor::sect3 298 |ancestor::sect4 299 |ancestor::sect5 300 |ancestor::section 301 |ancestor::setindex 302 |ancestor::simplesect)[last()]"/> 303 304 <xsl:variable name="clevel"> 305 <xsl:choose> 306 <xsl:when test="local-name($container) = 'appendix' 307 or local-name($container) = 'chapter' 308 or local-name($container) = 'article' 309 or local-name($container) = 'bibliography' 310 or local-name($container) = 'glossary' 311 or local-name($container) = 'index' 312 or local-name($container) = 'partintro' 313 or local-name($container) = 'preface' 314 or local-name($container) = 'setindex'">2</xsl:when> 315 <xsl:when test="local-name($container) = 'glossdiv'"> 316 <xsl:value-of select="count(ancestor::glossdiv)+2"/> 317 </xsl:when> 318 <xsl:when test="local-name($container) = 'sect1' 319 or local-name($container) = 'sect2' 320 or local-name($container) = 'sect3' 321 or local-name($container) = 'sect4' 322 or local-name($container) = 'sect5' 323 or local-name($container) = 'refsect1' 324 or local-name($container) = 'refsect2' 325 or local-name($container) = 'refsect3' 326 or local-name($container) = 'section' 327 or local-name($container) = 'simplesect'"> 328 <xsl:variable name="slevel"> 329 <xsl:call-template name="section.level"> 330 <xsl:with-param name="node" select="$container"/> 331 </xsl:call-template> 332 </xsl:variable> 333 <xsl:value-of select="$slevel + 1"/> 334 </xsl:when> 335 <xsl:otherwise>2</xsl:otherwise> 336 </xsl:choose> 337 </xsl:variable> 338 339 <xsl:variable name="level"> 340 <xsl:choose> 341 <xsl:when test="@renderas = 'sect1'">2</xsl:when> 342 <xsl:when test="@renderas = 'sect2'">3</xsl:when> 343 <xsl:when test="@renderas = 'sect3'">4</xsl:when> 344 <xsl:when test="@renderas = 'sect4'">5</xsl:when> 345 <xsl:when test="@renderas = 'sect5'">6</xsl:when> 346 <xsl:otherwise> 347 <xsl:value-of select="$clevel"/> 348 </xsl:otherwise> 349 </xsl:choose> 350 </xsl:variable> 351 352 <xsl:call-template name="section.heading"> 353 <xsl:with-param name="level" select="$level"/> 354 <xsl:with-param name="title"> 355 <xsl:apply-templates/> 356 </xsl:with-param> 357 </xsl:call-template> 358</xsl:template> 359 360</xsl:stylesheet> 361 362