diff --git a/markup/constants.py b/markup/constants.py
index c625e0a89dbcd7d3f56829eb3e0a8f709535aca4..88e22ff3aef835f8347ace3c3308f82cac77aefd 100644
--- a/markup/constants.py
+++ b/markup/constants.py
@@ -152,8 +152,11 @@ Equations on multiple lines:
 }
 
 
-MarkdownSnippets = {
-    'paragraphs':
+MarkdownSnippets = (
+    {
+        'id': 'paragraphs',
+        'title': 'Paragraphs and line breaks',
+        'raw':
 """Including an empty line between two blocks of text separates those into
 
 two different paragraphs.
@@ -164,9 +167,12 @@ will merge the lines into one
 paragraph.
 
 However if you explicitly end a line with two spaces
-then a linebreak will be forced.""",
+then a linebreak will be forced.""",},
 
-    'headers':
+    {
+        'id': 'headlines',
+        'title': 'Headlines',
+        'raw':
 """# Level 1 (html h1)
 Topmost headline
 
@@ -183,16 +189,22 @@ four
 five
 
 ###### Level 6 (h6)
-six, lowest level available.""",
+six, lowest level available.""",},
 
-    'emphasis':
+    {
+        'id': 'emphasis',
+        'title': 'Emphasis',
+        'raw':
 """You can obtain italics with *asterisks* or _single underscores_,
 and boldface using **double asterisks** or __double underscores__.
 
 If you need to explicitly use these characters (namely \* and \_),
-you can escape them with a backslash.""",
+you can escape them with a backslash.""",},
 
-    'blockquotes':
+    {
+        'id': 'blockquotes',
+        'title': 'Blockquotes',
+        'raw':
 """> This is a blockquote with two paragraphs. You should begin
 > each line with a ">" (greater than) symbol.
 >
@@ -228,9 +240,12 @@ Finally,
 >>> and come back to a lower level by putting a blank line
 
 >> to indicate a "terminated" level.
-""",
+""",},
 
-    'lists':
+    {
+        'id': 'lists',
+        'title': 'Lists',
+        'raw':
 """Markdown supports unordered (bulleted) and ordered (numbered) lists.
 
 Unordered list items are marked with asterisk, plus or hyphen, which
@@ -261,9 +276,12 @@ Nested lists can be obtained by four-space (or tab) indentation:
 1. First mainlist item
     1. first sublist item
     1. second sublist item
-1. Second mainlist item""",
+1. Second mainlist item""",},
 
-    'code':
+    {
+        'id': 'code',
+        'title': 'Code',
+        'raw':
 """An inline code span, to mention simple things like the
 `print()` function, is obtained by wrapping it with single backticks.
 
@@ -275,9 +293,12 @@ A code block is obtained by indenting the code by 4 spaces or a tab:
         markup_text = forms.CharField()
 
         def get_processed_markup(self):
-            text = self.cleaned_data['markup_text']""",
+            text = self.cleaned_data['markup_text']""",},
 
-    'hr':
+    {
+        'id': 'hr',
+        'title': 'Horizontal rules',
+        'raw':
 """A horizontal rule (HTML hr) can be obtained by writing three or
 more asterisks, hyphens or underscores on a line by themselves:
 
@@ -297,9 +318,12 @@ otherwise the system might
 
 confuse the preceding text for a headline
 -------
-""",
+""",},
 
-    'links':
+    {
+        'id': 'links',
+        'title': 'Links',
+        'raw':
 """### Inline-style hyperlinks
 
 Here is an example of an inline link to the [SciPost homepage](https://scipost.org/).
@@ -317,23 +341,33 @@ and [again][md].
 The reference will be resolved provided you define the link label somewhere
 in your text.
 
-[md]: https://daringfireball.net/projects/markdown/syntax""",
+[md]: https://daringfireball.net/projects/markdown/syntax""",},
 
-    'maths_inline_online':
+    {
+        'id': 'mathematics',
+        'title': 'Mathematics',
+        'raw':
 r"""### Inline maths
 
 You can have simple inline equations like this: $E = mc^2$ by enclosing them with
 dollar signs.
 
-### Online maths
+### Displayed maths
+
+For displayed maths, you need to enclose the equations with escaped square brackets
 
-For online maths, you need to enclose the equations with double dollar signs:
+\[
+H = \sum_j {\boldsymbol S}_j \cdot {\boldsymbol S}_{j+1}
+\]
+
+or with double dollar signs (though it works, this is less good,
+since beginning and end markers are not distinguishable):
 
 $$
 H = \sum_j S^x_j S^x_{j+1} + S^y_j S^y_{j+1} + \Delta S^z_j S^z_{j+1}
 $$
-"""
-}
+"""},
+)
 
 
 ReStructuredTextSnippets = {
diff --git a/markup/templates/markup/markdown_help.html b/markup/templates/markup/markdown_help.html
index 3e9a00b3caa0e5057a7cc62f2bbe15d6cda9858b..5e0c4aea99e44a9b826bd65f714b501ddde1dffb 100644
--- a/markup/templates/markup/markdown_help.html
+++ b/markup/templates/markup/markdown_help.html
@@ -21,124 +21,24 @@
 
       <h3>Quick links</h3>
       <ul>
-	<li><a href="#Paragraphs">Paragraphs and line breaks</a></li>
-	<li><a href="#Headlines">Headlines</a></li>
-	<li><a href="Emphasis">Emphasis</a></li>
-	<li><a href="#Blockquotes">Blockquotes</a></li>
-	<li><a href="#Lists">Lists</a></li>
-	<li><a href="#Code">Code blocks</a></li>
-	<li><a href="#HR">Horizontal rules</a></li>
-	<li><a href="#Links">Links</a></li>
-	<li><a href="#Mathematics">Mathematics</a></li>
+	{% for snippet in snippets %}
+	  <li><a href="#{{ snippet.id }}">{{ snippet.title }}</a></li>
+	{% endfor %}
       </ul>
 
-      <h3 class="highlight" id="Paragraphs">Paragraphs and line breaks</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.paragraphs }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.paragraphs|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Headlines">Headlines</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.headers }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.headers|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Emphasis">Emphasis</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.emphasis }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.emphasis|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Blockquotes">Blockquotes</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.blockquotes }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.blockquotes|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Lists">Lists</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.lists }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.lists|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Code">Code</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.code }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.code|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="HR">Horizontal rules</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.hr }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.hr|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Links">Links</h3>
-      <div class="row">
-	<div class="col-6">
-	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.links }}</pre>
-	</div>
-	<div class="col-6">
-	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.links|automarkup:'Markdown' }}
-	</div>
-      </div>
-
-      <h3 class="highlight" id="Mathematics">Mathematics</h3>
+      {% for snippet in snippets %}
+	<h3 class="highlight" id="{{ snippet.id }}">{{ snippet.title }}</h3>
       <div class="row">
 	<div class="col-6">
 	  <h3><strong>If you write:</strong></h3>
-	  <pre>{{ snippets.maths_inline_online }}</pre>
+	  <pre>{{ snippet.raw }}</pre>
 	</div>
 	<div class="col-6">
 	  <h3><strong>You will get:</strong></h3>
-	  {{ snippets.maths_inline_online|automarkup:'Markdown' }}
+	  {{ snippet.raw|automarkup:'Markdown' }}
 	</div>
       </div>
+      {% endfor %}
 
     </div>
   </div>