Come creo una sorta di tabella dei contenuti nel wiki di GitHub?


Risposte:


111

È ben dimostrato nel sommario del Markdown Cheatsheet .

##### Table of Contents  
[Headers](#headers)  
[Emphasis](#emphasis)  
...snip...    
<a name="headers"/>
## Headers

Se passi il mouse su un'intestazione in un file Markdown di GitHub, vedrai un piccolo collegamento semplice a sinistra di esso, puoi anche usare quel collegamento. Il formato per quel collegamento è <project URL#<header name>. Il <header name>prodotto deve essere lettere minuscole.


36
Sicuramente c'è un modo per generarlo automaticamente come _ _ TOC _ _ di MediaWiki?
LB

17
@ LB--: Se modifichi una pagina wiki di GitHub e cambi il menu a discesa "stile di modifica" in "MediaWiki", puoi semplicemente usare MediaWiki __TOC__direttamente. Chiaramente la logica di autogenerazione sottostante c'è. Ma la funzionalità non sembra essere esposta nel loro stile di modifica Markdown. Piuttosto sfortunato. Cominciamo tutti a inviare richieste di funzionalità per questo e forse lo accenderanno.
Andrew Janke

3
Mi ritraggo sulla "logica di autogenerazione sottostante" che è lì; sembra che i diversi "stili di modifica" passino attraverso diversi renderizzatori. Tuttavia, sarebbe fantastico averlo nella versione MD poiché è piuttosto popolare e non potrebbe essere difficile da aggiungere.
Andrew Janke

5
@AndrewJanke Ho approfondito la questione, sembra che il formato MarkDown non abbia alcun supporto per la generazione automatica dei sommari, e ne sono orgoglioso.
LB--

6
C'è un problema nella creazione di collegamenti. Devono essere minuscole. Non lo sapevo e mi chiedevo perché il mio sommario non funzionasse. Ho usato #Headersinvece di #headers. Ho pensato che fosse un errore di battitura nella tua risposta. Forse puoi aggiungere alla tua risposta queste informazioni.
t3chb0t

20

Una possibile soluzione (semi-automatizzata) è quella di Eugene Kalinin github-markdown-toc. Questo strumento essenzialmente README.mdanalizza il tuo file ed estrae #i titoli per creare un sommario.

  1. Scarica lo script https://github.com/ekalinin/github-markdown-toc
  2. Feed your README.mdto the script (come notato in Eugene's README.md)

    cat README.md | bash github-markdown-toc

  3. Taglia e incolla il sommario generato e posizionalo nella parte superiore del README.mdfile

Nota che questa bashimplementazione funziona solo su Linux (da quello che posso dire).

Come nota a margine, c'è un'implementazione golang ed è probabilmente più una seccatura per lavorare.




12

Attualmente non è possibile farlo utilizzando la sintassi markdown ( .md). È in corso una discussione non ufficiale sulla generazione automatica dell'indice TOC sui file di markdown renderizzati, come l' README.mdelenco di alcune idee.

Tuttavia ci sono alcune altre soluzioni alternative come:


1
Sì, sono stato convertito in asciidoc principalmente per il ToC e il collegamento alle intestazioni. Sono stufo di aspettare che Markdown raggiunga.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

Se non sei nella posizione di restare con Markdown , puoi fare come di seguito:

  • su GitHub / wiki : imposta Markdown su MediaWiki . Usa la __TOC__sintassi. Vedi esempio .
  • su GitHub / repo : cambia Markdown in AsciiDoc . Usa la :toc:sintassi. Guarda la demo .

Tuttavia, utilizzando i file Markdown in GitHub / repo , puoi ottenerlo su pagine GitHub come in Wikipedia

  • quando Jekyll è attivato, genera pagine GitHub utilizzando Kramdown per impostazione predefinita
  • Kramdown viene fornito con Table Of Content. Usa la {:toc}sintassi. Vedi la spiegazione .

5

Codice di Visual Studio

Se ti capita di utilizzare Visual Studio Code , esiste un'estensione facile da usare chiamata Markdown All in One che può creare il sommario per qualsiasi file .md in un istante.

inserisci qui la descrizione dell'immagine

Basta aprire la tavolozza dei comandi ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

Originale md Dopo l'inserimento automatico del TOC

L'aggiornamento automatico rovina il sommario modificato?

Come ulteriore suggerimento, potresti disattivare gli "aggiornamenti automatici dell'indice al salvataggio" utilizzando

  "markdown.extension.toc.updateOnSave": false,

nelle impostazioni di Visual Studio (Tavolozza dei comandi -> Preferenze: Apri impostazioni (JSON)).



2

A causa del fatto che github ha il suo modo di generare id = ".." attributi nelle intestazioni h1, h2, h3, ecc ... nella versione html dopo l'elaborazione di Markdown (ad esempio Bitbucket usa un modello leggermente diverso di intestazioni lente per id = "slug") è utile non reinventare la ruota e utilizzare la libreria che ha invertito questo processo.

Ho trovato una libreria abbastanza buona per questa attività chiamata markdown-toc .

A me sembra la soluzione migliore perché ho sempre installato node sulla mia macchina.

Basta eseguire NPX Markdown-toc -i file.md .

E sembra che sia uno degli strumenti più popolari per questo compito, almeno nell'ecosistema node.js.

ls
cat <<EOF >> test.md | tee 
## Table of Contents

<!-- toc -->
- old toc 1
- old toc 2
- old toc 3
<!-- tocstop -->

## abc
This is a b c.

## xyz
This is x y z.
EOF
ls
cat test.md
npx markdown-toc -i test.md
cat test.md

produzione:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.