WML::STD::TOC(1)

=LT=define-tag toc_section endtag=required>\ =LT=set-var __i=0 />\ =LT=while =LT=lt =LT=get-var __i /> %0 />>\ =LT=<get-var toc_style />*=LT=toc_style_type =LT=get-var __i /> />>\ =LT=increment __i />=LT=/while>\ <li*>\ %body =LT=set-var __i=0 />\ =LT=while =LT=lt =LT=get-var __i /> %0 />>\ =LT=/<get-var toc_style />>\ =LT=increment __i />=LT=/while>\ =LT=/define-tag> "
       "=LT=" "<"
    /> </when>

# Define the <HX> and <TOC_HX> container tags (X = 1...6) <set-var __i=1 />\ <set-var __pad= /> <while <lt <get-var __i /> 7 />>\
    <subst-in-string "\ =LT=define-tag h<get-var __i /> endtag=required>\ =LT=h<get-var __i />* %attributes>\ =LT=toc_h<get-var __i />>\ %body\ =LT=/toc_h<get-var __i />>\ =LT=/h<get-var __i />*>\ =LT=/define-tag>\ "
        "=LT=" "<"
    />
    <subst-in-string "\ =LT=define-tag toc_h<get-var __i/> endtag=required>\ =LT=preserve alt/>\ =LT=set-var alt=/>\ =LT=set-var %attributes/>\ =LT=a name=\"ToC=LT=get-var __TOCCNT/>\">%body</a>\ {#ToC#:\ =LT=toc_section <get-var __i/>>\ <get-var __pad/>\ =LT=a href=\"#ToC=LT=get-var __TOCCNT/>\"><strong>\ =LT=or =LT=get-var alt/> %body/>\ </strong></a>\ =LT=/toc_section>\ <get-var toc_eol/> :#ToC#}\ =LT=increment __TOCCNT/>\ =LT=restore alt/>\ =LT=/define-tag>\ "
        "=LT=" "<"
    />
    <set-var __pad="<get-var __pad /><get-var toc_pad />" />
    <increment __i /> </while>

##EOF## __END__

NAME
wml::std::toc - Table of Contents Generation

SYNOPSIS
 #use wml::std::toc [style={pre,nbsp,hspace,ul,ol} [type=...]]

 <toc>

 <hN>...</hN>

 <toc_hN ...>...</toc_hN>

DESCRIPTION
This creates a table of contents which can be inserted at any point (even more than once) by the "<toc>" tag. The contents gets created out of all header tags ``"<hN>"'' where ``N'' also controls the indention in the table of contents.

Alternatively you can use the "<toc_hN>" tags to insert its body (can be empty!) at the current location and into the Table Of Contents. If specified, the "alt" attribute is included into the ToC instead of the body.

STYLES
You may specify any of the five styles "pre", "nbsp", "hspace", "ul" and "ol". The last two accept special options to render HTML lists. With "style=ol", you may choose types 1, "A", "a", "i" and "I" whereas "style=ul" provides "d", "c" and "s" for respectively discs, circles and squares.

EXAMPLE
Below is an example to render the Table of Contents with HTML "<pre>" tag.

 #use wml::std::toc style=pre
 #use wml::std::page

 <page>
 <h1>Chapter 1</h1>
 <h2>Section 1</h2>
 <h2>Section 2</h2>
 <h1>Chapter 2</h1>
 <h2>Section 1</h2>
 <h2>Section 2</h2>
 <toc>

Play and choose your favorite!

 #use wml::std::toc style=ol type=A1ai

or

 #use wml::std::toc style=ul type=dssccc

AUTHORS
 Ralf S. Engelschall
 rse@engelschall.com
 www.engelschall.com

 Denis Barbier
 barbier@engelschall.com

REQUIRES
 Internal: P1, P2, P5, P6

SEEALSO
HTML "<Hx>" "<UL>" "<OL>" tags.