diff --git a/docs/source/_templates/genindex.html b/docs/source/_templates/genindex.html
new file mode 100644
index 0000000000..ddc30001ca
--- /dev/null
+++ b/docs/source/_templates/genindex.html
@@ -0,0 +1,38 @@
+{% extends "!genindex.html" %}
+
+{# check sphinx/themes/basic/genindex:sidebartitle if this snippet has become outdated #}
+
+{% block body %}
+
+
{{ _('Index') }}
+
+
+ {% for key, dummy in genindexentries -%}
+
{{ key }}
+ {% if not loop.last %}| {% endif %}
+ {%- endfor %}
+
+
+{%- for key, entries in genindexentries %}
+{{ key }}
+
+ {%- for column in entries|slice_index(2) if column %}
+
+ {%- for entryname, (links, subitems, _) in column %}
+ {% set name = links[0][1].rsplit('#', 1)[1] if links else '' %}
+ - {{ indexentries(name if name and '-' not in name else entryname, links) }}
+ {%- if subitems %}
+
+ {%- for subentryname, subentrylinks in subitems %}
+ {% set sname = subentrylinks[0][1].rsplit('#', 1)[1] if subentrylinks else '' %}
+ - {{ indexentries(sname if sname and '-' not in sname else subentryname, subentrylinks) }}
+ {%- endfor %}
+
+ {%- endif -%}
+ {%- endfor %}
+ |
+ {%- endfor %}
+
+{% endfor %}
+
+{% endblock %}
diff --git a/docs/source/index.rst b/docs/source/index.rst
index f8fc6add8f..d64d28041a 100644
--- a/docs/source/index.rst
+++ b/docs/source/index.rst
@@ -86,6 +86,7 @@ Vital statistics:
contributing.rst
releasing.rst
code-of-conduct.rst
+ genindex
====================
Indices and tables