I have the following markdown document:




--- text ---


--- text---


--- text----



I would like to make a clickable table of contents out of it, similar to the way LaTex does, but can't find a tool that does this, which suggests to me that we should build one.

The tool should collect 'H1' headings and 'H2' headings such that it assigns the number 1 to Heading-a and the number 1.1. to Heading-b, 1.2. to Heading-c, 2. to Heading-d, 2.1. to Heading-e and so on, such that we should get the following Table of contents:

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

How can I do this with Python/AWK/SED?

  • Why don't you just use LaTeX?
    – jtbandes
    Jul 25 '09 at 21:25
  • 4
    @jtbandes: The syntax of Markdown is easier to read, faster to type and easier to compile than that of LaTex. Jul 26 '09 at 5:11

The Markdown in Python implementation has support for extensions one of which includes Table of Contents generation. Additionally Pandoc (which is a Haskell markup->PDF has support for markdown (in addition to a bunch of other formats) and can output pretty HTML, LaTeX, PDFs, etc.


If you already have headings, you can try github-markdown-toc is able to process stdin, local and remote files, for example:

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

or creating a local README.md:

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

See this article for a comparison of lightweight markup languages with some information on tables of contents that might lead you in the direction of a solution.


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.