title: $:/core/macros/toc tags: $:/tags/Macro \define toc-open-icon() $:/core/images/down-arrow \define toc-closed-icon() $:/core/images/right-arrow \define toc-caption() \whitespace trim <$set name="tv-wikilinks" value="no"> <$transclude field="caption"> <$view field="title"/> \end \define toc-body(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim
    <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> <$let item=<> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]"> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
  1. >> <$list filter="[all[current]toc-link[no]]" emptyMessage="<$link to={{{ [get[target]else] }}}><>"> <> <$macrocall $name="toc-body" tag=<> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<> path=<>/>
\end \define toc(tag,sort:"",itemClassFilter:"", exclude) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]thenelse<__tag__>] }}} > <$macrocall $name="toc-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>>/> \end \define toc-linked-expandable-body(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim <$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix] }}}> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
  • >> <$link to={{{ [get[target]else] }}}> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <$reveal type="match" stateTitle=<> text="open"> <$button setTitle=<> setTo="close" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$macrocall $name="toc-expandable" tag=<> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
  • \end \define toc-unlinked-expandable-body(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim <$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix] }}}> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
  • >> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$button setTitle=<> setTo="close" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$macrocall $name="toc-expandable" tag=<> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
  • \end \define toc-expandable-empty-message() <$macrocall $name="toc-linked-expandable-body" tag=<> sort=<> itemClassFilter=<> exclude=<> path=<>/> \end \define toc-expandable(tag,sort:"",itemClassFilter:"",exclude,path) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]thenelse<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
      <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> <$list filter="[all[current]toc-link[no]]" emptyMessage=<> > <$macrocall $name="toc-unlinked-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="""itemClassFilter""" exclude=<> path=<> />
    \end \define toc-linked-selective-expandable-body(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim <$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix] }}}> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item" >
  • >> <$link to={{{ [get[target]else] }}}> <$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="<$button class='tc-btn-invisible'>{{$:/core/images/blank}}"> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <$reveal type="match" stateTitle=<> text="open"> <$button setTitle=<> setTo="close" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$macrocall $name="toc-selective-expandable" tag=<> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
  • \end \define toc-unlinked-selective-expandable-body(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim <$qualify name="toc-state" title={{{ [[$:/state/toc]addsuffix<__path__>addsuffix[-]addsuffix] }}}> <$set name="toc-item-class" filter=<<__itemClassFilter__>> emptyValue="toc-item-selected" value="toc-item">
  • >> <$list filter="[all[current]tagging[]$sort$limit[1]] -[subfilter<__exclude__>]" variable="ignore" emptyMessage="""<$button class="tc-btn-invisible">{{$:/core/images/blank}}<>"""> <$reveal type="nomatch" stateTitle=<> text="open"> <$button setTitle=<> setTo="open" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$button setTitle=<> setTo="close" class="tc-btn-invisible tc-popup-keep"> <$transclude tiddler=<> /> <> <$reveal type="match" stateTitle=<> text="open"> <$macrocall $name="toc-selective-expandable" tag=<> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<<__exclude__>> path=<<__path__>>/>
  • \end \define toc-selective-expandable-empty-message() <$macrocall $name="toc-linked-selective-expandable-body" tag=<> sort=<> itemClassFilter=<> exclude=<> path=<>/> \end \define toc-selective-expandable(tag,sort:"",itemClassFilter,exclude,path) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]thenelse<__tag__>] }}} tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> path={{{ [<__path__>addsuffix[/]addsuffix<__tag__>] }}}> <$set name="excluded" filter="[subfilter<__exclude__>] [<__tag__>]">
      <$list filter="""[all[shadows+tiddlers]tag<__tag__>!has[draft.of]$sort$] -[<__tag__>] -[subfilter<__exclude__>]"""> <$list filter="[all[current]toc-link[no]]" variable="ignore" emptyMessage=<> > <$macrocall $name="toc-unlinked-selective-expandable-body" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter=<<__itemClassFilter__>> exclude=<> path=<>/>
    \end \define toc-tabbed-external-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]thenelse<__tag__>] }}}> <$tiddler tiddler={{{ [<__selectedTiddler__>get[text]] }}}>
    <$linkcatcher to=<<__selectedTiddler__>>>
    <$macrocall $name="toc-selective-expandable" tag=<<__tag__>> sort=<<__sort__>> itemClassFilter="[all[current]] -[<__selectedTiddler__>get[text]]" exclude=<<__exclude__>>/>
    <$reveal stateTitle=<<__selectedTiddler__>> type="nomatch" text=""> <$transclude mode="block" tiddler=<<__template__>>>

    <>

    <$transclude mode="block">$missingText$ <$reveal stateTitle=<<__selectedTiddler__>> type="match" text=""> $unselectedText$
    \end \define toc-tabbed-internal-nav(tag,sort:"",selectedTiddler:"$:/temp/toc/selectedTiddler",unselectedText,missingText,template:"",exclude) \whitespace trim <$let __tag__={{{ [<__tag__>is[blank]thenelse<__tag__>] }}}> <$linkcatcher to=<<__selectedTiddler__>>> <$macrocall $name="toc-tabbed-external-nav" tag=<<__tag__>> sort=<<__sort__>> selectedTiddler=<<__selectedTiddler__>> unselectedText=<<__unselectedText__>> missingText=<<__missingText__>> template=<<__template__>> exclude=<<__exclude__>> /> \end