J'ai commencé à utiliser le mardown pour prendre des notes.
J'utilise marqué pour voir mes notes de démarques et sa beauté.
Mais comme mes notes s'allongent, j'ai du mal à trouver ce que je veux.
Je sais que markdown peut créer des tableaux, mais est-il capable de créer une table des matières qui saute à des sections ou de définir des sections de page dans Markdown?
Sinon, y a-t-il des lecteurs/rédacteurs Markdown qui pourraient faire de telles choses. La recherche serait une bonne chose à avoir aussi.
En bref, je veux en faire mon formidable outil de prise de notes et fonctionne un peu comme écrire un livre, etc.
MultiMarkdown Composer semble générer une table des matières pour vous aider lors de l'édition.
Il peut également y avoir l'une ou l'autre bibliothèque capable de générer des tables des matières: voir Extension de la table des matières de Python Markdown .
Vous pouvez essayer ceci.
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
## Example
## Example2
## Third Example
Voici une méthode utile. Devrait produire des références cliquables dans n’importe quel éditeur 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
Produit:
Quelques textes d'introduction, formatés dans le style du titre 2
Le texte du premier paragraphe
Ceci est un sous-paragraphe, formaté en style titre 3
Le texte du deuxième paragraphe
Pour les utilisateurs de code Visual Studio , une bonne idée est d'utiliser le plugin Markdown TOC .
Pour l’installer, lancez le logiciel VS Code Quick Open (Ctrl+P), collez la commande suivante et appuyez sur Entrée.
ext install markdown-toc
Et pour générer la table des matières, ouvrez la palette de commandes (Ctrl+Shift+P) et sélectionnez le Markdown TOC:Insert/Update option
ou utilisez Ctrl+MT.
Vous pouvez essayer ce script Ruby pour générer la table des matières à partir d’un fichier de démarquage.
#!/usr/bin/env Ruby
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 = 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}
Si vous utilisez markdown supplémentaire, 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
Il existe 2 façons de créer votre TOC (résumé) dans votre document de démarquage.
# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)
<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2
Vous pouvez utiliser par exemple un script qui génère un résumé pour vous, jetez un coup d’œil à mon projet sous github - summaryMD -
J'ai aussi essayé d'autres modules script/npm (par exemple doctoc ) mais personne ne reproduit une table des matières avec des ancres actives.
Pour le bénéfice de ceux d'entre nous qui fabriquons des fichiers README.md
dans Atom (comment j'ai trouvé ce fil):
apm install markdown-toc
Si vous souhaitez utiliser un outil javascript/node.js, consultez markdown-toc .
J'ai écrit un script python qui analyse un fichier de réduction et génère une table des matières sous forme de liste de réduction: md-to-toc
Contrairement aux autres scripts que j'ai trouvés, md-to-toc prend correctement en charge les titres en double. De plus, il ne nécessite pas de connexion Internet, il fonctionne donc sur tous les fichiers md, pas seulement ceux disponibles dans un dépôt public.
Je viens de coder une extension pour python-markdown
, qui utilise son analyseur pour extraire les en-têtes et génère une table des matières sous forme de liste non ordonnée au format Markdown avec des liens locaux. Le fichier est
... et il devrait être placé dans le répertoire markdown/extensions/
de l'installation de démarquage. Ensuite, tout ce que vous avez à faire est de taper des balises anchor <a>
avec un attribut id="..."
comme référence - donc pour un texte d’entrée comme celui-ci:
$ 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 vous pouvez ensuite coller cette toc dans votre document de démarquage (ou avoir un raccourci dans votre éditeur de texte, qui appelle le script sur le document actuellement ouvert, puis insère la table des matières résultante dans le même document).
Notez que les anciennes versions de python-markdown
ne possèdent pas de module __main__.py
et que, de ce fait, l’appel en ligne de commande ci-dessus ne fonctionnera pas pour ces versions.
Vous pouvez le générer en utilisant cette bash one-liner. Suppose que votre fichier de démarquage 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
Les balises d'ancrage générées par différents analyseurs syntaxiques Markdown ne sont pas paires.
Si vous travaillez avec les analyseurs GFM (GitHub Flavored Markdown) ou Redcarpet de Markdown, j'ai écrit un plugin Vim pour gérer la table des matières.
Générer une table des matières pour les fichiers Markdown.
Analyseurs Markdown pris en charge:
Mettre à jour la table des matières existante.
Mise à jour automatique de la table des matières existante lors de l'enregistrement.
Générer une table des matières
Déplacez le curseur sur la ligne que vous souhaitez ajouter à la table des matières, puis tapez une commande ci-dessous qui vous convient. La commande générera des en-têtes après le curseur dans la table des matières.
:GenTocGFM
Générer une table des matières dans le style de lien GFM.
Cette commande convient aux fichiers Markdown dans les référentiels GitHub, tels que les fichiers README.md et Markdown pour GitBook.
:GenTocRedcarpet
Générez la table des matières dans le style de lien Redcarpet.
Cette commande convient à Jekyll ou n’importe où ailleurs utilise Redcarpet comme analyseur syntaxique Markdown.
Vous pouvez visualiser ici pour connaître les différences entre les liens toc de style GFM et Redcarpet.
Mettre à jour manuellement la table des matières existante
Généralement, vous n'avez pas besoin de le faire, la table des matières existante sera mise à jour automatiquement lors de l'enregistrement par défaut. Si vous voulez le faire manuellement, utilisez simplement la commande :UpdateToc
.
Je viens de commencer à faire la même chose (prendre des notes dans Markdown). J'utilise Sublime Text 2 avec le plugin MarkdownPreview . L'analyseur de démarquage intégré prend en charge [TOC]
.
Vous pouvez également utiliser pandoc
, le "couteau suisse" pour convertir "un format de balise en un autre" . Il peut générer automatiquement une table des matières dans le document de sortie si vous fournissez l'argument --toc
.
Conseil: Si vous voulez une table des matières dans la sortie html
, vous devez également fournir -s
qui génère un document autonome.
Exemple de ligne de commande Shell:
./pandoc -s --toc input.md -o output.html
Typora génère Table of Content en ajoutant [TOC]
à votre document.
MultiMarkdown 4.7 a une macro {{TOC}} qui insère une table des matières.
Basé sur albertodebortoli answer a créé la fonction avec des vérifications supplémentaires et la substitution des 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
Utilisez toc.py qui est un petit script python qui génère une table des matières pour votre démarque.
Usage:
<toc>
à l'endroit où vous souhaitez placer la table des matières.$python toc.py README.md
(Utilisez votre nom de fichier de démarquage au lieu de README.md)À votre santé!
En fonction de votre flux de travail, vous voudrez peut-être regarder strapdown
C'est un fork 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 référentiel (il est possible que la mise à jour ne soit pas encore correctement mise à jour), si vous préférez ne pas écrire dans des fichiers HTML.
Je ne suis pas sûr de savoir quelle est la documentation officielle de Markdown . La référence croisée peut être écrite juste entre crochets [Heading]
, ou avec des crochets vides [Heading][]
.
Les deux fonctionnent avec pandoc . J'ai donc créé un script rapide bash, qui remplacera $ TOC dans le fichier md par sa table des matières. (Vous aurez besoin d'envsubst, cela pourrait ne pas faire partie de votre distribution)
#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/ /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename
Dans Visual Studio Code (VSCode), vous pouvez utiliser l’extension Markdown All in One .
Une fois installé, suivez les étapes ci-dessous:
Si vous utilisez Eclipse, vous pouvez utiliser le Ctrl+O (contour), cela affichera l’équivalent de la table des matières et permettra de chercher dans les titres de section (autocomplete).
Vous pouvez également ouvrir la vue Structure (Fenêtre -> Afficher la vue -> Structure), mais la recherche ne s’effectue pas automatiquement.
Il existe un script Ruby appelé gen_markdown_toc.rb qui peut générer automatiquement une table des matières GFM Markdown. Il est similaire mais légèrement différent de certains autres scripts publiés ici.
Étant donné un fichier d'entrée 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 à ce sujet.
Vous pouvez utiliser la [TOC] à la première ligne puis, en bas, la seule chose à faire est de vous assurer que les titres sont dans la même police plus grande. La table des matières sortirait automatiquement. (Mais cela n'apparaît que dans certains éditeurs Markdown, je n'ai pas tout essayé)
J'ai utilisé https://github.com/ekalinin/github-markdown-toc qui fournit un utilitaire de ligne de commande qui génère automatiquement la table des matières à partir d'un document de démarquage.
Aucun plugin, ou macros ou autres dépendances. Une fois l’utilitaire installé, collez simplement la sortie de cet utilitaire à l’emplacement du document où vous souhaitez que la table des matières se trouve. Très simple à utiliser.
$ cat README.md | ./gh-md-toc -
Sur Gitlab, Markdown supporte ceci: [[_TOC_]]
Si votre fichier Markdown doit être affiché dans un référentiel sur bitbucket.org, vous devez ajouter [TOC]
à l'emplacement où vous souhaitez que votre table des matières. Il sera ensuite généré automatiquement. Plus d'infos ici:
https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wikiwiki222551163.html
Pour moi, la solution proposée par @Tum fonctionne à merveille pour une table des matières à 2 niveaux. Cependant, pour le 3ème niveau cela n'a pas fonctionné. Il n'affichait pas le lien comme pour les 2 premiers niveaux, mais plutôt le texte en clair 3.5.1. [bla bla bla](#blablabla) <br>
.
Ma solution est un ajout à la solution de @Tum (qui est très simple) pour les personnes qui ont besoin d’une table des matières à 3 niveaux ou plus.
Au deuxième niveau, un simple onglet fera le retrait correctement pour vous. Mais il ne supporte pas 2 onglets. Au lieu de cela, vous devez utiliser un onglet et ajouter vous-même autant de
que nécessaire afin d'aligner correctement le 3ème niveau.
Voici un exemple utilisant 4 niveaux (les niveaux les plus élevés deviennent terribles):
# 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
Cela donne le résultat suivant où chaque élément de la table des matières est un lien vers la section correspondante. Notez également le <br>
afin d’ajouter une nouvelle ligne au lieu d’être sur la même ligne.
Titre 1
Rubrique 2
Rubrique 3
Rubrique 4
Il suffit d'ajouter le nombre de diapositives! ça marche avec markdown ioslides et la révélation
## Table of Contents
1. [introduction](#3)
2. [section one](#5)