2 <xsl:stylesheet exclude-result-prefixes="d"
3 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
4 xmlns:d="http://docbook.org/ns/docbook"
5 xmlns:fo="http://www.w3.org/1999/XSL/Format"
6 xmlns:axf="http://www.antennahouse.com/names/XSL/Extensions"
9 <!-- ********************************************************************
11 This file is part of the XSL DocBook Stylesheet distribution.
12 See ../README or http://cdn.docbook.org/release/xsl/current/ for
13 copyright and other information.
15 ******************************************************************** -->
17 <!-- ==================================================================== -->
19 <xsl:template name="set.toc">
21 <xsl:param name="toc-context" select="."/>
23 <xsl:variable name="id">
24 <xsl:call-template name="object.id"/>
27 <xsl:variable name="cid">
28 <xsl:call-template name="object.id">
29 <xsl:with-param name="object" select="$toc-context"/>
33 <xsl:variable name="nodes" select="d:book|d:set|d:setindex|d:article"/>
35 <xsl:if test="$nodes">
36 <fo:block id="toc...{$id}"
37 xsl:use-attribute-sets="toc.margin.properties">
38 <xsl:if test="$axf.extensions != 0 and
39 $xsl1.1.bookmarks = 0 and
40 $show.bookmarks != 0">
41 <xsl:attribute name="axf:outline-level">1</xsl:attribute>
42 <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
43 <xsl:attribute name="axf:outline-title">
44 <xsl:call-template name="gentext">
45 <xsl:with-param name="key" select="'TableofContents'"/>
49 <xsl:call-template name="table.of.contents.titlepage"/>
50 <xsl:apply-templates select="$nodes" mode="toc">
51 <xsl:with-param name="toc-context" select="$toc-context"/>
52 </xsl:apply-templates>
57 <xsl:template name="division.toc">
58 <xsl:param name="toc-context" select="."/>
59 <xsl:param name="toc.title.p" select="true()"/>
61 <xsl:variable name="cid">
62 <xsl:call-template name="object.id">
63 <xsl:with-param name="object" select="$toc-context"/>
67 <xsl:variable name="nodes"
68 select="$toc-context/d:part
69 |$toc-context/d:reference
70 |$toc-context/d:preface
71 |$toc-context/d:chapter
72 |$toc-context/d:appendix
73 |$toc-context/d:article
75 |$toc-context/d:bibliography
76 |$toc-context/d:glossary
77 |$toc-context/d:index"/>
79 <xsl:if test="$nodes">
80 <fo:block id="toc...{$cid}"
81 xsl:use-attribute-sets="toc.margin.properties">
82 <xsl:if test="$axf.extensions != 0 and
83 $xsl1.1.bookmarks = 0 and
84 $show.bookmarks != 0">
85 <xsl:attribute name="axf:outline-level">1</xsl:attribute>
86 <xsl:attribute name="axf:outline-expand">false</xsl:attribute>
87 <xsl:attribute name="axf:outline-title">
88 <xsl:call-template name="gentext">
89 <xsl:with-param name="key" select="'TableofContents'"/>
93 <xsl:if test="$toc.title.p">
94 <xsl:call-template name="table.of.contents.titlepage"/>
96 <xsl:apply-templates select="$nodes" mode="toc">
97 <xsl:with-param name="toc-context" select="$toc-context"/>
98 </xsl:apply-templates>
103 <xsl:template name="component.toc">
104 <xsl:param name="toc-context" select="."/>
105 <xsl:param name="toc.title.p" select="true()"/>
107 <xsl:variable name="id">
108 <xsl:call-template name="object.id"/>
111 <xsl:variable name="cid">
112 <xsl:call-template name="object.id">
113 <xsl:with-param name="object" select="$toc-context"/>
117 <xsl:variable name="nodes" select="d:section|d:sect1|d:refentry
118 |d:article|d:topic|d:bibliography|d:glossary
119 |d:qandaset[$qanda.in.toc != 0]
120 |d:appendix|d:index"/>
121 <xsl:if test="$nodes">
122 <fo:block id="toc...{$id}"
123 xsl:use-attribute-sets="toc.margin.properties">
124 <xsl:if test="$toc.title.p">
125 <xsl:call-template name="table.of.contents.titlepage"/>
127 <xsl:apply-templates select="$nodes" mode="toc">
128 <xsl:with-param name="toc-context" select="$toc-context"/>
129 </xsl:apply-templates>
134 <xsl:template name="component.toc.separator">
135 <!-- Customize to output something between
136 component.toc and first output -->
139 <xsl:template name="section.toc">
140 <xsl:param name="toc-context" select="."/>
141 <xsl:param name="toc.title.p" select="true()"/>
143 <xsl:variable name="id">
144 <xsl:call-template name="object.id"/>
147 <xsl:variable name="cid">
148 <xsl:call-template name="object.id">
149 <xsl:with-param name="object" select="$toc-context"/>
153 <xsl:variable name="nodes"
154 select="d:section|d:sect1|d:sect2|d:sect3|d:sect4|d:sect5|d:refentry
155 |d:qandaset[$qanda.in.toc != 0]
156 |d:bridgehead[$bridgehead.in.toc != 0]"/>
158 <xsl:variable name="level">
159 <xsl:call-template name="section.level"/>
162 <xsl:if test="$nodes">
163 <fo:block id="toc...{$id}"
164 xsl:use-attribute-sets="toc.margin.properties">
166 <xsl:if test="$toc.title.p">
167 <xsl:call-template name="section.heading">
168 <xsl:with-param name="level" select="$level + 1"/>
169 <xsl:with-param name="title">
170 <fo:block space-after="0.5em">
171 <xsl:call-template name="gentext">
172 <xsl:with-param name="key" select="'TableofContents'"/>
179 <xsl:apply-templates select="$nodes" mode="toc">
180 <xsl:with-param name="toc-context" select="$toc-context"/>
181 </xsl:apply-templates>
186 <xsl:template name="section.toc.separator">
187 <!-- Customize to output something between
188 section.toc and first output -->
190 <!-- ==================================================================== -->
192 <xsl:template name="toc.line">
193 <xsl:param name="toc-context" select="NOTANODE"/>
195 <xsl:variable name="id">
196 <xsl:call-template name="object.id"/>
199 <xsl:variable name="label">
200 <xsl:apply-templates select="." mode="label.markup"/>
203 <fo:block xsl:use-attribute-sets="toc.line.properties">
204 <fo:inline keep-with-next.within-line="always">
205 <fo:basic-link internal-destination="{$id}">
206 <xsl:if test="$label != ''">
207 <xsl:copy-of select="$label"/>
208 <xsl:value-of select="$autotoc.label.separator"/>
210 <xsl:apply-templates select="." mode="titleabbrev.markup"/>
213 <fo:inline keep-together.within-line="always">
214 <fo:leader xsl:use-attribute-sets="toc.leader.properties"/>
215 <fo:basic-link internal-destination="{$id}">
216 <fo:page-number-citation ref-id="{$id}"/>
222 <!-- ==================================================================== -->
223 <xsl:template name="qandaset.toc">
224 <xsl:param name="toc-context" select="."/>
225 <xsl:param name="toc.title.p" select="true()"/>
227 <xsl:variable name="id">
228 <xsl:call-template name="object.id"/>
231 <xsl:variable name="cid">
232 <xsl:call-template name="object.id">
233 <xsl:with-param name="object" select="$toc-context"/>
237 <xsl:variable name="nodes" select="d:qandadiv|d:qandaentry"/>
239 <xsl:if test="$nodes">
240 <fo:block id="toc...{$id}"
241 xsl:use-attribute-sets="toc.margin.properties">
242 <xsl:if test="$toc.title.p">
243 <xsl:call-template name="table.of.contents.titlepage"/>
245 <xsl:apply-templates select="$nodes" mode="toc">
246 <xsl:with-param name="toc-context" select="$toc-context"/>
247 </xsl:apply-templates>
252 <xsl:template name="qandaset.toc.separator">
253 <!-- Customize to output something between
254 qandaset.toc and first output -->
257 <xsl:template match="d:qandadiv" mode="toc">
258 <xsl:param name="toc-context" select="."/>
260 <xsl:variable name="id">
261 <xsl:call-template name="object.id"/>
264 <xsl:variable name="cid">
265 <xsl:call-template name="object.id">
266 <xsl:with-param name="object" select="$toc-context"/>
270 <xsl:call-template name="toc.line">
271 <xsl:with-param name="toc-context" select="$toc-context"/>
274 <xsl:variable name="nodes" select="d:qandadiv|d:qandaentry"/>
276 <xsl:if test="$nodes">
277 <fo:block id="toc.{$cid}.{$id}">
278 <xsl:attribute name="margin-{$direction.align.start}">
279 <xsl:call-template name="set.toc.indent"/>
282 <xsl:apply-templates select="$nodes" mode="toc">
283 <xsl:with-param name="toc-context" select="$toc-context"/>
284 </xsl:apply-templates>
289 <xsl:template match="d:qandaentry" mode="toc">
290 <xsl:apply-templates select="d:question" mode="toc"/>
293 <xsl:template match="d:question" mode="toc">
294 <xsl:variable name="firstchunk">
295 <!-- Use a titleabbrev or title if available -->
297 <xsl:when test="../d:blockinfo/d:titleabbrev">
298 <xsl:apply-templates select="../d:blockinfo/d:titleabbrev[1]/node()"/>
300 <xsl:when test="../d:blockinfo/d:title">
301 <xsl:apply-templates select="../d:blockinfo/d:title[1]/node()"/>
303 <xsl:when test="../d:info/d:titleabbrev">
304 <xsl:apply-templates select="../d:info/d:titleabbrev[1]/node()"/>
306 <xsl:when test="../d:titleabbrev">
307 <xsl:apply-templates select="../d:titleabbrev[1]/node()"/>
309 <xsl:when test="../d:info/d:title">
310 <xsl:apply-templates select="../d:info/d:title[1]/node()"/>
312 <xsl:when test="../d:title">
313 <xsl:apply-templates select="../d:title[1]/node()"/>
316 <xsl:apply-templates select="(*[local-name(.)!='label'])[1]/node()"/>
321 <xsl:variable name="deflabel">
323 <xsl:when test="ancestor-or-self::*[@defaultlabel]">
324 <xsl:value-of select="(ancestor-or-self::*[@defaultlabel])[last()]
328 <xsl:value-of select="$qanda.defaultlabel"/>
333 <xsl:variable name="id">
334 <xsl:call-template name="object.id"/>
337 <xsl:variable name="label">
338 <xsl:apply-templates select="." mode="label.markup"/>
341 <fo:block xsl:use-attribute-sets="toc.line.properties"
342 end-indent="{$toc.indent.width}pt"
343 last-line-end-indent="-{$toc.indent.width}pt">
344 <xsl:attribute name="margin-{$direction.align.start}">3em</xsl:attribute>
345 <xsl:attribute name="text-indent">-3em</xsl:attribute>
346 <fo:inline keep-with-next.within-line="always">
347 <fo:basic-link internal-destination="{$id}">
348 <xsl:if test="$label != ''">
349 <xsl:copy-of select="$label"/>
350 <xsl:if test="$deflabel = 'number' and not(d:label)">
351 <xsl:value-of select="$autotoc.label.separator"/>
353 <xsl:text> </xsl:text>
355 <xsl:copy-of select="$firstchunk"/>
358 <fo:inline keep-together.within-line="always">
359 <fo:leader xsl:use-attribute-sets="toc.leader.properties"/>
360 <fo:basic-link internal-destination="{$id}">
361 <fo:page-number-citation ref-id="{$id}"/>
368 <!-- ==================================================================== -->
370 <xsl:template match="d:book|d:setindex" mode="toc">
371 <xsl:param name="toc-context" select="."/>
373 <xsl:variable name="id">
374 <xsl:call-template name="object.id"/>
377 <xsl:variable name="cid">
378 <xsl:call-template name="object.id">
379 <xsl:with-param name="object" select="$toc-context"/>
383 <xsl:call-template name="toc.line">
384 <xsl:with-param name="toc-context" select="$toc-context"/>
387 <xsl:variable name="nodes" select="d:glossary|d:bibliography|d:preface|d:chapter
388 |d:reference|d:part|d:article|d:topic|d:appendix|d:index"/>
390 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
392 <xsl:if test="$toc.max.depth > $depth.from.context
394 <fo:block id="toc.{$cid}.{$id}">
395 <xsl:attribute name="margin-{$direction.align.start}">
396 <xsl:call-template name="set.toc.indent"/>
399 <xsl:apply-templates select="$nodes" mode="toc">
400 <xsl:with-param name="toc-context" select="$toc-context"/>
401 </xsl:apply-templates>
406 <xsl:template match="d:set" mode="toc">
407 <xsl:param name="toc-context" select="."/>
409 <xsl:variable name="id">
410 <xsl:call-template name="object.id"/>
413 <xsl:variable name="cid">
414 <xsl:call-template name="object.id">
415 <xsl:with-param name="object" select="$toc-context"/>
419 <xsl:call-template name="toc.line">
420 <xsl:with-param name="toc-context" select="$toc-context"/>
423 <xsl:variable name="nodes" select="d:set|d:book|d:setindex|d:article"/>
425 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
427 <xsl:if test="$toc.max.depth > $depth.from.context
429 <fo:block id="toc.{$cid}.{$id}">
430 <xsl:attribute name="margin-{$direction.align.start}">
431 <xsl:call-template name="set.toc.indent"/>
434 <xsl:apply-templates select="$nodes" mode="toc">
435 <xsl:with-param name="toc-context" select="$toc-context"/>
436 </xsl:apply-templates>
441 <xsl:template match="d:part" mode="toc">
442 <xsl:param name="toc-context" select="."/>
444 <xsl:variable name="id">
445 <xsl:call-template name="object.id"/>
448 <xsl:variable name="cid">
449 <xsl:call-template name="object.id">
450 <xsl:with-param name="object" select="$toc-context"/>
454 <xsl:call-template name="toc.line">
455 <xsl:with-param name="toc-context" select="$toc-context"/>
458 <xsl:variable name="nodes" select="d:chapter|d:appendix|d:preface|d:reference|
459 d:refentry|d:article|d:topic|d:index|d:glossary|
462 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
464 <xsl:if test="$toc.max.depth > $depth.from.context
466 <fo:block id="toc.{$cid}.{$id}">
467 <xsl:attribute name="margin-{$direction.align.start}">
468 <xsl:call-template name="set.toc.indent"/>
471 <xsl:apply-templates select="$nodes" mode="toc">
472 <xsl:with-param name="toc-context" select="$toc-context"/>
473 </xsl:apply-templates>
478 <xsl:template match="d:reference" mode="toc">
479 <xsl:param name="toc-context" select="."/>
481 <xsl:variable name="id">
482 <xsl:call-template name="object.id"/>
485 <xsl:variable name="cid">
486 <xsl:call-template name="object.id">
487 <xsl:with-param name="object" select="$toc-context"/>
491 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
493 <xsl:call-template name="toc.line">
494 <xsl:with-param name="toc-context" select="$toc-context"/>
497 <xsl:if test="$toc.section.depth > 0
498 and $toc.max.depth > $depth.from.context
500 <fo:block id="toc.{$cid}.{$id}">
501 <xsl:attribute name="margin-{$direction.align.start}">
502 <xsl:call-template name="set.toc.indent"/>
505 <xsl:apply-templates select="d:refentry" mode="toc">
506 <xsl:with-param name="toc-context" select="$toc-context"/>
507 </xsl:apply-templates>
512 <xsl:template match="d:refentry" mode="toc">
513 <xsl:param name="toc-context" select="."/>
515 <xsl:call-template name="toc.line">
516 <xsl:with-param name="toc-context" select="$toc-context"/>
520 <xsl:template match="d:preface|d:chapter|d:appendix|d:article"
522 <xsl:param name="toc-context" select="."/>
524 <xsl:variable name="id">
525 <xsl:call-template name="object.id"/>
528 <xsl:variable name="cid">
529 <xsl:call-template name="object.id">
530 <xsl:with-param name="object" select="$toc-context"/>
534 <xsl:call-template name="toc.line">
535 <xsl:with-param name="toc-context" select="$toc-context"/>
538 <xsl:variable name="nodes" select="d:section|d:sect1
539 |d:qandaset[$qanda.in.toc != 0]
540 |d:simplesect[$simplesect.in.toc != 0]
542 |d:refentry|d:appendix"/>
544 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
546 <xsl:if test="$toc.section.depth > 0
547 and $toc.max.depth > $depth.from.context
549 <fo:block id="toc.{$cid}.{$id}">
550 <xsl:attribute name="margin-{$direction.align.start}">
551 <xsl:call-template name="set.toc.indent"/>
554 <xsl:apply-templates select="$nodes" mode="toc">
555 <xsl:with-param name="toc-context" select="$toc-context"/>
556 </xsl:apply-templates>
561 <xsl:template match="d:sect1" mode="toc">
562 <xsl:param name="toc-context" select="."/>
564 <xsl:variable name="id">
565 <xsl:call-template name="object.id"/>
568 <xsl:variable name="cid">
569 <xsl:call-template name="object.id">
570 <xsl:with-param name="object" select="$toc-context"/>
574 <xsl:call-template name="toc.line">
575 <xsl:with-param name="toc-context" select="$toc-context"/>
578 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
580 <xsl:if test="$toc.section.depth > 1
581 and $toc.max.depth > $depth.from.context
583 <fo:block id="toc.{$cid}.{$id}">
584 <xsl:attribute name="margin-{$direction.align.start}">
585 <xsl:call-template name="set.toc.indent"/>
588 <xsl:apply-templates select="d:sect2|d:qandaset[$qanda.in.toc != 0]"
590 <xsl:with-param name="toc-context" select="$toc-context"/>
591 </xsl:apply-templates>
596 <xsl:template match="d:sect2" mode="toc">
597 <xsl:param name="toc-context" select="."/>
599 <xsl:variable name="id">
600 <xsl:call-template name="object.id"/>
603 <xsl:variable name="cid">
604 <xsl:call-template name="object.id">
605 <xsl:with-param name="object" select="$toc-context"/>
609 <xsl:call-template name="toc.line">
610 <xsl:with-param name="toc-context" select="$toc-context"/>
613 <xsl:variable name="reldepth"
614 select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
616 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
618 <xsl:if test="$toc.section.depth > 2
619 and $toc.max.depth > $depth.from.context
621 <fo:block id="toc.{$cid}.{$id}">
622 <xsl:attribute name="margin-{$direction.align.start}">
623 <xsl:call-template name="set.toc.indent">
624 <xsl:with-param name="reldepth" select="$reldepth"/>
628 <xsl:apply-templates select="d:sect3|d:qandaset[$qanda.in.toc != 0]"
630 <xsl:with-param name="toc-context" select="$toc-context"/>
631 </xsl:apply-templates>
636 <xsl:template match="d:sect3" mode="toc">
637 <xsl:param name="toc-context" select="."/>
639 <xsl:variable name="id">
640 <xsl:call-template name="object.id"/>
643 <xsl:variable name="cid">
644 <xsl:call-template name="object.id">
645 <xsl:with-param name="object" select="$toc-context"/>
649 <xsl:call-template name="toc.line">
650 <xsl:with-param name="toc-context" select="$toc-context"/>
653 <xsl:variable name="reldepth"
654 select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
656 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
658 <xsl:if test="$toc.section.depth > 3
659 and $toc.max.depth > $depth.from.context
661 <fo:block id="toc.{$cid}.{$id}">
662 <xsl:attribute name="margin-{$direction.align.start}">
663 <xsl:call-template name="set.toc.indent">
664 <xsl:with-param name="reldepth" select="$reldepth"/>
668 <xsl:apply-templates select="d:sect4|d:qandaset[$qanda.in.toc != 0]"
670 <xsl:with-param name="toc-context" select="$toc-context"/>
671 </xsl:apply-templates>
676 <xsl:template match="d:sect4" mode="toc">
677 <xsl:param name="toc-context" select="."/>
679 <xsl:variable name="id">
680 <xsl:call-template name="object.id"/>
683 <xsl:variable name="cid">
684 <xsl:call-template name="object.id">
685 <xsl:with-param name="object" select="$toc-context"/>
689 <xsl:call-template name="toc.line">
690 <xsl:with-param name="toc-context" select="$toc-context"/>
693 <xsl:variable name="reldepth"
694 select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
696 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
698 <xsl:if test="$toc.section.depth > 4
699 and $toc.max.depth > $depth.from.context
701 <fo:block id="toc.{$cid}.{$id}">
702 <xsl:attribute name="margin-{$direction.align.start}">
703 <xsl:call-template name="set.toc.indent">
704 <xsl:with-param name="reldepth" select="$reldepth"/>
708 <xsl:apply-templates select="d:sect5|d:qandaset[$qanda.in.toc != 0]"
710 <xsl:with-param name="toc-context" select="$toc-context"/>
711 </xsl:apply-templates>
716 <xsl:template match="d:sect5|d:simplesect" mode="toc">
717 <xsl:param name="toc-context" select="."/>
719 <xsl:call-template name="toc.line">
720 <xsl:with-param name="toc-context" select="$toc-context"/>
724 <xsl:template match="d:topic" mode="toc">
725 <xsl:param name="toc-context" select="."/>
727 <xsl:call-template name="toc.line">
728 <xsl:with-param name="toc-context" select="$toc-context"/>
732 <xsl:template name="set.toc.indent">
733 <xsl:param name="reldepth"/>
735 <xsl:variable name="depth">
737 <xsl:when test="$reldepth != ''">
738 <xsl:value-of select="$reldepth"/>
741 <xsl:value-of select="count(ancestor::*)"/>
747 <xsl:when test="$fop.extensions != 0">
748 <xsl:value-of select="concat($depth*$toc.indent.width, 'pt')"/>
751 <xsl:value-of select="concat($toc.indent.width, 'pt')"/>
757 <xsl:template match="d:section" mode="toc">
758 <xsl:param name="toc-context" select="."/>
760 <xsl:variable name="id">
761 <xsl:call-template name="object.id"/>
764 <xsl:variable name="cid">
765 <xsl:call-template name="object.id">
766 <xsl:with-param name="object" select="$toc-context"/>
770 <xsl:variable name="depth" select="count(ancestor::d:section) + 1"/>
771 <xsl:variable name="reldepth"
772 select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
774 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
776 <xsl:if test="$toc.section.depth >= $depth">
777 <xsl:call-template name="toc.line">
778 <xsl:with-param name="toc-context" select="$toc-context"/>
781 <xsl:if test="$toc.section.depth > $depth
782 and $toc.max.depth > $depth.from.context
784 <fo:block id="toc.{$cid}.{$id}">
785 <xsl:attribute name="margin-{$direction.align.start}">
786 <xsl:call-template name="set.toc.indent">
787 <xsl:with-param name="reldepth" select="$reldepth"/>
791 <xsl:apply-templates select="d:section|d:qandaset[$qanda.in.toc != 0]"
793 <xsl:with-param name="toc-context" select="$toc-context"/>
794 </xsl:apply-templates>
800 <xsl:template match="d:bibliography|d:glossary"
802 <xsl:param name="toc-context" select="."/>
804 <xsl:call-template name="toc.line">
805 <xsl:with-param name="toc-context" select="$toc-context"/>
809 <xsl:template match="d:index" mode="toc">
810 <xsl:param name="toc-context" select="."/>
812 <xsl:if test="* or $generate.index != 0">
813 <xsl:call-template name="toc.line">
814 <xsl:with-param name="toc-context" select="$toc-context"/>
819 <xsl:template match="d:title" mode="toc">
820 <xsl:apply-templates/>
823 <!-- ==================================================================== -->
825 <xsl:template name="list.of.titles">
826 <xsl:param name="titles" select="'table'"/>
827 <xsl:param name="nodes" select=".//d:table"/>
828 <xsl:param name="toc-context" select="."/>
830 <xsl:variable name="id">
831 <xsl:call-template name="object.id"/>
834 <xsl:if test="$nodes">
835 <fo:block id="lot...{$titles}...{$id}"
836 xsl:use-attribute-sets="toc.margin.properties">
838 <xsl:when test="$titles='table'">
839 <xsl:call-template name="list.of.tables.titlepage"/>
841 <xsl:when test="$titles='figure'">
842 <xsl:call-template name="list.of.figures.titlepage"/>
844 <xsl:when test="$titles='equation'">
845 <xsl:call-template name="list.of.equations.titlepage"/>
847 <xsl:when test="$titles='example'">
848 <xsl:call-template name="list.of.examples.titlepage"/>
850 <xsl:when test="$titles='procedure'">
851 <xsl:call-template name="list.of.procedures.titlepage"/>
854 <xsl:call-template name="list.of.unknowns.titlepage"/>
857 <xsl:apply-templates select="$nodes" mode="toc">
858 <xsl:with-param name="toc-context" select="$toc-context"/>
859 </xsl:apply-templates>
864 <xsl:template name="component.list.of.titles">
865 <xsl:param name="titles" select="'table'"/>
866 <xsl:param name="nodes" select=".//d:table"/>
867 <xsl:param name="toc-context" select="."/>
869 <xsl:variable name="id">
870 <xsl:call-template name="object.id"/>
873 <xsl:if test="$nodes">
874 <fo:block id="lot...{$titles}...{$id}">
876 <xsl:when test="$titles='table'">
877 <xsl:call-template name="component.list.of.tables.titlepage"/>
879 <xsl:when test="$titles='figure'">
880 <xsl:call-template name="component.list.of.figures.titlepage"/>
882 <xsl:when test="$titles='equation'">
883 <xsl:call-template name="component.list.of.equations.titlepage"/>
885 <xsl:when test="$titles='example'">
886 <xsl:call-template name="component.list.of.examples.titlepage"/>
888 <xsl:when test="$titles='procedure'">
889 <xsl:call-template name="component.list.of.procedures.titlepage"/>
892 <xsl:call-template name="component.list.of.unknowns.titlepage"/>
895 <xsl:apply-templates select="$nodes" mode="toc">
896 <xsl:with-param name="toc-context" select="$toc-context"/>
897 </xsl:apply-templates>
902 <xsl:template match="d:figure|d:table|d:example|d:equation|d:procedure" mode="toc">
903 <xsl:param name="toc-context" select="."/>
904 <xsl:call-template name="toc.line">
905 <xsl:with-param name="toc-context" select="$toc-context"/>
909 <!-- ==================================================================== -->
911 <!-- qandaset handled like a section when qanda.in.toc is set -->
912 <xsl:template match="d:qandaset" mode="toc">
913 <xsl:param name="toc-context" select="."/>
915 <xsl:variable name="id">
916 <xsl:call-template name="object.id"/>
919 <xsl:variable name="cid">
920 <xsl:call-template name="object.id">
921 <xsl:with-param name="object" select="$toc-context"/>
925 <xsl:variable name="depth" select="count(ancestor::d:section) + 1"/>
926 <xsl:variable name="reldepth"
927 select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
929 <xsl:variable name="depth.from.context" select="count(ancestor::*)-count($toc-context/ancestor::*)"/>
931 <xsl:if test="$toc.section.depth >= $depth">
932 <xsl:call-template name="toc.line">
933 <xsl:with-param name="toc-context" select="$toc-context"/>
936 <xsl:if test="$toc.section.depth > $depth
937 and $toc.max.depth > $depth.from.context
938 and (child::d:qandadiv or child::d:qandaentry)">
939 <fo:block id="toc.{$cid}.{$id}">
940 <xsl:attribute name="margin-{$direction.align.start}">
941 <xsl:call-template name="set.toc.indent">
942 <xsl:with-param name="reldepth" select="$reldepth"/>
946 <xsl:apply-templates select="d:qandadiv|d:qandaentry" mode="toc">
947 <xsl:with-param name="toc-context" select="$toc-context"/>
948 </xsl:apply-templates>