CLI formatter and pre-commit hook that adds hierarchical numbering to Markdown headings.
Table of Contents
- 1. Why add numbering to markdown headings?
- 2. How to use this tool?
- 3. Compatibility with other formatters
Here are some benefits of numbering markdown headings:
- Improve readability
- Numbering naturally indicate hierarchy: "3.1.6" is the child of "3.1"
- Without numbering, we'd rely on font style & size to tell hierarchy, which is not reliable
- Reduce communication overhead in a team setting
- You can reference the section by "Section 2.3.5" instead of "the section named 'Monthly Sales Trend and What That Means for Our Business in the Long Run'"
- Make diffs clearer
- Renumbered headings reveal structural edits instead of hiding content changes in walls of text
First, install it from PyPI:
pip install markdown-heading-numberingAnd then:
markdown-heading-numbering \
--start-from-level 2 \
--end-at-level 5 \
--initial-numbering 1 \
docs/README.mdOptions:
--start-from-level(int, default2): first heading level to number.--end-at-level(int, default6): last heading level to number (inclusive).--initial-numbering(int, default1): starting value for the top-most numbered heading.
Any existing numbering is removed before the formatter applies the new sequence.
This repository ships a .pre-commit-hooks.yaml that points to the CLI. Add
the hook to your .pre-commit-config.yaml:
- repo: https://github.com/jsh9/markdown-heading-numbering
rev: <commit-or-tag>
hooks:
- id: markdown-heading-numbering
args:
- --start-from-level=2
- --end-at-level=4
- --initial-numbering=1The hook shares the same options as the CLI and formats files in place.
3.1. With markdown-toc-creator
If you are also using my other markdown formatter
markdown-toc-creator as a
pre-commit hook to for create tables of contents in your markdown files, put
that hook after this one.
3.2. With mdformat
This tool is fully compatible with
mdformat as pre-commit hooks.