diff --git a/Doc/ext.tex b/Doc/ext.tex
index d8d5a43..af745f1 100644
--- a/Doc/ext.tex
+++ b/Doc/ext.tex
@@ -30,17 +30,17 @@
 operating system supports this feature.
 
 This document assumes basic knowledge about Python.  For an informal
-introduction to the language, see the Python Tutorial.  The Python
-Reference Manual gives a more formal definition of the language.  The
-Python Library Reference documents the existing object types,
+introduction to the language, see the Python Tutorial.  The \emph{Python
+Reference Manual} gives a more formal definition of the language.  The
+\emph{Python Library Reference} documents the existing object types,
 functions and modules (both built-in and written in Python) that give
 the language its wide application range.
 
 For a detailed description of the whole Python/\C{} API, see the separate
-Python/\C{} API Reference Manual.  \strong{Note:} While that manual is
-still in a state of flux, it is safe to say that it is much more up to
-date than the manual you're reading currently (which has been in need
-for an upgrade for some time now).
+\emph{Python/\C{} API Reference Manual}.  \strong{Note:} While that
+manual is still in a state of flux, it is safe to say that it is much
+more up to date than the manual you're reading currently (which has
+been in need for an upgrade for some time now).
 
 
 \end{abstract}
@@ -51,7 +51,8 @@
 \chapter{Extending Python with \C{} or \Cpp{} code}
 
 
-\section{Introduction}
+%\section{Introduction}
+\label{intro}
 
 It is quite easy to add new built-in modules to Python, if you know
 how to program in \C{}.  Such \dfn{extension modules} can do two things
@@ -69,6 +70,7 @@
 
 
 \section{A Simple Example}
+\label{simpleExample}
 
 Let's create an extension module called \samp{spam} (the favorite food
 of Monty Python fans...) and let's say we want to create a Python
@@ -141,13 +143,13 @@
 containing the arguments.  Each item of the tuple corresponds to an
 argument in the call's argument list.  The arguments are Python
 objects --- in order to do anything with them in our \C{} function we have
-to convert them to \C{} values.  The function \code{PyArg_ParseTuple()}
+to convert them to \C{} values.  The function \cfunction{PyArg_ParseTuple()}
 in the Python API checks the argument types and converts them to \C{}
 values.  It uses a template string to determine the required types of
 the arguments as well as the types of the \C{} variables into which to
 store the converted values.  More about this later.
 
-\code{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
+\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
 the right type and its components have been stored in the variables
 whose addresses are passed.  It returns false (zero) if an invalid
 argument list was passed.  In the latter case it also raises an
@@ -156,6 +158,7 @@
 
 
 \section{Intermezzo: Errors and Exceptions}
+\label{errors}
 
 An important convention throughout the Python interpreter is the
 following: when a function fails, it should set an exception condition
@@ -226,7 +229,7 @@
 \code{malloc()} directly this note is of importance.
 
 Also note that, with the important exception of
-\code{PyArg_ParseTuple()} and friends, functions that return an
+\cfunction{PyArg_ParseTuple()} and friends, functions that return an
 integer status usually return a positive value or zero for success and
 \code{-1} for failure, like \UNIX{} system calls.
 
@@ -240,7 +243,7 @@
 course, you should choose exceptions wisely --- don't use
 \code{PyExc_TypeError} to mean that a file couldn't be opened (that
 should probably be \code{PyExc_IOError}).  If something's wrong with
-the argument list, the \code{PyArg_ParseTuple()} function usually
+the argument list, the \cfunction{PyArg_ParseTuple()} function usually
 raises \code{PyExc_TypeError}.  If you have an argument whose value
 which must be in a particular range or must satisfy other conditions,
 \code{PyExc_ValueError} is appropriate.
@@ -277,6 +280,7 @@
 
 
 \section{Back to the Example}
+\label{backToExample}
 
 Going back to our example function, you should now be able to
 understand this statement:
@@ -288,7 +292,7 @@
 
 It returns \NULL{} (the error indicator for functions returning
 object pointers) if an error is detected in the argument list, relying
-on the exception set by \code{PyArg_ParseTuple()}.  Otherwise the
+on the exception set by \cfunction{PyArg_ParseTuple()}.  Otherwise the
 string value of the argument has been copied to the local variable
 \code{command}.  This is a pointer assignment and you are not supposed
 to modify the string to which it points (so in Standard \C{}, the variable
@@ -296,7 +300,7 @@
 *command}).
 
 The next statement is a call to the \UNIX{} function \code{system()},
-passing it the string we just got from \code{PyArg_ParseTuple()}:
+passing it the string we just got from \cfunction{PyArg_ParseTuple()}:
 
 \begin{verbatim}
     sts = system(command);
@@ -305,7 +309,7 @@
 Our \code{spam.system()} function must return the value of \code{sts}
 as a Python object.  This is done using the function
 \code{Py_BuildValue()}, which is something like the inverse of
-\code{PyArg_ParseTuple()}: it takes a format string and an arbitrary
+\cfunction{PyArg_ParseTuple()}: it takes a format string and an arbitrary
 number of \C{} values, and returns a new Python object.  More info on
 \code{Py_BuildValue()} is given later.
 
@@ -331,6 +335,7 @@
 
 
 \section{The Module's Method Table and Initialization Function}
+\label{methodTable}
 
 I promised to show how \code{spam_system()} is called from Python
 programs.  First, we need to list its name and address in a ``method
@@ -349,7 +354,7 @@
 the interpreter the calling convention to be used for the \C{}
 function.  It should normally always be \samp{METH_VARARGS} or
 \samp{METH_VARARGS | METH_KEYWORDS}; a value of \samp{0} means that an
-obsolete variant of \code{PyArg_ParseTuple()} is used.
+obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
 
 When using only \samp{METH_VARARGS}, the function should expect
 the Python-level parameters to be passed in as a tuple acceptable for
@@ -359,7 +364,7 @@
 The \code{METH_KEYWORDS} bit may be set in the third field if keyword
 arguments should be passed to the function.  In this case, the \C{}
 function should accept a third \samp{PyObject *} parameter which will
-be a dictionary of keywords.  Use \code{PyArg_ParseTupleAndKeywords()} 
+be a dictionary of keywords.  Use \cfunction{PyArg_ParseTupleAndKeywords()}
 to parse the arguemts to such a function.
 
 The method table must be passed to the interpreter in the module's
@@ -387,6 +392,7 @@
 
 
 \section{Compilation and Linkage}
+\label{compilation}
 
 There are two more things to do before you can use your new extension:
 compiling and linking it with the Python system.  If you use dynamic
@@ -419,6 +425,7 @@
 \end{verbatim}
 
 \section{Calling Python Functions From \C{}}
+\label{callingPython}
 
 So far we have concentrated on making \C{} functions callable from
 Python.  The reverse is also useful: calling Python functions from \C{}.
@@ -543,8 +550,9 @@
 
 
 \section{Format Strings for \sectcode{PyArg_ParseTuple()}}
+\label{parseTuple}
 
-The \code{PyArg_ParseTuple()} function is declared as follows:
+The \cfunction{PyArg_ParseTuple()} function is declared as follows:
 
 \begin{verbatim}
 int PyArg_ParseTuple(PyObject *arg, char *format, ...);
@@ -558,7 +566,7 @@
 \var{arg} object must match the format and the format must be
 exhausted.
 
-Note that while \code{PyArg_ParseTuple()} checks that the Python
+Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
 arguments have the required types, it cannot check the validity of the
 addresses of \C{} variables passed to the call: if you make mistakes
 there, your code will probably crash or at least overwrite random bits
@@ -568,7 +576,7 @@
 unit describes one Python object; it is usually a single character or
 a parenthesized sequence of format units.  With a few exceptions, a
 format unit that is not a parenthesized sequence normally corresponds
-to a single address argument to \code{PyArg_ParseTuple()}.  In the
+to a single address argument to \cfunction{PyArg_ParseTuple()}.  In the
 following description, the quoted form is the format unit; the entry
 in (round) parentheses is the Python object type that matches the
 format unit; and the entry in [square] brackets is the type of the \C{}
@@ -582,7 +590,7 @@
 must not provide storage for the string itself; a pointer to an
 existing string is stored into the character pointer variable whose
 address you pass.  The \C{} string is null-terminated.  The Python string
-must not contain embedded null bytes; if it does, a \code{TypeError}
+must not contain embedded null bytes; if it does, a \exception{TypeError}
 exception is raised.
 
 \item[\samp{s\#} (string) {[char *, int]}]
@@ -748,6 +756,7 @@
 
 
 \section{Keyword Parsing with \sectcode{PyArg_ParseTupleAndKeywords()}}
+\label{parseTupleAndKeywords}
 
 The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
 follows:
@@ -817,6 +826,7 @@
 
 
 \section{The \sectcode{Py_BuildValue()} Function}
+\label{buildValue}
 
 This function is the counterpart to \code{PyArg_ParseTuple()}.  It is
 declared as follows:
@@ -945,8 +955,9 @@
 \end{verbatim}
 
 \section{Reference Counts}
+\label{refcounts}
 
-\subsection{Introduction}
+%\subsection{Introduction}
 
 In languages like \C{} or \Cpp{}, the programmer is responsible for
 dynamic allocation and deallocation of memory on the heap.  In \C{}, this
@@ -1007,6 +1018,7 @@
 reference counts.
 
 \subsection{Reference Counting in Python}
+\label{refcountsInPython}
 
 There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
 which handle the incrementing and decrementing of the reference count.
@@ -1054,6 +1066,7 @@
 dispose of the reference properly, as well as the previous owner).
 
 \subsection{Ownership Rules}
+\label{ownershipRules}
 
 Whenever an object reference is passed into or out of a function, it
 is part of the function's interface specification whether ownership is
@@ -1102,6 +1115,7 @@
 function to its caller.
 
 \subsection{Thin Ice}
+\label{thinIce}
 
 There are a few situations where seemingly harmless use of a borrowed
 reference can lead to problems.  These all have to do with implicit
@@ -1181,6 +1195,7 @@
 \end{verbatim}
 
 \subsection{NULL Pointers}
+\label{nullPointers}
 
 In general, functions that take object references as arguments don't
 expect you to pass them \NULL{} pointers, and will dump core (or
@@ -1217,6 +1232,7 @@
 
 
 \section{Writing Extensions in \Cpp{}}
+\label{cplusplus}
 
 It is possible to write extension modules in \Cpp{}.  Some restrictions
 apply.  If the main program (the Python interpreter) is compiled and
@@ -1231,6 +1247,7 @@
 symbol).
 
 \chapter{Embedding Python in another application}
+\label{embedding}
 
 Embedding Python is similar to extending it, but not quite.  The
 difference is that when you extend Python, the main program of the
@@ -1258,6 +1275,7 @@
 
 
 \section{Embedding Python in \Cpp{}}
+\label{embeddingInCplusplus}
 
 It is also possible to embed Python in a \Cpp{} program; precisely how this
 is done will depend on the details of the \Cpp{} system used; in general you
@@ -1267,6 +1285,7 @@
 
 
 \chapter{Dynamic Loading}
+\label{dynload}
 
 On most modern systems it is possible to configure Python to support
 dynamic loading of extension modules implemented in \C{}.  When shared
@@ -1290,12 +1309,14 @@
 
 
 \section{Configuring and Building the Interpreter for Dynamic Loading}
+\label{dynloadConfig}
 
 There are three styles of dynamic loading: one using shared libraries,
 one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
 loading.
 
 \subsection{Shared Libraries}
+\label{sharedlibs}
 
 The following systems support dynamic loading using shared libraries:
 SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!); and probably all
@@ -1308,6 +1329,7 @@
 loading.
 
 \subsection{SGI IRIX 4 Dynamic Loading}
+\label{irixDynload}
 
 Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
 loading.  (SGI IRIX 5 might also support it but it is inferior to
@@ -1329,6 +1351,7 @@
 \file{README} file in the toplevel Python directory.)
 
 \subsection{GNU Dynamic Loading}
+\label{gnuDynload}
 
 GNU dynamic loading supports (according to its \file{README} file) the
 following hardware and software combinations: VAX (Ultrix), Sun 3
@@ -1359,6 +1382,7 @@
 
 
 \section{Building a Dynamically Loadable Module}
+\label{makedynload}
 
 Since there are three styles of dynamic loading, there are also three
 groups of instructions for building a dynamically loadable module.
@@ -1379,6 +1403,7 @@
 
 
 \subsection{Shared Libraries}
+\label{linking}
 
 You must link the \file{.o} file to produce a shared library.  This is 
 done using a special invocation of the \UNIX{} loader/linker,
@@ -1413,6 +1438,7 @@
 
 
 \subsection{SGI IRIX 4 Dynamic Loading}
+\label{irixLinking}
 
 \strong{IMPORTANT:} You must compile your extension module with the
 additional \C{} flag \samp{-G0} (or \samp{-G 0}).  This instruct the
@@ -1441,6 +1467,7 @@
 
 
 \subsection{GNU Dynamic Loading}
+\label{gnuLinking}
 
 Just copy \file{spammodule.o} into a directory along the Python module
 search path.
diff --git a/Doc/ext/ext.tex b/Doc/ext/ext.tex
index d8d5a43..af745f1 100644
--- a/Doc/ext/ext.tex
+++ b/Doc/ext/ext.tex
@@ -30,17 +30,17 @@
 operating system supports this feature.
 
 This document assumes basic knowledge about Python.  For an informal
-introduction to the language, see the Python Tutorial.  The Python
-Reference Manual gives a more formal definition of the language.  The
-Python Library Reference documents the existing object types,
+introduction to the language, see the Python Tutorial.  The \emph{Python
+Reference Manual} gives a more formal definition of the language.  The
+\emph{Python Library Reference} documents the existing object types,
 functions and modules (both built-in and written in Python) that give
 the language its wide application range.
 
 For a detailed description of the whole Python/\C{} API, see the separate
-Python/\C{} API Reference Manual.  \strong{Note:} While that manual is
-still in a state of flux, it is safe to say that it is much more up to
-date than the manual you're reading currently (which has been in need
-for an upgrade for some time now).
+\emph{Python/\C{} API Reference Manual}.  \strong{Note:} While that
+manual is still in a state of flux, it is safe to say that it is much
+more up to date than the manual you're reading currently (which has
+been in need for an upgrade for some time now).
 
 
 \end{abstract}
@@ -51,7 +51,8 @@
 \chapter{Extending Python with \C{} or \Cpp{} code}
 
 
-\section{Introduction}
+%\section{Introduction}
+\label{intro}
 
 It is quite easy to add new built-in modules to Python, if you know
 how to program in \C{}.  Such \dfn{extension modules} can do two things
@@ -69,6 +70,7 @@
 
 
 \section{A Simple Example}
+\label{simpleExample}
 
 Let's create an extension module called \samp{spam} (the favorite food
 of Monty Python fans...) and let's say we want to create a Python
@@ -141,13 +143,13 @@
 containing the arguments.  Each item of the tuple corresponds to an
 argument in the call's argument list.  The arguments are Python
 objects --- in order to do anything with them in our \C{} function we have
-to convert them to \C{} values.  The function \code{PyArg_ParseTuple()}
+to convert them to \C{} values.  The function \cfunction{PyArg_ParseTuple()}
 in the Python API checks the argument types and converts them to \C{}
 values.  It uses a template string to determine the required types of
 the arguments as well as the types of the \C{} variables into which to
 store the converted values.  More about this later.
 
-\code{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
+\cfunction{PyArg_ParseTuple()} returns true (nonzero) if all arguments have
 the right type and its components have been stored in the variables
 whose addresses are passed.  It returns false (zero) if an invalid
 argument list was passed.  In the latter case it also raises an
@@ -156,6 +158,7 @@
 
 
 \section{Intermezzo: Errors and Exceptions}
+\label{errors}
 
 An important convention throughout the Python interpreter is the
 following: when a function fails, it should set an exception condition
@@ -226,7 +229,7 @@
 \code{malloc()} directly this note is of importance.
 
 Also note that, with the important exception of
-\code{PyArg_ParseTuple()} and friends, functions that return an
+\cfunction{PyArg_ParseTuple()} and friends, functions that return an
 integer status usually return a positive value or zero for success and
 \code{-1} for failure, like \UNIX{} system calls.
 
@@ -240,7 +243,7 @@
 course, you should choose exceptions wisely --- don't use
 \code{PyExc_TypeError} to mean that a file couldn't be opened (that
 should probably be \code{PyExc_IOError}).  If something's wrong with
-the argument list, the \code{PyArg_ParseTuple()} function usually
+the argument list, the \cfunction{PyArg_ParseTuple()} function usually
 raises \code{PyExc_TypeError}.  If you have an argument whose value
 which must be in a particular range or must satisfy other conditions,
 \code{PyExc_ValueError} is appropriate.
@@ -277,6 +280,7 @@
 
 
 \section{Back to the Example}
+\label{backToExample}
 
 Going back to our example function, you should now be able to
 understand this statement:
@@ -288,7 +292,7 @@
 
 It returns \NULL{} (the error indicator for functions returning
 object pointers) if an error is detected in the argument list, relying
-on the exception set by \code{PyArg_ParseTuple()}.  Otherwise the
+on the exception set by \cfunction{PyArg_ParseTuple()}.  Otherwise the
 string value of the argument has been copied to the local variable
 \code{command}.  This is a pointer assignment and you are not supposed
 to modify the string to which it points (so in Standard \C{}, the variable
@@ -296,7 +300,7 @@
 *command}).
 
 The next statement is a call to the \UNIX{} function \code{system()},
-passing it the string we just got from \code{PyArg_ParseTuple()}:
+passing it the string we just got from \cfunction{PyArg_ParseTuple()}:
 
 \begin{verbatim}
     sts = system(command);
@@ -305,7 +309,7 @@
 Our \code{spam.system()} function must return the value of \code{sts}
 as a Python object.  This is done using the function
 \code{Py_BuildValue()}, which is something like the inverse of
-\code{PyArg_ParseTuple()}: it takes a format string and an arbitrary
+\cfunction{PyArg_ParseTuple()}: it takes a format string and an arbitrary
 number of \C{} values, and returns a new Python object.  More info on
 \code{Py_BuildValue()} is given later.
 
@@ -331,6 +335,7 @@
 
 
 \section{The Module's Method Table and Initialization Function}
+\label{methodTable}
 
 I promised to show how \code{spam_system()} is called from Python
 programs.  First, we need to list its name and address in a ``method
@@ -349,7 +354,7 @@
 the interpreter the calling convention to be used for the \C{}
 function.  It should normally always be \samp{METH_VARARGS} or
 \samp{METH_VARARGS | METH_KEYWORDS}; a value of \samp{0} means that an
-obsolete variant of \code{PyArg_ParseTuple()} is used.
+obsolete variant of \cfunction{PyArg_ParseTuple()} is used.
 
 When using only \samp{METH_VARARGS}, the function should expect
 the Python-level parameters to be passed in as a tuple acceptable for
@@ -359,7 +364,7 @@
 The \code{METH_KEYWORDS} bit may be set in the third field if keyword
 arguments should be passed to the function.  In this case, the \C{}
 function should accept a third \samp{PyObject *} parameter which will
-be a dictionary of keywords.  Use \code{PyArg_ParseTupleAndKeywords()} 
+be a dictionary of keywords.  Use \cfunction{PyArg_ParseTupleAndKeywords()}
 to parse the arguemts to such a function.
 
 The method table must be passed to the interpreter in the module's
@@ -387,6 +392,7 @@
 
 
 \section{Compilation and Linkage}
+\label{compilation}
 
 There are two more things to do before you can use your new extension:
 compiling and linking it with the Python system.  If you use dynamic
@@ -419,6 +425,7 @@
 \end{verbatim}
 
 \section{Calling Python Functions From \C{}}
+\label{callingPython}
 
 So far we have concentrated on making \C{} functions callable from
 Python.  The reverse is also useful: calling Python functions from \C{}.
@@ -543,8 +550,9 @@
 
 
 \section{Format Strings for \sectcode{PyArg_ParseTuple()}}
+\label{parseTuple}
 
-The \code{PyArg_ParseTuple()} function is declared as follows:
+The \cfunction{PyArg_ParseTuple()} function is declared as follows:
 
 \begin{verbatim}
 int PyArg_ParseTuple(PyObject *arg, char *format, ...);
@@ -558,7 +566,7 @@
 \var{arg} object must match the format and the format must be
 exhausted.
 
-Note that while \code{PyArg_ParseTuple()} checks that the Python
+Note that while \cfunction{PyArg_ParseTuple()} checks that the Python
 arguments have the required types, it cannot check the validity of the
 addresses of \C{} variables passed to the call: if you make mistakes
 there, your code will probably crash or at least overwrite random bits
@@ -568,7 +576,7 @@
 unit describes one Python object; it is usually a single character or
 a parenthesized sequence of format units.  With a few exceptions, a
 format unit that is not a parenthesized sequence normally corresponds
-to a single address argument to \code{PyArg_ParseTuple()}.  In the
+to a single address argument to \cfunction{PyArg_ParseTuple()}.  In the
 following description, the quoted form is the format unit; the entry
 in (round) parentheses is the Python object type that matches the
 format unit; and the entry in [square] brackets is the type of the \C{}
@@ -582,7 +590,7 @@
 must not provide storage for the string itself; a pointer to an
 existing string is stored into the character pointer variable whose
 address you pass.  The \C{} string is null-terminated.  The Python string
-must not contain embedded null bytes; if it does, a \code{TypeError}
+must not contain embedded null bytes; if it does, a \exception{TypeError}
 exception is raised.
 
 \item[\samp{s\#} (string) {[char *, int]}]
@@ -748,6 +756,7 @@
 
 
 \section{Keyword Parsing with \sectcode{PyArg_ParseTupleAndKeywords()}}
+\label{parseTupleAndKeywords}
 
 The \cfunction{PyArg_ParseTupleAndKeywords()} function is declared as
 follows:
@@ -817,6 +826,7 @@
 
 
 \section{The \sectcode{Py_BuildValue()} Function}
+\label{buildValue}
 
 This function is the counterpart to \code{PyArg_ParseTuple()}.  It is
 declared as follows:
@@ -945,8 +955,9 @@
 \end{verbatim}
 
 \section{Reference Counts}
+\label{refcounts}
 
-\subsection{Introduction}
+%\subsection{Introduction}
 
 In languages like \C{} or \Cpp{}, the programmer is responsible for
 dynamic allocation and deallocation of memory on the heap.  In \C{}, this
@@ -1007,6 +1018,7 @@
 reference counts.
 
 \subsection{Reference Counting in Python}
+\label{refcountsInPython}
 
 There are two macros, \code{Py_INCREF(x)} and \code{Py_DECREF(x)},
 which handle the incrementing and decrementing of the reference count.
@@ -1054,6 +1066,7 @@
 dispose of the reference properly, as well as the previous owner).
 
 \subsection{Ownership Rules}
+\label{ownershipRules}
 
 Whenever an object reference is passed into or out of a function, it
 is part of the function's interface specification whether ownership is
@@ -1102,6 +1115,7 @@
 function to its caller.
 
 \subsection{Thin Ice}
+\label{thinIce}
 
 There are a few situations where seemingly harmless use of a borrowed
 reference can lead to problems.  These all have to do with implicit
@@ -1181,6 +1195,7 @@
 \end{verbatim}
 
 \subsection{NULL Pointers}
+\label{nullPointers}
 
 In general, functions that take object references as arguments don't
 expect you to pass them \NULL{} pointers, and will dump core (or
@@ -1217,6 +1232,7 @@
 
 
 \section{Writing Extensions in \Cpp{}}
+\label{cplusplus}
 
 It is possible to write extension modules in \Cpp{}.  Some restrictions
 apply.  If the main program (the Python interpreter) is compiled and
@@ -1231,6 +1247,7 @@
 symbol).
 
 \chapter{Embedding Python in another application}
+\label{embedding}
 
 Embedding Python is similar to extending it, but not quite.  The
 difference is that when you extend Python, the main program of the
@@ -1258,6 +1275,7 @@
 
 
 \section{Embedding Python in \Cpp{}}
+\label{embeddingInCplusplus}
 
 It is also possible to embed Python in a \Cpp{} program; precisely how this
 is done will depend on the details of the \Cpp{} system used; in general you
@@ -1267,6 +1285,7 @@
 
 
 \chapter{Dynamic Loading}
+\label{dynload}
 
 On most modern systems it is possible to configure Python to support
 dynamic loading of extension modules implemented in \C{}.  When shared
@@ -1290,12 +1309,14 @@
 
 
 \section{Configuring and Building the Interpreter for Dynamic Loading}
+\label{dynloadConfig}
 
 There are three styles of dynamic loading: one using shared libraries,
 one using SGI IRIX 4 dynamic loading, and one using GNU dynamic
 loading.
 
 \subsection{Shared Libraries}
+\label{sharedlibs}
 
 The following systems support dynamic loading using shared libraries:
 SunOS 4; Solaris 2; SGI IRIX 5 (but not SGI IRIX 4!); and probably all
@@ -1308,6 +1329,7 @@
 loading.
 
 \subsection{SGI IRIX 4 Dynamic Loading}
+\label{irixDynload}
 
 Only SGI IRIX 4 supports dynamic loading of modules using SGI dynamic
 loading.  (SGI IRIX 5 might also support it but it is inferior to
@@ -1329,6 +1351,7 @@
 \file{README} file in the toplevel Python directory.)
 
 \subsection{GNU Dynamic Loading}
+\label{gnuDynload}
 
 GNU dynamic loading supports (according to its \file{README} file) the
 following hardware and software combinations: VAX (Ultrix), Sun 3
@@ -1359,6 +1382,7 @@
 
 
 \section{Building a Dynamically Loadable Module}
+\label{makedynload}
 
 Since there are three styles of dynamic loading, there are also three
 groups of instructions for building a dynamically loadable module.
@@ -1379,6 +1403,7 @@
 
 
 \subsection{Shared Libraries}
+\label{linking}
 
 You must link the \file{.o} file to produce a shared library.  This is 
 done using a special invocation of the \UNIX{} loader/linker,
@@ -1413,6 +1438,7 @@
 
 
 \subsection{SGI IRIX 4 Dynamic Loading}
+\label{irixLinking}
 
 \strong{IMPORTANT:} You must compile your extension module with the
 additional \C{} flag \samp{-G0} (or \samp{-G 0}).  This instruct the
@@ -1441,6 +1467,7 @@
 
 
 \subsection{GNU Dynamic Loading}
+\label{gnuLinking}
 
 Just copy \file{spammodule.o} into a directory along the Python module
 search path.
