Markdown для создания страниц и оглавления?

Я начал использовать уценку, чтобы делать заметки.

Я использую с пометкой, чтобы просмотреть свои заметки об уценке и их красоту.

Но по мере того, как мои записи становятся длиннее, мне трудно найти то, что я хочу.

Я знаю, что уценка может создавать таблицы, но может ли она создавать оглавление, переходить к разделам или определять разделы страницы в уценке?

В качестве альтернативы, есть читатели/редакторы уценки, которые могли бы делать такие вещи. Поиск тоже будет полезен.

Короче говоря, я хочу сделать его своим замечательным инструментом для создания заметок и функций, таких как написание книги и т.д.

Ответ 2

Вы можете попробовать это.

# 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) 

Ответ 3

Здесь полезный метод. Должен создавать кликабельные ссылки в любом редакторе 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

Другой абзац

Текст второго абзаца

Ответ 4

Для пользователей кода 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.

Ответ 5

Вы можете попробовать этот скрипт 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

Ответ 6

# 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

Ответ 7

Существует два способа создания TOC (сводка) в документе уценки.

1. Вручную

# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)

<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2

2. Программный

Вы можете использовать, например, script, которые генерируют сводку для вас, посмотрите на мой проект на github - summarizeMD -

Я пробовал и другой модуль script/npm (например doctoc), но никто не воспроизводит TOC с работающими якорями.

Ответ 8

В интересах тех из нас, кто делает README.md файлы в Atom (как я нашел эту тему):

apm install markdown-toc

https://atom.io/packages/markdown-toc

Ответ 9

Якорные теги, генерируемые разными парсерами Markdown, не являются четными.

Если вы работаете с анализаторами Markdown GFM (GitHub Flavored Markdown) или Redcarpet, я написал плагин Vim для обработки оглавления.

Характеристики

  1. Создать оглавление для файлов Markdown.

    Поддерживаемые парсеры Markdown:

    • GFM (GitHub Flavored Markdown)
    • Красный ковер
  2. Обновить существующее оглавление.

  3. Автоматическое обновление существующего оглавления при сохранении.

Скриншоты

vim-markdown-toc

использование

Создать оглавление

Переместите курсор на строку, к которой вы хотите добавить оглавление, затем введите команду ниже, которая вам подходит. Команда сгенерирует заголовки после курсора в оглавление.

  1. :GenTocGFM

    Создайте оглавление в стиле ссылки GFM.

    Эта команда подходит для файлов Markdown в репозиториях GitHub, таких как README.md, и файлов Markdown для GitBook.

  2. :GenTocRedcarpet

    Создайте оглавление в стиле ссылки Redcarpet.

    Эта команда подходит для Jekyll или где-либо еще, использующего Redcarpet в качестве парсера Markdown.

    Вы можете посмотреть здесь, чтобы узнать различия между токовыми ссылками в стиле GFM и Redcarpet.

Обновить существующее оглавление вручную

Как правило, вам не нужно этого делать, существующее оглавление будет автоматически обновляться при сохранении по умолчанию. Если вы хотите сделать это вручную, просто используйте команду :UpdateToc.

Загрузки и документы

https://github.com/mzlogin/vim-markdown-toc

Ответ 10

Если вы хотите использовать инструмент javascript/ node.js, посмотрите markdown-toc.

Ответ 11

Вы можете сгенерировать его, используя эту строку. Предполагается, что ваш файл уценки называется 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

Ответ 12

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

Ответ 13

Я написал python script, который анализирует файл разметки и выводит оглавление в виде списка меток: md-to-toc

В отличие от других скриптов, которые я нашел, md-to-toc правильно поддерживает дубликаты названий. Он также не требует подключения к Интернету, поэтому он работает с любым md файлом, а не только с публичным репо.

Ответ 14

Вы также можете использовать pandoc, "швейцарский армейский нож" для преобразования "одного формата разметки в другой". Он может автоматически генерировать оглавление в выходном документе, если вы предоставите аргумент --toc.

Подсказка: Если вы хотите оглавление в выводе html, вам также необходимо предоставить -s, который генерирует отдельный документ.

Пример командной строки оболочки:

./pandoc -s --toc input.md -o output.html

Ответ 15

Я только начал делать то же самое (делать заметки в Markdown). Я использую Sublime Text 2 с плагином MarkdownPreview. Встроенный анализатор разметки поддерживает [TOC].

Ответ 16

Typora создает таблицу содержимого, добавляя [TOC] к вашему документу.

Ответ 17

На Gitlab уценка поддерживает это: [[_TOC_]]

Ответ 18

Основанный на ответе 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

Ответ 19

MultiMarkdown 4.7 имеет макрос {{TOC}}, который вставляет оглавление.

Ответ 20

Для меня решение, предложенное @Tum, работает как брелок для оглавления с 2 уровнями. Однако для 3-го уровня это не сработало. Она не отображает ссылку, как для первых двух уровней, она отображает простой текст 3.5.1. [bla bla bla](#blablabla) <br> 3.5.1. [bla bla bla](#blablabla) <br> вместо.

Мое решение - это дополнение к решению @Tum (которое очень просто) для людей, которым нужно оглавление с 3 уровнями и более.

На втором уровне простая вкладка сделает отступ правильно для вас. Но он не поддерживает 2 вкладки. Вместо этого вам нужно использовать одну вкладку и добавить как можно больше &nbsp; по мере необходимости, чтобы выровнять 3-й уровень правильно.

Вот пример, использующий 4 уровня (выше уровней, ужасно становится):

# Table of Contents
1. [Title](#title) <br>
    1.1. [sub-title](#sub_title) <br>
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1.1.1. [sub-sub-title](#sub_sub_title)
    &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;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. заглавие
    1.1. Подзаголовке
    1.1.1. Sub-подзаголовок
    1.1.1.1. Sub-Sub-подзаголовок

заглавие

Заголовок 1

Подзаголовке

Заголовок 2

Sub-подзаголовок

Заголовок 3

Sub-Sub-подзаголовок

Заголовок 4

Ответ 21

В Visual Studio Code (VSCode) вы можете использовать расширение Markdown All in One.

После установки выполните следующие действия:

  1. Нажмите CTRL + SHIFT + P
  2. Выберите Markdown: Создать оглавление

Ответ 22

В зависимости от вашего рабочего процесса вы можете посмотреть strapdown

Это вилка исходного (http://strapdownjs.com), которая добавляет поколение таблицы содержимого.

Там есть файл конфигурации apache в репо (возможно, он не обновляется должным образом), чтобы обернуть простую уценку "на лету", если вы предпочитаете не писать в html файлы.

Ответ 23

Я не уверен, какова официальная документация по уценке. Перекрестная ссылка может быть записана в скобках [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

Ответ 24

Если вы используете Eclipse, вы можете использовать ярлык Ctrl + O (контур), это покажет эквивалент оглавления и позволит искать в заголовках разделов ( автополный).

Вы также можете открыть представление схемы (окно → Показать представление → контур), но он не имеет поиска автозаполнения.

Ответ 25

Используйте toc.py, который представляет собой крошечный скрипт на python, который генерирует оглавление для вашей уценки.

Использование:

  • В вашем файле Markdown добавьте <toc> где вы хотите разместить оглавление.
  • $python toc.py README.md (используйте имя файла уценки вместо README.md)

Ура!

Ответ 26

Существует скрипт 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)

Смотрите также мой пост в блоге на эту тему.

Ответ 27

Я использовал https://github.com/ekalinin/github-markdown-toc, который предоставляет утилиту командной строки, которая автоматически генерирует оглавление из документа уценки.

Нет плагинов, или макросов или других зависимостей. После установки утилиты просто вставьте выходные данные утилиты в то место документа, в котором вы хотите найти оглавление. Очень прост в использовании.

$ cat README.md | ./gh-md-toc -

Ответ 28

Вы можете использовать [TOC] в первой строке, а затем внизу, единственное, что вам нужно сделать, это убедиться, что заголовки находятся в одном и том же более крупном шрифте. Таблица содержимого выйдет автоматически. (Но это только появляется в некоторых редакторах разметки, я не пробовал все)

Ответ 29

Просто добавьте номер слайда! это работает с уценкой IOSLIDE и выявить презентацию

## Table of Contents

 1. [introduction](#3)
 2. [section one](#5)

Ответ 30

Если ваш файл Markdown должен отображаться в репозитории на bitbucket.org, вы должны добавить [TOC] в то место, где вы хотите получить оглавление. Затем он будет сгенерирован автоматически. Больше информации здесь:

https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wiki-221451163.html