попробуйте отмеченный ток , это не может стать намного легче.
Йоншлинкерт
1
Если вы используете Linux и не хотите устанавливать какое-либо дополнительное программное обеспечение, попробуйте github-markdown-toc (только awk под капотом).
короткое время
Я рендеринг нескольких файлов уценки внутри шаблонов Jade в HTML. Поэтому мне нужно, чтобы в моем содержании содержалось больше информации, чем указано в одном файле уценки. Мое решение состоит в том, чтобы сгенерировать оглавление из самого HTML-кода с помощью библиотеки node.jstoc
Платон
2
Я создал три разных генератора оглавления уценки, пытаясь «сделать все правильно», включая отмеченный выше ток, указанный выше. markdown-toc - мой любимый инструмент, он использует настоящий анализатор уценок ( примечательно, что он соответствует спецификации [commonmark] (commonmark.org), позволяет обновлять оглавления, имеет CLI и API и теперь используется в тысячах проектов
jonschlinkert
Ответы:
141
Я создал две опции для генерации ток-кода для github-flavored-markdown:
Инструмент командной строки DocToc ( источник ) требует node.js
Монтаж:
npm install doctoc
Использование:
npx doctoc . добавить оглавление ко всем файлам разметки в текущем и всех подкаталогах.
DocToc WebApp
Если вы хотите сначала попробовать его в Интернете, перейдите на сайт doctoc , вставьте ссылку на страницу уценки, и она сгенерирует таблицу содержимого, которую вы можете вставить вверху файла уценки.
Github Wikis и якоря
Как отметил Мэтью Флашен в комментариях ниже, для своих вики-страниц GitHub ранее не генерировал якорей, doctocот которых зависит.
ОБНОВЛЕНИЕ: Тем не менее, они исправили эту проблему .
TOC выглядит нормально, но GitHub не генерирует якоря для реальных разделов, поэтому ссылки разрываются. Я добавлю их вручную на данный момент. Это GitHub вики.
Первая строка только начинает неупорядоченный список и фактически выбрасывается.
Это приводит к вложенному набору неупорядоченных списков с использованием заголовков в документе.
Примечание: это должно работать для страниц GitHub, а не для GitHub Flavored Markdown (GFM), используемого в комментариях или вики-страницах. AFAIK решение для этого не существует.
Обратите внимание, что это функция Maruku, а не Markdown как таковая, и, вероятно, даже не GH Flavored Markdown. GH-страницы действительно используют Maruku.
Обязательно найдите общий стиль оглавления, если вы работаете с файлами .md и задействованы разные редакторы / плагины, чтобы не вносить изменения в оглавление при каждом другом коммите. Возможные дополнения ~/.vimrcдля этого: изменить символ списка с помощью let g:vmt_list_item_char = "-", включить заголовки перед оглавлением с let g:vmt_include_headings_before = 1. См. Раздел параметров документации для получения дополнительной информации, например, как изменить текст ограждения.
Вольфсон
9
Он не автоматический, но использует регулярные выражения Notepad ++:
Заменить все первое на второе (удаляет все строки, не имеющие заголовков)
Это невозможно, за исключением предложенных обходных путей.
Я предложил расширение Kramdown TOC и другие возможности для support@github.com и Стивена! Рагнарёк ответил обычным:
Спасибо за предложение и ссылки. Я добавлю его в наш внутренний список запросов, чтобы команда могла его увидеть.
Давайте поднимем этот вопрос, пока он не случится.
Другой обходной путь - использовать Asciidoc вместо Markdown, который отображает оглавления . Я перешел на этот подход для моего контента в настоящее время.
Я бы скорее надеялся, что GFM предоставит это когда-нибудь. Для меня это действительно курьезная вещь, в то время как у Markdown SourceForge есть синтаксис для генерации этого оглавления по умолчанию.
Четабахана
8
Github Flavored Markdown использует RedCarpet в качестве движка Markdown. Из репо RedCarpet :
: with_toc_data - добавить привязки HTML к каждому заголовку в выходном HTML, чтобы разрешить ссылки на каждый раздел.
Похоже, вам нужно попасть на уровень рендера, чтобы установить этот флаг, что, очевидно, невозможно на Github. Тем не менее, в последнем обновлении Github Pages, похоже, что автоматическая привязка для заголовков включена, создавая связываемые заголовки. Не совсем то, что вы хотите, но это может помочь вам создать оглавление для вашего документа немного (хотя и вручную).
Другой замечательный плагин для VS-кода (отличная поддержка .md с хорошими функциями, включая GOC и GitLab) - это markdown-all-in-one .
Вольфсон
4
Можно генерировать веб - страницы автоматически http://documentup.com/ из README.mdфайла. Это не создание TOC, но для многих это может решить причину желания создать TOC.
Мой коллега @schmiedc и я создали скрипт GreaseMonkey, который устанавливает новую TOCкнопку слева от h1кнопки, которая использует отличную markdown-jsбиблиотеку для добавления / обновления оглавления.
Преимущество перед такими решениями, как doctoc, заключается в том, что оно интегрируется в вики-редактор GitHub и не требует, чтобы пользователи работали в командной строке (и требует, чтобы пользователи устанавливали подобные инструменты node.js). В Chrome он работает путем перетаскивания на страницу расширений, в Firefox вам необходимо установить расширение GreaseMonkey.
Он будет работать с простой разметкой (то есть он не будет правильно обрабатывать блоки кода, поскольку это расширение GitHub для разметки). Взносы приветствуются.
Большое спасибо! Мне пришлось использовать Tampermonkey, как было предложено в этом ответе, чтобы установить его в Chrome, и это сработало! Что нужно сделать, чтобы ваш скрипт генерировал оглавления для обычных файлов уценки в репозитории github?
спасательный круг
1
Это не прямой ответ на этот вопрос, так как многие люди нашли обходные пути. Я не думаю, что генерация оглавления официально поддерживается Github. Если вы хотите, чтобы GitHub автоматически отображал оглавление на своих страницах предварительного просмотра GFM, примите участие в обсуждении официального вопроса о запросе функции .
В настоящее время невозможно использовать синтаксис уценки (см. Текущее обсуждение на GitHub ), однако вы можете использовать некоторые внешние инструменты, такие как:
Хостинг Online Table Of Content Generator (raychenon / play-table-of- content ) на tableofcontent.eu "остановлен из-за затрат на AWS.
Майкл Фрейдгейм
0
Для Github's Texteditor Atom проверьте этот удивительный плагин (или «пакет» в Atom-lingo), который генерирует «TOC (оглавление) заголовков из проанализированных файлов уценки» :
После установки в виде Atom-пакета вы можете использовать ярлык ctrl-alt-cдля вставки оглавления на основе вашей markdown-doc-структуры в текущей позиции курсора ...
Скриншоты:
Atom Keybindings
markdown-toc предоставляет следующие привязки клавиш по умолчанию для управления плагином в Atom:
ctrl-alt-c => создать оглавление в позиции курсора
ctrl-alt-u => обновить оглавление
ctrl-alt-r => удалить оглавление
Особенности плагина (из README проекта)
Автоматическое связывание через теги привязки, например, # A 1→#a-1
Контроль глубины [1-6] с помощью depthFrom:1иdepthTo:6
Включить или отключить ссылки с withLinks:1
Обновить список при сохранении с updateOnSave:1
Использовать упорядоченный список (1. ..., 2. ...) с orderedList:0
Вот сценарий оболочки, который я сегодня написал для этого. Возможно, нужно настроить его под свои нужды, но это должно стать хорошей отправной точкой.
cat README.md \
| sed -e '/```/ r pf' -e '/```/,/```/d' \
| grep "^#" \
| tail -n +2 \
| tr -d '`' \
| sed 's/# \([a-zA-Z0-9`. -]\+\)/- [\1](#\L\1)/' \
| awk -F'(' '{for(i=2;i<=NF;i++)if(i==2)gsub(" ","-",$i);}1' OFS='(' \
| sed 's/^####/ /' \
| sed 's/^###/ /' \
| sed 's/^##/ /' \
| sed 's/^#//'
Если кто-нибудь знает лучший способ сделать эти последние # замены, пожалуйста, добавьте комментарий. Я пробовал разные вещи и не был доволен чем-либо, поэтому я просто грубо заставил это.
toc
Ответы:
Я создал две опции для генерации ток-кода для github-flavored-markdown:
Инструмент командной строки DocToc ( источник ) требует node.js
Монтаж:
Использование:npm install doctoc
npx doctoc .
добавить оглавление ко всем файлам разметки в текущем и всех подкаталогах.DocToc WebAppЕсли вы хотите сначала попробовать его в Интернете, перейдите на сайт doctoc , вставьте ссылку на страницу уценки, и она сгенерирует таблицу содержимого, которую вы можете вставить вверху файла уценки.Github Wikis и якоря
Как отметил Мэтью Флашен в комментариях ниже, для своих вики-страниц GitHub ранее не генерировал якорей,
doctoc
от которых зависит.ОБНОВЛЕНИЕ: Тем не менее, они исправили эту проблему .
источник
GitHub Pages (который по сути является оберткой для Jekyll), похоже, использует kramdown , который реализует весь Maruku и, следовательно, имеет поддержку автоматически сгенерированного оглавления через
toc
атрибут:Первая строка только начинает неупорядоченный список и фактически выбрасывается.
Это приводит к вложенному набору неупорядоченных списков с использованием заголовков в документе.
Примечание: это должно работать для страниц GitHub, а не для GitHub Flavored Markdown (GFM), используемого в комментариях или вики-страницах. AFAIK решение для этого не существует.
источник
Если вы редактируете файлы Markdown с помощью Vim, вы можете попробовать этот плагин vim-markdown-toc .
Использование простое, просто наведите курсор на то место, куда вы хотите добавить оглавление, и бегите
:GenTocGFM
, готово!Скриншоты:
Особенности:
Генерация ток для файлов Markdown. (Поддержка GitHub со вкусом уценки и Redcarpet)
Обновите существующий ток.
Автоматическое обновление ток при сохранении.
источник
~/.vimrc
для этого: изменить символ списка с помощьюlet g:vmt_list_item_char = "-"
, включить заголовки перед оглавлением сlet g:vmt_include_headings_before = 1
. См. Раздел параметров документации для получения дополнительной информации, например, как изменить текст ограждения.Он не автоматический, но использует регулярные выражения Notepad ++:
Заменить все первое на второе (удаляет все строки, не имеющие заголовков)
Затем (преобразует заголовки III в пробелы)
Затем (преобразует заголовки II в пробелы)
Затем (удалите неиспользованные символы в начале и в конце заголовка ссылки)
Затем (преобразовать последние токены в нижний регистр и тире вместо пробелов)
Удалите неиспользованные последние фунты и начальные тире:
Удалите ненужные символы в ссылках:
И, наконец, добавьте круглые скобки вокруг заключительных ссылок:
И вуаля! Вы даже можете поместить это в глобальный макрос, если будете повторять это достаточно времени.
источник
Это невозможно, за исключением предложенных обходных путей.
Я предложил расширение Kramdown TOC и другие возможности для support@github.com и Стивена! Рагнарёк ответил обычным:
Давайте поднимем этот вопрос, пока он не случится.
Другой обходной путь - использовать Asciidoc вместо Markdown, который отображает оглавления . Я перешел на этот подход для моего контента в настоящее время.
источник
Github Flavored Markdown использует RedCarpet в качестве движка Markdown. Из репо RedCarpet :
Похоже, вам нужно попасть на уровень рендера, чтобы установить этот флаг, что, очевидно, невозможно на Github. Тем не менее, в последнем обновлении Github Pages, похоже, что автоматическая привязка для заголовков включена, создавая связываемые заголовки. Не совсем то, что вы хотите, но это может помочь вам создать оглавление для вашего документа немного (хотя и вручную).
источник
Очень удобным способом получения оглавления для файла разметки при работе с кодом Visual Studio является расширение Markdown-TOC .
Он может добавить ток к существующим файлам уценки и даже поддерживать ток в актуальном состоянии при сохранении.
источник
Можно генерировать веб - страницы автоматически http://documentup.com/ из
README.md
файла. Это не создание TOC, но для многих это может решить причину желания создать TOC.Другой альтернативой Documentup является Flatdoc: http://ricostacruz.com/flatdoc/
источник
Gitdown - препроцессор уценки для Github.
Используя Gitdown вы можете:
Gitdown упрощает общие задачи, связанные с ведением страницы документации для репозитория GitHub.
Используя это просто:
Вы можете использовать его как отдельный скрипт или как часть скрипта сборки (например, Gulp ).
источник
Используйте coryfklein / doctoc , форк thlorenz / doctoc , который не добавляет « сгенерированный с DocToc » в каждую таблицу содержания.
источник
Мой коллега @schmiedc и я создали скрипт GreaseMonkey, который устанавливает новую
TOC
кнопку слева отh1
кнопки, которая использует отличнуюmarkdown-js
библиотеку для добавления / обновления оглавления.Преимущество перед такими решениями, как doctoc, заключается в том, что оно интегрируется в вики-редактор GitHub и не требует, чтобы пользователи работали в командной строке (и требует, чтобы пользователи устанавливали подобные инструменты
node.js
). В Chrome он работает путем перетаскивания на страницу расширений, в Firefox вам необходимо установить расширение GreaseMonkey.Он будет работать с простой разметкой (то есть он не будет правильно обрабатывать блоки кода, поскольку это расширение GitHub для разметки). Взносы приветствуются.
источник
Это не прямой ответ на этот вопрос, так как многие люди нашли обходные пути. Я не думаю, что генерация оглавления официально поддерживается Github. Если вы хотите, чтобы GitHub автоматически отображал оглавление на своих страницах предварительного просмотра GFM, примите участие в обсуждении официального вопроса о запросе функции .
источник
В настоящее время невозможно использовать синтаксис уценки (см. Текущее обсуждение на GitHub ), однако вы можете использовать некоторые внешние инструменты, такие как:
Альтернативно используйте
AsciiDoc
вместо этого (напримерREADME.adoc
), напримеркак предложено в этом комментарии . Проверьте демо здесь .
источник
Для Github's Texteditor Atom проверьте этот удивительный плагин (или «пакет» в Atom-lingo), который генерирует «TOC (оглавление) заголовков из проанализированных файлов уценки» :
уценки-TOC
После установки в виде Atom-пакета вы можете использовать ярлык
ctrl-alt-c
для вставки оглавления на основе вашей markdown-doc-структуры в текущей позиции курсора ...Скриншоты:
Atom Keybindings
markdown-toc предоставляет следующие привязки клавиш по умолчанию для управления плагином в Atom:
ctrl-alt-c
=> создать оглавление в позиции курсораctrl-alt-u
=> обновить оглавлениеctrl-alt-r
=> удалить оглавлениеОсобенности плагина (из README проекта)
# A 1
→#a-1
depthFrom:1
иdepthTo:6
withLinks:1
updateOnSave:1
orderedList:0
источник
Вот сценарий оболочки, который я сегодня написал для этого. Возможно, нужно настроить его под свои нужды, но это должно стать хорошей отправной точкой.
Если кто-нибудь знает лучший способ сделать эти последние # замены, пожалуйста, добавьте комментарий. Я пробовал разные вещи и не был доволен чем-либо, поэтому я просто грубо заставил это.
источник
Теперь есть действие GitHub, выполняющее это:
https://github.com/marketplace/actions/toc-generator
README.md
.github/workflows/toc.yml
источник
Большинство других ответов требуют установки какого-либо инструмента. Я нашел быстрое и простое онлайн-решение https://imthenachoman.github.io/nGitHubTOC .
Для любого ввода уценки генерируется таблица вывода контента. Вы можете указать минимальный и максимальный уровень заголовка.
Исходный код находится по адресу https://github.com/imthenachoman/nGitHubTOC.
источник