diff --git a/fgs/pandoc.py b/fgs/pandoc.py
index 541c8e0895236768eadf62b4b7682df8b8a67e87..8921b38fc416fde684499d0e5518c2c71ab1473f 100644
--- a/fgs/pandoc.py
+++ b/fgs/pandoc.py
@@ -52,7 +52,6 @@ def run_pandoc(source, factories, lang, base="markdown", extensions=[], extra_ar
 
     contentmetadata = {}
 
-
     # Get all images on page
     images = []
     for e in elementlist:
@@ -73,6 +72,10 @@ def run_pandoc(source, factories, lang, base="markdown", extensions=[], extra_ar
 
     # Add Table-of-Contents
     contentmetadata["toc"] = build_toc(headers)
+    # Add Table-of-Contents information to "toc" elements.
+    for e in elementlist:
+        if e.etype == "toc":
+            e.toc = contentmetadata["toc"]
 
     #blocks = json.loads(json.dumps(blocks, cls=ElementEncoder)) # Reduce to 'simple' dict, which can be converted to JSON in Jinja2.
 
@@ -758,7 +761,7 @@ class CustomSyntaxHandler:
 class CustomBlockTOC(Block):
     etype = "toc"
     def replace(self, origelement, custom_sytax_register_entry):
-        pass # Necessary information for rendering can be found in page.metadata['toc']
+        self.toc = None # Value will be set, after document is parsed and contentmetadata['toc'] is set.
 
 
 ############################## REGISTER #######################################
diff --git a/theme/templates/macros/content_renderer.html b/theme/templates/macros/content_renderer.html
index 04a3233b74cd9a8cbce449ca67d9820953879d96..0caf523629af5faac035916b425d4593ef5fdcd8 100644
--- a/theme/templates/macros/content_renderer.html
+++ b/theme/templates/macros/content_renderer.html
@@ -312,7 +312,7 @@
 	{%- endif -%}
 {%- endmacro -%}
 {%- macro render_block_toc(block, lang, meta) -%}
-	{%- set toc = meta.page.metadata.toc -%}
+	{%- set toc = block.toc -%}
 	<nav class="toc">
 		{{ render_header(t[lang].toc.header, 2 + meta.header_level_offset, None, lang, meta.in_footer) }}
 		{{ render_toc({"children": toc}, lang, meta) }}