source: clfs-embedded/BOOK/stylesheets/lfs-xsl/docbook-xsl-snapshot/fo/spaces.xsl @ 9882b55

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

Added the new lfs-xsl stylesheets.

  • Property mode set to 100644
File size: 9.9 KB
Line 
1<?xml version='1.0' encoding="utf-8"?>
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     XSL-FO specification treats all space characters like ordinary spaces.
10     We need to map them to fo:leader with different widths in order to
11     simulate desired behaviour.
12     ******************************************************************** -->
13
14<xsl:template match="text()[namespace-uri(..) = '']">
15  <xsl:choose>
16    <xsl:when test="$passivetex.extensions != 0">
17      <xsl:call-template name="passivetex.dash.subst">
18        <xsl:with-param name="string">
19          <xsl:call-template name="space.2000.subst">
20            <xsl:with-param name="string" select="."/>
21          </xsl:call-template>
22        </xsl:with-param>
23      </xsl:call-template>
24    </xsl:when>
25    <xsl:otherwise>
26      <xsl:call-template name="space.2000.subst">
27        <xsl:with-param name="string" select="."/>
28      </xsl:call-template>
29    </xsl:otherwise>
30  </xsl:choose>
31</xsl:template>
32
33<xsl:param name="space.enquad.width">0.5em</xsl:param>   <!-- U+2000 -->
34<xsl:param name="space.emquad.width">1em</xsl:param>     <!-- U+2001 -->
35<xsl:param name="space.enspace.width">0.5em</xsl:param>  <!-- U+2002 -->
36<xsl:param name="space.emspace.width">1em</xsl:param>    <!-- U+2003 -->
37<xsl:param name="space.3emspace.width">0.33em</xsl:param><!-- U+2004 -->
38<xsl:param name="space.4emspace.width">0.25em</xsl:param><!-- U+2005 -->
39<xsl:param name="space.6emspace.width">0.16em</xsl:param><!-- U+2006 -->
40<xsl:param name="space.figspace.width"></xsl:param>      <!-- U+2007 -->
41<xsl:param name="space.punctspace.width"></xsl:param>    <!-- U+2008 -->
42<xsl:param name="space.thinspace.width">0.2em</xsl:param><!-- U+2009 -->
43<xsl:param name="space.hairspace.width">0.1em</xsl:param><!-- U+200A -->
44
45<xsl:template name="space.2000.subst">
46  <xsl:param name="string"/>
47
48  <xsl:choose>
49    <xsl:when test="contains($string, '&#x2000;') and $space.enquad.width != ''">
50      <xsl:call-template name="space.2001.subst">
51        <xsl:with-param name="string" select="substring-before($string, '&#x2000;')"/>
52      </xsl:call-template>
53      <fo:leader leader-length="{$space.enquad.width}"/>
54      <xsl:call-template name="space.2000.subst">
55        <xsl:with-param name="string" select="substring-after($string, '&#x2000;')"/>
56      </xsl:call-template>
57    </xsl:when>
58    <xsl:otherwise>
59      <xsl:call-template name="space.2001.subst">
60        <xsl:with-param name="string" select="$string"/>
61      </xsl:call-template>
62    </xsl:otherwise>
63  </xsl:choose>
64</xsl:template>
65
66<xsl:template name="space.2001.subst">
67  <xsl:param name="string"/>
68
69  <xsl:choose>
70    <xsl:when test="contains($string, '&#x2001;') and $space.emquad.width != ''">
71      <xsl:call-template name="space.2002.subst">
72        <xsl:with-param name="string" select="substring-before($string, '&#x2001;')"/>
73      </xsl:call-template>
74      <fo:leader leader-length="{$space.emquad.width}"/>
75      <xsl:call-template name="space.2001.subst">
76        <xsl:with-param name="string" select="substring-after($string, '&#x2001;')"/>
77      </xsl:call-template>
78    </xsl:when>
79    <xsl:otherwise>
80      <xsl:call-template name="space.2002.subst">
81        <xsl:with-param name="string" select="$string"/>
82      </xsl:call-template>
83    </xsl:otherwise>
84  </xsl:choose>
85</xsl:template>
86
87<xsl:template name="space.2002.subst">
88  <xsl:param name="string"/>
89
90  <xsl:choose>
91    <xsl:when test="contains($string, '&#x2002;') and $space.enspace.width != ''">
92      <xsl:call-template name="space.2003.subst">
93        <xsl:with-param name="string" select="substring-before($string, '&#x2002;')"/>
94      </xsl:call-template>
95      <fo:leader leader-length="{$space.enspace.width}"/>
96      <xsl:call-template name="space.2002.subst">
97        <xsl:with-param name="string" select="substring-after($string, '&#x2002;')"/>
98      </xsl:call-template>
99    </xsl:when>
100    <xsl:otherwise>
101      <xsl:call-template name="space.2003.subst">
102        <xsl:with-param name="string" select="$string"/>
103      </xsl:call-template>
104    </xsl:otherwise>
105  </xsl:choose>
106</xsl:template>
107
108<xsl:template name="space.2003.subst">
109  <xsl:param name="string"/>
110
111  <xsl:choose>
112    <xsl:when test="contains($string, '&#x2003;') and $space.emspace.width != ''">
113      <xsl:call-template name="space.2004.subst">
114        <xsl:with-param name="string" select="substring-before($string, '&#x2003;')"/>
115      </xsl:call-template>
116      <fo:leader leader-length="{$space.emspace.width}"/>
117      <xsl:call-template name="space.2003.subst">
118        <xsl:with-param name="string" select="substring-after($string, '&#x2003;')"/>
119      </xsl:call-template>
120    </xsl:when>
121    <xsl:otherwise>
122      <xsl:call-template name="space.2004.subst">
123        <xsl:with-param name="string" select="$string"/>
124      </xsl:call-template>
125    </xsl:otherwise>
126  </xsl:choose>
127</xsl:template>
128
129<xsl:template name="space.2004.subst">
130  <xsl:param name="string"/>
131
132  <xsl:choose>
133    <xsl:when test="contains($string, '&#x2004;') and $space.3emspace.width != ''">
134      <xsl:call-template name="space.2005.subst">
135        <xsl:with-param name="string" select="substring-before($string, '&#x2004;')"/>
136      </xsl:call-template>
137      <fo:leader leader-length="{$space.3emspace.width}"/>
138      <xsl:call-template name="space.2004.subst">
139        <xsl:with-param name="string" select="substring-after($string, '&#x2004;')"/>
140      </xsl:call-template>
141    </xsl:when>
142    <xsl:otherwise>
143      <xsl:call-template name="space.2005.subst">
144        <xsl:with-param name="string" select="$string"/>
145      </xsl:call-template>
146    </xsl:otherwise>
147  </xsl:choose>
148</xsl:template>
149
150<xsl:template name="space.2005.subst">
151  <xsl:param name="string"/>
152
153  <xsl:choose>
154    <xsl:when test="contains($string, '&#x2005;') and $space.4emspace.width != ''">
155      <xsl:call-template name="space.2006.subst">
156        <xsl:with-param name="string" select="substring-before($string, '&#x2005;')"/>
157      </xsl:call-template>
158      <fo:leader leader-length="{$space.4emspace.width}"/>
159      <xsl:call-template name="space.2005.subst">
160        <xsl:with-param name="string" select="substring-after($string, '&#x2005;')"/>
161      </xsl:call-template>
162    </xsl:when>
163    <xsl:otherwise>
164      <xsl:call-template name="space.2006.subst">
165        <xsl:with-param name="string" select="$string"/>
166      </xsl:call-template>
167    </xsl:otherwise>
168  </xsl:choose>
169</xsl:template>
170
171<xsl:template name="space.2006.subst">
172  <xsl:param name="string"/>
173
174  <xsl:choose>
175    <xsl:when test="contains($string, '&#x2006;') and $space.6emspace.width != ''">
176      <xsl:call-template name="space.2007.subst">
177        <xsl:with-param name="string" select="substring-before($string, '&#x2006;')"/>
178      </xsl:call-template>
179      <fo:leader leader-length="{$space.6emspace.width}"/>
180      <xsl:call-template name="space.2006.subst">
181        <xsl:with-param name="string" select="substring-after($string, '&#x2006;')"/>
182      </xsl:call-template>
183    </xsl:when>
184    <xsl:otherwise>
185      <xsl:call-template name="space.2007.subst">
186        <xsl:with-param name="string" select="$string"/>
187      </xsl:call-template>
188    </xsl:otherwise>
189  </xsl:choose>
190</xsl:template>
191
192<xsl:template name="space.2007.subst">
193  <xsl:param name="string"/>
194
195  <xsl:choose>
196    <xsl:when test="contains($string, '&#x2007;') and $space.figspace.width != ''">
197      <xsl:call-template name="space.2008.subst">
198        <xsl:with-param name="string" select="substring-before($string, '&#x2007;')"/>
199      </xsl:call-template>
200      <fo:leader leader-length="{$space.figspace.width}"/>
201      <xsl:call-template name="space.2007.subst">
202        <xsl:with-param name="string" select="substring-after($string, '&#x2007;')"/>
203      </xsl:call-template>
204    </xsl:when>
205    <xsl:otherwise>
206      <xsl:call-template name="space.2008.subst">
207        <xsl:with-param name="string" select="$string"/>
208      </xsl:call-template>
209    </xsl:otherwise>
210  </xsl:choose>
211</xsl:template>
212
213<xsl:template name="space.2008.subst">
214  <xsl:param name="string"/>
215
216  <xsl:choose>
217    <xsl:when test="contains($string, '&#x2008;') and $space.punctspace.width != ''">
218      <xsl:call-template name="space.2009.subst">
219        <xsl:with-param name="string" select="substring-before($string, '&#x2008;')"/>
220      </xsl:call-template>
221      <fo:leader leader-length="{$space.punctspace.width}"/>
222      <xsl:call-template name="space.2008.subst">
223        <xsl:with-param name="string" select="substring-after($string, '&#x2008;')"/>
224      </xsl:call-template>
225    </xsl:when>
226    <xsl:otherwise>
227      <xsl:call-template name="space.2009.subst">
228        <xsl:with-param name="string" select="$string"/>
229      </xsl:call-template>
230    </xsl:otherwise>
231  </xsl:choose>
232</xsl:template>
233
234<xsl:template name="space.2009.subst">
235  <xsl:param name="string"/>
236
237  <xsl:choose>
238    <xsl:when test="contains($string, '&#x2009;') and $space.thinspace.width != ''">
239      <xsl:call-template name="space.200A.subst">
240        <xsl:with-param name="string" select="substring-before($string, '&#x2009;')"/>
241      </xsl:call-template>
242      <fo:leader leader-length="{$space.thinspace.width}"/>
243      <xsl:call-template name="space.2009.subst">
244        <xsl:with-param name="string" select="substring-after($string, '&#x2009;')"/>
245      </xsl:call-template>
246    </xsl:when>
247    <xsl:otherwise>
248      <xsl:call-template name="space.200A.subst">
249        <xsl:with-param name="string" select="$string"/>
250      </xsl:call-template>
251    </xsl:otherwise>
252  </xsl:choose>
253</xsl:template>
254
255<xsl:template name="space.200A.subst">
256  <xsl:param name="string"/>
257
258  <xsl:choose>
259    <xsl:when test="contains($string, '&#x200A;') and $space.hairspace.width != ''">
260      <xsl:value-of select="substring-before($string, '&#x200A;')"/>
261      <fo:leader leader-length="{$space.hairspace.width}"/>
262      <xsl:call-template name="space.200A.subst">
263        <xsl:with-param name="string" select="substring-after($string, '&#x200A;')"/>
264      </xsl:call-template>
265    </xsl:when>
266    <xsl:otherwise>
267      <xsl:value-of select="$string"/>
268    </xsl:otherwise>
269  </xsl:choose>
270</xsl:template>
271
272</xsl:stylesheet>
273
Note: See TracBrowser for help on using the repository browser.