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.
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 .
vous pouvez essayer.
# 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 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
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
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
# 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
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.
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 .
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.
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.
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
-
Générer la table des matières pour les fichiers Markdown.
prise en charge de Démarque analyseurs:
- GFM (Github aromatisé Markdown)
- Redcarpet
-
mettre à jour la table des matières existante.
-
mise à jour Automatique de la table existante de contenu sur enregistrer.
Captures d'écran
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.
-
: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.
-
: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
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
si vous voulez utiliser un JavaScript/node.js tool, jetez un oeil à markdown-toc .
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]
.
Typora génère Table des matières en ajoutant [TOC]
à votre document.
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
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
MultiMarkdown 4.7 possède une macro {{TOC}} qui insère une table des matières.
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.
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
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.
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é!
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)
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.
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