diff --git a/lib/markdown2.py b/lib/markdown2.py
index 84d7d6c2..1998c140 100755
--- a/lib/markdown2.py
+++ b/lib/markdown2.py
@@ -243,6 +243,10 @@ def __init__(self, html4tags=False, tab_width=4, safe_mode=None,
assert isinstance(self.extras, dict)
if "toc" in self.extras and "header-ids" not in self.extras:
self.extras["header-ids"] = None # "toc" implies "header-ids"
+ if self.extras["toc"] is None:
+ self._toc_depth = 6
+ else:
+ self._toc_depth = self.extras["toc"].get("depth", 6)
self._instance_extras = self.extras.copy()
self.link_patterns = link_patterns
@@ -1500,6 +1504,8 @@ def header_id_from_text(self, text, prefix, n):
_toc = None
def _toc_add_entry(self, level, id, name):
+ if level > self._toc_depth:
+ return
if self._toc is None:
self._toc = []
self._toc.append((level, id, self._unescape_special_chars(name)))
diff --git a/test/tm-cases/toc_depth.html b/test/tm-cases/toc_depth.html
new file mode 100644
index 00000000..9b02121a
--- /dev/null
+++ b/test/tm-cases/toc_depth.html
@@ -0,0 +1,19 @@
+
README for Blah
+
+Introduction
+
+The Meat
+
+Beef
+
+Steak
+
+Burgers
+
+Chicken
+
+Pork
+
+Mmmmmmmm, bacon
+
+At the top level again!?
diff --git a/test/tm-cases/toc_depth.opts b/test/tm-cases/toc_depth.opts
new file mode 100644
index 00000000..4494a0ac
--- /dev/null
+++ b/test/tm-cases/toc_depth.opts
@@ -0,0 +1,5 @@
+{
+ "extras": {
+ "toc": {"depth": 3}
+ }
+}
diff --git a/test/tm-cases/toc_depth.tags b/test/tm-cases/toc_depth.tags
new file mode 100644
index 00000000..2b2472e0
--- /dev/null
+++ b/test/tm-cases/toc_depth.tags
@@ -0,0 +1 @@
+toc extra
diff --git a/test/tm-cases/toc_depth.text b/test/tm-cases/toc_depth.text
new file mode 100644
index 00000000..34f629a6
--- /dev/null
+++ b/test/tm-cases/toc_depth.text
@@ -0,0 +1,20 @@
+# README for Blah
+
+## Introduction
+
+## The Meat
+
+### Beef
+
+##### Steak
+
+##### Burgers
+
+### Chicken
+
+### Pork
+
+#### Mmmmmmmm, bacon
+
+# At the *top* level again!?
+
diff --git a/test/tm-cases/toc_depth.toc_html b/test/tm-cases/toc_depth.toc_html
new file mode 100644
index 00000000..3696712a
--- /dev/null
+++ b/test/tm-cases/toc_depth.toc_html
@@ -0,0 +1,13 @@
+