(libhtmllib.tex, libsgmllib.tex, libformatter.tex):
	Improve indexing somewhat.  Add small intros to the "implementations"
	sections of the formatter module doc.
diff --git a/Doc/lib/libformatter.tex b/Doc/lib/libformatter.tex
index c0ebab4..42783fb 100644
--- a/Doc/lib/libformatter.tex
+++ b/Doc/lib/libformatter.tex
@@ -46,11 +46,15 @@
 
 The following attributes are defined for formatter instance objects:
 
+\renewcommand{\indexsubitem}{(formatter object data)}
+
 \begin{datadesc}{writer}
 The writer instance with which the formatter interacts.
 \end{datadesc}
 
 
+\renewcommand{\indexsubitem}{(formatter object method)}
+
 \begin{funcdesc}{end_paragraph}{blanklines}
 Close any open paragraphs and insert at least \code{blanklines}
 before the next paragraph.
@@ -178,16 +182,25 @@
 
 \subsection{Formatter Implementations}
 
+Two implementations of formatter objects are provided by this module.
+Most applications may use one of these classes without modification or
+subclassing.
+
+\renewcommand{\indexsubitem}{(in module formatter)}
+
 \begin{funcdesc}{NullFormatter}{\optional{writer\code{ = None}}}
 A formatter which does nothing.  If \code{writer} is omitted, a
 \code{NullWriter} instance is created.  No methods of the writer are
-called by \code{NullWriter} instances.
+called by \code{NullWriter} instances.  Implementations should inherit
+from this class if implementing a writer interface but don't need to
+inherit any implementation.
 \end{funcdesc}
 
 \begin{funcdesc}{AbstractFormatter}{writer}
 The standard formatter.  This implementation has demonstrated wide
 applicability to many writers, and may be used directly in most
-circumstances.
+circumstances.  It has been used to implement a full-featured
+world-wide web browser.
 \end{funcdesc}
 
 
@@ -201,6 +214,8 @@
 class as a formatter, the writer must typically be provided by the
 application.
 
+\renewcommand{\indexsubitem}{(writer object method)}
+
 \begin{funcdesc}{new_alignment}{align}
 Set the alignment style.  The \code{align} value can be any object,
 but by convention is a string or \code{None}, where \code{None}
@@ -283,6 +298,12 @@
 
 \subsection{Writer Implementations}
 
+Three implementations of the writer object interface are provided as
+examples by this module.  Most applications will need to derive new
+writer classes from the \code{NullWriter} class.
+
+\renewcommand{\indexsubitem}{(in module formatter)}
+
 \begin{funcdesc}{NullWriter}{}
 A writer which only provides the interface definition; no actions are
 taken on any methods.  This should be the base class for all writers
diff --git a/Doc/lib/libhtmllib.tex b/Doc/lib/libhtmllib.tex
index cc9599d..bf57ea9 100644
--- a/Doc/lib/libhtmllib.tex
+++ b/Doc/lib/libhtmllib.tex
@@ -69,6 +69,8 @@
 In addition to tag methods, the \code{HTMLParser} class provides some
 additional methods and instance variables for use within tag methods.
 
+\renewcommand{\indexsubitem}{({\tt HTMLParser} method)}
+
 \begin{datadesc}{formatter}
 This is the formatter instance associated with the parser.
 \end{datadesc}
diff --git a/Doc/lib/libsgmllib.tex b/Doc/lib/libsgmllib.tex
index 23d8504..dc3582b 100644
--- a/Doc/lib/libsgmllib.tex
+++ b/Doc/lib/libsgmllib.tex
@@ -2,13 +2,11 @@
 \stmodindex{sgmllib}
 \index{SGML}
 
-\renewcommand{\indexsubitem}{(in module sgmllib)}
-
 This module defines a class \code{SGMLParser} which serves as the
 basis for parsing text files formatted in SGML (Standard Generalized
 Mark-up Language).  In fact, it does not provide a full SGML parser
---- it only parses SGML insofar as it is used by HTML, and the module only
-exists as a basis for the \code{htmllib} module.
+--- it only parses SGML insofar as it is used by HTML, and the module
+only exists as a base for the \code{htmllib} module.
 \stmodindex{htmllib}
 
 In particular, the parser is hardcoded to recognize the following
@@ -37,6 +35,8 @@
 The \code{SGMLParser} class must be instantiated without arguments.
 It has the following interface methods:
 
+\renewcommand{\indexsubitem}{({\tt SGMLParser} method)}
+
 \begin{funcdesc}{reset}{}
 Reset the instance.  Loses all unprocessed data.  This is called
 implicitly at instantiation time.
diff --git a/Doc/libformatter.tex b/Doc/libformatter.tex
index c0ebab4..42783fb 100644
--- a/Doc/libformatter.tex
+++ b/Doc/libformatter.tex
@@ -46,11 +46,15 @@
 
 The following attributes are defined for formatter instance objects:
 
+\renewcommand{\indexsubitem}{(formatter object data)}
+
 \begin{datadesc}{writer}
 The writer instance with which the formatter interacts.
 \end{datadesc}
 
 
+\renewcommand{\indexsubitem}{(formatter object method)}
+
 \begin{funcdesc}{end_paragraph}{blanklines}
 Close any open paragraphs and insert at least \code{blanklines}
 before the next paragraph.
@@ -178,16 +182,25 @@
 
 \subsection{Formatter Implementations}
 
+Two implementations of formatter objects are provided by this module.
+Most applications may use one of these classes without modification or
+subclassing.
+
+\renewcommand{\indexsubitem}{(in module formatter)}
+
 \begin{funcdesc}{NullFormatter}{\optional{writer\code{ = None}}}
 A formatter which does nothing.  If \code{writer} is omitted, a
 \code{NullWriter} instance is created.  No methods of the writer are
-called by \code{NullWriter} instances.
+called by \code{NullWriter} instances.  Implementations should inherit
+from this class if implementing a writer interface but don't need to
+inherit any implementation.
 \end{funcdesc}
 
 \begin{funcdesc}{AbstractFormatter}{writer}
 The standard formatter.  This implementation has demonstrated wide
 applicability to many writers, and may be used directly in most
-circumstances.
+circumstances.  It has been used to implement a full-featured
+world-wide web browser.
 \end{funcdesc}
 
 
@@ -201,6 +214,8 @@
 class as a formatter, the writer must typically be provided by the
 application.
 
+\renewcommand{\indexsubitem}{(writer object method)}
+
 \begin{funcdesc}{new_alignment}{align}
 Set the alignment style.  The \code{align} value can be any object,
 but by convention is a string or \code{None}, where \code{None}
@@ -283,6 +298,12 @@
 
 \subsection{Writer Implementations}
 
+Three implementations of the writer object interface are provided as
+examples by this module.  Most applications will need to derive new
+writer classes from the \code{NullWriter} class.
+
+\renewcommand{\indexsubitem}{(in module formatter)}
+
 \begin{funcdesc}{NullWriter}{}
 A writer which only provides the interface definition; no actions are
 taken on any methods.  This should be the base class for all writers
diff --git a/Doc/libhtmllib.tex b/Doc/libhtmllib.tex
index cc9599d..bf57ea9 100644
--- a/Doc/libhtmllib.tex
+++ b/Doc/libhtmllib.tex
@@ -69,6 +69,8 @@
 In addition to tag methods, the \code{HTMLParser} class provides some
 additional methods and instance variables for use within tag methods.
 
+\renewcommand{\indexsubitem}{({\tt HTMLParser} method)}
+
 \begin{datadesc}{formatter}
 This is the formatter instance associated with the parser.
 \end{datadesc}
diff --git a/Doc/libsgmllib.tex b/Doc/libsgmllib.tex
index 23d8504..dc3582b 100644
--- a/Doc/libsgmllib.tex
+++ b/Doc/libsgmllib.tex
@@ -2,13 +2,11 @@
 \stmodindex{sgmllib}
 \index{SGML}
 
-\renewcommand{\indexsubitem}{(in module sgmllib)}
-
 This module defines a class \code{SGMLParser} which serves as the
 basis for parsing text files formatted in SGML (Standard Generalized
 Mark-up Language).  In fact, it does not provide a full SGML parser
---- it only parses SGML insofar as it is used by HTML, and the module only
-exists as a basis for the \code{htmllib} module.
+--- it only parses SGML insofar as it is used by HTML, and the module
+only exists as a base for the \code{htmllib} module.
 \stmodindex{htmllib}
 
 In particular, the parser is hardcoded to recognize the following
@@ -37,6 +35,8 @@
 The \code{SGMLParser} class must be instantiated without arguments.
 It has the following interface methods:
 
+\renewcommand{\indexsubitem}{({\tt SGMLParser} method)}
+
 \begin{funcdesc}{reset}{}
 Reset the instance.  Loses all unprocessed data.  This is called
 implicitly at instantiation time.