If you are using the sidebar plugin and have a header in the sidebar it shows up in the table of contents. I can see why this happens but it surprised me and wasn't the desired effect in my specific situation. -- AdamShand

A related side effect: If you use any sort of headers in the page template (such as placing the page title in an <h1>), the toc plugin picks it up. I suppose it parses the entire page rather than just the rendered content. --JasonBlevins

I fixed this in a patch to the toc module, see allow toc to skip entries. -- anarcat

Why doesn't the TOC appear in the edit page preview? It only appears when the page is finally rendered. This makes it somewhat difficult to organize headings, saving & re-editing all the time. My user page currently has a toc to play with: --sabr

Fixed. --Joey

Just ran into a side effect of [[!toc ]] being a NOP in pages which are inlined: pages with [[!template id=note text="[[!toc]]"]] wound up having the note rendered in feeds as "Use this template to insert a note into a page". Worked around this by making a local copy of the template and removing its <TMPL_UNLESS text>...</TMPL_UNLESS> section. Besides needing to generate guaranteed-unique anchor names, are there other reasons this directive couldn't be made to work on inlined pages? --schmonz

Workaround: [[!template id=note text=" [[!toc]]"]] (with whitespace) should work, because then Perl will consider the string to be a true value.

Longer-term, my branch on template creation error aims to fix this sort of thing. --smcv

Workaround seems not to. Maybe whitespace is getting trimmed along the way and it stays falsish. Interested in your branch; sorry I can't offer precise feedback right now, but it looks sane at a glance. --schmonz

How could this be tampered to make another plugin that would enable partial listing so I could make multiple "subTOCs" in the same page? For instance I'd have a [[!toc startlevel=1 levels=1]] in the top of the page while after a level 1 heading I would have a [[!toc startlevel=2]] with the level 2 and below headers limited by the ones below this particular level 1 header --iuri