diff --git a/docs/examples/userguide/language_basics/cdef_block.pyx b/docs/examples/userguide/language_basics/cdef_block.pyx
new file mode 100644
index 0000000000000000000000000000000000000000..4132aeee1c30b21c25e2811d499ee195e06f0e43
--- /dev/null
+++ b/docs/examples/userguide/language_basics/cdef_block.pyx
@@ -0,0 +1,12 @@
+from __future__ import print_function
+
+cdef:
+    struct Spam:
+        int tons
+
+    int i
+    float a
+    Spam *p
+
+    void f(Spam *s):
+        print(s.tons, "Tons of spam")
diff --git a/docs/src/userguide/language_basics.rst b/docs/src/userguide/language_basics.rst
index 1c4afa7a2c9bc8f00d44c0052b9c08fcd91ae466..8ed112dd3c8d3ae083d48f819f241eaade09b972 100644
--- a/docs/src/userguide/language_basics.rst
+++ b/docs/src/userguide/language_basics.rst
@@ -179,20 +179,9 @@ Grouping multiple C declarations
 --------------------------------
 
 If you have a series of declarations that all begin with :keyword:`cdef`, you
-can group them into a :keyword:`cdef` block like this::
+can group them into a :keyword:`cdef` block like this:
 
-    from __future__ import print_function
-
-    cdef:
-        struct Spam:
-            int tons
-
-        int i
-        float a
-        Spam *p
-
-        void f(Spam *s):
-            print(s.tons, "Tons of spam")
+.. literalinclude:: ../../examples/userguide/language_basics/cdef_block.pyx
 
 .. _cpdef:
 .. _cdef: