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

Я начал использовать mardown для заметок.

Я использую С пометкой для просмотра моих заметок markdown и его красивых.

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

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

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

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

25 ответов


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

также может быть одна или другая библиотека, которая может генерировать TOCs: см. Python Markdown TOC расширение.


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

# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)

## Example
## Example2
## Third Example

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

выдает:

содержание

  1. введение
  2. какой пункт
    1. пункт подменю
  3. еще один абзац

это введение

какой-то вступительный текст, отформатирован в стиле заголовка 2

какой пункт

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

пункт подменю

это подпункт, отформатированный в стиле заголовка 3

еще один абзац

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


можно попробовать это Руби скрипт для создания TOC из файла markdown.

#!/usr/bin/env ruby

File.open("your_file.md", 'r') do |f|
  f.each_line do |line|
    forbidden_words = ['Table of contents', 'define', 'pragma']
    next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ }

    title = line.gsub("#", "").strip
    href = 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}

Если вы используете markdown extra, не забудьте добавить специальные атрибуты к ссылкам, заголовкам, кодовым ограждениям и изображениям.
https://michelf.ca/projects/php-markdown/extra/#spe-attr


есть 2 способа создать свой 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. Программно

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

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


на Код Visual Studio пользователи, хорошая идея-использовать Markdown TOC плагин.

чтобы установить его, запустите VS Code Quick Open (Ctrl+P), вставьте следующую команду и нажмите enter.

ext install markdown-toc

и для создания TOC откройте палитру команд (Ctrl+Shift+P) и выберите Markdown TOC:Insert/Update option или использовать Ctrl+MT.


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

apm install markdown-toc

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


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

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


Я только что закодировал расширение для python-markdown, который использует свой парсер для извлечения заголовков и выводит TOC как неупорядоченный список с локальными ссылками в формате Markdown. Файл

... и он должен быть помещен в markdown/extensions/ каталог в установке markdown. Тогда все что вам нужно сделать, это якорь типа <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)

... и затем вы можете вставить этот toc в свой документ markdown (или иметь ярлык в текстовом редакторе, который вызывает скрипт в текущем открытом документе, а затем вставляет полученный TOC в тот же документ).

обратите внимание, что старые версии python-markdown нет __main__.py module, и как таковой, вызов командной строки, как указано выше, не будет работать для эта версия.


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

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

особенности

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

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

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

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

скриншоты

vim-markdown-toc

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

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

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

  1. :GenTocGFM

    создать оглавление в стиле GFM link.

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

  2. :GenTocRedcarpet

    создать оглавление в стиле Redcarpet link.

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

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

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

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

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

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


вы можете создать его с помощью этого bash one-liner. Предполагается, что ваш файл markdown называется 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

Если вы хотите использовать javascript / node.JS tool, взгляните на markdown-toc.


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


Typora создает содержание добавлять [TOC] в свой документ.


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


на основе ответа альбертодебортоли создана функция с дополнительными проверками и подстановкой знаков препинания.

# @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}}, который вставляет оглавление.


в зависимости от вашего рабочего процесса, вы можете посмотреть на бесплатформенной

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

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


Я не уверен, что это официальная документация по уценке. Перекрестная ссылка может быть написана только в скобках [Heading], или с пустые скобки [Heading][].

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

#!/bin/bash
filename=
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/   /g;s/\. \(.*\)$/. [][]/')
export __TOC__
envsubst '$__TOC__' < $filename

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

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


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

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

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

Ура!


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


есть скрипт на Ruby под названием gen_markdown_toc.rb это может автоматически генерировать таблицу содержания уценки GFM, и она похожа, но немного отличается от некоторых других сценариев, размещенных здесь.

учитывая входной файл уценки, например:

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

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


Хм... используйте заголовки Markdown!?

Что есть:

# Это эквивалент

## Это эквивалент

### Это эквивалент

многие редакторы покажут вам TOC. Вы также можете grep для тегов заголовка и создать свой собственный.

надеюсь, что это поможет!

--JF