Zacząłem używać Markdown do robienia notatek.
Używam zaznaczonego, aby przeglądać moje notatki przeceny i jego piękne.
Ale kiedy moje notatki stają się dłuższe, trudno mi znaleźć to, czego chcę.
Wiem, że wyprzedaż może tworzyć tabele, ale czy jest w stanie stworzyć spis treści, który przeskakuje do sekcji lub definiuje sekcje strony w Markdown?
Alternatywnie, są czytelnicy / redaktorzy przecen, którzy mogliby robić takie rzeczy. Wyszukiwanie byłoby również dobrą opcją.
Krótko mówiąc, chcę, aby stało się to moim niesamowitym narzędziem do robienia notatek i funkcjami podobnymi do pisania książki itp.
\tableofcontents
. Jeśli koło zostanie wymyślone na nowo, lepiej byłoby skopiować dobre części... contents::
.Odpowiedzi:
Wydaje się, że MultiMarkdown Composer generuje spis treści, który pomaga podczas edycji.
Może być też jedna lub druga biblioteka, która może generować spis treści: patrz Rozszerzenie TOC Python Markdown .
źródło
Możesz spróbować.
źródło
## Example ## "Example2" ## Third Example<a name="third-example" />
to jedyny sposób, w jaki do tej pory mogłem go połknąć. Z pewnością trzeci znacznik zostałby zinterpretowany jako -#Third
po którym następuje spacja - a następnie słowo Przykład - we fragmencie powyżej? Łączniki w ogóle nie działają. Dzięki1. [Einführung](#einfuhrung)
Oto przydatna metoda. Powinny generować klikalne odniesienia w dowolnym edytorze MarkDown.
Produkuje:
Spis treści
To jest wprowadzenie
Trochę tekstu wprowadzającego, sformatowanego w stylu nagłówka 2
Niektóre akapity
Tekst pierwszego akapitu
Akapit
To jest akapit, sformatowany w stylu nagłówka 3
Kolejny akapit
Tekst drugiego akapitu
źródło
## <a name="foo" /> Foo
Dla użytkowników Visual Studio Code dobrym pomysłem jest użycie wtyczki Markdown TOC .
Aby go zainstalować, uruchom VS Code Quick Open ( Control/⌘+ P), wklej następujące polecenie i naciśnij enter.
Aby wygenerować spis treści, otwórz paletę poleceń ( Control/⌘+ Shift+ P) i wybierz
Markdown TOC:Insert/Update option
lub użyj Control/⌘+ MT.źródło
[Section Foo](#foo-header-title)
i działa nawet poza trybem podglądu (tj. W zwykłym znaczniku).Możesz wypróbować ten skrypt ruby, aby wygenerować spis treści z pliku przeceny.
źródło
ifndef
,include
iendif
, między innymi dyrektywami preprocesora, do listy zakazanego słowa. Ponadto zdefiniowanie listy poza zakresem pętli pozwala uniknąć konieczności jej ponownego włączania przy każdej iteracji. Spowoduje to również zbieranie komentarzy w dowolnym języku, który używa#
składni komentarzy, w tym Ruby, co nie jest dobre. Jestem gotów edytować, jeśli chcesz. Jest to jednak dobry początek i działało dobrze dla moich celów. Dzięki wielkie!#
Tymi, które zaczynają się od ), a nie z nagłówkami setext (podkreślone).title.parameterize
na href, dzięki!Istnieją dwa sposoby utworzenia spisu treści (podsumowania) w dokumencie przeceny.
1. Ręcznie
2. Programowo
Można użyć na przykład skrypt, który generuje podsumowanie dla ciebie, spojrzeć na mojego projektu na github - summarizeMD -
Próbowałem także innego modułu skryptu / npm (na przykład doctoc ), ale nikt nie odtwarzał spisu treści z działającymi kotwicami.
źródło
Jeśli użyjesz dodatkowej zniżki, nie zapomnij, że możesz dodać specjalne atrybuty do linków, nagłówków, ogrodzeń kodu i obrazów.
https://michelf.ca/projects/php-markdown/extra/#spe-attr
źródło
Tagi zakotwiczenia generowane przez różne parsery Markdown nie są nawet.
Jeśli pracujesz z parserami Markdown GFM (GitHub Flavored Markdown) lub Redcarpet, napisałem wtyczkę Vima do obsługi spisu treści.
funkcje
Wygeneruj spis treści dla plików Markdown.
Obsługiwane parsery Markdown:
Zaktualizuj istniejący spis treści.
Automatycznie aktualizuj istniejący spis treści po zapisaniu.
Zrzuty ekranu
Stosowanie
Wygeneruj spis treści
Przesuń kursor do linii, do której chcesz dołączyć spis treści, a następnie wpisz poniżej odpowiednie polecenie. Polecenie wygeneruje nagłówki po kursorze do spisu treści.
:GenTocGFM
Wygeneruj spis treści w stylu łącza GFM.
To polecenie jest odpowiednie dla plików Markdown w repozytoriach GitHub, takich jak README.md, i plików Markdown dla GitBook.
:GenTocRedcarpet
Wygeneruj spis treści w stylu linku Redcarpet.
To polecenie jest odpowiednie dla Jekyll lub gdziekolwiek indziej użyj Redcarpet jako parsera Markdown.
Możesz wyświetlić tutaj, aby poznać różnice między łączami TOC w stylu GFM i Redcarpet.
Zaktualizuj istniejący spis treści ręcznie
Zasadniczo nie musisz tego robić, istniejący spis treści domyślnie aktualizuje się automatycznie po zapisaniu. Jeśli chcesz zrobić to ręcznie, wystarczy użyć
:UpdateToc
polecenia.Pliki do pobrania i dokumenty
https://github.com/mzlogin/vim-markdown-toc
źródło
Można również użyć
pandoc
, ten „nóż swiss-army” konwersji „jednego formatu na inny znaczników” . Może automatycznie wygenerować spis treści w dokumencie wyjściowym, jeśli podasz--toc
argument.Wskazówka: Jeśli chcesz uzyskać spis treści w
html
danych wyjściowych, musisz również podać,-s
który generuje samodzielny dokument.Przykładowy wiersz poleceń powłoki:
źródło
Na korzyść tych, którzy tworzą
README.md
pliki w Atomie (jak znalazłem ten wątek):https://atom.io/packages/markdown-toc
źródło
Jeśli chcesz użyć narzędzia javascript / node.js, spójrz na markdown-toc .
źródło
Możesz go wygenerować za pomocą tego bash one-liner. Zakłada, że twoja nazwa pliku nazywa się
FILE.md
.źródło
Właśnie kodowałem rozszerzenie dla
python-markdown
, które używa parsera do pobierania nagłówków, i wysyła spis treści jako nieuporządkowaną listę w formacie Markdown z lokalnymi linkami. Plik jestmd_toc.py)... i powinien zostać umieszczony w
markdown/extensions/
katalogu w instalacji Markdown. Następnie wszystko, co musisz zrobić, to wpisać<a>
tagi kotwicy zid="..."
atrybutem jako odniesieniem - dla takiego tekstu wejściowego:... rozszerzenie można nazwać tak:
... a następnie możesz wkleić to toc do dokumentu przeceny (lub mieć skrót w edytorze tekstu, który wywołuje skrypt na aktualnie otwartym dokumencie, a następnie wstawia wynikowy spis treści do tego samego dokumentu).
Zauważ, że starsze wersje
python-markdown
nie mają__main__.py
modułu i jako takie wywołanie linii poleceń jak wyżej nie będzie działać dla tych wersji.źródło
Jak wspomniano w innych odpowiedziach, istnieje wiele sposobów automatycznego generowania spisu treści. Większość z nich to oprogramowanie typu open source i można je dostosować do własnych potrzeb.
Brakowało mi jednak atrakcyjnego wizualnie formatowania spisu treści, wykorzystującego ograniczone opcje, które zapewnia Markdown. Wymyśliliśmy następujące:
Kod
W swoim dokumencie umieściłbyś docelowe znaczniki podpunktów w następujący sposób:
W zależności od tego, gdzie i jak używasz Markdown, poniższe elementy powinny również działać i zapewniać ładniejszy kod Markdown:
Przykładowe renderowanie
Zalety
Możesz dodać tyle poziomów rozdziałów i podrozdziałów, ile potrzebujesz. W spisie treści byłyby one wyświetlane jako zagnieżdżone nieuporządkowane listy na głębszych poziomach.
Bez użycia list uporządkowanych. Tworzyłyby one wcięcia, nie łączyłyby liczby i nie można ich używać do tworzenia dziesiętnej numeracji klasyfikacyjnej, takiej jak „1.1”.
Brak użycia list na pierwszym poziomie. W tym przypadku korzystanie z nieuporządkowanej listy jest możliwe, ale nie konieczne: wcięcie i wypunktowanie dodają jedynie wizualnego bałaganu i żadnej funkcji, więc nie używamy listy dla pierwszego poziomu ToC.
Nacisk wizualny na sekcje pierwszego poziomu w spisie treści pogrubionym drukiem.
Krótkie znaczące znaczniki podpunktów, które wyglądają „pięknie” na pasku adresu przeglądarki, takie jak
#heading--1-1
znaczniki zawierające przekształcone fragmenty rzeczywistego nagłówka.Kod używa nagłówków H2 (
## …
) dla sekcji, nagłówków H3 (### …
) dla podtytułów itp. To sprawia, że kod źródłowy jest łatwiejszy do odczytania, ponieważ## …
zapewnia silniejszą wskazówkę wizualną podczas przewijania w porównaniu do przypadku, w którym sekcje zaczynałyby się od nagłówków H1 (# …
). Jest nadal logicznie spójny, gdy używasz nagłówka H1 dla samego tytułu dokumentu.Na koniec dodajemy ładną regułę poziomą, aby oddzielić spis treści od rzeczywistej treści.
Aby uzyskać więcej informacji na temat tej techniki i jej wykorzystania w dyskursie oprogramowania forum , zobacz tutaj .
źródło
Napisałem skrypt Pythona, który analizuje plik Markdown i wyświetla spis treści jako listę Markdown: md-to-toc
W przeciwieństwie do innych skryptów, które znalazłem, md-to-toc poprawnie obsługuje zduplikowane tytuły. Nie wymaga również połączenia z Internetem, więc działa na każdym pliku MD, nie tylko na tych dostępnych z publicznego repozytorium.
źródło
W Visual Studio Code (VSCode) możesz użyć rozszerzenia Markdown All in One .
Po zainstalowaniu wykonaj następujące czynności:
źródło
Właśnie zacząłem robić to samo (robić notatki w Markdown). Używam Sublime Text 2 z wtyczką MarkdownPreview . Wbudowana parser przecen obsługuje
[TOC]
.źródło
Typora generuje spis treści , dodając
[TOC]
do dokumentu.źródło
W Gitlab, markdown obsługuje to:
[[_TOC_]]
źródło
Wystarczy użyć edytora tekstu z wtyczką.
Twój edytor najprawdopodobniej ma pakiet / wtyczkę do obsługi tego za Ciebie. Na przykład w Emacsie możesz zainstalować generator TOC markdown-toc . Następnie podczas edycji po prostu kilkakrotnie zadzwoń
M-x markdown-toc-generate-or-refresh-toc
. Jest to warte przypisania klucza, jeśli chcesz to robić często. Jest dobry w generowaniu prostego spisu treści bez zanieczyszczania dokumentu zakotwiczeniami HTML.Inne edytory mają podobne wtyczki, więc popularna lista przypomina:
źródło
Na podstawie odpowiedzi albertodebortoli utworzono funkcję z dodatkowymi kontrolami i zamianą znaków interpunkcyjnych.
źródło
MultiMarkdown 4.7 ma makro {{TOC}}, które wstawia spis treści.
źródło
Dla mnie rozwiązanie zaproponowane przez @Tum działa jak urok dla spisu treści z 2 poziomami. Jednak na 3. poziomie nie działało. Nie wyświetlał linku jak dla pierwszych 2 poziomów,
3.5.1. [bla bla bla](#blablabla) <br>
zamiast tego wyświetla zwykły tekst .Moje rozwiązanie jest dodatkiem do rozwiązania @Tum (które jest bardzo proste) dla osób, które potrzebują spisu treści z co najmniej 3 poziomami.
Na drugim poziomie prosta zakładka wykona dla Ciebie wcięcie poprawnie. Ale nie obsługuje 2 kart. Zamiast tego musisz użyć jednej karty i dodać tyle,
ile potrzebujesz, aby prawidłowo wyrównać 3. poziom.Oto przykład z użyciem 4 poziomów (wyższe poziomy, okropnie się to staje):
Daje to następujący wynik, w którym każdy element spisu treści jest linkiem do odpowiedniej sekcji. Zwróć także uwagę na to
<br>
, aby dodać nową linię zamiast być w tej samej linii.Spis treści
1.1. Podtytuł
1.1.1. Sub-sub-Tytuł
1.1.1.1. Sub-Sub-Sub-Title
Tytuł
Nagłówek 1
Podtytuł
Nagłówek 2
Podtytuł
Nagłówek 3
Sub-Sub-Sub-TitleNagłówek 4
źródło
W zależności od przepływu pracy warto przyjrzeć się strapdown
To rozwidlenie oryginalnej ( http://strapdownjs.com ), która dodaje generowanie spisu treści.
Na repozytorium znajduje się plik konfiguracyjny Apache (może nie być jeszcze odpowiednio zaktualizowany), aby zawinąć zwykłe obniżanie cen w locie, jeśli wolisz nie pisać w plikach HTML.
źródło
Nie jestem pewien, jaka jest oficjalna dokumentacja wyprzedaży. Odsyłacz można zapisać tylko w nawiasach
[Heading]
lub pustymi nawiasami[Heading][]
.Oba działają przy użyciu pandoc . Stworzyłem więc szybki skrypt bash, który zastąpi $ TOC w pliku md ze swoim TOC. (Będziesz potrzebował envsubst, który może nie być częścią twojej dystrybucji)
źródło
Jeśli zdarzy ci się używać Eclipse , możesz użyć skrótu Ctrl+ O(kontur), pokaże to odpowiednik spisu treści i pozwoli na wyszukiwanie w tytułach sekcji (autouzupełnianie).
Możesz także otworzyć widok konspektu (Okno -> Pokaż widok -> konspektu), ale nie ma on funkcji autouzupełniania.
źródło
Użyj toc.py, który jest małym skryptem Pythona, który generuje spis treści dla twojego markdown.
Stosowanie:
<toc>
którym chcesz umieścić spis treści.$python toc.py README.md
(Użyj swojej nazwy pliku zamiast README.md )Twoje zdrowie!
źródło
Użyłem https://github.com/ekalinin/github-markdown-toc, który zapewnia narzędzie wiersza poleceń, które automatycznie generuje spis treści z dokumentu przeceny.
Brak wtyczek, makr i innych zależności. Po zainstalowaniu narzędzia wystarczy wkleić dane wyjściowe narzędzia do lokalizacji w dokumencie, w której ma być spis treści. Bardzo prosty w użyciu.
źródło
Jeśli plik Markdown ma być wyświetlany w repozytorium na bitbucket.org, powinieneś dodać
[TOC]
w miejscu, w którym chcesz spis treści. Następnie zostanie wygenerowany automatycznie. Więcej informacji tutaj:https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wiki-221451163.html
źródło
Istnieje skrypt Ruby o nazwie mdtoc.rb, który może automatycznie wygenerować spis treści GFM Markdown, i jest podobny, ale nieco inny niż niektóre inne skrypty zamieszczone tutaj.
Biorąc pod uwagę wejściowy plik Markdown, taki jak:
Generuje następujący spis treści:
Zobacz także mój post na blogu na ten temat.
źródło