Markdown pour créer des pages et une table des matières?

j'ai commencé à utiliser mardown pour prendre des notes.

j'utilise marqué pour voir mes démarque des notes et des ses belles.

mais comme mes notes s'allongent, j'ai du mal à trouver ce que je veux.

je sais que markdown peut créer des tables, mais est-il capable de créer une table des matières, qui saute aux sections, ou définir des sections de page dans markdown?

alternativement, y a-t-il markdown lecteurs / éditeurs qui pourraient faire de telles choses. La recherche serait une bonne fonctionnalité.

en bref, je veux en faire mon outil impressionnant de prise de notes et des fonctions un peu comme l'écriture d'un livre, etc.

171
demandé sur resting 2012-08-14 12:10:22

25 réponses

MultiMarkdown Composer ne semblent générer une table des matières pour aider lors de l'édition.

il peut y avoir aussi l'une ou l'autre bibliothèque, qui peut générer des TOCs: voir Markdown TOC Extension .

16
répondu mxro 2018-02-04 20:24:40

vous pouvez essayer.

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

## Example
## Example2
## Third Example
211
répondu Rick 2015-08-06 17:14:56

Voici une méthode utile. Devrait produire cliquable références Démarque de l'éditeur.

# 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

produit:

Table des matières

  1. Introduction
  2. Certaines paragraphe
    1. alinéa
  3. un autre paragraphe

Ceci est l'introduction de

Certaines introduction de texte, mis en forme dans le style titre 2

Certaines paragraphe

texte du premier paragraphe

alinéa

il s'agit d'un sous-paragraphe, présenté dans le style du titre 3

un autre paragraphe

texte du deuxième paragraphe

93
répondu Tum 2017-05-23 12:26:27

vous pouvez essayer ce script ruby pour générer le TOC à partir d'un fichier 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
21
répondu albertodebortoli 2014-03-02 17:51:35
# 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}

si vous utilisez markdown extra, n'oubliez pas que vous pouvez ajouter des attributs spéciaux aux liens, en-têtes, clôtures de code et images.

https://michelf.ca/projects/php-markdown/extra/#spe-attr

18
répondu Greg Bosen 2017-09-08 22:09:11

il y a 2 façons de créer votre TOC (résumé) dans votre document markdown.

1. Manuellement

# 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. Par programme

vous pouvez utiliser par exemple un script qui génère un résumé pour vous, jetez un oeil à mon projet sur github - résumé -

j'ai essayé aussi un autre script / module npm (par exemple doctoc ) mais personne ne reproduit un TOC avec des ancres de travail.

16
répondu Luca Davanzo 2015-04-03 13:36:50

pour les Visual Studio Code utilisateurs, une bonne idée est d'utiliser le Markdown TOC plugin.

pour l'installer, lancez le code VS Quick Open ( Ctrl + P ), collez la commande suivante et appuyez sur Entrée.

ext install markdown-toc

et pour générer le TOC, ouvrez la palette de commande ( Ctrl + Shift + P ) et sélectionnez le Markdown TOC:Insert/Update option ou utilisez Ctrl + M T .

14
répondu coderade 2017-05-10 20:59:41

pour le bénéfice de ceux d'entre nous faisant README.md fichiers dans atome (comment j'ai trouvé ce fil):

apm install markdown-toc

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

6
répondu msanford 2016-07-26 21:45:39

j'ai écrit un script python qui analyse un fichier markdown et produit une table des matières comme une liste markdown: md-to-to-toc

Contrairement aux autres scripts que j'ai trouvés, md-to-toc supporte correctement les titres en double. Il ne nécessite pas non plus de connexion internet, de sorte qu'il fonctionne sur n'importe quel fichier md, pas seulement ceux disponibles à partir d'une pension publique.

5
répondu Antonio Maiorano 2015-06-05 12:52:28

j'ai juste codé une extension pour python-markdown , qui utilise son analyseur pour récupérer des en-têtes, et produit une TOC comme liste non ordonnée formatée par Markdown avec des liens locaux. Le fichier est

... et il doit être placé dans le répertoire markdown/extensions/ de l'installation de markdown. Alors, tout ce que tu as à faire, c'est type d'ancrage <a> tags avec une id="..." attribut comme une référence - donc, pour une saisie de texte comme ceci:

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

... l'extension peut s'appeler comme ceci:

$ python -m markdown -x md_toc test.md 
* Hello
    * [SECTION ONE](#sect one)
        * [SECTION TWO](#sect two)
            * SECTION THREE
        * [SECTION FOUR](#four)

... et puis vous pouvez coller en arrière ce toc dans votre document de markdown (ou avoir un raccourci dans votre éditeur de texte, qui appelle le script sur le document actuellement ouvert, et insère le TOC résultant dans le même document).

noter que les anciennes versions de python-markdown n'ont pas de module __main__.py , et en tant que tel, l'appel en ligne de commande comme ci-dessus ne fonctionnera pas pour ces versions.

5
répondu sdaau 2015-06-07 22:59:03
Les étiquettes D'ancrage

générées par différents analyseurs de Markdown ne sont pas égales.

si vous travaillez avec Markdown parsers GFM (Github Flavored Markdown) ou Redcarpet, j'ai écrit un plugin Vim pour gérer la table des matières.

Caractéristiques

  1. Générer la table des matières pour les fichiers Markdown.

    prise en charge de Démarque analyseurs:

    • GFM (Github aromatisé Markdown)
    • Redcarpet
  2. mettre à jour la table des matières existante.

  3. mise à jour Automatique de la table existante de contenu sur enregistrer.

Captures d'écran

vim-markdown-toc

Utilisation

générer une table des matières

déplacez le curseur à la ligne que vous voulez ajouter table des matières, puis tapez une commande ci-dessous vous convient. La commande générera des titres après le curseur dans la table des matières.

  1. :GenTocGFM

    Générer la table des matières dans GFM style de lien.

    cette commande est appropriée pour les fichiers Markdown dans les dépôts GitHub, comme README.md, et les fichiers Markdown pour GitBook.

  2. :GenTocRedcarpet

    Générer la table des matières dans le Redcarpet de style de lien.

    cette commande est appropriée pour Jekyll ou n'importe où d'autre utiliser Redcarpet comme son analyseur de Markdown.

    vous pouvez voir ici pour connaître les différences entre GFM et Redcarpet style toc liens.

mise à Jour de la table existante de contenu à la main

en général, vous n'avez pas besoin de faire cela, la table des matières existante sera mise à jour automatiquement lors de la sauvegarde par défaut. Si vous voulez le faire manuellement, utilisez simplement la commande :UpdateToc .

téléchargements et documents

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

5
répondu Zhuang Ma 2016-10-25 04:57:18

vous pouvez le générer en utilisant ce Bash one-liner. Suppose que votre fichier markdown s'appelle 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
5
répondu Asim Jalis 2018-04-12 13:23:52

si vous voulez utiliser un JavaScript/node.js tool, jetez un oeil à markdown-toc .

4
répondu jonschlinkert 2017-02-27 02:07:42

je viens de commencer à faire la même chose (prendre des notes dans Markdown). J'utilise Sublime Text 2 avec le markdownpreview plugin . L'analyseur markdown intégré supporte [TOC] .

3
répondu Martin 2014-11-12 05:39:04

Typora génère Table des matières en ajoutant [TOC] à votre document.

3
répondu Paul Jurczak 2016-10-07 11:27:13

vous pouvez également utiliser pandoc , le " Swiss-army knife "pour convertir" un format de balisage dans un autre " . Il peut automatiquement générer une table de contenu dans le document de sortie si vous fournissez l'argument --toc .

indice: si vous voulez une table des matières en sortie html , vous devez également fournir -s qui génère un document autonome.

exemple d'enveloppe ligne de commande:

./pandoc -s --toc input.md -o output.html
3
répondu M.Geiger 2017-02-15 12:32:25

basé sur albertodebortoli réponse créé la fonction avec des vérifications supplémentaires et la substitution de signes de ponctuation.

# @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
2
répondu dmigous 2016-02-13 12:37:55

MultiMarkdown 4.7 possède une macro {{TOC}} qui insère une table des matières.

2
répondu Michael R 2016-11-16 01:05:20

selon votre flux de travail, vous pourriez vouloir regarder strapdown

c'est une fourchette de l'original ( http://strapdownjs.com ) qui ajoute la génération de la table des matières.

il y a un fichier de configuration apache sur le repo (qui n'est peut-être pas encore correctement mis à jour) pour envelopper le markdown à la volée, si vous préférez ne pas écrire dans des fichiers html.

1
répondu dgn 2014-09-23 13:59:29

Je ne suis pas sûr, quelle est la documentation officielle pour markdown. Les références croisées peuvent être écrites juste entre parenthèses [Heading] , ou avec les crochets vides [Heading][] .

les Deux œuvres à l'aide de pandoc . J'ai donc créé un script de bash rapide, qui remplacera $ TOC dans le fichier md avec son TOC. (Vous aurez besoin d'envsubst, qui pourrait ne pas être partie de votre distribution)

#!/bin/bash
filename=
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/   /g;s/\. \(.*\)$/. [][]/')
export __TOC__
envsubst '$__TOC__' < $filename
1
répondu dosmanak 2016-10-26 07:39:37

Si vous arrive d'utiliser Eclipse vous pouvez utiliser le bouton Ctrl + O (contour) raccourci, ce sera l'équivalent de la table des matières et permet de rechercher dans les titres de section (saisie semi-automatique).

vous pouvez également ouvrir la vue de contour (fenêtre -> montrer la vue -> contour) mais il n'a pas de recherche autocomplete.

1
répondu Christophe Roussy 2017-02-06 09:53:05

utiliser toc.py qui est un petit script python qui génère une table des matières pour votre markdown.

Utilisation:

  • dans votre fichier Markdown, ajoutez <toc> où vous voulez que la table des matières soit placée.
  • $python toc.py README.md (utilisez votre nom de fichier markdown au lieu de README.md )

santé!

1
répondu Dhruv Batheja 2018-08-29 19:24:17

vous pouvez utiliser le [TOC] à la première ligne et ensuite en bas, la seule chose que vous devez faire est de vous assurer que les titres sont dans la même police plus grande. La table des matières sortent automatiquement. ( Mais ce n'apparaissent que dans certains éditeurs markdown, je n'ai pas essayé tous)

0
répondu Cecilé 2017-12-15 19:27:07

il y a un script Ruby appelé gen_markdown_toc.rb qui peut auto-générer une table des matières de Markdown GFM, et il est similaire mais légèrement différent de certains autres scripts affichés ici.

donne un fichier de Markdown comme:

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

il génère cette table des matières:

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

Voir aussi mon blog post sur ce sujet.

0
répondu Alex Harvey 2018-09-02 05:32:04
"151900920 de messagerie Unifiée"... utilisez les caps de Markdown!?

C'est-à-dire:

# c'est l'équivalent de < h1 >

# # c'est l'équivalent de < h2>

### C'est l'équivalent de < h3>

de nombreux éditeurs vous montreront un TOC. Vous pouvez également grep pour les étiquettes de titre et de créer votre propre.

Espère que ça aide!

--JF

-10
répondu user2502476 2013-06-19 18:31:55