diff --git a/Doc/lib/libnetrc.tex b/Doc/lib/libnetrc.tex
index 4d23769..58ba88a 100644
--- a/Doc/lib/libnetrc.tex
+++ b/Doc/lib/libnetrc.tex
@@ -1,30 +1,35 @@
 % Module and documentation by Eric S. Raymond, 21 Dec 1998 
-\section{Standard Module \module{netrc}}
-\stmodindex{netrc}
-\label{module-netrc}
 
-The \code{netrc} class parses and encapsulates the netrc file format
-used by Unix's ftp(1) and other FTP clientd
+\section{\module{netrc} ---
+         \file{.netrc} processing}
+
+\declaremodule{standard}{netrc}
+\moduleauthor{Eric S. Raymond}{esr@snark.thyrsus.com}
+\sectionauthor{Eric S. Raymond}{esr@snark.thyrsus.com}
+
+
+The \class{netrc} class parses and encapsulates the netrc file format
+used by the \UNIX{} \program{ftp} program and other FTP clients.
 
 \begin{classdesc}{netrc}{\optional{file}}
 A \class{netrc} instance or subclass instance enapsulates data from 
-a netrc file.  The initialization argument, if present, specifies the file
-to parse.  If no argument is given, the file .netrc in the user's home
-directory will be read.  Parse errors will throw a SyntaxError
-exception with associated diagnostic information including the file
+a netrc file.  The initialization argument, if present, specifies the
+file to parse.  If no argument is given, the file \file{.netrc} in the
+user's home directory will be read.  Parse errors will raise
+\exception{SyntaxError} with diagnostic information including the file 
 name, line number, and terminating token.
 \end{classdesc}
 
-\subsection{netrc Objects}
-\label{netrc-objects}
+\subsection{netrc Objects \label{netrc-objects}}
 
 A \class{netrc} instance has the following methods:
 
-\begin{methoddesc}{authenticators}{}
-Return a 3-tuple (login, account, password) of authenticators for the
-given host.  If the netrc file did not contain an entry for the given
-host, return the tuple associated with the `default' entry.  If
-neither matching host nor default entry is available, return None.
+\begin{methoddesc}{authenticators}{host}
+Return a 3-tuple \code{(\var{login}, \var{account}, \var{password})}
+of authenticators for \var{host}.  If the netrc file did not
+contain an entry for the given host, return the tuple associated with
+the `default' entry.  If neither matching host nor default entry is
+available, return \code{None}.
 \end{methoddesc}
 
 \begin{methoddesc}{__repr__}{host}
@@ -35,13 +40,11 @@
 Instances of \class{netrc} have public instance variables:
 
 \begin{memberdesc}{hosts}
-Dictionmary mapping host names to login/account/password tuples.  The
-`default' entry, if any, is represented as a pseudo-host by that name.
+Dictionmary mapping host names to \code{(\var{login}, \var{account},
+\var{password})} tuples.  The `default' entry, if any, is represented
+as a pseudo-host by that name.
 \end{memberdesc}
 
 \begin{memberdesc}{macros}
 Dictionary mapping macro names to string lists.
 \end{memberdesc}
-
-
-
diff --git a/Doc/lib/libshlex.tex b/Doc/lib/libshlex.tex
index 8dded14..bf26e94 100644
--- a/Doc/lib/libshlex.tex
+++ b/Doc/lib/libshlex.tex
@@ -1,31 +1,36 @@
 % Module and documentation by Eric S. Raymond, 21 Dec 1998 
-\section{Standard Module \module{shlex}}
-\stmodindex{shlex}
-\label{module-shlex}
 
-The \code{shlex} class makes it easy to write lexical analyzers for
-simple syntaxes resembling that of the Unix shell.  This will often
-be useful for writing minilanguages, e.g. in run control files for
+\section{\module{shlex} ---
+         Simple lexical analysis}
+
+\declaremodule{standard}{shlex}
+\moduleauthor{Eric S. Raymond}{esr@snark.thyrsus.com}
+\sectionauthor{Eric S. Raymond}{esr@snark.thyrsus.com}
+
+
+The \class{shlex} class makes it easy to write lexical analyzers for
+simple syntaxes resembling that of the \UNIX{} shell.  This will often
+be useful for writing minilanguages, e.g.\ in run control files for
 Python applications.
 
 \begin{classdesc}{shlex}{\optional{stream}}
 A \class{shlex} instance or subclass instance is a lexical analyzer
 object.  The initialization argument, if present, specifies where to
 read characters from. It must be a file- or stream-like object with
-\method{read} and \method{readline} methods.  If no argument is given,
-input will be taken from sys.stdin.
+\method{read()} and \method{readline()} methods.  If no argument is given,
+input will be taken from \code{sys.stdin}.
 
 \end{classdesc}
 
-\subsection{shlex Objects}
-\label{shlex-objects}
+\subsection{shlex Objects \label{shlex-objects}}
 
 A \class{shlex} instance has the following methods:
 
 \begin{methoddesc}{get_token}{}
-Return a token.  If tokens have been stacked using \method{push_token},
-pop a token off the stack.  Otherwise, read one from the input stream.
-If reading encounters an immediate end-of-file, '' is returned.
+Return a token.  If tokens have been stacked using
+\method{push_token()}, pop a token off the stack.  Otherwise, read one
+from the input stream.  If reading encounters an immediate
+end-of-file, an empty string is returned. 
 \end{methoddesc}
 
 \begin{methoddesc}{push_token}{str}
@@ -39,17 +44,18 @@
 \begin{memberdesc}{commenters}
 The string of characters that are recognized as comment beginners.
 All characters from the comment beginner to end of line are ignored.
-Includes just '#' by default.   
+Includes just \character{\#} by default.   
 \end{memberdesc}
 
 \begin{memberdesc}{wordchars}
 The string of characters that will accumulate into multi-character
-tokens. By default, includes all ASCII alphanumerics and underscore.
+tokens. By default, includes all \ASCII{} alphanumerics and
+underscore.
 \end{memberdesc}
 
 \begin{memberdesc}{whitespace}
 Characters that will be considered whitespace and skipped.  Whitespace
-bounds tokens.  By default, includes space and tab and linefeed and
+bounds tokens.  By default, includes space, tab, linefeed and
 carriage-return.
 \end{memberdesc}
 
@@ -57,14 +63,14 @@
 Characters that will be considered string quotes.  The token
 accumulates until the same quote is encountered again (thus, different
 quote types protect each other as in the shall.)  By default, includes
-ASCII single and double quotes.
+\ASCII{} single and double quotes.
 \end{memberdesc}
 
 Note that any character not declared to be a word character,
 whitespace, or a quote will be returned as a single-character token.
 
 Quote and comment characters are not recognized within words.  Thus,
-the bare words ``ain't'' and ``ain#t'' would be returned as single
+the bare words \samp{ain't} and \samp{ain\#t} would be returned as single
 tokens by the default parser.
 
 \begin{memberdesc}{lineno}
@@ -72,6 +78,6 @@
 \end{memberdesc}
 
 \begin{memberdesc}{token}
-The token buffer.  It may be useful to examine this when catching exceptions.
+The token buffer.  It may be useful to examine this when catching
+exceptions.
 \end{memberdesc}
-
