-
Notifications
You must be signed in to change notification settings - Fork 892
Description
Problem feature would solve:
Users want Markdown heading ids that match GitHub-style anchors when using the toc extension. Today toc uses its default slugify which differs on underscores, punctuation, Unicode normalization, and duplicate handling. Add an opt-in mode so inputs like "A_B C-D!" yield ids identical to GitHub such as "a-b-c-d", with stable numeric suffixes for duplicates.
Proposed solution:
Add an optional config key for the toc extension: id_strategy with values "default" (current behavior) or "github". When "github", generate ids with a GitHub-like slugifier: lowercase; Unicode NFKD; drop combining marks; remove non-alphanumerics except hyphen; map spaces and underscores to hyphen; collapse repeated hyphens; trim leading and trailing hyphens. Handle duplicates by suffixing "-1", "-2", etc., in document order. Precedence rules: an explicit id on the heading wins; if a user supplies a slugify callable, it overrides id_strategy; otherwise use the selected strategy. Only ids and matching internal href targets change; permalink HTML and list structure remain unchanged. If id_strategy is provided with an unsupported value, raise ValueError and include "id_strategy" in the message.