| Crates.io | mdbook-pagetoc |
| lib.rs | mdbook-pagetoc |
| version | 0.3.0 |
| created_at | 2022-04-05 17:09:53.136578+00 |
| updated_at | 2025-11-27 14:19:07.745282+00 |
| description | A mdbook plugin that provides a table of contents for each page. |
| homepage | https://github.com/slowsage/mdbook-pagetoc |
| repository | https://github.com/slowsage/mdbook-pagetoc |
| max_upload_size | |
| id | 562696 |
| size | 193,574 |
A mdbook plugin that provides a table of contents for each page. Uses css/js from mdBook-pagetoc.

Only supports the html renderer.
On the first run of mdbook build, it creates two files pagetoc.css and pagetoc.js.
You can customize any of them after the first run.
mdbook 0.5 now ships with built-in support for showing the page table of contents in the sidebar, see PR 2822
Add to book.toml config:
[preprocessor.pagetoc]
scroll_offset = 10 # pixels added to scroll position for active header detection (default: 10)
[output.html]
additional-css = ["theme/pagetoc.css"]
additional-js = ["theme/pagetoc.js"]
The place marker <div class="sidetoc"><nav class="pagetoc"></nav></div> will be inserted inside the <main> tag. ie. This replaces
<main>
{{{content}}}
</main>
with:
<main><div class="sidetoc"><nav class="pagetoc"></nav></div>
{{{content}}}
</main>
If not customizing, you may want to add entries as appropriate to .gitignore to keep your repo clean:
theme/pagetoc.css
theme/pagetoc.js
Customization: To autohide when only single header, add this snippet to pagetoc.css:
a[class^="pagetoc-H"]:only-child {
display: none;
}
Customization: To hide a header from the table of content:
## Hidden from TOC {.toc-ignore}