Automatyczny TOC w GitHubie-markdown

Czy możliwe jest wygenerowanie automatycznego spisu treści za pomocą Github ?

Author: Roberto Aloi, 2012-03-15

14 answers

Stworzyłem dwie opcje do wygenerowania toc dla github-flavored-markdown:

DocToc Command Line Tool (source ) wymaga node.js

Instalacja:

npm install -g doctoc

Użycie:

doctoc . aby dodać spis treści do wszystkich plików markdown w bieżących i wszystkich podkatalogach.

DocToc WebApp

Jeśli chcesz najpierw spróbować online, przejdź do strony doctoc , wklej link strony markdown i wygeneruje tabelę zawartość, którą można wstawić u góry pliku znaczników.

Github Wiki i Anchory

Jak zauważył Matthew Flaschen w komentarzach poniżej, na swoich stronach wiki GitHub wcześniej nie generował anchorów, od których zależy doctoc.

Aktualizacja: jednak naprawili ten problem .

 130
Author: Thorsten Lorenz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-01 20:45:00

W przeciwieństwie do innych języków, w których istnieje wiele języków, w których istnieje wiele języków, w tym Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język Angielski, Język]}

* auto-gen TOC:
{:toc}

Pierwsza linia uruchamia listę nieuporządkowaną i zostaje wyrzucona.

Powoduje to zagnieżdżenie zestawu list nieuporządkowanych, używając nagłówków w dokumencie.

Uwaga: to powinno działać dla stron GitHub, nie GitHub Flavored Markdown (GFM) jak używane w komentarzach lub stronach wiki. AFAIK rozwiązanie nie istnieje na to.

 24
Author: Ben Scott,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-11-03 21:32:42

Nie jest automatyczne, ale używa wyrażeń regularnych Notepad++:

Zastąp wszystkie pierwsze przez drugie (usuwa wszystkie linie nie posiadające nagłówków)

^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n

Then (konwertuje nagłówki III na spacje)

-##
        -

Then (konwertuje nagłówki II na spacje)

-#
    -

Then (Usuń nieużywane znaki na początku i na końcu tytułu linku)

\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]

Then (Konwertuj Ostatnie tokeny małymi literami i myślnikami zamiast spacji)

\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2

Usuń niewykorzystane funty końcowe i początkowe myślniki:

(?:()[-:;!\?#]+$|(\]#)-)
\1\2

Usuń bezużyteczne znaki w linkach:

(\].*?)(?:\(|\))
\1

I na koniec dodaj nawias wokół końcowych linków:

\](?!\()(.*?)$
\]\(\1\)
I voila! Możesz nawet umieścić to w globalnym makrze, jeśli powtórzysz to wystarczająco długo.
 9
Author: Mikaël Mayer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-03-24 16:58:41

Jeśli edytujesz pliki Markdown za pomocą Vima, możesz wypróbować tę wtyczkę vim-markdown-toc .

Użycie jest proste, po prostu przesuń kursor w miejsce, w którym chcesz dodać spis treści i uruchom :GenTocGFM, gotowe!

Screeny:

vim-markdown-toc

Cechy:

  1. Generowanie spisu treści dla plików Markdown. (Wsparcie GitHub, Markdown i Redcarpet)

  2. Zaktualizuj istniejący spis treści.

  3. Automatyczna aktualizacja toc przy zapisywaniu.

 8
Author: Zhuang Ma,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-10-22 13:14:43

Github Flavored Markdown używa RedCarpet jako swojego silnika Markdown. Z redcarpet repo :

: with_toc_data-dodawanie anchorów HTML do każdego nagłówka w wyjściowym HTML, aby umożliwić łączenie się z każdą sekcją.

Wygląda na to, że musisz dostać się na poziomie renderera, aby ustawić tę flagę, co oczywiście nie jest możliwe na Githubie. Jednakże, ostatnia aktualizacja do stron Github, wydaje się, że automatyczne zakotwiczenie jest włączone dla nagłówków, tworząc łączone nagłówki. Nie dokładnie to, czego chcesz, ale może to pomóc w stworzeniu spisu treści dla dokumentu nieco łatwiej (choć ręcznie).

 7
Author: Kevin Suttle,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-16 20:42:31

To niemożliwe, poza zaproponowanymi obejściami.

I proponuje rozszerzenie Toc i inne możliwości do [email protected] Steven! Ragnarök odpowiedział zwykle:

Dzięki za sugestię i linki. Dodam go do naszej wewnętrznej listy żądań funkcji, aby zespół mógł to zobaczyć.

Zastanówmy się nad tym pytaniem, dopóki się nie stanie.

Innym (ogólnie niedopuszczalnym) obejściem jest użycie asciidoc zamiast Markdown, , który renderuje TOCs .

 6
Author: Ciro Santilli 新疆改造中心 六四事件 法轮功,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-04-23 06:28:07

Możliwe jest automatyczne wygenerowanie strony internetowej za pomocą http://documentup.com / z pliku README.md. Nie tworzy to spisu treści, ale dla wielu może to rozwiązać powód, dla którego chce się utworzyć spis treści.

Inną alternatywą dla Documentup jest Flatdoc: http://ricostacruz.com/flatdoc/

 4
Author: Nils,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-06-06 08:22:04

Gitdown jest preprocesorem markdown dla Github.

Używając Gitdown możesz:

  • Wygeneruj spis treści
  • Znajdź martwe adresy URL i identyfikatory fragmentów
  • Dołącz zmienne
  • Dołącz pliki
  • Pobierz Rozmiar pliku
  • Generuj Odznaki
  • Data Wydruku
  • Drukuj informacje o samym repozytorium

Gitdown usprawnia typowe zadania związane z utrzymaniem strony dokumentacji dla Repozytorium GitHub.

Używanie go jest proste:

var Gitdown = require('gitdown');

Gitdown
    // Gitdown flavored markdown.
    .read('.gitdown/README.md')
    // GitHub compatible markdown.
    .write('README.md');

Możesz go mieć jako osobny skrypt lub mieć go jako część procedury budowania skryptu (np. Gulp).

 3
Author: Gajus,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-08-21 12:30:31

Użyj coryfklein / doctoc , widelca thlorenz / doctoc , który nie dodaje " wygenerowanego z DocToc " do każdego spisu treści.

npm install -g coryfklein/doctoc
 2
Author: Cory Klein,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-11-20 16:50:15

Bardzo wygodnym sposobem uzyskania spisu treści pliku mardown podczas pracy z Visual Studio Code jest rozszerzenie Markdown-Toc .

Może dodawać spis treści do istniejących plików markdown, a nawet aktualizować spis treści podczas zapisywania.

Tutaj wpisz opis obrazka

 2
Author: Mathias Dpunkt,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-02-05 13:15:53

Mój kolega @schmiedc i ja stworzyliśmy skrypt GreaseMonkey , który instaluje nowy przycisk TOC na lewo od przycisku h1, który używa doskonałej biblioteki markdown-js do dodawania/odświeżania spisu treści.

Przewaga nad rozwiązaniami takimi jak doctoc polega na tym, że integruje się z edytorem Wiki Githuba i nie wymaga od użytkowników pracy nad wierszem poleceń(i wymaga od użytkowników instalacji narzędzi takich jak node.js). W Chrome działa poprzez przeciąganie i upuszczanie na stronę rozszerzeń, w Firefoksie można będzie musiał zainstalować rozszerzenie GreaseMonkey.

Będzie działać ze zwykłym znacznikiem markdown (tzn. nie obsługuje poprawnie bloków kodu, ponieważ jest to rozszerzenie GitHub do znacznika markdown). Wkład mile widziany.

 1
Author: Johannes Schindelin,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-03-12 14:25:06

Nie jest to bezpośrednia odpowiedź na to pytanie, ponieważ tak wiele osób zapewniło obejścia. Nie sądzę, aby generowanie TOC było oficjalnie wspierane przez Github jeszcze do tej pory. Jeśli chcesz, aby GitHub automatycznie renderował spis treści na swoich stronach GFM preview, weź udział w dyskusji na temat oficjalnego problemu z żądaniem funkcji .

 0
Author: Xiaodong Qi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-22 21:33:11

Obecnie nie jest to Możliwe przy użyciu składni markdown (zobacz trwającą dyskusję na GitHub), jednak możesz użyć niektórych zewnętrznych narzędzi, takich jak:


Alternatywnie użyj AsciiDoc zamiast (np. README.adoc), np.

:toc: macro
:toc-title:
:toclevels: 99
# Title

## A

### A2

## B

### B2

Zgodnie z sugestią w ten komentarz . Sprawdź demo tutaj .

 0
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-11-10 13:47:34

Dla Github 's Texteditor Atom sprawdź tę niesamowitą wtyczkę (lub" pakiet " W Atom-lingo), która generuje "TOC (spis treści) nagłówków z przetwarzanych plików markdown":

Markdown-toc

Po zainstalowaniu jako Atom-package możesz użyć skrótu ctrl-alt-c wstawianie spisu treści na podstawie struktury markdown-doc w bieżącej pozycji kursora...

Zrzuty ekranu:

Tutaj wpisz opis obrazka

Atom Keybindings

Markdown-Toc daje następujące domyślne powiązania klawiszy do sterowania Wtyczką w atomie:

  • ctrl-alt-c = > Utwórz TOC w pozycji kursora
  • ctrl-alt-u = > update TOC
  • ctrl-alt-r = > Usuń TOC

PlugIn Features (from the project ' s README)

  • automatyczne linkowanie za pomocą tagów anchor, np. # A 1#a-1
  • regulacja głębokości [1-6] z depthFrom:1 i depthTo:6
  • Włącz lub wyłącz łącza za pomocą withLinks:1
  • Odśwież listę przy zapisie za pomocą updateOnSave:1
  • Użyj listy uporządkowanej (1. ..., 2. ...) z orderedList:0
 0
Author: Mayinx,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2018-03-06 00:27:55