Markdown TOC Generator
Erzeugt ein verlinktes Inhaltsverzeichnis aus Markdown-Überschriften.
Über dieses Tool
Ein Markdown-Inhaltsverzeichnis (TOC) ist eine Navigationsliste oben in einem Dokument, die Lesern hilft, schnell zu bestimmten Abschnitten zu springen. Dieser Generator extrahiert automatisch Überschriften aus Ihrer Markdown-Quelle und erstellt verlinkte Anker, die mit GitHub, GitLab und den meisten Markdown-Renderern kompatibel sind. Er beseitigt die mühsame manuelle Erstellung von TOC-Einträgen und stellt sicher, dass Links präzise bleiben, während Ihr Dokument weiterentwickelt wird.
Fügen Sie Ihren Markdown-Text ein und klicken Sie auf Generieren, um sofort ein formatiertes TOC mit funktionierenden Anker-Links zu erstellen. Das Tool bietet anpassbare Optionen: Kontrollieren Sie die maximale Überschriftentiefe (H1 bis H6), die einbezogen werden soll, und wählen Sie Ihren bevorzugten Aufzählungsstil (Bindestriche, Sternchen oder Pluszeichen). Doppelte Überschriften werden automatisch erkannt und mit Suffixen wie #heading-1, #heading-2 nummeriert, um Anker-Konflikte zu vermeiden.
Häufig gestellte Fragen
Code-Implementierung
import re
def heading_to_anchor(text: str) -> str:
"""Convert heading text to a GitHub-Flavored Markdown anchor."""
anchor = text.lower()
anchor = re.sub(r"[^\w\s-]", "", anchor) # remove punctuation (keep letters, digits, -, _)
anchor = re.sub(r"\s+", "-", anchor.strip()) # spaces → hyphens
return anchor
def generate_toc(markdown: str, max_depth: int = 3, bullet: str = "-") -> str:
lines = []
seen: dict[str, int] = {}
for line in markdown.splitlines():
m = re.match(r"^(#{1,6})\s+(.*)", line)
if not m:
continue
level = len(m.group(1))
if level > max_depth:
continue
title = m.group(2).strip()
anchor = heading_to_anchor(title)
# Deduplicate: second occurrence → anchor-1, third → anchor-2, ...
count = seen.get(anchor, 0)
seen[anchor] = count + 1
if count > 0:
anchor = f"{anchor}-{count}"
indent = " " * (level - 1)
lines.append(f"{indent}{bullet} [{title}](#{anchor})")
return "\n".join(lines)
md = """# Getting Started
## Installation
### Prerequisites
### Install
## Configuration
## Usage
# Advanced
## Performance
## Security
"""
print(generate_toc(md, max_depth=3, bullet="-"))
# - [Getting Started](#getting-started)
# - [Installation](#installation)
# - [Prerequisites](#prerequisites)
# - [Install](#install)
# - [Configuration](#configuration)
# - [Usage](#usage)
# - [Advanced](#advanced)
# - [Performance](#performance)
# - [Security](#security)Comments & Feedback
Comments are powered by Giscus. Sign in with GitHub to leave a comment.