diff --git a/Doc/lib/libarray.tex b/Doc/lib/libarray.tex
index 034ac32..ea68fb1 100644
--- a/Doc/lib/libarray.tex
+++ b/Doc/lib/libarray.tex
@@ -63,8 +63,8 @@
 \end{funcdesc}
 
 \begin{funcdesc}{fromlist}{list}
-Appends items from the list.  This is equivalent to
-\code{for x in \var{list}: a.append(x)}
+Append items from the list.  This is equivalent to
+\code{for x in \var{list}:\ a.append(x)}
 except that if there is a type error, the array is unchanged.
 \end{funcdesc}
 
diff --git a/Doc/lib/libcgi.tex b/Doc/lib/libcgi.tex
index a5d1cdf..082a2a1 100644
--- a/Doc/lib/libcgi.tex
+++ b/Doc/lib/libcgi.tex
@@ -62,7 +62,9 @@
 the form was submitted through a POST request).  The keys in the
 resulting dictionary are the field names used in the submission; the
 values are {\em lists} of the field values (since field name may be
-used multiple times in a single form).  As a side effect, it sets
+used multiple times in a single form).  \samp{\%} escapes in the
+values are translated to their single-character equivalent using
+\code{urllib.unquote()}.  As a side effect, this function sets
 \code{environ['QUERY_STRING']} to the raw query string, if it isn't
 already set.
 \end{funcdesc}
@@ -79,7 +81,9 @@
 \end{funcdesc}
 
 \begin{funcdesc}{print_form}{form}
-Print a piece of HTML text showing the contents of the \var{form}.
+Print a piece of HTML text showing the contents of the \var{form} (a
+dictionary, an instance of the \code{FormContentDict} class defined
+below, or a subclass thereof).
 This is mainly useful when debugging a CGI script.
 \end{funcdesc}
 
diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex
index 91a9ec9..9ebe210 100644
--- a/Doc/lib/libfuncs.tex
+++ b/Doc/lib/libfuncs.tex
@@ -42,7 +42,7 @@
 
 \begin{funcdesc}{compile}{string\, filename\, kind}
   Compile the \var{string} into a code object.  Code objects can be
-  executed by a \code{exec()} statement or evaluated by a call to
+  executed by an \code{exec} statement or evaluated by a call to
   \code{eval()}.  The \var{filename} argument should
   give the file from which the code was read; pass e.g. \code{'<string>'}
   if it wasn't read from a file.  The \var{kind} argument specifies
@@ -56,7 +56,7 @@
   object and a string.  The string must be the name
   of one of the object's attributes.  The function deletes
   the named attribute, provided the object allows it.  For example,
-  \code{setattr(\var{x}, '\var{foobar}')} is equivalent to
+  \code{delattr(\var{x}, '\var{foobar}')} is equivalent to
   \code{del \var{x}.\var{foobar}}.
 \end{funcdesc}
 
@@ -106,13 +106,15 @@
 \end{verbatim}\ecode
 
   This function can also be used to execute arbitrary code objects
-  (e.g. created by \code{compile()}).  In this case pass a code
+  (e.g.\ created by \code{compile()}).  In this case pass a code
   object instead of a string.  The code object must have been compiled
   passing \code{'eval'} to the \var{kind} argument.
 
-  Note: dynamic execution of statements is supported by the
+  Hints: dynamic execution of statements is supported by the
   \code{exec} statement.  Execution of statements from a file is
-  supported by the \code{execfile()} function.
+  supported by the \code{execfile()} function.  The \code{vars()}
+  function returns the current local dictionary, which may be useful
+  to pass around for use by \code{eval()} or \code{execfile()}.
 
 \end{funcdesc}
 
@@ -138,7 +140,7 @@
 \var{function} returns true.  If \var{list} is a string or a tuple,
 the result also has that type; otherwise it is always a list.  If
 \var{function} is \code{None}, the identity function is assumed,
-i.e. all elements of \var{list} that are false (zero or empty) are
+i.e.\ all elements of \var{list} that are false (zero or empty) are
 removed.
 \end{funcdesc}
 
@@ -268,7 +270,7 @@
 \begin{funcdesc}{pow}{x\, y\optional{\, z}}
   Return \var{x} to the power \var{y}; if \var{z} is present, return
   \var{x} to the power \var{y}, modulo \var{z} (computed more
-  efficiently that \code{pow(\var{x}, \var{y}) \% \var{z}}).
+  efficiently than \code{pow(\var{x}, \var{y}) \% \var{z}}).
   The arguments must have
   numeric types.  With mixed operand types, the rules for binary
   arithmetic operators apply.  The effective operand type is also the
@@ -378,7 +380,7 @@
 \begin{funcdesc}{str}{object}
 Return a string containing a nicely printable representation of an
 object.  For strings, this returns the string itself.  The difference
-with \code{repr(\var{object}} is that \code{str(\var{object}} does not
+with \code{repr(\var{object})} is that \code{str(\var{object})} does not
 always attempt to return a string that is acceptable to \code{eval()};
 its goal is to return a printable string.
 \end{funcdesc}
@@ -412,7 +414,7 @@
 corresponding symbol table are undefined.%
 \footnote{In the current implementation, local variable bindings
 cannot normally be affected this way, but variables retrieved from
-other scopes can be.  This may change.}
+other scopes (e.g. modules) can be.  This may change.}
 \end{funcdesc}
 
 \begin{funcdesc}{xrange}{\optional{start\,} end\optional{\, step}}
diff --git a/Doc/lib/libhttplib.tex b/Doc/lib/libhttplib.tex
index e36bba4..0d7ac4f 100644
--- a/Doc/lib/libhttplib.tex
+++ b/Doc/lib/libhttplib.tex
@@ -6,7 +6,7 @@
 
 This module defines a class which implements the client side of the
 HTTP protocol.  It is normally not used directly --- the module
-\code{urlllib} module uses it to handle URLs that use HTTP.
+\code{urllib} uses it to handle URLs that use HTTP.
 \stmodindex{urllib}
 
 The module defines one class, \code{HTTP}.  An \code{HTTP} instance
@@ -80,7 +80,7 @@
 Complete the request by shutting down the sending end of the socket,
 read the reply from the server, and return a triple (\var{replycode},
 \var{message}, \var{headers}).  Here \var{replycode} is the integer
-reply code from the request (e.g. \code{200} if the request was
+reply code from the request (e.g.\ \code{200} if the request was
 handled properly); \var{message} is the message string corresponding
 to the reply code; and \var{header} is an instance of the class
 \code{rfc822.Message} containing the headers received from the server.
diff --git a/Doc/lib/libimp.tex b/Doc/lib/libimp.tex
index befde61..72f71a2 100644
--- a/Doc/lib/libimp.tex
+++ b/Doc/lib/libimp.tex
@@ -2,7 +2,7 @@
 \bimodindex{imp}
 \index{import}
 
-This module provides an interface to the mechanisms use to implement
+This module provides an interface to the mechanisms used to implement
 the \code{import} statement.  It defines the following constants and
 functions:
 
diff --git a/Doc/lib/libpdb.tex b/Doc/lib/libpdb.tex
index ea03abf..7b3f1d4 100644
--- a/Doc/lib/libpdb.tex
+++ b/Doc/lib/libpdb.tex
@@ -99,7 +99,7 @@
 command (but not ``\code{he}'' or ``\code{hel}'', nor ``\code{H}'' or
 ``\code{Help} or ``\code{HELP}'').  Arguments to commands must be
 separated by whitespace (spaces or tabs).  Optional arguments are
-enclosed in square brackets (``\code{[]}'')in the command syntax; the
+enclosed in square brackets (``\code{[]}'') in the command syntax; the
 square brackets must not be typed.  Alternatives in the command syntax
 are separated by a vertical bar (``\code{|}'').
 
diff --git a/Doc/lib/libprofile.tex b/Doc/lib/libprofile.tex
index 8c2599e..29cd01b 100644
--- a/Doc/lib/libprofile.tex
+++ b/Doc/lib/libprofile.tex
@@ -6,7 +6,7 @@
 
 Written by James Roskind%
 \footnote{
-Updated and converted to LaTeX by Guido van Rossum.  The references to
+Updated and converted to \LaTeX\ by Guido van Rossum.  The references to
 the old profiler are left in the text, although it no longer exists.
 }
 
diff --git a/Doc/lib/libregex.tex b/Doc/lib/libregex.tex
index 10abece..dae6666 100644
--- a/Doc/lib/libregex.tex
+++ b/Doc/lib/libregex.tex
@@ -19,7 +19,7 @@
 they are followed by an unrecognized escape character.
 \emph{However}, if you want to include a literal \dfn{backslash} in a
 regular expression represented as a string literal, you have to
-\emph{quadruple} it.  E.g.  to extract LaTeX \samp{\e section\{{\rm
+\emph{quadruple} it.  E.g.\  to extract \LaTeX\ \samp{\e section\{{\rm
 \ldots}\}} headers from a document, you can use this pattern:
 \code{'\e \e \e\e section\{\e (.*\e )\}'}.
 
@@ -84,7 +84,7 @@
 
 \begin{funcdesc}{symcomp}{pattern\optional{\, translate}}
 This is like \code{compile}, but supports symbolic group names: if a
-parentheses-enclosed group begins with a group name in angular
+parenthesis-enclosed group begins with a group name in angular
 brackets, e.g. \code{'\e(<id>[a-z][a-z0-9]*\e)'}, the group can
 be referenced by its name in arguments to the \code{group} method of
 the resulting compiled regular expression object, like this:
diff --git a/Doc/lib/librfc822.tex b/Doc/lib/librfc822.tex
index 641ea85..602b6ef 100644
--- a/Doc/lib/librfc822.tex
+++ b/Doc/lib/librfc822.tex
@@ -29,7 +29,7 @@
 \end{funcdesc}
 
 \begin{funcdesc}{getallmatchingheaders}{name}
-Return a list of lines consisting of all headers whose header matches
+Return a list of lines consisting of all headers matching
 \var{name}, if any.  Each physical line, whether it is a continuation
 line or not, is a separate list item.  Return the empty list if no
 header matches \var{name}.
@@ -60,12 +60,12 @@
 \var{name} exists, return \code{None, None}; otherwise both the full
 name and the address are (possibly empty )strings.
 
-Example: if \code{m}'s first \code{From} header contains the string
+Example: If \code{m}'s first \code{From} header contains the string
 \code{'guido@cwi.nl (Guido van Rossum)'}, then
 \code{m.getaddr('From')} will yield the pair
-\code{('Guido van Rossum', 'guido\@cwi.nl')}.
+\code{('Guido van Rossum', 'guido@cwi.nl')}.
 If the header contained
-\code{'Guido van Rossum <guido\@cwi.nl>'} instead, it would yield the
+\code{'Guido van Rossum <guido@cwi.nl>'} instead, it would yield the
 exact same result.
 \end{funcdesc}
 
@@ -82,7 +82,7 @@
 
 \begin{funcdesc}{getdate}{name}
 Retrieve a header using \code{getheader} and parse it into a 9-tuple
-compatible with \code{time.kmtime()}.  If there is no header matching
+compatible with \code{time.mktime()}.  If there is no header matching
 \var{name}, or it is unparsable, return \code{None}.
 
 Date parsing appears to be a black art, and not all mailers adhere to
diff --git a/Doc/lib/libsgmllib.tex b/Doc/lib/libsgmllib.tex
index 29e26c2..8abcb41 100644
--- a/Doc/lib/libsgmllib.tex
+++ b/Doc/lib/libsgmllib.tex
@@ -7,7 +7,7 @@
 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 module only
+--- it only parses SGML insofar as it is used by HTML, and the module only
 exists as a basis for the \code{htmllib} module.
 \stmodindex{htmllib}
 
@@ -77,8 +77,8 @@
 ``\code{\&\var{ref};}'' where \var{ref} is an alphabetic entity
 reference.  It looks for \var{ref} in the instance (or class)
 variable \code{entitydefs} which should give the entity's translation.
-If a translation is found, it callse the method \code{handle_data()}
-with the translation; otherwise, it callse the method
+If a translation is found, it calls the method \code{handle_data()}
+with the translation; otherwise, it calls the method
 \code{unknown_entityref(\var{ref})}.
 \end{funcdesc}
 
@@ -142,7 +142,7 @@
 
 Note that the parser maintains a stack of opening tags for which no
 matching closing tag has been found yet.  Only tags processed by
-\code{start_\var{tag}()} are pushed on this stack.  Definition if a
+\code{start_\var{tag}()} are pushed on this stack.  Definition of a
 \code{end_\var{tag}()} method is optional for these tags.  For tags
 processed by \code{do_\var{tag}()} or by \code{unknown_tag()}, no
 \code{end_\var{tag}()} method must be defined.
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex
index 5b4a9aa..280fe55 100644
--- a/Doc/lib/libstruct.tex
+++ b/Doc/lib/libstruct.tex
@@ -49,7 +49,7 @@
   \lineiii{d}{double}{float}
 \end{tableiii}
 
-A format character may be preceded by an integral repeat count; e.g.
+A format character may be preceded by an integral repeat count; e.g.\
 the format string \code{'4h'} means exactly the same as \code{'hhhh'}.
 
 C numbers are represented in the machine's native format and byte
@@ -66,10 +66,10 @@
 
 Hint: to align the end of a structure to the alignment requirement of
 a particular type, end the format with the code for that type with a
-repeat count of zero, e.g. the format \code{'llh0l'} specifies two
+repeat count of zero, e.g.\ the format \code{'llh0l'} specifies two
 pad bytes at the end, assuming longs are aligned on 4-byte boundaries.
 
-(More format characters are planned, e.g. \code{'s'} for character
+(More format characters are planned, e.g.\ \code{'s'} for character
 arrays, upper case for unsigned variants, and a way to specify the
 byte order, which is useful for [de]constructing network packets and
 reading/writing portable binary file formats like TIFF and AIFF.)
diff --git a/Doc/lib/libsys.tex b/Doc/lib/libsys.tex
index fc71139..ffda68d 100644
--- a/Doc/lib/libsys.tex
+++ b/Doc/lib/libsys.tex
@@ -88,7 +88,7 @@
 as thread switches and signal handlers.  The default is 10, meaning
 the check is performed every 10 Python virtual instructions.  Setting
 it to a larger value may increase performance for programs using
-threads.  Setting it to a value <= 0 checks every virtual instruction,
+threads.  Setting it to a value $\leq 0$ checks every virtual instruction,
 maximizing responsiveness as well as overhead.
 \end{funcdesc}
 
diff --git a/Doc/lib/libtime.tex b/Doc/lib/libtime.tex
index 3106542..1bc5ffa 100644
--- a/Doc/lib/libtime.tex
+++ b/Doc/lib/libtime.tex
@@ -30,7 +30,7 @@
 \item
 The precision of the various real-time functions may be less than
 suggested by the units in which their value or argument is expressed.
-E.g. on most UNIX systems, the clock ``ticks'' only every 1/50th or
+E.g.\ on most UNIX systems, the clock ``ticks'' only every 1/50th or
 1/100th of a second, and on the Mac, it ticks 60 times a second.
 
 \end{itemize}
@@ -73,9 +73,9 @@
 
 \begin{funcdesc}{gmtime}{secs}
 Convert a time expressed in seconds since the epoch to a tuple of 9
-integers, in UTC: year (e.g. 1993), month (1-12), day (1-31), hour
-(0-23), minute (0-59), second (0-59), weekday (0-6, monday is 0),
-julian day (1-366), dst flag (always zero).  Fractions of a second are
+integers, in UTC: year (e.g.\ 1993), month (1--12), day (1--31), hour
+(0--23), minute (0--59), second (0--59), weekday (0--6, monday is 0),
+Julian day (1--366), dst flag (always zero).  Fractions of a second are
 ignored.  Note subtle differences with the C function of this name.
 \end{funcdesc}
 
diff --git a/Doc/lib/liburllib.tex b/Doc/lib/liburllib.tex
index a6000a7..aa672d4 100644
--- a/Doc/lib/liburllib.tex
+++ b/Doc/lib/liburllib.tex
@@ -37,7 +37,7 @@
 
 \begin{funcdesc}{urlretrieve}{url}
 Copy a network object denoted by a URL to a local file, if necessary.
-If the URL points to a local file, or a valid cached copy of the the
+If the URL points to a local file, or a valid cached copy of the
 object exists, the object is not copied.  Return a tuple (\var{filename},
 \var{headers}) where \var{filename} is the local file name under which
 the object can be found, and \var{headers} is either \code{None} (for
@@ -61,7 +61,7 @@
 \end{funcdesc}
 
 \begin{funcdesc}{unquote}{string}
-Remove \code{\%xx} escapes by their single-character equivalent.
+Replace \samp{\%xx} escapes by their single-character equivalent.
 
 Example: \code{unquote('/\%7Econnolly/')} yields \code{'/\~connolly/'}.
 \end{funcdesc}
@@ -82,7 +82,7 @@
 find the time to hack proper processing of Expiration time headers.
 
 \item
-There should be an function to query whether a particular URL is in
+There should be a function to query whether a particular URL is in
 the cache.
 
 \item
