diff options
Diffstat (limited to 'stylesheets/pdf')
-rw-r--r-- | stylesheets/pdf/lfs-admon.xsl | 95 | ||||
-rw-r--r-- | stylesheets/pdf/lfs-index.xsl | 50 | ||||
-rw-r--r-- | stylesheets/pdf/lfs-mixed.xsl | 251 | ||||
-rw-r--r-- | stylesheets/pdf/lfs-pagesetup.xsl | 11 | ||||
-rw-r--r-- | stylesheets/pdf/lfs-xref.xsl | 283 |
5 files changed, 579 insertions, 111 deletions
diff --git a/stylesheets/pdf/lfs-admon.xsl b/stylesheets/pdf/lfs-admon.xsl new file mode 100644 index 000000000..44d7b011f --- /dev/null +++ b/stylesheets/pdf/lfs-admon.xsl @@ -0,0 +1,95 @@ +<?xml version='1.0' encoding='ISO-8859-1'?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version="1.0"> + + + <!-- Graphics in admonitions --> + <xsl:param name="admon.graphics" select="1"/> + <xsl:param name="admon.graphics.path" + select="'/usr/share/xml/docbook/xsl-stylesheets-current/images/'"/> + + <!-- Admonition block properties --> + <xsl:template match="important|warning|caution"> + <xsl:choose> + <xsl:when test="$admon.graphics != 0"> + <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em" + space-before.maximum="0.8em" border-style="solid" border-width="1pt" + border-color="#500" background-color="#FFFFE6"> + <xsl:call-template name="graphical.admonition"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="nongraphical.admonition"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="note|tip"> + <xsl:choose> + <xsl:when test="$admon.graphics != 0"> + <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em" + space-before.maximum="0.8em" border-style="solid" border-width="1pt" + border-color="#E0E0E0" background-color="#FFFFE6"> + <xsl:call-template name="graphical.admonition"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="nongraphical.admonition"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <!-- Admonitions text properties --> + <xsl:attribute-set name="admonition.properties"> + <xsl:attribute name="margin-right">6pt</xsl:attribute> + </xsl:attribute-set> + + <!-- Adding left space to the graphics and color to the titles --> + <xsl:template name="graphical.admonition"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <xsl:variable name="graphic.width"> + <xsl:call-template name="admon.graphic.width"/> + </xsl:variable> + <fo:block id="{$id}"> + <fo:list-block provisional-distance-between-starts="{$graphic.width} + 18pt" + provisional-label-separation="18pt" xsl:use-attribute-sets="list.block.spacing"> + <fo:list-item> + <fo:list-item-label end-indent="label-end()"> + <fo:block margin-left="4pt"> + <fo:external-graphic width="auto" height="auto" + content-width="{$graphic.width}" > + <xsl:attribute name="src"> + <xsl:call-template name="admon.graphic"/> + </xsl:attribute> + </fo:external-graphic> + </fo:block> + </fo:list-item-label> + <fo:list-item-body start-indent="body-start()"> + <xsl:if test="$admon.textlabel != 0 or title"> + <fo:block xsl:use-attribute-sets="admonition.title.properties"> + <xsl:if test="ancestor-or-self::important"> + <xsl:attribute name="color">#500</xsl:attribute> + </xsl:if> + <xsl:if test="ancestor-or-self::warning"> + <xsl:attribute name="color">#500</xsl:attribute> + </xsl:if> + <xsl:if test="ancestor-or-self::caution"> + <xsl:attribute name="color">#500</xsl:attribute> + </xsl:if> + <xsl:apply-templates select="." mode="object.title.markup"/> + </fo:block> + </xsl:if> + <fo:block xsl:use-attribute-sets="admonition.properties"> + <xsl:apply-templates/> + </fo:block> + </fo:list-item-body> + </fo:list-item> + </fo:list-block> + </fo:block> + </xsl:template> + +</xsl:stylesheet>
\ No newline at end of file diff --git a/stylesheets/pdf/lfs-index.xsl b/stylesheets/pdf/lfs-index.xsl index a43be774c..6f15ce53e 100644 --- a/stylesheets/pdf/lfs-index.xsl +++ b/stylesheets/pdf/lfs-index.xsl @@ -13,7 +13,9 @@ <!--Title--> <xsl:template match="index" mode="title.markup"> <xsl:param name="allow-anchors" select="0"/> - <xsl:text>Index</xsl:text> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Index</xsl:with-param> + </xsl:call-template> </xsl:template> <!-- Divisions--> @@ -30,24 +32,34 @@ <xsl:with-param name="titlecontent"> <xsl:choose> <xsl:when test="$divtitle = 'A'"> - <xsl:text>Packages</xsl:text> - </xsl:when> - <xsl:when test="$divtitle = 'B'"> - <xsl:text>Programs</xsl:text> - </xsl:when> - <xsl:when test="$divtitle = 'C'"> - <xsl:text>Libraries</xsl:text> - </xsl:when> - <xsl:when test="$divtitle = 'D'"> - <xsl:text>Scripts</xsl:text> - </xsl:when> - <xsl:when test="$divtitle = 'E'"> - <xsl:text>Others</xsl:text> - </xsl:when> - <xsl:otherwise> - <xsl:value-of select="$divtitle"/> - </xsl:otherwise> - </xsl:choose> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Packages</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="$divtitle = 'B'"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Programs</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="$divtitle = 'C'"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Libraries</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="$divtitle = 'D'"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Scripts</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:when test="$divtitle = 'E'"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key">Others</xsl:with-param> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$divtitle"/> + </xsl:otherwise> + </xsl:choose> </xsl:with-param> </xsl:call-template> </xsl:if> diff --git a/stylesheets/pdf/lfs-mixed.xsl b/stylesheets/pdf/lfs-mixed.xsl index 256b75fee..15fc55eaf 100644 --- a/stylesheets/pdf/lfs-mixed.xsl +++ b/stylesheets/pdf/lfs-mixed.xsl @@ -4,21 +4,95 @@ xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0"> - - <!-- This is a hack and isn't correct semantically. The beginpage tags must - be placed in the XML source only to render the final PDF output, and must - be removed after.--> + + <!-- This is a hack and isn't correct semantically. Theoretically, the beginpage + tags should be placed in the XML source only to render the PDF output and + should be removed after it. But there is no a better way and we need this.--> <xsl:template match="beginpage"> <fo:block break-after="page"/> </xsl:template> + + <!-- Allow forced line breaks inside paragraphs emulating literallayout. --> + <xsl:template match="para"> + <xsl:choose> + <xsl:when test="./@remap='verbatim'"> + <fo:block wrap-option="no-wrap" + white-space-collapse="false" + white-space-treatment="preserve" + text-align="start" + linefeed-treatment="preserve"> + <xsl:call-template name="anchor"/> + <xsl:apply-templates/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <xsl:apply-imports/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> - <!-- Split URLs --> - <xsl:template name="hyphenate-url"> + <!-- Show URLs in italic font --> + <xsl:template match="ulink" name="ulink"> + <fo:inline font-style="italic"> + <fo:basic-link xsl:use-attribute-sets="xref.properties"> + <xsl:attribute name="external-destination"> + <xsl:call-template name="fo-external-image"> + <xsl:with-param name="filename" select="@url"/> + </xsl:call-template> + </xsl:attribute> + <xsl:choose> + <xsl:when test="count(child::node())=0"> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="@url"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates/> + </xsl:otherwise> + </xsl:choose> + </fo:basic-link> + </fo:inline> + <xsl:if test="count(child::node()) != 0 + and string(.) != @url + and $ulink.show != 0"> + <!-- yes, show the URI --> + <xsl:choose> + <xsl:when test="$ulink.footnotes != 0 and not(ancestor::footnote)"> + <xsl:text> </xsl:text> + <fo:footnote> + <xsl:call-template name="ulink.footnote.number"/> + <fo:footnote-body font-family="{$body.fontset}" + font-size="{$footnote.font.size}"> + <fo:block> + <xsl:call-template name="ulink.footnote.number"/> + <xsl:text> </xsl:text> + <fo:inline> + <xsl:value-of select="@url"/> + </fo:inline> + </fo:block> + </fo:footnote-body> + </fo:footnote> + </xsl:when> + <xsl:otherwise> + <fo:inline hyphenate="false"> + <xsl:text> [</xsl:text> + <xsl:call-template name="hyphenate-url"> + <xsl:with-param name="url" select="@url"/> + </xsl:call-template> + <xsl:text>]</xsl:text> + </fo:inline> + </xsl:otherwise> + </xsl:choose> + </xsl:if> + </xsl:template> + + <!-- Split URLs (obsolete, keeped as reference) --> + <!--<xsl:template name="hyphenate-url"> <xsl:param name="url" select="''"/> <xsl:choose> <xsl:when test="ancestor::varlistentry"> <xsl:choose> - <xsl:when test="string-length($url) > 88"> + <xsl:when test="string-length($url) > 90"> <xsl:value-of select="substring($url, 1, 50)"/> <xsl:param name="rest" select="substring($url, 51)"/> <xsl:value-of select="substring-before($rest, '/')"/> @@ -31,15 +105,15 @@ </xsl:choose> </xsl:when> <xsl:otherwise> - <xsl:value-of select="$url"/> + <xsl:value-of select="$url"/>--> <!-- <xsl:value-of select="substring-before($url, '//')"/> <xsl:text>// </xsl:text> <xsl:call-template name="split-url"> <xsl:with-param name="url2" select="substring-after($url, '//')"/> </xsl:call-template>--> - </xsl:otherwise> + <!-- </xsl:otherwise> </xsl:choose> - </xsl:template> + </xsl:template>--> <!--<xsl:template name="split-url"> <xsl:choose> @@ -60,88 +134,6 @@ <!-- Shade screen --> <xsl:param name="shade.verbatim" select="1"/> - <!-- Graphics in admonitions --> - <xsl:param name="admon.graphics" select="1"/> - <xsl:param name="admon.graphics.path" - select="'/usr/share/xml/docbook/xsl-stylesheets-1.67.2/images/'"/> - - <!-- Admonition block properties --> - <xsl:template match="important|warning|caution"> - <xsl:choose> - <xsl:when test="$admon.graphics != 0"> - <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em" - space-before.maximum="0.8em" border-style="solid" border-width="1pt" - border-color="#500" background-color="#FFFFE6"> - <xsl:call-template name="graphical.admonition"/> - </fo:block> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="nongraphical.admonition"/> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - <xsl:template match="note|tip"> - <xsl:choose> - <xsl:when test="$admon.graphics != 0"> - <fo:block space-before.minimum="0.4em" space-before.optimum="0.6em" - space-before.maximum="0.8em" border-style="solid" border-width="1pt" - border-color="#E0E0E0" background-color="#FFFFE6"> - <xsl:call-template name="graphical.admonition"/> - </fo:block> - </xsl:when> - <xsl:otherwise> - <xsl:call-template name="nongraphical.admonition"/> - </xsl:otherwise> - </xsl:choose> - </xsl:template> - - <!-- Admonitions text properties --> - <xsl:attribute-set name="admonition.properties"> - <xsl:attribute name="margin-right">6pt</xsl:attribute> - </xsl:attribute-set> - - <!-- Adding left space to the graphics and color to the titles --> - <xsl:template name="graphical.admonition"> - <xsl:variable name="id"> - <xsl:call-template name="object.id"/> - </xsl:variable> - <fo:block id="{$id}"> - <fo:list-block xsl:use-attribute-sets="list.block.spacing"> - <fo:list-item> - <fo:list-item-label end-indent="label-end()"> - <fo:block margin-left="4pt"> - <fo:external-graphic width="auto" height="auto"> - <xsl:attribute name="src"> - <xsl:call-template name="admon.graphic"/> - </xsl:attribute> - </fo:external-graphic> - </fo:block> - </fo:list-item-label> - <fo:list-item-body start-indent="body-start()"> - <xsl:if test="$admon.textlabel != 0 or title"> - <fo:block xsl:use-attribute-sets="admonition.title.properties"> - <xsl:if test="ancestor-or-self::important"> - <xsl:attribute name="color">#500</xsl:attribute> - </xsl:if> - <xsl:if test="ancestor-or-self::warning"> - <xsl:attribute name="color">#500</xsl:attribute> - </xsl:if> - <xsl:if test="ancestor-or-self::caution"> - <xsl:attribute name="color">#500</xsl:attribute> - </xsl:if> - <xsl:apply-templates select="." mode="object.title.markup"/> - </fo:block> - </xsl:if> - <fo:block xsl:use-attribute-sets="admonition.properties"> - <xsl:apply-templates/> - </fo:block> - </fo:list-item-body> - </fo:list-item> - </fo:list-block> - </fo:block> - </xsl:template> - <!-- How is rendered by default a variablelist --> <xsl:param name="variablelist.as.blocks" select="1"/> <xsl:param name="variablelist.max.termlength">32</xsl:param> @@ -177,4 +169,79 @@ </xsl:choose>--> </xsl:template> + <!-- Presentation of literal tag --> + <xsl:template match="literal"> + <fo:inline font-weight="normal"> + <xsl:call-template name="inline.monoseq"/> + </fo:inline> + </xsl:template> + + <!-- Left alingnament for itemizedlist --> + <xsl:template match="itemizedlist"> + <xsl:variable name="id"> + <xsl:call-template name="object.id"/> + </xsl:variable> + <xsl:variable name="label-width"> + <xsl:call-template name="dbfo-attribute"> + <xsl:with-param name="pis" + select="processing-instruction('dbfo')"/> + <xsl:with-param name="attribute" select="'label-width'"/> + </xsl:call-template> + </xsl:variable> + <xsl:if test="title"> + <xsl:apply-templates select="title" mode="list.title.mode"/> + </xsl:if> + <!-- Preserve order of PIs and comments --> + <xsl:apply-templates + select="*[not(self::listitem + or self::title + or self::titleabbrev)] + |comment()[not(preceding-sibling::listitem)] + |processing-instruction()[not(preceding-sibling::listitem)]"/> + <fo:list-block id="{$id}" xsl:use-attribute-sets="list.block.spacing" + provisional-label-separation="0.2em" text-align="left"> + <xsl:attribute name="provisional-distance-between-starts"> + <xsl:choose> + <xsl:when test="$label-width != ''"> + <xsl:value-of select="$label-width"/> + </xsl:when> + <xsl:otherwise>1.5em</xsl:otherwise> + </xsl:choose> + </xsl:attribute> + <xsl:apply-templates + select="listitem + |comment()[preceding-sibling::listitem] + |processing-instruction()[preceding-sibling::listitem]"/> + </fo:list-block> + </xsl:template> + + <!-- Addibg a bullet, and left alignament, for packages and paches list. --> + +<xsl:template match="varlistentry" mode="vl.as.blocks"> + <xsl:variable name="id"><xsl:call-template name="object.id"/></xsl:variable> + <xsl:choose> + <xsl:when test="ancestor::variablelist/@role = 'materials'"> + <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing" + keep-together.within-column="always" + keep-with-next.within-column="always" text-align="left"> + <xsl:text>• </xsl:text> + <xsl:apply-templates select="term"/> + </fo:block> + <fo:block margin-left="0.1in" text-align="left"> + <xsl:apply-templates select="listitem"/> + </fo:block> + </xsl:when> + <xsl:otherwise> + <fo:block id="{$id}" xsl:use-attribute-sets="list.item.spacing" + keep-together.within-column="always" + keep-with-next.within-column="always"> + <xsl:apply-templates select="term"/> + </fo:block> + <fo:block margin-left="0.25in"> + <xsl:apply-templates select="listitem"/> + </fo:block> + </xsl:otherwise> + </xsl:choose> +</xsl:template> + </xsl:stylesheet> diff --git a/stylesheets/pdf/lfs-pagesetup.xsl b/stylesheets/pdf/lfs-pagesetup.xsl index 1302ecdb0..7733b45e3 100644 --- a/stylesheets/pdf/lfs-pagesetup.xsl +++ b/stylesheets/pdf/lfs-pagesetup.xsl @@ -62,6 +62,17 @@ </fo:block> </xsl:template> + <!-- Font size for chapter title. --> + <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" + font-size="21pt" font-weight="bold" text-align="left"> + <xsl:call-template name="component.title"> + <xsl:with-param name="node" select="ancestor-or-self::chapter[1]"/> + </xsl:call-template> + </fo:block> + </xsl:template> + <!-- Margins --> <xsl:param name="page.margin.inner">0.5in</xsl:param> <xsl:param name="page.margin.outer">0.375in</xsl:param> diff --git a/stylesheets/pdf/lfs-xref.xsl b/stylesheets/pdf/lfs-xref.xsl new file mode 100644 index 000000000..57279c6ec --- /dev/null +++ b/stylesheets/pdf/lfs-xref.xsl @@ -0,0 +1,283 @@ +<?xml version='1.0' encoding='ISO-8859-1'?> + +<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" + xmlns:fo="http://www.w3.org/1999/XSL/Format" + version="1.0"> + + <!-- Making a proper punctuation in xref (only for English language).--> + <xsl:template match="xref" name="xref"> + <xsl:variable name="targets" select="key('id',@linkend)"/> + <xsl:variable name="target" select="$targets[1]"/> + <xsl:variable name="refelem" select="local-name($target)"/> + <xsl:variable name="role" select="@role"/> + <xsl:call-template name="check.id.unique"> + <xsl:with-param name="linkend" select="@linkend"/> + </xsl:call-template> + <xsl:choose> + <xsl:when test="$refelem=''"> + <xsl:message> + <xsl:text>XRef to nonexistent id: </xsl:text> + <xsl:value-of select="@linkend"/> + </xsl:message> + <xsl:text>???</xsl:text> + </xsl:when> + <xsl:when test="$target/@xreflabel"> + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:call-template name="xref.xreflabel"> + <xsl:with-param name="target" select="$target"/> + </xsl:call-template> + </fo:basic-link> + </xsl:when> + <xsl:otherwise> + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:apply-templates select="$target" mode="xref-to"> + <xsl:with-param name="referrer" select="."/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="xrefstyle"> + <xsl:value-of select="@xrefstyle"/> + </xsl:with-param> + </xsl:apply-templates> + </fo:basic-link> + </xsl:otherwise> + </xsl:choose> + <!-- Add standard page reference? --> + <xsl:if test="not(starts-with(normalize-space(@xrefstyle), 'select:') != '' + and (contains(@xrefstyle, 'page') + or contains(@xrefstyle, 'Page'))) + and ( $insert.xref.page.number = 'yes' + or $insert.xref.page.number = '1') + or local-name($target) = 'para'"> + <fo:basic-link internal-destination="{@linkend}" + xsl:use-attribute-sets="xref.properties"> + <xsl:apply-templates select="$target" mode="page.citation"> + <xsl:with-param name="id" select="@linkend"/> + </xsl:apply-templates> + </fo:basic-link> + </xsl:if> + </xsl:template> + + <xsl:template match="section|simplesect|sect1|sect2|sect3|sect4|sect5 + |refsect1|refsect2|refsect3|refsection" mode="xref-to"> + <xsl:param name="referrer"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="role"/> + <xsl:apply-templates select="." mode="object.xref.markup"> + <xsl:with-param name="purpose" select="'xref'"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="role" select="$role"/> + </xsl:apply-templates> + </xsl:template> + + <xsl:template match="*" mode="object.xref.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="referrer"/> + <xsl:param name="role"/> + <xsl:variable name="template"> + <xsl:choose> + <xsl:when test="starts-with(normalize-space($xrefstyle), 'select:')"> + <xsl:call-template name="make.gentext.template"> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:call-template> + </xsl:when> + <xsl:when test="starts-with(normalize-space($xrefstyle), 'template:')"> + <xsl:value-of select="substring-after(normalize-space($xrefstyle), 'template:')"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="object.xref.template"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:variable> + <xsl:if test="$template = ''"> + <xsl:message> + <xsl:text>object.xref.markup: empty xref template</xsl:text> + <xsl:text> for linkend="</xsl:text> + <xsl:value-of select="@id"/> + <xsl:text>" and @xrefstyle="</xsl:text> + <xsl:value-of select="$xrefstyle"/> + <xsl:text>"</xsl:text> + </xsl:message> + </xsl:if> + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="template" select="$template"/> + <xsl:with-param name="role" select="$role"/> + </xsl:call-template> + </xsl:template> + + <xsl:template name="substitute-markup"> + <xsl:param name="template" select="''"/> + <xsl:param name="allow-anchors" select="'0'"/> + <xsl:param name="title" select="''"/> + <xsl:param name="subtitle" select="''"/> + <xsl:param name="label" select="''"/> + <xsl:param name="pagenumber" select="''"/> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="referrer"/> + <xsl:param name="role"/> + <xsl:choose> + <xsl:when test="contains($template, '%')"> + <xsl:value-of select="substring-before($template, '%')"/> + <xsl:variable name="candidate" + select="substring(substring-after($template, '%'), 1, 1)"/> + <xsl:choose> + <xsl:when test="$candidate = 't'"> + <xsl:apply-templates select="." mode="insert.title.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="role" select="$role"/> + <xsl:with-param name="title"> + <xsl:choose> + <xsl:when test="$title != ''"> + <xsl:copy-of select="$title"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="title.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 's'"> + <xsl:apply-templates select="." mode="insert.subtitle.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="subtitle"> + <xsl:choose> + <xsl:when test="$subtitle != ''"> + <xsl:copy-of select="$subtitle"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="subtitle.markup"> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + </xsl:apply-templates> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'n'"> + <xsl:apply-templates select="." mode="insert.label.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="label"> + <xsl:choose> + <xsl:when test="$label != ''"> + <xsl:copy-of select="$label"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="label.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'p'"> + <xsl:apply-templates select="." mode="insert.pagenumber.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="pagenumber"> + <xsl:choose> + <xsl:when test="$pagenumber != ''"> + <xsl:copy-of select="$pagenumber"/> + </xsl:when> + <xsl:otherwise> + <xsl:apply-templates select="." mode="pagenumber.markup"/> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = 'd'"> + <xsl:apply-templates select="." mode="insert.direction.markup"> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="direction"> + <xsl:choose> + <xsl:when test="$referrer"> + <xsl:variable name="referent-is-below"> + <xsl:for-each select="preceding::xref"> + <xsl:if test="generate-id(.) = generate-id($referrer)">1</xsl:if> + </xsl:for-each> + </xsl:variable> + <xsl:choose> + <xsl:when test="$referent-is-below = ''"> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'above'"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:call-template name="gentext"> + <xsl:with-param name="key" select="'below'"/> + </xsl:call-template> + </xsl:otherwise> + </xsl:choose> + </xsl:when> + <xsl:otherwise> + <xsl:message>Attempt to use %d in gentext with no referrer!</xsl:message> + </xsl:otherwise> + </xsl:choose> + </xsl:with-param> + </xsl:apply-templates> + </xsl:when> + <xsl:when test="$candidate = '%' "> + <xsl:text>%</xsl:text> + </xsl:when> + <xsl:otherwise> + <xsl:text>%</xsl:text><xsl:value-of select="$candidate"/> + </xsl:otherwise> + </xsl:choose> + <!-- recurse with the rest of the template string --> + <xsl:variable name="rest" + select="substring($template, + string-length(substring-before($template, '%'))+3)"/> + <xsl:call-template name="substitute-markup"> + <xsl:with-param name="template" select="$rest"/> + <xsl:with-param name="allow-anchors" select="$allow-anchors"/> + <xsl:with-param name="title" select="$title"/> + <xsl:with-param name="subtitle" select="$subtitle"/> + <xsl:with-param name="label" select="$label"/> + <xsl:with-param name="pagenumber" select="$pagenumber"/> + <xsl:with-param name="purpose" select="$purpose"/> + <xsl:with-param name="xrefstyle" select="$xrefstyle"/> + <xsl:with-param name="referrer" select="$referrer"/> + <xsl:with-param name="role" select="$role"/> + </xsl:call-template> + </xsl:when> + <xsl:otherwise> + <xsl:value-of select="$template"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + + <xsl:template match="*" mode="insert.title.markup"> + <xsl:param name="purpose"/> + <xsl:param name="xrefstyle"/> + <xsl:param name="title"/> + <xsl:param name="role"/> + <xsl:choose> + <xsl:when test="$purpose = 'xref' and titleabbrev"> + <xsl:apply-templates select="." mode="titleabbrev.markup"/> + </xsl:when> + <xsl:otherwise> + <xsl:copy-of select="$title"/> + <xsl:value-of select="$role"/> + </xsl:otherwise> + </xsl:choose> + </xsl:template> + +</xsl:stylesheet>
\ No newline at end of file |