title: TableOfContentsMacro
tags: Macros
modified: 20140905084423561
caption: toc

The table of contents macro produces a hierarchical tree of tiddlers based on their tags.

The top level entries of the table of contents are defined by a root tag. The subentries under each of those entries are tagged with the title of the entry. Entries can be ordered using the `list` field of the tag tiddler as described in TiddlerTags.

The text for each entry is taken from the ''caption'' field if it is present, otherwise the ''title'' is used.

Entries are rendered as a link to the corresponding tiddler unless the tiddler has the value ''no'' in the field ''toc-link''. In the examples below, the entry SecondThree is set up in this way to not appear as a link.

There are several variants of the macro:

* `<<toc>>` produces a simple hierarchical tree of links
* `<<toc-expandable>>` produces an expandable tree of links
* `<<toc-selective-expandable>>` produces an expandable tree of links where the expand/contract buttons are only shown for entries that possess child nodes

The macros all generate HTML ordered lists. The `<ol>` elements are given the class `tc-toc`, with the expandable variant also having the class `tc-toc-expandable` and the selective expandable variant also having the class `tc-toc-selective-expandable`.

! Parameters

|!Position |!Name |!Description |!Default |
|1st |tag |The root tag that identifies the top level of the hierarchy | |
|2nd |sort |Optional sorting subfilter (eg `sort[title]`) | |

The ''tag'' and ''sort'' parameters are combined to make a filter expression of the form:

```
[tag[$tag$]$sort$]
```

! Examples

<<tabs "[tag[table-of-contents-example]]" "TableOfContentsMacro Simple Example">>
