Are numbered headings in Markdown / Rdiscount possible?
I'm trying to produce html with section / subsection headings resembling the following:
- My top-level topic
1.1 My first subtopic
1.2 Another subtopic
1.2.1 A sub-subtopic- Another top-level topic
Are there any implementations of Markdown capable of producing these kinds of numbered section headings?
Thanks in advance.
Solution 1:
Yes, try Pandoc. This works for me:
pandoc --number-sections < test.md > out.html
(Source)
Markdown to produce the numbered outline you mention in the original post looks like this:
# My top-level topic
## My first subtopic
## Another subtopic
### A sub-subtopic
## Another top-level topic
If you want deeper indenting for sub-sections, you might be able to achieve this with inline CSS. For example, placing this at the top of the above Markdown source indents the headers:
<style type="text/css">
h2 { margin-left: 10px; }
h3 { margin-left: 20px; }
</style>
But say you had paragraphs of text under your headings... I don't know how to indent that to the same level as the above header.
Update 2015-10-18: Markdeep has numbered headings (and many other fancy features). Check that out too!
Solution 2:
If your markdown tool supports customized theme by CSS, add below snippet into CSS to enable heading number:
body {
counter-reset: h1
}
h1 {
counter-reset: h2
}
h2 {
counter-reset: h3
}
h3 {
counter-reset: h4
}
h1:before {
counter-increment: h1;
content: counter(h1) ". "
}
h2:before {
counter-increment: h2;
content: counter(h1) "." counter(h2) ". "
}
h3:before {
counter-increment: h3;
content: counter(h1) "." counter(h2) "." counter(h3) ". "
}
h4:before {
counter-increment: h4;
content: counter(h1) "." counter(h2) "." counter(h3) "." counter(h4) ". "
}
I use Typora, which supports auto numbering for headings in this approach.
Solution 3:
If you want to edit the markdown file itself, and not only the resulting HTML file, try enumerate-markdown with python 3
pip install enumerate-markdown
markdown-enum filename.md 1 filename.md
Example - input
# header 1
text
## header 2
text
# header 3
text
Output
# 1. header 1
text
## 1.1 header 2
text
# 2. header 3
text
if you later edit the file and run the script again, then it updates old enumeration.