diff --git a/Doc/lib/libftplib.tex b/Doc/lib/libftplib.tex
index 39f5657..cda8b66 100644
--- a/Doc/lib/libftplib.tex
+++ b/Doc/lib/libftplib.tex
@@ -3,16 +3,15 @@
 \stmodindex{ftplib}
 \indexii{FTP}{protocol}
 
-\setindexsubitem{(in module ftplib)}
 
-This module defines the class \code{FTP} and a few related items.  The
-\code{FTP} class implements the client side of the FTP protocol.  You
+This module defines the class \class{FTP} and a few related items.  The
+\class{FTP} class implements the client side of the FTP protocol.  You
 can use this to write Python programs that perform a variety of
 automated FTP jobs, such as mirroring other ftp servers.  It is also
-used by the module \code{urllib} to handle URLs that use FTP.  For
+used by the module \module{urllib} to handle URLs that use FTP.  For
 more information on FTP (File Transfer Protocol), see Internet \rfc{959}.
 
-Here's a sample session using the \code{ftplib} module:
+Here's a sample session using the \module{ftplib} module:
 
 \begin{verbatim}
 >>> from ftplib import FTP
@@ -28,23 +27,23 @@
  .
 >>> ftp.quit()
 \end{verbatim}
-%
+
 The module defines the following items:
 
-\begin{funcdesc}{FTP}{\optional{host\optional{\, user\, passwd\, acct}}}
+\begin{classdesc}{FTP}{\optional{host\optional{, user\optional{, passwd\optional{, acct}}}}}
 Return a new instance of the \code{FTP} class.  When
 \var{host} is given, the method call \code{connect(\var{host})} is
 made.  When \var{user} is given, additionally the method call
 \code{login(\var{user}, \var{passwd}, \var{acct})} is made (where
 \var{passwd} and \var{acct} default to the empty string when not given).
-\end{funcdesc}
+\end{classdesc}
 
 \begin{datadesc}{all_errors}
-The set of all exceptions (as a tuple) that methods of \code{FTP}
+The set of all exceptions (as a tuple) that methods of \class{FTP}
 instances may raise as a result of problems with the FTP connection
 (as opposed to programming errors made by the caller).  This set
 includes the four exceptions listed below as well as
-\code{socket.error} and \code{IOError}.
+\exception{socket.error} and \exception{IOError}.
 \end{datadesc}
 
 \begin{excdesc}{error_reply}
@@ -66,21 +65,21 @@
 
 \subsection{FTP Objects}
 
-FTP instances have the following methods:
+\class{FTP} instances have the following methods:
 
-\setindexsubitem{(FTP object method)}
+\setindexsubitem{(FTP method)}
 
 \begin{funcdesc}{set_debuglevel}{level}
 Set the instance's debugging level.  This controls the amount of
-debugging output printed.  The default, 0, produces no debugging
-output.  A value of 1 produces a moderate amount of debugging output,
-generally a single line per request.  A value of 2 or higher produces
-the maximum amount of debugging output, logging each line sent and
-received on the control connection.
+debugging output printed.  The default, \code{0}, produces no
+debugging output.  A value of \code{1} produces a moderate amount of
+debugging output, generally a single line per request.  A value of
+\code{2} or higher produces the maximum amount of debugging output,
+logging each line sent and received on the control connection.
 \end{funcdesc}
 
-\begin{funcdesc}{connect}{host\optional{\, port}}
-Connect to the given host and port.  The default port number is 21, as
+\begin{funcdesc}{connect}{host\optional{, port}}
+Connect to the given host and port.  The default port number is \code{21}, as
 specified by the FTP protocol specification.  It is rarely needed to
 specify a different port number.  This function should be called only
 once for each instance; it should not be called at all if a host was
@@ -94,15 +93,15 @@
 information that may be relevant to the user.)
 \end{funcdesc}
 
-\begin{funcdesc}{login}{\optional{user\optional{\, passwd\optional{\, acct}}}}
+\begin{funcdesc}{login}{\optional{user\optional{, passwd\optional{, acct}}}}
 Log in as the given \var{user}.  The \var{passwd} and \var{acct}
 parameters are optional and default to the empty string.  If no
-\var{user} is specified, it defaults to \samp{anonymous}.  If
+\var{user} is specified, it defaults to \code{'anonymous'}.  If
 \var{user} is \code{anonymous}, the default \var{passwd} is
 \samp{\var{realuser}@\var{host}} where \var{realuser} is the real user
-name (glanced from the \samp{LOGNAME} or \samp{USER} environment
+name (glanced from the \envvar{LOGNAME} or \envvar{USER} environment
 variable) and \var{host} is the hostname as returned by
-\code{socket.gethostname()}.  This function should be called only
+\function{socket.gethostname()}.  This function should be called only
 once for each instance, after a connection has been established; it
 should not be called at all if a host and user were given when the
 instance was created.  Most FTP commands are only allowed after the
@@ -125,9 +124,9 @@
 Raise an exception otherwise.
 \end{funcdesc}
 
-\begin{funcdesc}{retrbinary}{command\, callback\optional{\, maxblocksize}}
+\begin{funcdesc}{retrbinary}{command, callback\optional{, maxblocksize}}
 Retrieve a file in binary transfer mode.  \var{command} should be an
-appropriate \samp{RETR} command, i.e.\ \code{"RETR \var{filename}"}.
+appropriate \samp{RETR} command, i.e.\ \code{'RETR \var{filename}'}.
 The \var{callback} function is called for each block of data received,
 with a single string argument giving the data block.
 The optional \var{maxblocksize} argument specifies the maximum chunk size to
@@ -136,47 +135,47 @@
 \var{callback}).  A reasonable default is chosen.
 \end{funcdesc}
 
-\begin{funcdesc}{retrlines}{command\optional{\, callback}}
+\begin{funcdesc}{retrlines}{command\optional{, callback}}
 Retrieve a file or directory listing in \ASCII{} transfer mode.
 \var{command} should be an appropriate \samp{RETR} command (see
-\code{retrbinary()} or a \samp{LIST} command (usually just the string
-\code{"LIST"}).  The \var{callback} function is called for each line,
+\method{retrbinary()} or a \samp{LIST} command (usually just the string
+\code{'LIST'}).  The \var{callback} function is called for each line,
 with the trailing CRLF stripped.  The default \var{callback} prints
 the line to \code{sys.stdout}.
 \end{funcdesc}
 
-\begin{funcdesc}{storbinary}{command\, file\, blocksize}
+\begin{funcdesc}{storbinary}{command, file, blocksize}
 Store a file in binary transfer mode.  \var{command} should be an
 appropriate \samp{STOR} command, i.e.\ \code{"STOR \var{filename}"}.
-\var{file} is an open file object which is read until EOF using its
-\code{read()} method in blocks of size \var{blocksize} to provide the
+\var{file} is an open file object which is read until \EOF{} using its
+\method{read()} method in blocks of size \var{blocksize} to provide the
 data to be stored.
 \end{funcdesc}
 
-\begin{funcdesc}{storlines}{command\, file}
+\begin{funcdesc}{storlines}{command, file}
 Store a file in \ASCII{} transfer mode.  \var{command} should be an
-appropriate \samp{STOR} command (see \code{storbinary()}).  Lines are
-read until EOF from the open file object \var{file} using its
-\code{readline()} method to privide the data to be stored.
+appropriate \samp{STOR} command (see \method{storbinary()}).  Lines are
+read until \EOF{} from the open file object \var{file} using its
+\method{readline()} method to privide the data to be stored.
 \end{funcdesc}
 
-\begin{funcdesc}{nlst}{argument\optional{\, \ldots}}
+\begin{funcdesc}{nlst}{argument\optional{, \ldots}}
 Return a list of files as returned by the \samp{NLST} command.  The
 optional \var{argument} is a directory to list (default is the current
 server directory).  Multiple arguments can be used to pass
 non-standard options to the \samp{NLST} command.
 \end{funcdesc}
 
-\begin{funcdesc}{dir}{argument\optional{\, \ldots}}
+\begin{funcdesc}{dir}{argument\optional{, \ldots}}
 Return a directory listing as returned by the \samp{LIST} command, as
 a list of lines.  The optional \var{argument} is a directory to list
 (default is the current server directory).  Multiple arguments can be
 used to pass non-standard options to the \samp{LIST} command.  If the
 last argument is a function, it is used as a \var{callback} function
-as for \code{retrlines()}.
+as for \method{retrlines()}.
 \end{funcdesc}
 
-\begin{funcdesc}{rename}{fromname\, toname}
+\begin{funcdesc}{rename}{fromname, toname}
 Rename file \var{fromname} on the server to \var{toname}.
 \end{funcdesc}
 
@@ -195,12 +194,12 @@
 \begin{funcdesc}{quit}{}
 Send a \samp{QUIT} command to the server and close the connection.
 This is the ``polite'' way to close a connection, but it may raise an
-exception of the server reponds with an error to the \code{QUIT}
+exception of the server reponds with an error to the \samp{QUIT}
 command.
 \end{funcdesc}
 
 \begin{funcdesc}{close}{}
 Close the connection unilaterally.  This should not be applied to an
 already closed connection (e.g.\ after a successful call to
-\code{quit()}.
+\method{quit()}.
 \end{funcdesc}
diff --git a/Doc/libftplib.tex b/Doc/libftplib.tex
index 39f5657..cda8b66 100644
--- a/Doc/libftplib.tex
+++ b/Doc/libftplib.tex
@@ -3,16 +3,15 @@
 \stmodindex{ftplib}
 \indexii{FTP}{protocol}
 
-\setindexsubitem{(in module ftplib)}
 
-This module defines the class \code{FTP} and a few related items.  The
-\code{FTP} class implements the client side of the FTP protocol.  You
+This module defines the class \class{FTP} and a few related items.  The
+\class{FTP} class implements the client side of the FTP protocol.  You
 can use this to write Python programs that perform a variety of
 automated FTP jobs, such as mirroring other ftp servers.  It is also
-used by the module \code{urllib} to handle URLs that use FTP.  For
+used by the module \module{urllib} to handle URLs that use FTP.  For
 more information on FTP (File Transfer Protocol), see Internet \rfc{959}.
 
-Here's a sample session using the \code{ftplib} module:
+Here's a sample session using the \module{ftplib} module:
 
 \begin{verbatim}
 >>> from ftplib import FTP
@@ -28,23 +27,23 @@
  .
 >>> ftp.quit()
 \end{verbatim}
-%
+
 The module defines the following items:
 
-\begin{funcdesc}{FTP}{\optional{host\optional{\, user\, passwd\, acct}}}
+\begin{classdesc}{FTP}{\optional{host\optional{, user\optional{, passwd\optional{, acct}}}}}
 Return a new instance of the \code{FTP} class.  When
 \var{host} is given, the method call \code{connect(\var{host})} is
 made.  When \var{user} is given, additionally the method call
 \code{login(\var{user}, \var{passwd}, \var{acct})} is made (where
 \var{passwd} and \var{acct} default to the empty string when not given).
-\end{funcdesc}
+\end{classdesc}
 
 \begin{datadesc}{all_errors}
-The set of all exceptions (as a tuple) that methods of \code{FTP}
+The set of all exceptions (as a tuple) that methods of \class{FTP}
 instances may raise as a result of problems with the FTP connection
 (as opposed to programming errors made by the caller).  This set
 includes the four exceptions listed below as well as
-\code{socket.error} and \code{IOError}.
+\exception{socket.error} and \exception{IOError}.
 \end{datadesc}
 
 \begin{excdesc}{error_reply}
@@ -66,21 +65,21 @@
 
 \subsection{FTP Objects}
 
-FTP instances have the following methods:
+\class{FTP} instances have the following methods:
 
-\setindexsubitem{(FTP object method)}
+\setindexsubitem{(FTP method)}
 
 \begin{funcdesc}{set_debuglevel}{level}
 Set the instance's debugging level.  This controls the amount of
-debugging output printed.  The default, 0, produces no debugging
-output.  A value of 1 produces a moderate amount of debugging output,
-generally a single line per request.  A value of 2 or higher produces
-the maximum amount of debugging output, logging each line sent and
-received on the control connection.
+debugging output printed.  The default, \code{0}, produces no
+debugging output.  A value of \code{1} produces a moderate amount of
+debugging output, generally a single line per request.  A value of
+\code{2} or higher produces the maximum amount of debugging output,
+logging each line sent and received on the control connection.
 \end{funcdesc}
 
-\begin{funcdesc}{connect}{host\optional{\, port}}
-Connect to the given host and port.  The default port number is 21, as
+\begin{funcdesc}{connect}{host\optional{, port}}
+Connect to the given host and port.  The default port number is \code{21}, as
 specified by the FTP protocol specification.  It is rarely needed to
 specify a different port number.  This function should be called only
 once for each instance; it should not be called at all if a host was
@@ -94,15 +93,15 @@
 information that may be relevant to the user.)
 \end{funcdesc}
 
-\begin{funcdesc}{login}{\optional{user\optional{\, passwd\optional{\, acct}}}}
+\begin{funcdesc}{login}{\optional{user\optional{, passwd\optional{, acct}}}}
 Log in as the given \var{user}.  The \var{passwd} and \var{acct}
 parameters are optional and default to the empty string.  If no
-\var{user} is specified, it defaults to \samp{anonymous}.  If
+\var{user} is specified, it defaults to \code{'anonymous'}.  If
 \var{user} is \code{anonymous}, the default \var{passwd} is
 \samp{\var{realuser}@\var{host}} where \var{realuser} is the real user
-name (glanced from the \samp{LOGNAME} or \samp{USER} environment
+name (glanced from the \envvar{LOGNAME} or \envvar{USER} environment
 variable) and \var{host} is the hostname as returned by
-\code{socket.gethostname()}.  This function should be called only
+\function{socket.gethostname()}.  This function should be called only
 once for each instance, after a connection has been established; it
 should not be called at all if a host and user were given when the
 instance was created.  Most FTP commands are only allowed after the
@@ -125,9 +124,9 @@
 Raise an exception otherwise.
 \end{funcdesc}
 
-\begin{funcdesc}{retrbinary}{command\, callback\optional{\, maxblocksize}}
+\begin{funcdesc}{retrbinary}{command, callback\optional{, maxblocksize}}
 Retrieve a file in binary transfer mode.  \var{command} should be an
-appropriate \samp{RETR} command, i.e.\ \code{"RETR \var{filename}"}.
+appropriate \samp{RETR} command, i.e.\ \code{'RETR \var{filename}'}.
 The \var{callback} function is called for each block of data received,
 with a single string argument giving the data block.
 The optional \var{maxblocksize} argument specifies the maximum chunk size to
@@ -136,47 +135,47 @@
 \var{callback}).  A reasonable default is chosen.
 \end{funcdesc}
 
-\begin{funcdesc}{retrlines}{command\optional{\, callback}}
+\begin{funcdesc}{retrlines}{command\optional{, callback}}
 Retrieve a file or directory listing in \ASCII{} transfer mode.
 \var{command} should be an appropriate \samp{RETR} command (see
-\code{retrbinary()} or a \samp{LIST} command (usually just the string
-\code{"LIST"}).  The \var{callback} function is called for each line,
+\method{retrbinary()} or a \samp{LIST} command (usually just the string
+\code{'LIST'}).  The \var{callback} function is called for each line,
 with the trailing CRLF stripped.  The default \var{callback} prints
 the line to \code{sys.stdout}.
 \end{funcdesc}
 
-\begin{funcdesc}{storbinary}{command\, file\, blocksize}
+\begin{funcdesc}{storbinary}{command, file, blocksize}
 Store a file in binary transfer mode.  \var{command} should be an
 appropriate \samp{STOR} command, i.e.\ \code{"STOR \var{filename}"}.
-\var{file} is an open file object which is read until EOF using its
-\code{read()} method in blocks of size \var{blocksize} to provide the
+\var{file} is an open file object which is read until \EOF{} using its
+\method{read()} method in blocks of size \var{blocksize} to provide the
 data to be stored.
 \end{funcdesc}
 
-\begin{funcdesc}{storlines}{command\, file}
+\begin{funcdesc}{storlines}{command, file}
 Store a file in \ASCII{} transfer mode.  \var{command} should be an
-appropriate \samp{STOR} command (see \code{storbinary()}).  Lines are
-read until EOF from the open file object \var{file} using its
-\code{readline()} method to privide the data to be stored.
+appropriate \samp{STOR} command (see \method{storbinary()}).  Lines are
+read until \EOF{} from the open file object \var{file} using its
+\method{readline()} method to privide the data to be stored.
 \end{funcdesc}
 
-\begin{funcdesc}{nlst}{argument\optional{\, \ldots}}
+\begin{funcdesc}{nlst}{argument\optional{, \ldots}}
 Return a list of files as returned by the \samp{NLST} command.  The
 optional \var{argument} is a directory to list (default is the current
 server directory).  Multiple arguments can be used to pass
 non-standard options to the \samp{NLST} command.
 \end{funcdesc}
 
-\begin{funcdesc}{dir}{argument\optional{\, \ldots}}
+\begin{funcdesc}{dir}{argument\optional{, \ldots}}
 Return a directory listing as returned by the \samp{LIST} command, as
 a list of lines.  The optional \var{argument} is a directory to list
 (default is the current server directory).  Multiple arguments can be
 used to pass non-standard options to the \samp{LIST} command.  If the
 last argument is a function, it is used as a \var{callback} function
-as for \code{retrlines()}.
+as for \method{retrlines()}.
 \end{funcdesc}
 
-\begin{funcdesc}{rename}{fromname\, toname}
+\begin{funcdesc}{rename}{fromname, toname}
 Rename file \var{fromname} on the server to \var{toname}.
 \end{funcdesc}
 
@@ -195,12 +194,12 @@
 \begin{funcdesc}{quit}{}
 Send a \samp{QUIT} command to the server and close the connection.
 This is the ``polite'' way to close a connection, but it may raise an
-exception of the server reponds with an error to the \code{QUIT}
+exception of the server reponds with an error to the \samp{QUIT}
 command.
 \end{funcdesc}
 
 \begin{funcdesc}{close}{}
 Close the connection unilaterally.  This should not be applied to an
 already closed connection (e.g.\ after a successful call to
-\code{quit()}.
+\method{quit()}.
 \end{funcdesc}
