--- TableOfContents.py.orig	2008-03-30 04:04:24.000000000 +0200
+++ TableOfContents.py	2008-07-02 22:17:21.000000000 +0200
@@ -165,6 +165,11 @@
 
     lastlvl = 0
 
+    # variables needed to provide with nice, leveled prefixes
+    levelnumbers = None
+    levelnumbers = {}
+    counter = 1
+
     for lvl, id, txt in macro.request._tocfm_collected_headings:
         if txt is None:
             incl_id = id
@@ -172,6 +177,22 @@
         if lvl > maxdepth or id is None:
             continue
 
+	# determine number prefix for the TOC line
+	if lvl > lastlvl:
+		levelnumbers[lastlvl] = counter
+		counter = 0
+	elif lvl < lastlvl:
+		counter = levelnumbers[lvl]
+
+	counter = counter + 1
+	levelnumbers[lvl] = counter
+
+	line_number = ""
+	for i in range(1, lvl):
+		line_number = line_number + str(levelnumbers[i]) + "."
+	line_number = line_number + str(counter) + "."
+
+
         # will be reset by pop_unique_ids below
         macro.request.include_id = incl_id
 
@@ -179,12 +200,12 @@
         while lastlvl > lvl:
             result.extend([
                 macro.formatter.listitem(0),
-                macro.formatter.number_list(0),
+                macro.formatter.bullet_list(0),
             ])
             lastlvl -= 1
         while lastlvl < lvl:
             result.extend([
-                macro.formatter.number_list(1),
+                macro.formatter.bullet_list(1, type="none"),
                 macro.formatter.listitem(1),
             ])
             lastlvl += 1
@@ -196,13 +217,13 @@
         result.extend([
             '\n',
             macro.formatter.anchorlink(1, id),
-            macro.formatter.text(txt),
+            macro.formatter.text(line_number + " " + txt),
             macro.formatter.anchorlink(0),
         ])
 
     while lastlvl > 0:
         result.append(macro.formatter.listitem(0))
-        result.append(macro.formatter.number_list(0))
+        result.append(macro.formatter.bullet_list(0))
         lastlvl -= 1
 
     macro.request.pop_unique_ids()
