diff --git a/doc/reference.rst b/doc/reference.rst
index fce823adf86e6e9cee927f495da807d75e6e9c1b..8c7ccc2dc0ddba97b756203751260431cd24c593 100644
--- a/doc/reference.rst
+++ b/doc/reference.rst
@@ -1 +1,2 @@
 .. automodule:: pytools
+.. automodule:: pytools.datatable
diff --git a/pytools/datatable.py b/pytools/datatable.py
index 71f092de4d885f77649f9dfbb4916551218dc157..b9e8066eb49a31ebf23e8733b9536b8817e68671 100644
--- a/pytools/datatable.py
+++ b/pytools/datatable.py
@@ -2,6 +2,9 @@ from pytools import Record
 
 
 __doc__ = """
+An in-memory relational database table
+======================================
+
 .. autoclass:: DataTable
 """
 
@@ -11,14 +14,20 @@ class Row(Record):
 
 
 class DataTable:
-    """An in-memory relational database table."""
+    """An in-memory relational database table.
+
+    .. automethod:: __init__
+    .. automethod:: copy
+    .. automethod:: deep_copy
+    .. automethod:: join
+    """
 
     def __init__(self, column_names, column_data=None):
         """Construct a new table, with the given C{column_names}.
 
-        @arg column_names: An indexable of column name strings.
-        @arg column_data: None or a list of tuples of the same length as
-          C{column_names} indicating an initial set of data.
+        :arg column_names: An indexable of column name strings.
+        :arg column_data: None or a list of tuples of the same length as
+         C{column_names} indicating an initial set of data.
         """
         if column_data is None:
             self.data = []