Comment puis-je faire une table des matières pour un document de démarque avec Python / AWK / SED?

15

J'ai le document de démarque suivant:

Heading-a
==========

---text---

Heading-b
------------

--- text ---

Heading-c
----------

--- text---

Heading-d
=======

--- text----

Heading-e
---

...

Je voudrais en faire une table des matières cliquable, semblable à la façon dont LaTex le fait, mais je ne trouve pas un outil qui le fasse, ce qui me suggère que nous devrions en construire un.

L'outil doit collecter les rubriques «H1» et «H2» de manière à attribuer le numéro 1 à Heading-aet le numéro 1.1. à Heading-b, 1.2. à Heading-c, 2. à Heading-d, 2.1. à Heading-eet ainsi de suite, de sorte que nous devrions obtenir le tableau suivant des matières:

  1. Heading-a
  1.1. Heading-b
  1.2. Heading-c
  2. Heading-d
  2.1. Heading-e

Comment puis-je faire cela avec Python / AWK / SED?

Léo Léopold Hertz 준영
la source
Pourquoi n'utilisez-vous pas simplement LaTeX?
jtbandes
4
@jtbandes: La syntaxe de Markdown est plus facile à lire, plus rapide à taper et plus facile à compiler que celle de LaTex.
Léo Léopold Hertz

Réponses:

9

L' implémentation Markdown in Python prend en charge les extensions dont l'une inclut la génération de la table des matières. De plus, Pandoc (qui est un balisage Haskell-> PDF prend en charge le démarquage (en plus d'un tas d'autres formats) et peut produire de jolis fichiers HTML, LaTeX, PDF, etc.

Tyler
la source
Votre réponse a soulevé un autre problème lors de l'installation des extensions sur le fil superuser.com/questions/13075/…
Léo Léopold Hertz 준영
1

Si vous avez déjà des en-têtes, vous pouvez essayer github-markdown-toc est capable de traiter des fichiers stdin, locaux et distants, par exemple:

cat ~/projects/Dockerfile.vim/README.md | ./gh-md-toc -

ou en créant un local README.md:

./gh-md-toc ~/projects/Dockerfile.vim/README.md
résultats
la source
0

Consultez cet article pour une comparaison des langages de balisage légers avec quelques informations sur les tables des matières qui pourraient vous conduire vers une solution.

En pause jusqu'à nouvel ordre.
la source
Le lien ne fonctionne pas.
Léo Léopold Hertz
2
Le lien fonctionne pour moi.
pause jusqu'à nouvel ordre.
Il semble que l'auteur d'origine vient de supprimer le billet de blog de sorte que l'article se trouve dans votre cache.
Léo Léopold Hertz
1
L'article peut être trouvé dans le cache de Google: site: alexandrenotebook.blogspot.com/2008/01/…
Léo Léopold Hertz 준영