diff --git a/protoparser.py b/protoparser.py
index 70ad95e564639bd7b1a916eb9ab1011017551692..c755c59f31c015d23b2d16a3d5b08d17c1396274 100644
--- a/protoparser.py
+++ b/protoparser.py
@@ -38,7 +38,6 @@ class RenderType(Enum):
     plaintext = 2
     html = 3
     dokuwiki = 4
-    extra = 5
 
 
 def _not_implemented(self, render_type):
@@ -52,7 +51,7 @@ class Element:
     Generic (abstract) base element. Should never really exist.
     Template for what an element class should contain.
     """
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
         """
         Renders the element to TeX.
         Returns:
@@ -122,7 +121,7 @@ class Content(Element):
         self.children = children
         self.linenumber = linenumber
 
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
         return "".join(map(lambda e: e.render(
             render_type, show_private, level=level, protocol=protocol),
             self.children))
@@ -187,8 +186,8 @@ class Text:
         self.linenumber = linenumber
         self.fork = fork
 
-    def render(self, render_type, show_private, level=None, protocol=None):
-        if render_type == RenderType.latex or render_type == RenderType.extra:
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
+        if render_type == RenderType.latex:
             return escape_tex(self.text)
         elif render_type == RenderType.wikitext:
             return self.text
@@ -225,8 +224,8 @@ class Tag:
         self.linenumber = linenumber
         self.fork = fork
 
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
-        if render_type == RenderType.latex:
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
+        if render_type == RenderType.latex and not top_render:
             if self.name == "url":
                 return r"\url{{{}}}".format(self.values[0])
             elif self.name == "todo":
@@ -245,7 +244,7 @@ class Tag:
             return r"\textbf{{{}:}} {}".format(
                 escape_tex(self.name.capitalize()),
                 escape_tex(";".join(self.values)))
-        elif render_type == RenderType.extra:
+        elif render_type == RenderType.latex and top_render:
             if self.name == "url":
                 return r"\url{{{}}}".format(self.values[0])
             elif self.name == "todo":
@@ -351,7 +350,7 @@ class Empty(Element):
     def __init__(self, linenumber):
         linenumber = linenumber
 
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
         return ""
 
     def dump(self, level=None):
@@ -373,8 +372,8 @@ class Remark(Element):
         self.value = value
         self.linenumber = linenumber
 
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
-        if render_type == RenderType.latex or render_type == RenderType.extra:
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
+        if render_type == RenderType.latex:
             return r"\textbf{{{}}}: {}".format(self.name, self.value)
         elif render_type == RenderType.wikitext:
             return "{}: {}".format(self.name, self.value)
@@ -441,12 +440,12 @@ class Fork(Element):
         stripped_name = name.replace(":", "").strip()
         return stripped_name in config.PRIVATE_KEYWORDS
 
-    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False):
+    def render(self, render_type, show_private, level=None, protocol=None, decision_render=False, top_render=False):
         name_line = self.name if self.name is not None else ""
         if level == 0 and self.name == "Todos" and not show_private:
             return ""
-        if render_type == RenderType.latex or render_type == RenderType.extra:
-            if render_type == RenderType.latex and self.is_extra and not decision_render:
+        if render_type == RenderType.latex:
+            if self.is_extra and not top_render and not decision_render:
                 return r"\textit{[Dieser Tagesordnungspunkt wird in einem eigenem PDF exportiert.]}"
 
             begin_line = r"\begin{itemize}"
@@ -456,14 +455,14 @@ class Fork(Element):
             for child in self.children:
                 part = child.render(
                     render_type, show_private, level=level + 1,
-                    protocol=protocol)
+                    protocol=protocol, decision_render=decision_render, top_render=top_render)
                 parts.append(part)
                 if len(part.strip()) == 0:
                     continue
-                if render_type == RenderType.latex:
+                if not top_render:
                     if not part.startswith(r"\item"):
                         part = r"\item {}".format(part)
-                elif render_type == RenderType.extra:
+                else:
                     if not part.startswith(r"\item") and not part.startswith(r"\footnote") and not part.startswith(
                             r"\begin{tcolorbox}"):
                         part = r"\item {}".format(part)
@@ -474,9 +473,9 @@ class Fork(Element):
             if len(content_lines.strip()) == 0:
                 content_lines = "\\item Nichts\n"
             if level == 0:
-                if render_type == RenderType.latex:
+                if not top_render:
                     return "\n".join([begin_line, content_lines, end_line])
-                elif render_type == RenderType.extra:
+                else:
                     return "\n".join(parts)
             elif self.test_private(self.name):
                 if show_private:
@@ -489,7 +488,7 @@ class Fork(Element):
                 else:
                     return (r"\textit{[An dieser Stelle wurde intern "
                             r"protokolliert.]}")
-            elif render_type == RenderType.extra and level == 1:
+            elif top_render and level == 1:
                 name_escape = escape_tex(name_line)
                 return "\n".join([
                     f"\section{{{name_escape}}}", begin_line,
@@ -510,7 +509,7 @@ class Fork(Element):
             for child in self.children:
                 part = child.render(
                     render_type, show_private, level=level + 1,
-                    protocol=protocol)
+                    protocol=protocol, decision_render=decision_render, top_render=top_render)
                 if len(part.strip()) == 0:
                     continue
                 content_parts.append(part)
@@ -526,7 +525,7 @@ class Fork(Element):
             for child in self.children:
                 part = child.render(
                     render_type, show_private, level=level + 1,
-                    protocol=protocol)
+                    protocol=protocol, decision_render=decision_render, top_render=top_render)
                 if len(part.strip()) == 0:
                     continue
                 content_parts.append(part)
@@ -546,7 +545,7 @@ class Fork(Element):
                 for child in self.children:
                     part = child.render(
                         render_type, show_private, level=level + 1,
-                        protocol=protocol)
+                        protocol=protocol, decision_render=decision_render, top_render=top_render)
                     if len(part.strip()) == 0:
                         continue
                     content_parts.append("<p>{}</p>".format(part))
@@ -557,7 +556,7 @@ class Fork(Element):
                 for child in self.children:
                     part = child.render(
                         render_type, show_private, level=level + 1,
-                        protocol=protocol)
+                        protocol=protocol, decision_render=decision_render, top_render=top_render)
                     if len(part.strip()) == 0:
                         continue
                     content_parts.append("<li>{}</li>".format(part))
diff --git a/tasks.py b/tasks.py
index 1b2c77441588c108b36c790bb72e6960deb5212e..304e908bbc640abe872096f81f8086475e4b73de 100644
--- a/tasks.py
+++ b/tasks.py
@@ -565,7 +565,7 @@ def parse_protocol_async_inner(protocol, ignore_old_date=False):
         for show_private in privacy_states:
             latex_source = texenv.get_template(provide_latex_template(
                 protocol.protocoltype.latex_template, "top")).render(
-                    render_type=RenderType.extra,
+                    render_type=RenderType.latex,
                     top=top,
                     show_private=show_private,
                     **render_kwargs[show_private])
diff --git a/templates/top.tex b/templates/top.tex
index 4ed2894901655890cdcdd3a8f53464377fe1b981..f6a30c6440d421da47cff1099e8800d6e139a750 100644
--- a/templates/top.tex
+++ b/templates/top.tex
@@ -95,7 +95,7 @@
 \setlist{nosep}
 
 \newcommand{\Beschluss}[2][]{\textbf{Beschluss:} #2 \def\temp{#1}\ifx\temp\empty\else\textit{(#1)}\fi}
-
+\newcommand{\Todo}[4]{\textbf{{#1}}: #2: #3 -- #4}
 
 \ENV{if show_private}\setboolean{intern}{true}\ENV{endif}
 \intern{\SetWatermarkText{INTERN} \SetWatermarkScale{1}}{}
@@ -106,7 +106,7 @@
     \end{center}
 
     \ENV{if top|class == "Fork"}
-        \VAR{top.render(render_type=render_type, level=0, show_private=show_private, protocol=protocol)}
+        \VAR{top.render(render_type=render_type, level=0, show_private=show_private, protocol=protocol, top_render=True)}
     \ENV{endif}
 
     \runningpagewiselinenumbers \linenumbers