Skip to main content

CLI and pre-commit hook to add hierarchical numbering to Markdown headings.

Project description

markdown-heading-numbering

CLI formatter and pre-commit hook that adds hierarchical numbering to Markdown headings.


Table of Contents


1. Why add numbering to markdown headings?

Here are some benefits of numbering markdown headings:

  1. 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
  2. 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'"
  3. Make diffs clearer
    • Renumbered headings reveal structural edits instead of hiding content changes in walls of text

2. How to use this tool?

2.1. As a command-line tool

First, install it from PyPI:

pip install markdown-heading-numbering

And then:

markdown-heading-numbering \
  --start-from-level 2 \
  --end-at-level 5 \
  --initial-numbering 1 \
  docs/README.md

Options:

  • --start-from-level (int, default 2): first heading level to number.
  • --end-at-level (int, default 6): last heading level to number (inclusive).
  • --initial-numbering (int, default 1): starting value for the top-most numbered heading.

Any existing numbering is removed before the formatter applies the new sequence.

2.2. As a pre-commit hook

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=1

The hook shares the same options as the CLI and formats files in place.

3. Compatibility with other formatters

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.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

markdown_heading_numbering-0.1.1.tar.gz (6.6 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

markdown_heading_numbering-0.1.1-py3-none-any.whl (7.0 kB view details)

Uploaded Python 3

File details

Details for the file markdown_heading_numbering-0.1.1.tar.gz.

File metadata

File hashes

Hashes for markdown_heading_numbering-0.1.1.tar.gz
Algorithm Hash digest
SHA256 c2d20391868506b6c17968c4b132017e8daf8f27725ed954f0c193d845243044
MD5 c2152839b8b754fc6a3217fa8161515d
BLAKE2b-256 2d21e52d312ad944382fd2e3500153e9d07269da15245e7d62cc3be27b427034

See more details on using hashes here.

File details

Details for the file markdown_heading_numbering-0.1.1-py3-none-any.whl.

File metadata

File hashes

Hashes for markdown_heading_numbering-0.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 fc7824448d2a65894498f4d4473f34ebd491d5f78f500a4da9ffeeb5bad881f3
MD5 d2072c6fca49f55365f31f30fcfe937b
BLAKE2b-256 dcb7b467929e8ce534026180c79a28077b1a8bc4c9021ed7446c489e5e01f1c1

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page