Як створити якийсь зміст у вікі GitHub?


102

Якщо ви заглянете сюди: http://en.wikipedia.org/wiki/Stack_Overflow

Ви помітите, що є невеликий розділ "Вміст". Якщо натиснути одне з посилань, воно переведе вас до певного розділу на сторінці.

Як це зробити у вікі GitHub? З Markdown чи чим вони вже користуються?


3
Пов’язаний, але не точний дублікат, який йде більш докладно: stackoverflow.com/q/9721944/2291
Джон Адамс

Відповіді:


111

Це добре продемонстровано у Змісті шпаргалки Markdown .

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

Якщо ви наведете курсор на заголовок у файлі GitHub Markdown, ви побачите невелике посилання, просте зліва від нього, ви також можете використовувати це посилання. Формат зв'язку з цим є <project URL#<header name>. <header name>Повинні бути в нижньому регістрі.


36
Звичайно, є спосіб його генерувати, як MediaWiki _ _ TOC _ _?
LB

17
@ LB--: Якщо ви редагуєте вікі-сторінку GitHub і змінюєте спадне меню "Стиль редагування" на "MediaWiki", ви можете просто використовувати MediaWiki __TOC__безпосередньо. Очевидно, що логіка автогенерації лежить в основі. Але, здається, функціональність не викрита в їх стилі редагування Markdown. Зовсім прикро. Давайте всі почнемо надсилати запити на функції, і можливо, вони їх увімкнуть.
Andrew Janke,

3
Я покладаюсь на "основну логіку автогенерації", яка знаходиться там; схоже, різні "стилі редагування" проходять через різні візуалізатори. Тим не менше, було б чудово, щоб це було у версії MD, оскільки це досить популярно, і його не важко додати.
Andrew Janke,

5
@AndrewJanke Я розглядав це більше, здається, що формат MarkDown не підтримує автогенерацію змісту, і вони пишаються цим.
LB

6
У створенні посилань є одна фішка. Вони повинні бути малими. Я цього не знав і дивувався, чому мій TOC не працює. Я використовував #Headersзамість #headers. Я думав, що це була помилка у вашій відповіді. Можливо, ви можете додати до своєї відповіді цю інформацію.
t3chb0t

20

Одним із можливих (напівавтоматизованих) рішень є рішення Євгена Калініна github-markdown-toc. Цей інструмент, по суті, хрумстить у вашому README.mdфайлі та вириває #заголовки, щоб створити TOC.

  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, і це, мабуть, більше клопоту, щоб отримати роботу.


15

Оскільки github не може використовувати TOCбезпосередньо, але у нас є інші альтернативи.

Ви можете автоматично генерувати TOC за допомогою Інтернет-інструменту:

Створіть зміст TOC за допомогою GitHub Markdown або Wiki Online

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

або через локальний інструмент:

github-націнка-toc


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 зараз більш популярний.


12

Наразі це неможливо зробити за допомогою синтаксису розмітки ( .md). Триває неофіційна дискусія щодо автоматичної генерації змісту TOC для відтворених файлів розмітки, таких як README.mdперелік деяких ідей.

Однак є деякі інші обхідні шляхи, такі як:


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

8

Якщо ви не в змозі дотримуватися Markdown , ви можете зробити наступне :

  • на GitHub / wiki : переключіть Markdown на MediaWiki . Використовуйте __TOC__синтаксис. Див. Зразок .
  • на GitHub / репо : переключити Markdown на AsciiDoc . Використовуйте :toc:синтаксис. Див. Демо .

Однак, використовуючи файли Markdown у GitHub / repo , ви можете отримати їх на Сторінках GitHub, як у Вікіпедії

  • коли Jekyll активовано, він генерує Сторінки GitHub, використовуючи Kramdown за замовчуванням
  • Kramdown поставляється з Table Of Content. Використовуйте {:toc}синтаксис. Див . Пояснення .

5

Код візуальної студії

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

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

Просто відкрийте Command Palette ( Ctrl-Shift-P) ->Markdown: Create Table of Contents

Оригінальний MD Після автоматичної вставки TOC

Автоматичне оновлення зіпсує відредагований TOC?

Як додаткову пораду, ви можете вимкнути "автоматичне оновлення TOC при збереженні", використовуючи

  "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.