123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501 |
- <?xml version="1.0" encoding="UTF-8"?>
- <!--
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements. See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership. The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License. You may obtain a copy of the License at
- http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied. See the License for the
- specific language governing permissions and limitations
- under the License.
- -->
- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fo="http://www.w3.org/1999/XSL/Format"
- xmlns:xslthl="http://xslthl.sf.net"
- exclude-result-prefixes="xslthl"
- version='1.0'>
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/docbook.xsl"/>
- <xsl:import href="http://docbook.sourceforge.net/release/xsl/current/fo/highlight.xsl"/>
- <xsl:param name="admon.graphics">'1'</xsl:param>
- <xsl:param name="admon.graphics.path">src/docbook/images/</xsl:param>
- <!-- xsl:param name="draft.watermark.image" select="'images/draft.png'"/ -->
- <xsl:param name="paper.type" select="'A4'"/>
- <xsl:param name="page.margin.top" select="'1cm'"/>
- <xsl:param name="region.before.extent" select="'1cm'"/>
- <xsl:param name="body.margin.top" select="'1.5cm'"/>
- <xsl:param name="body.margin.bottom" select="'1.5cm'"/>
- <xsl:param name="region.after.extent" select="'1cm'"/>
- <xsl:param name="page.margin.bottom" select="'1cm'"/>
- <xsl:param name="title.margin.left" select="'0cm'"/>
- <!--###################################################
- Header
- ################################################### -->
- <!-- More space in the center header for long text -->
- <xsl:attribute-set name="header.content.properties">
- <xsl:attribute name="font-family">
- <xsl:value-of select="$body.font.family"/>
- </xsl:attribute>
- <xsl:attribute name="margin-left">-5em</xsl:attribute>
- <xsl:attribute name="margin-right">-5em</xsl:attribute>
- </xsl:attribute-set>
- <!--###################################################
- Table of Contents
- ################################################### -->
- <xsl:param name="generate.toc">
- book toc,title
- </xsl:param>
- <!--###################################################
- Custom Header
- ################################################### -->
- <xsl:template name="header.content">
- <xsl:param name="pageclass" select="''"/>
- <xsl:param name="sequence" select="''"/>
- <xsl:param name="position" select="''"/>
- <xsl:param name="gentext-key" select="''"/>
- <xsl:variable name="Version">
- <xsl:choose>
- <xsl:when test="//productname">
- <xsl:value-of select="//productname"/><xsl:text> </xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <xsl:text>please define productname in your docbook file!</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$sequence='blank'">
- <xsl:choose>
- <xsl:when test="$position='center'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
-
- <xsl:otherwise>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$pageclass='titlepage'">
- </xsl:when>
- <xsl:when test="$position='center'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
- <xsl:otherwise>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <!--###################################################
- Custom Footer
- ################################################### -->
- <xsl:template name="footer.content">
- <xsl:param name="pageclass" select="''"/>
- <xsl:param name="sequence" select="''"/>
- <xsl:param name="position" select="''"/>
- <xsl:param name="gentext-key" select="''"/>
- <xsl:variable name="Version">
- <xsl:choose>
- <xsl:when test="//releaseinfo">
- <xsl:value-of select="//releaseinfo"/>
- </xsl:when>
- <xsl:otherwise>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:variable>
- <xsl:variable name="Title">
- <xsl:value-of select="//title"/>
- </xsl:variable>
- <xsl:choose>
- <xsl:when test="$sequence='blank'">
- <xsl:choose>
- <xsl:when test="$double.sided != 0 and $position = 'left'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
- <xsl:when test="$double.sided = 0 and $position = 'center'">
- </xsl:when>
- <xsl:otherwise>
- <fo:page-number/>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:when>
- <xsl:when test="$pageclass='titlepage'">
- </xsl:when>
- <xsl:when test="$double.sided != 0 and $sequence = 'even' and $position='left'">
- <fo:page-number/>
- </xsl:when>
- <xsl:when test="$double.sided != 0 and $sequence = 'odd' and $position='right'">
- <fo:page-number/>
- </xsl:when>
- <xsl:when test="$double.sided = 0 and $position='right'">
- <fo:page-number/>
- </xsl:when>
- <xsl:when test="$double.sided != 0 and $sequence = 'odd' and $position='left'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
- <xsl:when test="$double.sided != 0 and $sequence = 'even' and $position='right'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
- <xsl:when test="$double.sided = 0 and $position='left'">
- <xsl:value-of select="$Version"/>
- </xsl:when>
- <xsl:when test="$position='center'">
- <xsl:value-of select="$Title"/>
- </xsl:when>
- <xsl:otherwise>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
- <xsl:template match="processing-instruction('hard-pagebreak')">
- <fo:block break-before='page'/>
- </xsl:template>
- <!--###################################################
- Extensions
- ################################################### -->
- <!-- These extensions are required for table printing and other stuff
- <xsl:param name="use.extensions">1</xsl:param>
- <xsl:param name="tablecolumns.extension">0</xsl:param>
- <xsl:param name="callout.extensions">1</xsl:param>
- <xsl:param name="fop.extensions">1</xsl:param>
- -->
- <!--###################################################
- Paper & Page Size
- ################################################### -->
- <!-- Paper type, no headers on blank pages, no double sided printing -->
- <xsl:param name="double.sided">0</xsl:param>
- <xsl:param name="headers.on.blank.pages">0</xsl:param>
- <xsl:param name="footers.on.blank.pages">0</xsl:param>
- <!--###################################################
- Fonts & Styles
- ################################################### -->
- <xsl:param name="hyphenate">false</xsl:param>
- <!-- Default Font size -->
- <xsl:param name="body.font.master">11</xsl:param>
- <xsl:param name="body.font.small">8</xsl:param>
- <!-- Line height in body text -->
- <xsl:param name="line-height">1.4</xsl:param>
- <!-- Chapter title size -->
- <xsl:attribute-set name="chapter.titlepage.recto.style">
- <xsl:attribute name="text-align">left</xsl:attribute>
- <xsl:attribute name="font-weight">bold</xsl:attribute>
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.master * 1.8"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- </xsl:attribute-set>
- <!-- Why is the font-size for chapters hardcoded in the XSL FO templates?
- Let's remove it, so this sucker can use our attribute-set only... -->
- <xsl:template match="title" mode="chapter.titlepage.recto.auto.mode">
- <fo:block xmlns:fo="http://www.w3.org/1999/XSL/Format"
- xsl:use-attribute-sets="chapter.titlepage.recto.style">
- <xsl:call-template name="component.title">
- <xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/>
- </xsl:call-template>
- </fo:block>
- </xsl:template>
- <!-- Sections 1, 2 and 3 titles have a small bump factor and padding -->
-
- <xsl:attribute-set name="section.title.level1.properties">
- <xsl:attribute name="space-before.optimum">0.8em</xsl:attribute>
- <xsl:attribute name="space-before.minimum">0.8em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.8em</xsl:attribute>
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.master * 1.5"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="section.title.level2.properties">
- <xsl:attribute name="space-before.optimum">0.6em</xsl:attribute>
- <xsl:attribute name="space-before.minimum">0.6em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.6em</xsl:attribute>
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.master * 1.25"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="section.title.level3.properties">
- <xsl:attribute name="space-before.optimum">0.4em</xsl:attribute>
- <xsl:attribute name="space-before.minimum">0.4em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.4em</xsl:attribute>
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.master * 1.0"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- </xsl:attribute-set>
- <!-- Use code syntax highlighting -->
- <xsl:param name="highlight.source" select="1"/>
- <xsl:param name="highlight.default.language" select="xml" />
- <xsl:template match='xslthl:keyword'>
- <fo:inline font-weight="bold" color="#7F0055"><xsl:apply-templates/></fo:inline>
- </xsl:template>
-
- <xsl:template match='xslthl:comment'>
- <fo:inline font-style="italic" color="#3F5F5F"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <xsl:template match='xslthl:oneline-comment'>
- <fo:inline font-style="italic" color="#3F5F5F"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <xsl:template match='xslthl:multiline-comment'>
- <fo:inline font-style="italic" color="#3F5FBF"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <xsl:template match='xslthl:tag'>
- <fo:inline color="#3F7F7F"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <xsl:template match='xslthl:attribute'>
- <fo:inline color="#7F007F"><xsl:apply-templates/></fo:inline>
- </xsl:template>
-
- <xsl:template match='xslthl:value'>
- <fo:inline color="#2A00FF"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <xsl:template match='xslthl:string'>
- <fo:inline color="#2A00FF"><xsl:apply-templates/></fo:inline>
- </xsl:template>
- <!--###################################################
- Tables
- ################################################### -->
- <!-- Some padding inside tables -->
- <xsl:attribute-set name="table.cell.padding">
- <xsl:attribute name="padding-left">4pt</xsl:attribute>
- <xsl:attribute name="padding-right">4pt</xsl:attribute>
- <xsl:attribute name="padding-top">4pt</xsl:attribute>
- <xsl:attribute name="padding-bottom">4pt</xsl:attribute>
- </xsl:attribute-set>
- <!-- Only hairlines as frame and cell borders in tables -->
- <xsl:param name="table.frame.border.thickness">0.1pt</xsl:param>
- <xsl:param name="table.cell.border.thickness">0.1pt</xsl:param>
- <!--###################################################
- Labels
- ################################################### -->
- <!-- Label Chapters and Sections (numbering) -->
- <xsl:param name="chapter.autolabel" select="1"/>
- <xsl:param name="section.autolabel" select="1"/>
- <xsl:param name="section.autolabel.max.depth" select="1"/>
- <xsl:param name="section.label.includes.component.label" select="1"/>
- <xsl:param name="table.footnote.number.format" select="'1'"/>
- <!--###################################################
- Programlistings
- ################################################### -->
- <!-- Verbatim text formatting (programlistings) -->
- <xsl:attribute-set name="monospace.verbatim.properties">
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.small * 1.0"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="verbatim.properties">
- <xsl:attribute name="space-before.minimum">1em</xsl:attribute>
- <xsl:attribute name="space-before.optimum">1em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">1em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- <xsl:attribute name="border-color">#444444</xsl:attribute>
- <xsl:attribute name="border-style">solid</xsl:attribute>
- <xsl:attribute name="border-width">0.1pt</xsl:attribute>
- <xsl:attribute name="padding-top">0.5em</xsl:attribute>
- <xsl:attribute name="padding-left">0.5em</xsl:attribute>
- <xsl:attribute name="padding-right">0.5em</xsl:attribute>
- <xsl:attribute name="padding-bottom">0.5em</xsl:attribute>
- <xsl:attribute name="margin-left">0.5em</xsl:attribute>
- <xsl:attribute name="margin-right">0.5em</xsl:attribute>
- </xsl:attribute-set>
- <!-- Shade (background) programlistings -->
- <xsl:param name="shade.verbatim">1</xsl:param>
- <xsl:attribute-set name="shade.verbatim.style">
- <xsl:attribute name="background-color">#F0F0F0</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="list.block.spacing">
- <xsl:attribute name="space-before.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-before.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- </xsl:attribute-set>
- <xsl:attribute-set name="example.properties">
- <xsl:attribute name="space-before.minimum">0.5em</xsl:attribute>
- <xsl:attribute name="space-before.optimum">0.5em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.5em</xsl:attribute>
- <xsl:attribute name="space-after.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-after.maximum">0.1em</xsl:attribute>
- <xsl:attribute name="keep-together.within-column">always</xsl:attribute>
- </xsl:attribute-set>
-
- <!--###################################################
- Title information for Figures, Examples etc.
- ################################################### -->
- <xsl:attribute-set name="formal.title.properties" use-attribute-sets="normal.para.spacing">
- <xsl:attribute name="font-weight">normal</xsl:attribute>
- <xsl:attribute name="font-style">italic</xsl:attribute>
- <xsl:attribute name="font-size">
- <xsl:value-of select="$body.font.master"/>
- <xsl:text>pt</xsl:text>
- </xsl:attribute>
- <xsl:attribute name="hyphenate">false</xsl:attribute>
- <xsl:attribute name="space-before.minimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-before.optimum">0.1em</xsl:attribute>
- <xsl:attribute name="space-before.maximum">0.1em</xsl:attribute>
- </xsl:attribute-set>
- <!--###################################################
- Callouts
- ################################################### -->
- <!-- don't use images for callouts
- <xsl:param name="callout.graphics">0</xsl:param>
- <xsl:param name="callout.unicode">1</xsl:param>
- -->
- <!-- Place callout marks at this column in annotated areas
- <xsl:param name="callout.defaultcolumn">90</xsl:param>
- -->
- <!--###################################################
- Misc
- ################################################### -->
- <!-- Placement of titles -->
- <xsl:param name="formal.title.placement">
- figure after
- example after
- equation before
- table before
- procedure before
- </xsl:param>
- <!-- Format Variable Lists as Blocks (prevents horizontal overflow) -->
- <xsl:param name="variablelist.as.blocks">1</xsl:param>
- <xsl:param name="body.start.indent">0pt</xsl:param>
- <!-- Show only Sections up to level 3 in the TOCs -->
- <xsl:param name="toc.section.depth">3</xsl:param>
- <!-- Remove "Chapter" from the Chapter titles... -->
- <xsl:param name="local.l10n.xml" select="document('')"/>
- <l:i18n xmlns:l="http://docbook.sourceforge.net/xmlns/l10n/1.0">
- <l:l10n language="en">
- <l:context name="title-numbered">
- <l:template name="chapter" text="%n. %t"/>
- <l:template name="section" text="%n %t"/>
- </l:context>
- <l:context name="title">
- <l:template name="example" text="Example %n %t"/>
- </l:context>
- </l:l10n>
- </l:i18n>
- <!--###################################################
- colored and hyphenated links
- ################################################### -->
- <!--
- <xsl:template match="ulink">
- <fo:basic-link external-destination="{@url}"
- xsl:use-attribute-sets="xref.properties"
- text-decoration="underline"
- color="blue">
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@url"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </fo:basic-link>
- </xsl:template>
- <xsl:template match="link">
- <fo:basic-link internal-destination="{@linkend}"
- xsl:use-attribute-sets="xref.properties"
- text-decoration="underline"
- color="blue">
- <xsl:choose>
- <xsl:when test="count(child::node())=0">
- <xsl:value-of select="@linkend"/>
- </xsl:when>
- <xsl:otherwise>
- <xsl:apply-templates/>
- </xsl:otherwise>
- </xsl:choose>
- </fo:basic-link>
- </xsl:template>
- -->
- </xsl:stylesheet>
|