| Crates.io | mdbook-pagetoc |
| lib.rs | mdbook-pagetoc |
| version | 0.2.1 |
| created_at | 2022-04-05 17:09:53.136578+00 |
| updated_at | 2025-09-18 15:54:56.02808+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 | 54,778 |
A mdbook plugin that provides a table of contents for each page. Uses css/js from mdBook-pagetoc.
Sample image 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.
Add to book.toml config:
[preprocessor.pagetoc]
[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}