Как мне создать какое-то оглавление в вики GitHub?


105

Если вы посмотрите здесь: http://en.wikipedia.org/wiki/Stack_Overflow

Вы заметите, что есть небольшой раздел «Контент», если вы нажмете на одну из ссылок, он отправит вас в определенный раздел на странице.

Как мне это сделать в вики GitHub? С Markdown или чем-то еще?


3
Связанный, но не точный дубликат, который более подробно рассматривается: stackoverflow.com/q/9721944/2291
Джон Адамс,

Ответы:


113

Это хорошо продемонстрировано в Оглавлении Шпаргалки по Markdown .

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

Если вы наведете курсор на заголовок в файле GitHub Markdown, вы увидите небольшую ссылку слева от него, вы также можете использовать эту ссылку. Формат этой ссылки - <project URL#<header name>. Все <header name>символы должны быть строчными.


36
Конечно, есть способ его автогенерировать, например _ _ TOC _ _ от MediaWiki?
LB

17
@ LB--: если вы редактируете вики-страницу GitHub и меняете раскрывающийся список «Стиль редактирования» на «MediaWiki», вы можете просто использовать MediaWiki __TOC__напрямую. Очевидно, что основная логика автогенерации присутствует. Но функциональность, похоже, не раскрывается в их стиле редактирования Markdown. Очень жаль. Давайте все начнем присылать для него запросы функций, и, возможно, они его включат.
Эндрю Янке

3
Я отказываюсь от «лежащей в основе логики автогенерации»; похоже, что разные «стили редактирования» проходят через разные рендеры. Тем не менее, было бы здорово иметь это в версии MD, так как это довольно популярно, и его нетрудно добавить.
Эндрю Янке

5
@AndrewJanke Я изучил это подробнее, похоже, что формат MarkDown не поддерживает автогенерацию оглавлений, и они этим гордятся.
LB

6
В создании ссылок есть одна загвоздка. Они должны быть в нижнем регистре. Я этого не знал, и мне было интересно, почему мой оглавление не работает. Я использовал #Headersвместо #headers. Я подумал, что это опечатка в вашем ответе. Возможно, вы можете добавить к своему ответу эту информацию.
t3chb0t 07

20

Одно из возможных (полуавтоматических) решений - Евгений Калинин github-markdown-toc. Этот инструмент, по сути, перебирает ваш README.mdфайл и перебирает #заголовки, чтобы создать оглавление.

  1. Загрузите скрипт https://github.com/ekalinin/github-markdown-toc
  2. Накормите README.mdсебя сценарием (как отмечено в статье ЕвгенияREADME.md )

    кот README.md | bash github-markdown-toc

  3. Вырежьте и вставьте сгенерированное оглавление и поместите его вверху README.mdфайла.

Обратите внимание, что эта bashреализация работает только в Linux (насколько я могу судить).

В качестве побочного примечания, есть реализация golang, и, вероятно, больше проблем с работой.



14

https://github.com/jonschlinkert/markdown-toc

  • git clone your-repo.wiki.git(добавьте .wikiправо перед .gitклонированием вики
  • npm i -g markdown-toc
  • Вставьте <!-- toc -->(с учетом регистра) в уценку вашей вики
  • markdown-toc -i my-wiki-markdown.md( -iотредактирую на месте)
  • Прибыль

Обновление: я думаю, что https://github.com/thlorenz/doctoc сейчас более популярен.


13

В настоящее время это невозможно сделать с помощью синтаксиса markdown ( .md). Продолжается неофициальное обсуждение автоматического создания оглавления TOC для визуализированных файлов уценки, таких какREADME.md котором перечислены некоторые идеи.

Однако есть и другие обходные пути, например:


1
Да, я был преобразован в asciidoc в основном для ToC и ссылки на заголовки. Надоело ждать, пока Markdown наверстает упущенное.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

8

Если вы не можете придерживаться Markdown , вы можете сделать следующее:

  • на GitHub / wiki : переключите Markdown на MediaWiki . Используйте __TOC__синтаксис. См. Образец .
  • на GitHub / repo : переключите Markdown на AsciiDoc . Используйте :toc:синтаксис. См. Демонстрацию .

Однако, используя файлы Markdown в GitHub / repo , вы можете получить его на страницах GitHub, как в Википедии.

  • когда Jekyll активирован, он по умолчанию генерирует страницы GitHub, используя Kramdown
  • Kramdown идет в комплектеTable Of Content . Используйте {:toc}синтаксис. См. Объяснение .

5

Код Visual Studio

Если вы используете Visual Studio Code , есть простое в использовании расширение Markdown All in One, которое может мгновенно создать оглавление для любого файла .md.

введите описание изображения здесь

Просто откройте палитру команд ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

Оригинальный мкр После автоматической вставки оглавления

Автообновление портит ваш отредактированный оглавление?

В качестве дополнительного совета вы можете отключить автоматическое обновление оглавления при сохранении с помощью

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

в настройках Visual Studio (палитра команд -> Настройки: открыть настройки (JSON)).



2

В связи с тем, что в github есть собственный способ создания атрибутов id = ".." в h1, h2, h3 и т. Д. Заголовках в html-версии после обработки Markdown (например, Bitbucket использует немного другой шаблон вставки заголовков заголовков для id = "slug") удобно не изобретать велосипед и использовать библиотеку, которая реконструировала этот процесс.

Я нашел одну неплохую библиотеку для этой задачи под названием markdown-toc .

Для меня это кажется лучшим решением, потому что я всегда устанавливал узел на своей машине.

Просто запустите NPX уценки-TOC -i file.md .

И похоже, что это один из самых популярных инструментов для этой задачи - по крайней мере, в экосистеме 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

вывод:

введите описание изображения здесь

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.