Menü

Werkzeuge durchsuchenÄnderungsprotokoll

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

Verwandeln Sie die bereits in Ihrem Dokument enthaltenen Überschriften in eine Navigation

Suchen Sie nach Markdown-Überschriften außerhalb von Codeblöcken, geben Sie jeder enthaltenen Überschrift einen expliziten kollisionsfreien Anker und laden Sie das vollständige Dokument mit einem austauschbaren verschachtelten Inhaltsverzeichnis herunter.

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
4
Doppelte Anker behoben
1
Tiefste Ebene inklusive
3

Markdown mit Inhaltsverzeichnis

document-with-toc.md · 468 B

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

Jede verlinkte Überschrift

52Equipmentequipment
73Cameracamera
92Resultsresults
113Cameracamera-2

So funktioniert es

Warum explizite Anker wichtig sind

CommonMark gibt an, was eine ATX- oder Setext-Überschrift ist. Es legt weder fest, dass ## Getting started zu #getting-started werden muss, noch wie eine zweite Überschrift mit denselben Wörtern angehängt werden soll. Diese Auswahlmöglichkeiten liegen bei Renderern und Hosting-Plattformen.

Das generierte Dokument enthält daher beide Seiten jedes Links:

- [Camera](#camera-2)

<!-- tessalor-toc:anchor --><a id="camera-2"></a>
### Camera

Der Kommentar identifiziert einen Anker, den dieses Tool ersetzen kann. Das id ist das eigentliche HTML-Fragmentziel. Ein unabhängiger Anker ohne diese Markierung bleibt verfasster Inhalt und bleibt in Ruhe.

So werden Überschriften gefunden

Der Scanner arbeitet von oben nach unten. Ein Zaun aus mindestens drei Backticks oder Tilden beginnt einen Codeblock; Nur ein Zaun mit demselben Zeichen und mindestens derselben Länge schließt es. Zeilen darin gelten niemals als Überschriften. Zeilen mit vier führenden Leerzeichen oder einem führenden Tabulator werden aus dem gleichen Grund als eingerückter Code behandelt.

Außerhalb des Codes bilden ein bis sechs führende #-Zeichen, gefolgt von Leerzeichen, eine ATX-Überschrift. Eine Textzeile, gefolgt von === oder ---, wird als einzeilige Überschrift der Setext-Ebene 1 oder 2 erkannt. Optionale abschließende Hashes für ATX-Überschriften werden aus der sichtbaren Beschriftung entfernt.

Dies ist absichtlich enger gefasst, als sich als vollständiger Markdown-Renderer auszugeben. Containerspezifische Erweiterungen und mehrzeilige Setext-Absätze können parserabhängiges Verhalten aufweisen; Das Tool verspricht nicht stillschweigend, jeden Host zu modellieren.

Wie Anker hergestellt werden

Sichtbarer Inline-Linktext und einfache Hervorhebungsmarkierungen werden auf ihren Text reduziert, dann wird die Beschriftung Unicode-normalisiert und in Kleinbuchstaben geschrieben. Kombinationszeichen werden entfernt, Reihen anderer Zeichen als Buchstaben und Zahlen werden zu einem Bindestrich und Randtrennstriche verschwinden. Eine Überschrift, die nur aus Satzzeichen besteht, fällt auf section zurück.

Nach dieser Normalisierung erfolgt die Duplikaterkennung. Café & Crème und Cafe Creme beginnen beide bei cafe-creme, daher wird die spätere Überschrift zu cafe-creme-2, anstatt beide Einträge auf den ersten Abschnitt zu verweisen.

Das bearbeitete Dokument

Das Standarddokument hat einen Titel und folgende Überschriften:

QuellenüberschriftEbeneAnker eingefügt
Ausrüstung2equipment
Kamera3camera
Ergebnisse2results
Kamera3camera-2

Wenn die Ebenen 2 bis 4 ausgewählt sind, ist das Ergebnis 4 verknüpfte Überschriften, 1 aufgelöstes Duplikat und die am tiefsten enthaltene Ebene 3. Die Tabelle wird nach dem Eröffnungstitel # Field notes platziert; Verschachtelte Einträge der Ebene 3 erhalten zwei Leerzeichen beim Listeneinzug.

Verwenden Sie den [Text Diff Maker] (/text/text-diff-maker), um die eingefügten Zeilen anhand der Quelle zu überprüfen, oder den [Wortzähler] (/documents/word-counter), wenn der Inhalt des Dokuments – nicht seine Navigation – die Frage ist.

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

Definiert Markdown die automatische ID für eine Überschrift?

Nein. Core Markdown definiert die Überschriftenstruktur, aber nicht den vom Host generierten Fragment-Slug, und die Regeln für doppelte Suffixe variieren. Dieses Tool schreibt explizite IDs, sodass seine Links und Ziele Teil desselben Dokuments sind.

Wird eine in einem Codebeispiel angezeigte Überschrift in die Tabelle aufgenommen?

Nicht, wenn es sich innerhalb eines Backtick- oder Tilde-Zauns oder eines eingerückten Codeblocks befindet. Der Scanner verfolgt diese Blöcke, bevor er prüft, ob eine Zeile eine Überschriftensyntax hat.

Kann ich die Tabelle nach der Bearbeitung von Überschriften neu generieren?

Ja. Die generierte Tabelle verfügt über Start- und Endkommentare und jeder generierte Anker verfügt über eine eigene Markierung. Bei einem späteren Durchlauf werden die markierten Teile entfernt und eine aktuelle Kopie erstellt.

Warum kann ein Link auf einer Veröffentlichungsplattform fehlschlagen?

Einige Plattformen bereinigen Roh-HTML und entfernen erstellte Ankerelemente. Der Markdown bleibt lesbar, aber die expliziten Ziele erfordern einen Renderer, der normales Inline-HTML zulässt.

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