MkDocsでページを跨って連番を割り当てる
以前にMkDocsで自動的に見出しへ連番を割り当てるというメモを書きました。これ以外にもMkDocsにmkdocs-enumerate-headings-pluginを追加すると見出しに連番を割り当てることができます。しかも同じページ内だけではなく、異なるページも加味した上で連番を割り当てることができます。GitHubのFeaturesには以下の記載があります。
- Automatically number all headings and (optionally) give each page an sequential chapter number
- Great for writing (technical) reports
- Compatible with plugins like awesome-pages and monorepo
- Compatible with markdown_extensions like pymdownx.snippets
- Compatible with themes like mkdocs-material
- Easy to customize styling through CSS
今回はこのプラグインを実際に試してみます。
検証環境¶
対象 | バージョン |
---|---|
macOS | 15.6.1 |
mkdocs | 1.6.1 |
mkdocs-material | 9.6.19 |
mkdocs-enumerate-headings-plugin | 0.6.2 |
テストサイトの構造¶
テストサイトのディレクトリ構造は以下の通りです。
├── docs
│ ├── 001.md
│ ├── 002.md
│ ├── 003.md
│ └── index.md
└── mkdocs.yml
003.md
ファイルは以下の内容です。
003.md
# Level1
## Level2a
### Level3a
#### Level4a
## Level2b
### Level3b
### Level3c
#### Level4b
見え方¶
MkDocsの設定ファイルである`mkdocs.yml'を以下のように定義したとします。
mkdocs.yml
site_name: My Docs
theme:
name: material
features:
- toc.integrate
plugins:
- search:
- enumerate-headings:
toc_depth: 6
exclude:
- index.md
nav:
- Top: index.md
- Topic1: 001.md
- Topic2: 002.md
- Topic3: 003.md
この設定では以下のように表示されました。exclude
でindex.md
を除外している為、このファイルは連番の割り当てから除外され、001.md
から連番が割り当てられています。
toc_depthの効果¶
toc_depth
は「ナビゲーション上でどのレベルまで連番を表示するか」を制御します。但し、ページ内の見出しはこの設定に関わらず、連番が割り当てられます。以下の例ではtoc_depth
を2
に設定しています。
mkdocs.yml
site_name: My Docs
theme:
name: material
features:
- toc.integrate
plugins:
- search:
- enumerate-headings:
toc_depth: 2
exclude:
- index.md
nav:
- Top: index.md
- Topic1: 001.md
- Topic2: 002.md
- Topic3: 003.md
この設定では以下のように表示されます。ナビゲーション上、レベル2までだけ、連番が割り当てられています。本文内の見出しは連番が割り当てられたままです。