source: clfs-sysroot/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/callout.xsl @ a18aefd

Last change on this file since a18aefd was a18aefd, checked in by Manuel Canales Esparcia <manuel@…>, 17 years ago

Added lfs-xsl stylesheets.

  • Property mode set to 100644
File size: 8.2 KB
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                xmlns:sverb="http://nwalsh.com/xslt/ext/com.nwalsh.saxon.Verbatim"
5                xmlns:xverb="com.nwalsh.xalan.Verbatim"
6                xmlns:lxslt="http://xml.apache.org/xslt"
7                exclude-result-prefixes="sverb xverb lxslt"
8                version='1.0'>
9
10<!-- ********************************************************************
11     $Id$
12     ********************************************************************
13
14     This file is part of the XSL DocBook Stylesheet distribution.
15     See ../README or http://docbook.sf.net/release/xsl/current/ for
16     copyright and other information.
17
18     ******************************************************************** -->
19
20<lxslt:component prefix="xverb"
21                 functions="insertCallouts"/>
22
23<xsl:template match="programlistingco|screenco">
24  <xsl:variable name="verbatim" select="programlisting|screen"/>
25  <xsl:variable name="vendor" select="system-property('xsl:vendor')"/>
26
27  <xsl:choose>
28    <xsl:when test="$use.extensions != '0'
29                    and $callouts.extension != '0'">
30      <xsl:variable name="rtf">
31        <xsl:apply-templates select="$verbatim">
32          <xsl:with-param name="suppress-numbers" select="'1'"/>
33        </xsl:apply-templates>
34      </xsl:variable>
35
36      <xsl:variable name="rtf-with-callouts">
37        <xsl:choose>
38          <xsl:when test="contains($vendor, 'SAXON ')">
39            <xsl:copy-of select="sverb:insertCallouts(areaspec,$rtf)"/>
40          </xsl:when>
41          <xsl:when test="contains($vendor, 'Apache Software Foundation')">
42            <xsl:copy-of select="xverb:insertCallouts(areaspec,$rtf)"/>
43          </xsl:when>
44          <xsl:otherwise>
45            <xsl:message terminate="yes">
46              <xsl:text>Don't know how to do callouts with </xsl:text>
47              <xsl:value-of select="$vendor"/>
48            </xsl:message>
49          </xsl:otherwise>
50        </xsl:choose>
51      </xsl:variable>
52
53      <xsl:choose>
54        <xsl:when test="$verbatim/@linenumbering = 'numbered'
55                        and $linenumbering.extension != '0'">
56          <xsl:call-template name="number.rtf.lines">
57            <xsl:with-param name="rtf" select="$rtf-with-callouts"/>
58            <xsl:with-param name="pi.context"
59                            select="programlisting|screen"/>
60          </xsl:call-template>
61          <xsl:apply-templates select="calloutlist"/>
62        </xsl:when>
63        <xsl:otherwise>
64          <xsl:copy-of select="$rtf-with-callouts"/>
65          <xsl:apply-templates select="calloutlist"/>
66        </xsl:otherwise>
67      </xsl:choose>
68    </xsl:when>
69    <xsl:otherwise>
70      <xsl:apply-templates/>
71    </xsl:otherwise>
72  </xsl:choose>
73</xsl:template>
74
75<xsl:template match="areaspec|areaset|area">
76</xsl:template>
77
78<xsl:template match="areaset" mode="conumber">
79  <xsl:number count="area|areaset" format="1"/>
80</xsl:template>
81
82<xsl:template match="area" mode="conumber">
83  <xsl:number count="area|areaset" format="1"/>
84</xsl:template>
85
86<xsl:template match="co">
87  <fo:inline>
88    <xsl:call-template name="anchor"/>
89    <xsl:apply-templates select="." mode="callout-bug"/>
90  </fo:inline>
91</xsl:template>
92
93<xsl:template match="coref">
94  <!-- tricky; this relies on the fact that we can process the "co" that's -->
95  <!-- "over there" as if it were "right here" -->
96
97  <xsl:variable name="co" select="key('id', @linkend)"/>
98  <xsl:choose>
99    <xsl:when test="not($co)">
100      <xsl:message>
101        <xsl:text>Error: coref link is broken: </xsl:text>
102        <xsl:value-of select="@linkend"/>
103      </xsl:message>
104    </xsl:when>
105    <xsl:when test="local-name($co) != 'co'">
106      <xsl:message>
107        <xsl:text>Error: coref doesn't point to a co: </xsl:text>
108        <xsl:value-of select="@linkend"/>
109      </xsl:message>
110    </xsl:when>
111    <xsl:otherwise>
112      <fo:inline>
113        <xsl:call-template name="anchor"/>
114        <xsl:apply-templates select="$co" mode="callout-bug"/>
115      </fo:inline>
116    </xsl:otherwise>
117  </xsl:choose>
118</xsl:template>
119
120<xsl:template match="co" mode="callout-bug">
121  <xsl:call-template name="callout-bug">
122    <xsl:with-param name="conum">
123      <xsl:number count="co"
124                  level="any"
125                  from="programlisting|screen|literallayout|synopsis"
126                  format="1"/>
127    </xsl:with-param>
128  </xsl:call-template>
129</xsl:template>
130
131<xsl:template name="callout-bug">
132  <xsl:param name="conum" select='1'/>
133
134  <xsl:choose>
135    <!-- Draw callouts as images -->
136    <xsl:when test="$callout.graphics != '0'
137                    and $conum &lt;= $callout.graphics.number.limit">
138      <xsl:variable name="filename"
139                    select="concat($callout.graphics.path, $conum,
140                                   $callout.graphics.extension)"/>
141
142      <fo:external-graphic content-width="{$callout.icon.size}"
143                           width="{$callout.icon.size}">
144        <xsl:attribute name="src">
145          <xsl:choose>
146            <xsl:when test="$passivetex.extensions != 0
147                            or $fop.extensions != 0
148                            or $arbortext.extensions != 0">
149              <xsl:value-of select="$filename"/>
150            </xsl:when>
151            <xsl:otherwise>
152              <xsl:text>url(</xsl:text>
153              <xsl:value-of select="$filename"/>
154              <xsl:text>)</xsl:text>
155            </xsl:otherwise>
156          </xsl:choose>
157        </xsl:attribute>
158      </fo:external-graphic>
159    </xsl:when>
160
161    <xsl:when test="$callout.unicode != 0
162                    and $conum &lt;= $callout.unicode.number.limit">
163      <xsl:variable name="comarkup">
164        <xsl:choose>
165          <xsl:when test="$callout.unicode.start.character = 10102">
166            <xsl:choose>
167              <xsl:when test="$conum = 1">&#10102;</xsl:when>
168              <xsl:when test="$conum = 2">&#10103;</xsl:when>
169              <xsl:when test="$conum = 3">&#10104;</xsl:when>
170              <xsl:when test="$conum = 4">&#10105;</xsl:when>
171              <xsl:when test="$conum = 5">&#10106;</xsl:when>
172              <xsl:when test="$conum = 6">&#10107;</xsl:when>
173              <xsl:when test="$conum = 7">&#10108;</xsl:when>
174              <xsl:when test="$conum = 8">&#10109;</xsl:when>
175              <xsl:when test="$conum = 9">&#10110;</xsl:when>
176              <xsl:when test="$conum = 10">&#10111;</xsl:when>
177            </xsl:choose>
178          </xsl:when>
179          <xsl:otherwise>
180            <xsl:message>
181              <xsl:text>Don't know how to generate Unicode callouts </xsl:text>
182              <xsl:text>when $callout.unicode.start.character is </xsl:text>
183              <xsl:value-of select="$callout.unicode.start.character"/>
184            </xsl:message>
185            <fo:inline background-color="#404040"
186                       color="white"
187                       padding-top="0.1em"
188                       padding-bottom="0.1em"
189                       padding-start="0.2em"
190                       padding-end="0.2em"
191                       baseline-shift="0.1em"
192                       font-family="{$body.fontset}"
193                       font-weight="bold"
194                       font-size="75%">
195              <xsl:value-of select="$conum"/>
196            </fo:inline>
197          </xsl:otherwise>
198        </xsl:choose>
199      </xsl:variable>
200
201      <xsl:choose>
202        <xsl:when test="$callout.unicode.font != ''">
203          <fo:inline font-family="{$callout.unicode.font}">
204            <xsl:copy-of select="$comarkup"/>
205          </fo:inline>
206        </xsl:when>
207        <xsl:otherwise>
208          <xsl:copy-of select="$comarkup"/>
209        </xsl:otherwise>
210      </xsl:choose>
211    </xsl:when>
212
213    <!-- Most safe: draw a dark gray square with a white number inside -->
214    <xsl:otherwise>
215      <fo:inline background-color="#404040"
216                 color="white"
217                 padding-top="0.1em"
218                 padding-bottom="0.1em"
219                 padding-start="0.2em"
220                 padding-end="0.2em"
221                 baseline-shift="0.1em"
222                 font-family="{$body.fontset}"
223                 font-weight="bold"
224                 font-size="75%">
225        <xsl:value-of select="$conum"/>
226      </fo:inline>
227    </xsl:otherwise>
228  </xsl:choose>
229</xsl:template>
230
231</xsl:stylesheet>
Note: See TracBrowser for help on using the repository browser.