Ответ 1
Похоже, что MultiMarkdown Composer генерирует оглавление, помогающее при редактировании.
Также может существовать та или иная библиотека, которая может генерировать оглавления: см. Расширение оглавления Python Markdown.
Я начал использовать уценку, чтобы делать заметки.
Я использую с пометкой, чтобы просмотреть свои заметки об уценке и их красоту.
Но по мере того, как мои записи становятся длиннее, мне трудно найти то, что я хочу.
Я знаю, что уценка может создавать таблицы, но может ли она создавать оглавление, переходить к разделам или определять разделы страницы в уценке?
В качестве альтернативы, есть читатели/редакторы уценки, которые могли бы делать такие вещи. Поиск тоже будет полезен.
Короче говоря, я хочу сделать его своим замечательным инструментом для создания заметок и функций, таких как написание книги и т.д.
Похоже, что MultiMarkdown Composer генерирует оглавление, помогающее при редактировании.
Также может существовать та или иная библиотека, которая может генерировать оглавления: см. Расширение оглавления Python Markdown.
Вы можете попробовать это.
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
4. [Fourth Example](#fourth-examplehttpwwwfourthexamplecom)
## Example
## Example2
## Third Example
## [Fourth Example](http://www.fourthexample.com)
Здесь полезный метод. Должен создавать кликабельные ссылки в любом редакторе MarkDown.
# Table of contents
1. [Introduction](#introduction)
2. [Some paragraph](#paragraph1)
1. [Sub paragraph](#subparagraph1)
3. [Another paragraph](#paragraph2)
## This is the introduction <a name="introduction"></a>
Some introduction text, formatted in heading 2 style
## Some paragraph <a name="paragraph1"></a>
The first paragraph text
### Sub paragraph <a name="subparagraph1"></a>
This is a sub paragraph, formatted in heading 3 style
## Another paragraph <a name="paragraph2"></a>
The second paragraph text
Выдает:
Некоторые вводные тексты, отформатированные в стиле заголовка 2
Текст первого абзаца
Это подпункт, отформатированный в стиле заголовка 3
Текст второго абзаца
Для пользователей кода Visual Studio хорошая идея - использовать плагин Markdown TOC.
Чтобы установить его, запустите VS Code Quick Open (Ctrl + P), вставьте следующую команду и нажмите ввод.
ext install markdown-toc
А для генерации оглавления откройте палитру команд (Control/⌘ + Shift + P) и выберите опцию Markdown TOC:Insert/Update option
или используйте Ctrl + M T.
Вы можете попробовать этот скрипт ruby для генерации оглавления из файла уценки.
#!/usr/bin/env ruby
require 'uri'
fileName = ARGV[0]
fileName = "README.md" if !fileName
File.open(fileName, 'r') do |f|
inside_code_snippet = false
f.each_line do |line|
forbidden_words = ['Table of contents', 'define', 'pragma']
inside_code_snippet = !inside_code_snippet if line.start_with?(''''')
next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet
title = line.gsub("#", "").strip
href = URI::encode title.gsub(" ", "-").downcase
puts " " * (line.count("#")-1) + "* [#{title}](\##{href})"
end
end
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}
Если вы используете дополнительную уценку, не забудьте добавить специальные атрибуты к ссылкам, заголовкам, кодам и изображениям.
https://michelf.ca/projects/php-markdown/extra/#spe-attr
Существует два способа создания TOC (сводка) в документе уценки.
# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)
<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2
Вы можете использовать, например, script, которые генерируют сводку для вас, посмотрите на мой проект на github - summarizeMD -
Я пробовал и другой модуль script/npm (например doctoc), но никто не воспроизводит TOC с работающими якорями.
В интересах тех из нас, кто делает README.md
файлы в Atom (как я нашел эту тему):
apm install markdown-toc
Якорные теги, генерируемые разными парсерами Markdown, не являются четными.
Если вы работаете с анализаторами Markdown GFM (GitHub Flavored Markdown) или Redcarpet, я написал плагин Vim для обработки оглавления.
Создать оглавление для файлов Markdown.
Поддерживаемые парсеры Markdown:
Обновить существующее оглавление.
Автоматическое обновление существующего оглавления при сохранении.
Создать оглавление
Переместите курсор на строку, к которой вы хотите добавить оглавление, затем введите команду ниже, которая вам подходит. Команда сгенерирует заголовки после курсора в оглавление.
:GenTocGFM
Создайте оглавление в стиле ссылки GFM.
Эта команда подходит для файлов Markdown в репозиториях GitHub, таких как README.md, и файлов Markdown для GitBook.
:GenTocRedcarpet
Создайте оглавление в стиле ссылки Redcarpet.
Эта команда подходит для Jekyll или где-либо еще, использующего Redcarpet в качестве парсера Markdown.
Вы можете посмотреть здесь, чтобы узнать различия между токовыми ссылками в стиле GFM и Redcarpet.
Обновить существующее оглавление вручную
Как правило, вам не нужно этого делать, существующее оглавление будет автоматически обновляться при сохранении по умолчанию. Если вы хотите сделать это вручную, просто используйте команду :UpdateToc
.
Если вы хотите использовать инструмент javascript/ node.js, посмотрите markdown-toc.
Вы можете сгенерировать его, используя эту строку. Предполагается, что ваш файл уценки называется FILE.md
echo "## Contents" ; echo ;
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' |
while read -r title ; do
link=$(echo $title | tr 'A-Z ' 'a-z-') ;
echo "- [$title](#$link)" ;
done
Я только что закодировал расширение для python-markdown
, которое использует его синтаксический анализатор для извлечения заголовков и выводит TOC как неупорядоченный список в формате Markdown с локальными ссылками. Файл
... и он должен быть помещен в каталог markdown/extensions/
в установке уценки. Затем все, что вам нужно сделать, это привязать теги <a>
с атрибутом id="..."
в качестве ссылки, поэтому для входного текста следующим образом:
$ cat test.md
Hello
=====
## <a id="sect one"></a>SECTION ONE ##
something here
### <a id='sect two'>eh</a>SECTION TWO ###
something else
#### SECTION THREE
nothing here
### <a id="four"></a>SECTION FOUR
also...
... расширение можно вызвать так:
$ python -m markdown -x md_toc test.md
* Hello
* [SECTION ONE](#sect one)
* [SECTION TWO](#sect two)
* SECTION THREE
* [SECTION FOUR](#four)
... и затем вы можете вставить этот ток в свой документ с меткой (или иметь ярлык в текстовом редакторе, который вызывает script в текущем открытом документе, а затем вставляет полученный TOC в тот же документ).
Обратите внимание, что более старые версии python-markdown
не имеют модуля __main__.py
, поэтому вызов командной строки, как указано выше, не будет работать для этих версий.
Я написал python script, который анализирует файл разметки и выводит оглавление в виде списка меток: md-to-toc
В отличие от других скриптов, которые я нашел, md-to-toc правильно поддерживает дубликаты названий. Он также не требует подключения к Интернету, поэтому он работает с любым md файлом, а не только с публичным репо.
Вы также можете использовать pandoc
, "швейцарский армейский нож" для преобразования "одного формата разметки в другой". Он может автоматически генерировать оглавление в выходном документе, если вы предоставите аргумент --toc
.
Подсказка: Если вы хотите оглавление в выводе html
, вам также необходимо предоставить -s
, который генерирует отдельный документ.
Пример командной строки оболочки:
./pandoc -s --toc input.md -o output.html
Я только начал делать то же самое (делать заметки в Markdown). Я использую Sublime Text 2 с плагином MarkdownPreview. Встроенный анализатор разметки поддерживает [TOC]
.
Typora создает таблицу содержимого, добавляя [TOC]
к вашему документу.
На Gitlab уценка поддерживает это: [[_TOC_]]
Основанный на ответе albertodebortoli создал функцию с дополнительными проверками и заменой знаков препинания.
# @fn def generate_table_of_contents markdown # {{{
# @brief Generates table of contents for given markdown text
#
# @param [String] markdown Markdown string e.g. File.read('README.md')
#
# @return [String] Table of content in markdown format.
#
def generate_table_of_contents markdown
table_of_contents = ""
i_section = 0
# to track markdown code sections, because e.g. ruby comments also start with #
inside_code_section = false
markdown.each_line do |line|
inside_code_section = !inside_code_section if line.start_with?('```')
forbidden_words = ['Table of contents', 'define', 'pragma']
next if !line.start_with?('#') || inside_code_section || forbidden_words.any? { |w| line =~ /#{w}/ }
title = line.gsub("#", "").strip
href = title.gsub(/(^[!.?:\(\)]+|[!.?:\(\)]+$)/, '').gsub(/[!.,?:; \(\)-]+/, "-").downcase
bullet = line.count("#") > 1 ? " *" : "#{i_section += 1}."
table_of_contents << " " * (line.count("#") - 1) + "#{bullet} [#{title}](\##{href})\n"
end
table_of_contents
end
MultiMarkdown 4.7 имеет макрос {{TOC}}, который вставляет оглавление.
Для меня решение, предложенное @Tum, работает как брелок для оглавления с 2 уровнями. Однако для 3-го уровня это не сработало. Она не отображает ссылку, как для первых двух уровней, она отображает простой текст 3.5.1. [bla bla bla](#blablabla) <br>
3.5.1. [bla bla bla](#blablabla) <br>
вместо.
Мое решение - это дополнение к решению @Tum (которое очень просто) для людей, которым нужно оглавление с 3 уровнями и более.
На втором уровне простая вкладка сделает отступ правильно для вас. Но он не поддерживает 2 вкладки. Вместо этого вам нужно использовать одну вкладку и добавить как можно больше
по мере необходимости, чтобы выровнять 3-й уровень правильно.
Вот пример, использующий 4 уровня (выше уровней, ужасно становится):
# Table of Contents
1. [Title](#title) <br>
1.1. [sub-title](#sub_title) <br>
1.1.1. [sub-sub-title](#sub_sub_title)
1.1.1.1. [sub-sub-sub-title](#sub_sub_sub_title)
# Title <a name="title"></a>
Heading 1
## Sub-Title <a name="sub_title"></a>
Heading 2
### Sub-Sub-Title <a name="sub_sub_title"></a>
Heading 3
#### Sub-Sub-Sub-Title <a name="sub_sub_sub_title"></a>
Heading 4
Это дает следующий результат, где каждый элемент оглавления является ссылкой на соответствующий раздел. Обратите также внимание на <br>
, чтобы добавить новую строку вместо того, чтобы находиться на той же строке.
Заголовок 1
Заголовок 2
Заголовок 3
Sub-Sub-подзаголовокЗаголовок 4
В Visual Studio Code (VSCode) вы можете использовать расширение Markdown All in One.
После установки выполните следующие действия:
В зависимости от вашего рабочего процесса вы можете посмотреть strapdown
Это вилка исходного (http://strapdownjs.com), которая добавляет поколение таблицы содержимого.
Там есть файл конфигурации apache в репо (возможно, он не обновляется должным образом), чтобы обернуть простую уценку "на лету", если вы предпочитаете не писать в html файлы.
Я не уверен, какова официальная документация по уценке.
Перекрестная ссылка может быть записана в скобках [Heading]
или с пустыми скобками [Heading][]
.
Оба работают с использованием pandoc. Поэтому я создал быстрый bash script, который заменит $ TOC в файле md своим TOC. (Вам понадобится envsubst, который не может быть частью вашего дистрибутива)
#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/ /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename
Если вы используете Eclipse, вы можете использовать ярлык Ctrl + O (контур), это покажет эквивалент оглавления и позволит искать в заголовках разделов ( автополный).
Вы также можете открыть представление схемы (окно → Показать представление → контур), но он не имеет поиска автозаполнения.
Используйте toc.py, который представляет собой крошечный скрипт на python, который генерирует оглавление для вашей уценки.
Использование:
<toc>
где вы хотите разместить оглавление.$python toc.py README.md
(используйте имя файла уценки вместо README.md)Ура!
Существует скрипт Ruby под названием gen_markdown_toc.rb, который может автоматически генерировать оглавление GFM Markdown, и он похож, но немного отличается от некоторых других скриптов, размещенных здесь.
Имеется входной файл Markdown, например:
# Lorem Ipsum
Lorem ipsum dolor sit amet, mei alienum adipiscing te, has no possit delicata. Te nominavi suavitate sed, quis alia cum no, has an malis dictas explicari. At mel nonumes eloquentiam, eos ea dicat nullam. Sed eirmod gubergren scripserit ne, mei timeam nonumes te. Qui ut tale sonet consul, vix integre oportere an. Duis ullum at ius.
## Et cum
Et cum affert dolorem habemus. Sale malis at mel. Te pri copiosae hendrerit. Cu nec agam iracundia necessitatibus, tibique corpora adipisci qui cu. Et vix causae consetetur deterruisset, ius ea inermis quaerendum.
### His ut
His ut feugait consectetuer, id mollis nominati has, in usu insolens tractatos. Nemore viderer torquatos qui ei, corpora adipiscing ex nec. Debet vivendum ne nec, ipsum zril choro ex sed. Doming probatus euripidis vim cu, habeo apeirian et nec. Ludus pertinacia an pro, in accusam menandri reformidans nam, sed in tantas semper impedit.
### Doctus voluptua
Doctus voluptua his eu, cu ius mazim invidunt incorrupte. Ad maiorum sensibus mea. Eius posse sonet no vim, te paulo postulant salutatus ius, augue persequeris eum cu. Pro omnesque salutandi evertitur ea, an mea fugit gloriatur. Pro ne menandri intellegam, in vis clita recusabo sensibus. Usu atqui scaevola an.
## Id scripta
Id scripta alterum pri, nam audiam labitur reprehendunt at. No alia putent est. Eos diam bonorum oportere ad. Sit ad admodum constituto, vide democritum id eum. Ex singulis laboramus vis, ius no minim libris deleniti, euismod sadipscing vix id.
Он генерирует это оглавление:
$ gen_markdown_toc.rb FILE.md
#### Table of contents
1. [Et cum](#et-cum)
* [His ut](#his-ut)
* [Doctus voluptua](#doctus-voluptua)
2. [Id scripta](#id-scripta)
Смотрите также мой пост в блоге на эту тему.
Я использовал https://github.com/ekalinin/github-markdown-toc, который предоставляет утилиту командной строки, которая автоматически генерирует оглавление из документа уценки.
Нет плагинов, или макросов или других зависимостей. После установки утилиты просто вставьте выходные данные утилиты в то место документа, в котором вы хотите найти оглавление. Очень прост в использовании.
$ cat README.md | ./gh-md-toc -
Вы можете использовать [TOC] в первой строке, а затем внизу, единственное, что вам нужно сделать, это убедиться, что заголовки находятся в одном и том же более крупном шрифте. Таблица содержимого выйдет автоматически. (Но это только появляется в некоторых редакторах разметки, я не пробовал все)
Просто добавьте номер слайда! это работает с уценкой IOSLIDE и выявить презентацию
## Table of Contents
1. [introduction](#3)
2. [section one](#5)
Если ваш файл Markdown должен отображаться в репозитории на bitbucket.org, вы должны добавить [TOC]
в то место, где вы хотите получить оглавление. Затем он будет сгенерирован автоматически. Больше информации здесь:
https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wiki-221451163.html