Generador de TOC Markdown
Genera una tabla de contenidos enlazada desde los encabezados de markdown.
Acerca de esta herramienta
Una Tabla de Contenidos (TOC) de Markdown es una lista de navegación en la parte superior de un documento que ayuda a los lectores a saltar rápidamente a secciones específicas. Este generador extrae automáticamente los encabezados de tu fuente Markdown y crea anclas vinculadas compatibles con GitHub, GitLab y la mayoría de los renderizadores de Markdown. Elimina el tedioso trabajo manual de escribir entradas de TOC y garantiza que los enlaces permanezcan precisos a medida que tu documento evoluciona.
Pega tu texto Markdown y haz clic en Generar para crear instantáneamente un TOC formateado con enlaces de ancla funcionales. La herramienta admite opciones personalizables: controla la profundidad máxima de encabezados (H1 a H6) a incluir y elige tu estilo de viñeta preferido (guiones, asteriscos o signos de más). Los encabezados duplicados se detectan automáticamente y se numeran con sufijos como #heading-1, #heading-2 para evitar conflictos de ancla.
Preguntas Frecuentes
Implementación de Código
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.