2
<!DOCTYPE xsl:stylesheet [ <!ENTITY % xsldoc.ent SYSTEM "./xsldoc.ent"> %xsldoc.ent; ]>
3
<!--#############################################################################
4
| $Id: procedure.mod.xsl,v 1.12 2004/01/13 04:35:43 j-devenish Exp $
5
|- #############################################################################
6
| $Author: j-devenish $
7
+ ############################################################################## -->
10
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
11
xmlns:doc="http://nwalsh.com/xsl/documentation/1.0"
12
exclude-result-prefixes="doc" version='1.0'>
14
<doc:reference id="procedure" xmlns="">
16
<releaseinfo role="meta">
17
$Id: procedure.mod.xsl,v 1.12 2004/01/13 04:35:43 j-devenish Exp $
24
<year>2000</year><year>2001</year><year>2002</year><year>2003</year><year>2004</year>
25
<holder>Ramon Casellas</holder>
28
<doc:revision rcasver="1.10">&rev_2003_05;</doc:revision>
31
<title>Procedures <filename>procedure.mod.xsl</filename></title>
41
<doc:template xmlns="">
42
<refpurpose>Process <doc:db>procedure</doc:db> elements</refpurpose>
46
Format a titled, enumerated list of steps.
52
<listitem><simpara><xref linkend="param.formal.title.placement"/></simpara></listitem>
60
Although the <sgmltag class="attribute">mode</sgmltag>
61
parameter is normally empty, this template recognises a
62
special value of <quote>custom</quote>. This influences
63
the type of environment and the method of labelling
64
<doc:db basename="step">steps</doc:db>.
68
<term>environment</term>
70
This determines the &LaTeX; environment that will be
71
used for each <doc:db>step</doc:db>'s <function
72
condition="latex">item</function>. When the
73
<literal>mode</literal> is <quote>custom</quote>, this
74
parameter defaults to <quote>description</quote>.
75
Otherwise, the default is <quote>enumerate</quote>.
83
By default, the &LaTeX; <function
84
condition="env">enumerate</function> environment is used and any
85
<doc:db>step</doc:db>'s <doc:db>title</doc:db> will be typeset
86
after its automatic step number. However, when the
87
<literal>mode</literal> variable is equal to <quote>custom</quote>,
88
the <function condition="env">description</function> environment
89
will be used and step titles will be typeset
90
<emphasis>instead</emphasis> of step numbers.
95
Although the procedure is a formal, titled block, is is not typeset
96
using <function condition="latex">subsection</function>.
101
<simplelist type='inline'>
109
<listitem><simpara><xref linkend="template.procedure/title"/></simpara></listitem>
113
<xsl:template match="procedure" name="procedure">
114
<xsl:param name="mode" select="''"/>
115
<xsl:param name="environment">
117
<xsl:when test="$mode='custom'">
118
<xsl:text>description</xsl:text>
121
<xsl:text>enumerate</xsl:text>
125
<xsl:variable name="placement">
126
<xsl:call-template name="generate.formal.title.placement">
127
<xsl:with-param name="object" select="local-name(.)" />
130
<xsl:variable name="preamble" select="node()[not(self::blockinfo or self::title or self::subtitle or self::titleabbrev or self::step)]"/>
132
<xsl:when test="$placement='before' or $placement=''">
133
<xsl:apply-templates select="title" mode="procedure.title"/>
134
<xsl:apply-templates select="$preamble"/>
135
<xsl:text>\begin{</xsl:text>
136
<xsl:value-of select="$environment"/>
137
<xsl:text>} </xsl:text>
138
<xsl:apply-templates select="step">
139
<xsl:with-param name="mode" select="$mode"/>
140
</xsl:apply-templates>
141
<xsl:text>\end{</xsl:text>
142
<xsl:value-of select="$environment"/>
143
<xsl:text>} </xsl:text>
146
<xsl:apply-templates select="$preamble"/>
147
<xsl:text>\begin{</xsl:text>
148
<xsl:value-of select="$environment"/>
149
<xsl:text>} </xsl:text>
150
<xsl:apply-templates select="step">
151
<xsl:with-param name="mode" select="$mode"/>
152
</xsl:apply-templates>
153
<xsl:text>\end{</xsl:text>
154
<xsl:value-of select="$environment"/>
155
<xsl:text>} </xsl:text>
156
<xsl:apply-templates select="title" mode="procedure.title"/>
161
<doc:template xmlns="">
162
<refpurpose>Process a <doc:db>procedure</doc:db>'s <doc:db>title</doc:db> </refpurpose>
166
Format a special bridgehead.
172
<listitem><simpara><xref linkend="param.latex.procedure.title.style"/></simpara></listitem>
173
<listitem><simpara><xref linkend="param.latex.apply.title.templates"/></simpara></listitem>
179
The title is typeset as a paragraph.
184
<simplelist type='inline'>
190
<xsl:template match="procedure/title">
191
<xsl:text> {</xsl:text>
192
<xsl:value-of select="$latex.procedure.title.style"/>
193
<xsl:text>{</xsl:text>
195
<xsl:when test="$latex.apply.title.templates=1">
196
<xsl:apply-templates/>
199
<xsl:value-of select="."/>
202
<xsl:text>}} </xsl:text>
205
<doc:template basename="step" xmlns="">
206
<refpurpose>Process <doc:db>step</doc:db> elements </refpurpose>
210
Format steps and substeps as part of a procedure.
216
<listitem><simpara><xref linkend="param.latex.step.title.style"/></simpara></listitem>
225
The <quote>mode</quote> from the parent
226
<doc:db>procedure</doc:db>. This template
227
needs to know when the <quote>custom</quote>
228
mode is in use, because it needs to pass the
229
step's title as an optional argument to the
230
&LaTeX; <function condition="latex">item</function>
231
command (see <xref linkend="template.procedure"/>).
232
The mode is normally received from the enclosing
233
<doc:db>procedure</doc:db> or <doc:db>substeps</doc:db>
236
</simpara></listitem>
241
The string (typically empty).
242
See <xref linkend="template.generate.step.title"/>
243
</simpara></listitem>
250
Each step is typeset using the &LaTeX; <function condition="latex">item</function> command.
254
If there is no <doc:db>title</doc:db> element, the
255
step will be numbered automatically by &LaTeX;.
259
<simplelist type='inline'>
267
<listitem><simpara><xref linkend="template.generate.step.title"/></simpara></listitem>
271
<xsl:template match="step" name="step">
272
<xsl:param name="mode" select="''"/>
273
<xsl:param name="title">
274
<xsl:call-template name="generate.step.title">
275
<xsl:with-param name="mode" select="$mode"/>
279
<xsl:when test="$title!='' and $mode='custom'">
280
<xsl:text> \item[{</xsl:text>
281
<xsl:value-of select="$latex.step.title.style"/> <!-- by default \sc -->
282
<xsl:text>{</xsl:text>
283
<xsl:value-of select="$title"/>
284
<xsl:text>}}] {</xsl:text>
286
<xsl:when test="$title!=''">
287
<xsl:text> \item{{</xsl:text>
288
<xsl:value-of select="$latex.step.title.style"/> <!-- by default \sc -->
289
<xsl:text>{</xsl:text>
290
<xsl:value-of select="$title"/>
291
<xsl:text>}} </xsl:text>
294
<xsl:text> \item{</xsl:text>
297
<xsl:apply-templates select="node()[not(self::title)]"/>
298
<xsl:text>} </xsl:text>
301
<doc:template xmlns="">
302
<refpurpose>Generate a <doc:db>step</doc:db>'s title </refpurpose>
306
By default, simply applies templates for <doc:db>title</doc:db>
320
See <xref linkend="template.procedure"/>. When the mode
321
is <quote>custom</quote>, this template will use the
322
XSL <literal>number</literal> element to format a title
323
such as "1.", "2.", etc. Otherwise, any
324
<doc:db>title</doc:db> elements will be used.
326
</simpara></listitem>
333
If this template generates no content, the
334
<doc:db>step</doc:db> will either be numbered automatically by
335
&LaTeX; or left unlabelled (depending on the
336
<quote>mode</quote>).
341
<xsl:template name="generate.step.title">
342
<xsl:param name="mode"/>
344
<xsl:when test="title">
345
<xsl:apply-templates select="title"/>
347
<xsl:when test="$mode='custom'">
348
<xsl:number format="1."/>
350
<!-- otherwise, empty -->
354
<doc:template xmlns="">
355
<refpurpose>Process <doc:db>substep</doc:db> elements </refpurpose>
359
Format substeps as part of a step.
371
See <xref linkend="template.procedure"/>.
372
</simpara></listitem>
375
<term>environment</term>
377
See <xref linkend="template.procedure"/>.
378
</simpara></listitem>
385
Substeps are typeset by nesting a &LaTeX;
386
<function condition="env">enumerate</function> environment.
391
<simplelist type='inline'>
397
<xsl:template match="substeps">
398
<xsl:param name="mode" select="''"/>
399
<xsl:param name="environment">
401
<xsl:when test="$mode='custom'">
402
<xsl:text>description</xsl:text>
405
<xsl:text>enumerate</xsl:text>
409
<xsl:text>\begin{</xsl:text>
410
<xsl:value-of select="$environment"/>
411
<xsl:text>} </xsl:text>
412
<xsl:apply-templates select="step">
413
<xsl:with-param name="mode" select="$mode"/>
414
</xsl:apply-templates>
415
<xsl:text>\end{</xsl:text>
416
<xsl:value-of select="$environment"/>
417
<xsl:text>} </xsl:text>