diff --git a/docs/_static/custom_collapsible_code.css b/docs/_static/custom_collapsible_code.css
new file mode 100644
index 000000000..695268a83
--- /dev/null
+++ b/docs/_static/custom_collapsible_code.css
@@ -0,0 +1,17 @@
+.toggle {
+ padding-bottom: 1em ;
+}
+
+.toggle .header {
+ display: block;
+ clear: both;
+ cursor: pointer;
+}
+
+.toggle .header:after {
+ content: " ▼";
+}
+
+.toggle .header.open:after {
+ content: " ▲";
+}
\ No newline at end of file
diff --git a/docs/_static/custom_collapsible_code.js b/docs/_static/custom_collapsible_code.js
new file mode 100644
index 000000000..f4ff22adc
--- /dev/null
+++ b/docs/_static/custom_collapsible_code.js
@@ -0,0 +1,10 @@
+let makeCodeBlocksCollapsible = function() {
+ $(".toggle > *").hide();
+ $(".toggle .header").show();
+ $(".toggle .header").click(function() {
+ $(this).parent().children().not(".header").toggle({"duration": 400});
+ $(this).parent().children(".header").toggleClass("open");
+ });
+};
+// we could use the }(); way if we would have access to jQuery in HEAD, i.e. we would need to force the theme
+// to load jQuery before our custom scripts
diff --git a/docs/_templates/layout.html b/docs/_templates/layout.html
new file mode 100644
index 000000000..736460bc0
--- /dev/null
+++ b/docs/_templates/layout.html
@@ -0,0 +1,20 @@
+{% extends "!layout.html" %}
+
+{% set css_files = css_files + ["_static/custom_collapsible_code.css"] %}
+
+# sadly, I didn't find a css style way to add custom JS to a list that is automagically added to head like CSS (above) #}
+{% block extrahead %}
+
+{% endblock %}
+
+{% block footer %}
+
+{% endblock %}
+
+