diff --git a/Doc/library/collections.rst b/Doc/library/collections.rst
index dde7f55..e1514da 100644
--- a/Doc/library/collections.rst
+++ b/Doc/library/collections.rst
@@ -479,7 +479,7 @@
       Point(x=33, y=22)
 
       >>> for partnum, record in inventory.items():
-              inventory[partnum] = record._replace(price=newprices[partnum], timestamp=time.now())
+      ...     inventory[partnum] = record._replace(price=newprices[partnum], timestamp=time.now())
 
 .. attribute:: somenamedtuple._fields
 
@@ -513,14 +513,14 @@
 a fixed-width print format::
 
     >>> class Point(namedtuple('Point', 'x y')):
-        @property
-        def hypot(self):
-            return (self.x ** 2 + self.y ** 2) ** 0.5
-        def __str__(self):
-            return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
+    ...     @property
+    ...     def hypot(self):
+    ...         return (self.x ** 2 + self.y ** 2) ** 0.5
+    ...     def __str__(self):
+    ...         return 'Point: x=%6.3f y=%6.3f hypot=%6.3f' % (self.x, self.y, self.hypot)
 
     >>> for p in Point(3,4), Point(14,5), Point(9./7,6):
-            print p
+    ...     print p
 
     Point: x= 3.000 y= 4.000 hypot= 5.000
     Point: x=14.000 y= 5.000 hypot=14.866
@@ -529,7 +529,7 @@
 Another use for subclassing is to replace performance critcal methods with
 faster versions that bypass error-checking and that localize variable access::
 
-    >>> class Point(namedtuple('Point', 'x y')):
+    class Point(namedtuple('Point', 'x y')):
         _make = classmethod(tuple.__new__)
         def _replace(self, _map=map, **kwds):
             return self._make(_map(kwds.get, ('x', 'y'), self))
