Menü

Werkzeuge durchsuchenÄnderungsprotokoll

zum Navigieren zum ÖffnenBeschreiben Sie das Problem, nicht das Tool

Verknüpfen Sie doppelte Markdown-Überschriften ohne Kollisionen

Wiederholte Überschriften dürfen nicht dieselbe HTML-ID haben. Die erste Überschrift behält den Basisanker, während spätere Übereinstimmungen Vorkommenssuffixe wie -2 und -3 erhalten; Das Tool fügt genau diese IDs vor den Überschriften ein und verwendet dieselben Werte in den generierten Links, sodass jeder Eintrag einen anderen Abschnitt erreicht.

ATX- und Setext-Überschriften werden erkannt. Überschriften aussehende Zeilen innerhalb umzäunten oder eingerückten Codes werden ignoriert.

Bei Level 2 wird der Titel des Dokuments normalerweise aus dem eigenen Inhaltsverzeichnis herausgehalten.

Überschriften verlinkt
5
Doppelte Anker behoben
2
Tiefste Ebene inklusive
3

Markdown mit Inhaltsverzeichnis

document-with-toc.md · 503 B

Das Originaldokument mit einem ersetzbaren generierten Block und expliziten HTML-Ankern vor eingefügten Überschriften.

Jede verlinkte Überschrift

32Installinstall
53Linuxlinux
72Install!install-2
93Windowswindows
112Installinstall-3
Das Wichtigste
  1. Zwei Überschriften mit dem Namen „Install“ werden zu „#install“ und „#install-2“ und nicht zu zwei Links zum selben Ziel.

  2. Die Erkennung von Duplikaten erfolgt, nachdem Groß-/Kleinschreibung, Zeichensetzung und Leerzeichen normalisiert wurden. Installieren Sie also! und Installation können immer noch kollidieren.

  3. Die Überschriftszuordnungstabelle stellt den endgültigen Anker bereit, der jeder Quellzeile zugewiesen ist, bevor das Dokument heruntergeladen wird.

So funktioniert es

So wird es gemacht

  1. Normalisieren Sie die Zeilenenden und entfernen Sie nur einen vollständigen Inhaltsverzeichnisblock und Ankerzeilen, die zuvor von diesem Tool generiert wurden.
  2. Scannen Sie Zeilen der Reihe nach, verfolgen Sie Backtick- und Tilde-Zäune und ignorieren Sie Code mit vier Leerzeichen oder Tabulatoreinzügen, bevor Sie ATX- und Setext-Überschriften erkennen.
  3. Vereinfachen Sie jede enthaltene Überschrift in einen kleingeschriebenen Unicode-Slug und hängen Sie dann die Suffixe -2, -3 und höher an, wenn normalisierte Namen kollidieren.
  4. Fügen Sie den genauen HTML-Anker vor jeder enthaltenen Überschrift ein und platzieren Sie eine markierte, verschachtelte Liste nach einem öffnenden Titel der ersten Ebene oder am Dokumentanfang.

Wovon es ausgeht

  • Der ausgewählte niedrigste Pegel ist nicht tiefer als der ausgewählte maximale Pegel.
  • Der Scanner zielt auf gewöhnliche CommonMark ATX-Überschriften und einzeilige Setext-Überschriften ab; Es handelt sich nicht um einen vollständig erweiterungsspezifischen Markdown-Renderer.
  • Rohe HTML-Anker werden vom Zielrenderer zugelassen. Eine Plattform, die verfasstes HTML entfernt, entfernt auch diese expliziten Ziele.
  • Vorhandene nicht markierte HTML-IDs und ein unvollständig generierter Markierungsblock werden als verfasster Inhalt behandelt und niemals gelöscht.

Fragen

Warum verlassen Sie sich nicht darauf, dass der Renderer doppelte Überschriften auflöst?

Die Regeln für Renderer-Suffixe unterscheiden sich und sind nicht Teil des Kern-Markdowns. Explizite IDs machen das Linkziel zu einem Teil des Dokuments und nicht zu einer undokumentierten Host-Konvention.

Was passiert, wenn eine Überschrift nur Satzzeichen enthält?

Seine Basis wird zum Abschnitt, gefolgt von denselben numerischen Vorkommenssuffixen, wenn mehr als eine Überschrift enthalten ist, die nur aus Satzzeichen besteht.

Quellen

  • CommonMark Specification 0.31.2CommonMarkgeprüft am gilt für ATX-Überschriften, Setext-Überschriften, eingerückter Code und abgeschirmter Code
  • The id attributeWHATWGgeprüft am gilt für Explizite HTML-Linkziele

Die vollständige Methode, das Rechenbeispiel und alle Annahmen hinter diesem Ergebnis stehen auf Markdown-Inhaltsverzeichnis-Ersteller.