diff --git a/Doc/lib/libaifc.tex b/Doc/lib/libaifc.tex
index 34df720..8bb88a1 100644
--- a/Doc/lib/libaifc.tex
+++ b/Doc/lib/libaifc.tex
@@ -24,7 +24,7 @@
 Module \code{aifc} defines the following function:
 
 \setindexsubitem{(in module aifc)}
-\begin{funcdesc}{open}{file\, mode}
+\begin{funcdesc}{open}{file, mode}
 Open an AIFF or AIFF-C file and return an object instance with
 methods that are described below.  The argument file is either a
 string naming a file or a file object.  The mode is either the string
@@ -146,7 +146,7 @@
 support seeking.
 \end{funcdesc}
 
-\begin{funcdesc}{setcomptype}{type\, name}
+\begin{funcdesc}{setcomptype}{type, name}
 Specify the compression type.  If not specified, the audio data will
 not be compressed.  In AIFF files, compression is not possible.  The
 name parameter should be a human-readable description of the
@@ -155,14 +155,14 @@
 NONE, ULAW, ALAW, G722.
 \end{funcdesc}
 
-\begin{funcdesc}{setparams}{nchannels\, sampwidth\, framerate\, comptype\, compname}
+\begin{funcdesc}{setparams}{nchannels, sampwidth, framerate, comptype, compname}
 Set all the above parameters at once.  The argument is a tuple
 consisting of the various parameters.  This means that it is possible
 to use the result of a \code{getparams()} call as argument to
 \code{setparams()}.
 \end{funcdesc}
 
-\begin{funcdesc}{setmark}{id\, pos\, name}
+\begin{funcdesc}{setmark}{id, pos, name}
 Add a mark with the given id (larger than 0), and the given name at
 the given position.  This method can be called at any time before
 \code{close()}.
diff --git a/Doc/lib/libal.tex b/Doc/lib/libal.tex
index 63bdf1b..1126f83 100644
--- a/Doc/lib/libal.tex
+++ b/Doc/lib/libal.tex
@@ -27,7 +27,7 @@
 
 \setindexsubitem{(in module al)}
 
-\begin{funcdesc}{openport}{name\, direction\optional{\, config}}
+\begin{funcdesc}{openport}{name, direction\optional{, config}}
 The name and direction arguments are strings.  The optional config
 argument is a configuration object as returned by
 \code{al.newconfig()}.  The return value is an \dfn{port object};
@@ -44,12 +44,12 @@
 integers containing the data returned by ALqueryparams().
 \end{funcdesc}
 
-\begin{funcdesc}{getparams}{device\, list}
+\begin{funcdesc}{getparams}{device, list}
 The device argument is an integer.  The list argument is a list such
 as returned by \code{queryparams}; it is modified in place (!).
 \end{funcdesc}
 
-\begin{funcdesc}{setparams}{device\, list}
+\begin{funcdesc}{setparams}{device, list}
 The device argument is an integer.  The list argument is a list such
 as returned by \code{al.queryparams}.
 \end{funcdesc}
diff --git a/Doc/lib/libamoeba.tex b/Doc/lib/libamoeba.tex
index d471f35..3e64257 100644
--- a/Doc/lib/libamoeba.tex
+++ b/Doc/lib/libamoeba.tex
@@ -12,7 +12,7 @@
 The module \code{amoeba} defines the following items:
 
 \setindexsubitem{(in module amoeba)}
-\begin{funcdesc}{name_append}{path\, cap}
+\begin{funcdesc}{name_append}{path, cap}
 Stores a capability in the Amoeba directory tree.
 Arguments are the pathname (a string) and the capability (a capability
 object as returned by
@@ -32,7 +32,7 @@
 object, to which various interesting operations apply, described below.
 \end{funcdesc}
 
-\begin{funcdesc}{name_replace}{path\, cap}
+\begin{funcdesc}{name_replace}{path, cap}
 Replaces a capability in the Amoeba directory tree.
 Arguments are the pathname and the new capability.
 (This differs from
@@ -91,7 +91,7 @@
 Returns a list of the names of the entries in an Amoeba directory.
 \end{funcdesc}
 
-\begin{funcdesc}{b_read}{offset\, maxsize}
+\begin{funcdesc}{b_read}{offset, maxsize}
 Reads (at most)
 \var{maxsize}
 bytes from a bullet file at offset
diff --git a/Doc/lib/libanydbm.tex b/Doc/lib/libanydbm.tex
index c7e5ae3..1c46c61 100644
--- a/Doc/lib/libanydbm.tex
+++ b/Doc/lib/libanydbm.tex
@@ -13,7 +13,7 @@
 % at the same time.
 \setindexsubitem{(in modules anydbm, dumbdbm)}
 
-\begin{funcdesc}{open}{filename\optional{\, flag\, mode}}
+\begin{funcdesc}{open}{filename\optional{, flag, mode}}
 Open the database file \var{filename} and return a corresponding object.
 The optional \var{flag} argument can be
 \code{'r'} to open an existing database for reading only,
diff --git a/Doc/lib/libarray.tex b/Doc/lib/libarray.tex
index 0380bd6..03b4933 100644
--- a/Doc/lib/libarray.tex
+++ b/Doc/lib/libarray.tex
@@ -35,7 +35,7 @@
 
 The module defines the following function:
 
-\begin{funcdesc}{array}{typecode\optional{\, initializer}}
+\begin{funcdesc}{array}{typecode\optional{, initializer}}
 Return a new array whose items are restricted by \var{typecode}, and
 initialized from the optional \var{initializer} value, which must be a
 list or a string.  The list or string is passed to the new array's
@@ -77,7 +77,7 @@
 on a machine with a different byte order.
 \end{funcdesc}
 
-\begin{funcdesc}{fromfile}{f\, n}
+\begin{funcdesc}{fromfile}{f, n}
 Read \var{n} items (as machine values) from the file object \var{f}
 and append them to the end of the array.  If less than \var{n} items
 are available, \exception{EOFError} is raised, but the items that were
@@ -98,12 +98,12 @@
 file using the \method{fromfile()} method).
 \end{funcdesc}
 
-\begin{funcdesc}{insert}{i\, x}
+\begin{funcdesc}{insert}{i, x}
 Insert a new item with value \var{x} in the array before position
 \var{i}.
 \end{funcdesc}
 
-\begin{funcdesc}{read}{f\, n}
+\begin{funcdesc}{read}{f, n}
 \deprecated {1.5.1}
   {Use the \method{fromfile()} method.}
 Read \var{n} items (as machine values) from the file object \var{f}
diff --git a/Doc/lib/libaudioop.tex b/Doc/lib/libaudioop.tex
index 69a3a83..887cac9 100644
--- a/Doc/lib/libaudioop.tex
+++ b/Doc/lib/libaudioop.tex
@@ -19,46 +19,46 @@
 per sample, etc.
 \end{excdesc}
 
-\begin{funcdesc}{add}{fragment1\, fragment2\, width}
+\begin{funcdesc}{add}{fragment1, fragment2, width}
 Return a fragment which is the addition of the two samples passed as
 parameters.  \var{width} is the sample width in bytes, either
 \code{1}, \code{2} or \code{4}.  Both fragments should have the same
 length.
 \end{funcdesc}
 
-\begin{funcdesc}{adpcm2lin}{adpcmfragment\, width\, state}
+\begin{funcdesc}{adpcm2lin}{adpcmfragment, width, state}
 Decode an Intel/DVI ADPCM coded fragment to a linear fragment.  See
 the description of \code{lin2adpcm} for details on ADPCM coding.
 Return a tuple \code{(\var{sample}, \var{newstate})} where the sample
 has the width specified in \var{width}.
 \end{funcdesc}
 
-\begin{funcdesc}{adpcm32lin}{adpcmfragment\, width\, state}
+\begin{funcdesc}{adpcm32lin}{adpcmfragment, width, state}
 Decode an alternative 3-bit ADPCM code.  See \code{lin2adpcm3} for
 details.
 \end{funcdesc}
 
-\begin{funcdesc}{avg}{fragment\, width}
+\begin{funcdesc}{avg}{fragment, width}
 Return the average over all samples in the fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{avgpp}{fragment\, width}
+\begin{funcdesc}{avgpp}{fragment, width}
 Return the average peak-peak value over all samples in the fragment.
 No filtering is done, so the usefulness of this routine is
 questionable.
 \end{funcdesc}
 
-\begin{funcdesc}{bias}{fragment\, width\, bias}
+\begin{funcdesc}{bias}{fragment, width, bias}
 Return a fragment that is the original fragment with a bias added to
 each sample.
 \end{funcdesc}
 
-\begin{funcdesc}{cross}{fragment\, width}
+\begin{funcdesc}{cross}{fragment, width}
 Return the number of zero crossings in the fragment passed as an
 argument.
 \end{funcdesc}
 
-\begin{funcdesc}{findfactor}{fragment\, reference}
+\begin{funcdesc}{findfactor}{fragment, reference}
 Return a factor \var{F} such that
 \code{rms(add(fragment, mul(reference, -F)))} is minimal, i.e.,
 return the factor with which you should multiply \var{reference} to
@@ -68,7 +68,7 @@
 The time taken by this routine is proportional to \code{len(fragment)}. 
 \end{funcdesc}
 
-\begin{funcdesc}{findfit}{fragment\, reference}
+\begin{funcdesc}{findfit}{fragment, reference}
 This routine (which only accepts 2-byte sample fragments)
 
 Try to match \var{reference} as well as possible to a portion of
@@ -82,7 +82,7 @@
 \code{findfactor}.
 \end{funcdesc}
 
-\begin{funcdesc}{findmax}{fragment\, length}
+\begin{funcdesc}{findmax}{fragment, length}
 Search \var{fragment} for a slice of length \var{length} samples (not
 bytes!)\ with maximum energy, i.e., return \var{i} for which
 \code{rms(fragment[i*2:(i+length)*2])} is maximal.  The fragments
@@ -91,15 +91,15 @@
 The routine takes time proportional to \code{len(fragment)}.
 \end{funcdesc}
 
-\begin{funcdesc}{getsample}{fragment\, width\, index}
+\begin{funcdesc}{getsample}{fragment, width, index}
 Return the value of sample \var{index} from the fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{lin2lin}{fragment\, width\, newwidth}
+\begin{funcdesc}{lin2lin}{fragment, width, newwidth}
 Convert samples between 1-, 2- and 4-byte formats.
 \end{funcdesc}
 
-\begin{funcdesc}{lin2adpcm}{fragment\, width\, state}
+\begin{funcdesc}{lin2adpcm}{fragment, width, state}
 Convert samples to 4 bit Intel/DVI ADPCM encoding.  ADPCM coding is an
 adaptive coding scheme, whereby each 4 bit number is the difference
 between one sample and the next, divided by a (varying) step.  The
@@ -113,41 +113,41 @@
 is the ADPCM coded fragment packed 2 4-bit values per byte.
 \end{funcdesc}
 
-\begin{funcdesc}{lin2adpcm3}{fragment\, width\, state}
+\begin{funcdesc}{lin2adpcm3}{fragment, width, state}
 This is an alternative ADPCM coder that uses only 3 bits per sample.
 It is not compatible with the Intel/DVI ADPCM coder and its output is
 not packed (due to laziness on the side of the author).  Its use is
 discouraged.
 \end{funcdesc}
 
-\begin{funcdesc}{lin2ulaw}{fragment\, width}
+\begin{funcdesc}{lin2ulaw}{fragment, width}
 Convert samples in the audio fragment to U-LAW encoding and return
 this as a Python string.  U-LAW is an audio encoding format whereby
 you get a dynamic range of about 14 bits using only 8 bit samples.  It
 is used by the Sun audio hardware, among others.
 \end{funcdesc}
 
-\begin{funcdesc}{minmax}{fragment\, width}
+\begin{funcdesc}{minmax}{fragment, width}
 Return a tuple consisting of the minimum and maximum values of all
 samples in the sound fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{max}{fragment\, width}
+\begin{funcdesc}{max}{fragment, width}
 Return the maximum of the \emph{absolute value} of all samples in a
 fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{maxpp}{fragment\, width}
+\begin{funcdesc}{maxpp}{fragment, width}
 Return the maximum peak-peak value in the sound fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{mul}{fragment\, width\, factor}
+\begin{funcdesc}{mul}{fragment, width, factor}
 Return a fragment that has all samples in the original framgent
 multiplied by the floating-point value \var{factor}.  Overflow is
 silently ignored.
 \end{funcdesc}
 
-\begin{funcdesc}{ratecv}{fragment\, width\, nchannels\, inrate\, outrate\, state\optional{\, weightA\, weightB}}
+\begin{funcdesc}{ratecv}{fragment, width, nchannels, inrate, outrate, state\optional{, weightA, weightB}}
 Convert the frame rate of the input fragment.
 
 \code{State} is a tuple containing the state of the converter.  The
@@ -158,11 +158,11 @@
 simple digital filter and default to 1 and 0 respectively.
 \end{funcdesc}
 
-\begin{funcdesc}{reverse}{fragment\, width}
+\begin{funcdesc}{reverse}{fragment, width}
 Reverse the samples in a fragment and returns the modified fragment.
 \end{funcdesc}
 
-\begin{funcdesc}{rms}{fragment\, width}
+\begin{funcdesc}{rms}{fragment, width}
 Return the root-mean-square of the fragment, i.e.
 \iftexi
 the square root of the quotient of the sum of all squared sample value,
@@ -177,20 +177,20 @@
 This is a measure of the power in an audio signal.
 \end{funcdesc}
 
-\begin{funcdesc}{tomono}{fragment\, width\, lfactor\, rfactor} 
+\begin{funcdesc}{tomono}{fragment, width, lfactor, rfactor} 
 Convert a stereo fragment to a mono fragment.  The left channel is
 multiplied by \var{lfactor} and the right channel by \var{rfactor}
 before adding the two channels to give a mono signal.
 \end{funcdesc}
 
-\begin{funcdesc}{tostereo}{fragment\, width\, lfactor\, rfactor}
+\begin{funcdesc}{tostereo}{fragment, width, lfactor, rfactor}
 Generate a stereo fragment from a mono fragment.  Each pair of samples
 in the stereo fragment are computed from the mono sample, whereby left
 channel samples are multiplied by \var{lfactor} and right channel
 samples by \var{rfactor}.
 \end{funcdesc}
 
-\begin{funcdesc}{ulaw2lin}{fragment\, width}
+\begin{funcdesc}{ulaw2lin}{fragment, width}
 Convert sound fragments in ULAW encoding to linearly encoded sound
 fragments.  ULAW encoding always uses 8 bits samples, so \var{width}
 refers only to the sample width of the output fragment here.
diff --git a/Doc/lib/libbasehttp.tex b/Doc/lib/libbasehttp.tex
index 12d9483..2a4a7d0 100644
--- a/Doc/lib/libbasehttp.tex
+++ b/Doc/lib/libbasehttp.tex
@@ -157,7 +157,7 @@
 class variable.
 \end{funcdesc}
 
-\begin{funcdesc}{send_response}{code\optional{\, message}}
+\begin{funcdesc}{send_response}{code\optional{, message}}
 Sends a response header and logs the accepted request. The HTTP
 response line is sent, followed by \emph{Server} and \emph{Date}
 headers. The values for these two headers are picked up from the
@@ -165,7 +165,7 @@
 respectively.
 \end{funcdesc}
 
-\begin{funcdesc}{send_header}{keyword\, value}
+\begin{funcdesc}{send_header}{keyword, value}
 Writes a specific MIME header to the output stream. \var{keyword}
 should specify the header keyword, with \var{value} specifying
 its value.
@@ -176,7 +176,7 @@
 the response.
 \end{funcdesc}
 
-\begin{funcdesc}{log_request}{\optional{code\optional{\, size}}}
+\begin{funcdesc}{log_request}{\optional{code\optional{, size}}}
 Logs an accepted (successful) request. \var{code} should specify
 the numeric HTTP code associated with the response. If a size of
 the response is available, then it should be passed as the
diff --git a/Doc/lib/libbastion.tex b/Doc/lib/libbastion.tex
index 7b7cba6..c405c64 100644
--- a/Doc/lib/libbastion.tex
+++ b/Doc/lib/libbastion.tex
@@ -17,7 +17,7 @@
 
 % I've punted on the issue of documenting keyword arguments for now.
 
-\begin{funcdesc}{Bastion}{object\optional{\, filter\, name\, class}}
+\begin{funcdesc}{Bastion}{object\optional{, filter, name, class}}
 Protect the object \var{object}, returning a bastion for the
 object.  Any attempt to access one of the object's attributes will
 have to be approved by the \var{filter} function; if the access is
diff --git a/Doc/lib/libbinhex.tex b/Doc/lib/libbinhex.tex
index aae5074..560b401 100644
--- a/Doc/lib/libbinhex.tex
+++ b/Doc/lib/libbinhex.tex
@@ -11,14 +11,14 @@
 
 \setindexsubitem{(in module binhex)}
 
-\begin{funcdesc}{binhex}{input\, output}
+\begin{funcdesc}{binhex}{input, output}
 Convert a binary file with filename \var{input} to binhex file
 \var{output}. The \var{output} parameter can either be a filename or a
 file-like object (any object supporting a \var{write} and \var{close}
 method).
 \end{funcdesc}
 
-\begin{funcdesc}{hexbin}{input\optional{\, output}}
+\begin{funcdesc}{hexbin}{input\optional{, output}}
 Decode a binhex file \var{input}. \var{input} may be a filename or a
 file-like object supporting \var{read} and \var{close} methods.
 The resulting file is written to a file named \var{output}, unless the
diff --git a/Doc/lib/libcgi.tex b/Doc/lib/libcgi.tex
index fa2b6b7..55abd10 100644
--- a/Doc/lib/libcgi.tex
+++ b/Doc/lib/libcgi.tex
@@ -191,7 +191,7 @@
 \mimetype{application/x-www-form-urlencoded}).
 \end{funcdesc}
 
-\begin{funcdesc}{parse_multipart}{fp\, pdict}
+\begin{funcdesc}{parse_multipart}{fp, pdict}
 Parse input of type \mimetype{multipart/form-data} (for 
 file uploads).  Arguments are \var{fp} for the input file and
 \var{pdict} for the dictionary containing other parameters of
@@ -236,7 +236,7 @@
 HTML.
 \end{funcdesc}
 
-\begin{funcdesc}{escape}{s\optional{\, quote}}
+\begin{funcdesc}{escape}{s\optional{, quote}}
 Convert the characters
 \character{\&}, \character{<} and \character{>} in string \var{s} to
 HTML-safe sequences.  Use this if you need to display text that might
diff --git a/Doc/lib/libcrypt.tex b/Doc/lib/libcrypt.tex
index 777f87e..a4c0bb7 100644
--- a/Doc/lib/libcrypt.tex
+++ b/Doc/lib/libcrypt.tex
@@ -10,7 +10,7 @@
 \index{crypt(3)}
 
 \setindexsubitem{(in module crypt)}
-\begin{funcdesc}{crypt}{word\, salt} 
+\begin{funcdesc}{crypt}{word, salt} 
 \var{word} will usually be a user's password.  \var{salt} is a
 2-character string which will be used to select one of 4096 variations
 of DES\indexii{cipher}{DES}.  The characters in \var{salt} must be
diff --git a/Doc/lib/libdbm.tex b/Doc/lib/libdbm.tex
index 416a6b0..35e0b4c 100644
--- a/Doc/lib/libdbm.tex
+++ b/Doc/lib/libdbm.tex
@@ -20,7 +20,7 @@
 raised for general mapping errors like specifying an incorrect key.
 \end{excdesc}
 
-\begin{funcdesc}{open}{filename\, \optional{flag\, \optional{mode}}}
+\begin{funcdesc}{open}{filename, \optional{flag, \optional{mode}}}
 Open a dbm database and return a dbm object.  The \var{filename}
 argument is the name of the database file (without the \file{.dir} or
 \file{.pag} extensions).
diff --git a/Doc/lib/libdis.tex b/Doc/lib/libdis.tex
index b4c74fb..e11a1f6 100644
--- a/Doc/lib/libdis.tex
+++ b/Doc/lib/libdis.tex
@@ -49,7 +49,7 @@
 is indicated.
 \end{funcdesc}
 
-\begin{funcdesc}{disassemble}{code\optional{\, lasti}}
+\begin{funcdesc}{disassemble}{code\optional{, lasti}}
 Disassembles a code object, indicating the last instruction if \var{lasti}
 was provided.  The output is divided in the following columns:
 \begin{itemize}
@@ -65,7 +65,7 @@
 operators.
 \end{funcdesc}
 
-\begin{funcdesc}{disco}{code\optional{\, lasti}}
+\begin{funcdesc}{disco}{code\optional{, lasti}}
 A synonym for disassemble.  It is more convenient to type, and kept
 for compatibility with earlier Python releases.
 \end{funcdesc}
diff --git a/Doc/lib/libformatter.tex b/Doc/lib/libformatter.tex
index 8c9ab3e..5d06995 100644
--- a/Doc/lib/libformatter.tex
+++ b/Doc/lib/libformatter.tex
@@ -66,7 +66,7 @@
 break the logical paragraph.
 \end{funcdesc}
 
-\begin{funcdesc}{add_hor_rule}{*args\, **kw}
+\begin{funcdesc}{add_hor_rule}{*args, **kw}
 Insert a horizontal rule in the output.  A hard break is inserted if
 there is data in the current paragraph, but the logical paragraph is
 not broken.  The arguments and keywords are passed on to the writer's
@@ -268,7 +268,7 @@
 integer.
 \end{funcdesc}
 
-\begin{funcdesc}{send_hor_rule}{*args\, **kw}
+\begin{funcdesc}{send_hor_rule}{*args, **kw}
 Display a horizontal rule on the output device.  The arguments to this
 method are entirely application- and writer-specific, and should be
 interpreted with care.  The method implementation may assume that a
@@ -317,7 +317,7 @@
 arguments on standard output.
 \end{classdesc}
 
-\begin{classdesc}{DumbWriter}{\optional{file\optional{\, maxcol\code{ = 72}}}}
+\begin{classdesc}{DumbWriter}{\optional{file\optional{, maxcol\code{ = 72}}}}
 Simple writer class which writes output on the file object passed in
 as \var{file} or, if \var{file} is omitted, on standard output.  The
 output is simply word-wrapped to the number of columns specified by
diff --git a/Doc/lib/libframework.tex b/Doc/lib/libframework.tex
index 012b8c5..6b8c5fa 100644
--- a/Doc/lib/libframework.tex
+++ b/Doc/lib/libframework.tex
@@ -31,14 +31,14 @@
 by the user.
 \end{funcdesc}
 
-\begin{funcdesc}{Menu}{bar\, title\optional{\, after}}
+\begin{funcdesc}{Menu}{bar, title\optional{, after}}
 An object representing a menu. Upon creation you pass the
 \code{MenuBar} the menu appears in, the \var{title} string and a
 position (1-based) \var{after} where the menu should appear (default:
 at the end).
 \end{funcdesc}
 
-\begin{funcdesc}{MenuItem}{menu\, title\optional{\, shortcut\, callback}}
+\begin{funcdesc}{MenuItem}{menu, title\optional{, shortcut, callback}}
 Create a menu item object. The arguments are the menu to crate the
 item it, the item title string and optionally the keyboard shortcut
 and a callback routine. The callback is called with the arguments
@@ -58,7 +58,7 @@
 Add a separator to the end of a menu.
 \end{funcdesc}
 
-\begin{funcdesc}{SubMenu}{menu\, label}
+\begin{funcdesc}{SubMenu}{menu, label}
 Create a submenu named \var{label} under menu \var{menu}. The menu
 object is returned.
 \end{funcdesc}
@@ -72,7 +72,7 @@
 Creates a modeless dialog window.
 \end{funcdesc}
 
-\begin{funcdesc}{windowbounds}{width\, height}
+\begin{funcdesc}{windowbounds}{width, height}
 Return a \code{(left, top, right, bottom)} tuple suitable for creation
 of a window of given width and height. The window will be staggered
 with respect to previous windows, and an attempt is made to keep the
@@ -104,7 +104,7 @@
 more elaborate about messages.
 \end{funcdesc}
 
-\begin{funcdesc}{mainloop}{\optional{mask\, wait}}
+\begin{funcdesc}{mainloop}{\optional{mask, wait}}
 This routine is the main event loop, call it to set your application
 rolling. \var{Mask} is the mask of events you want to handle,
 \var{wait} is the number of ticks you want to leave to other
@@ -145,7 +145,7 @@
 Terminate the event \code{mainloop} at the next convenient moment.
 \end{funcdesc}
 
-\begin{funcdesc}{do_char}{c\, event}
+\begin{funcdesc}{do_char}{c, event}
 The user typed character \var{c}. The complete details of the event
 can be found in the \var{event} structure. This method can also be
 provided in a \code{Window} object, which overrides the
@@ -181,22 +181,22 @@
 close. Call \code{self.do_postclose} to cleanup the parent state.
 \end{funcdesc}
 
-\begin{funcdesc}{do_postresize}{width\, height\, macoswindowid}
+\begin{funcdesc}{do_postresize}{width, height, macoswindowid}
 Called after the window is resized. Override if more needs to be done
 than calling \code{InvalRect}.
 \end{funcdesc}
 
-\begin{funcdesc}{do_contentclick}{local\, modifiers\, event}
+\begin{funcdesc}{do_contentclick}{local, modifiers, event}
 The user clicked in the content part of a window. The arguments are
 the coordinates (window-relative), the key modifiers and the raw
 event.
 \end{funcdesc}
 
-\begin{funcdesc}{do_update}{macoswindowid\, event}
+\begin{funcdesc}{do_update}{macoswindowid, event}
 An update event for the window was received. Redraw the window.
 \end{funcdesc}
 
-\begin{funcdesc}{do_activate}{activate\, event}
+\begin{funcdesc}{do_activate}{activate, event}
 The window was activated (\code{activate==1}) or deactivated
 (\code{activate==0}). Handle things like focus highlighting, etc.
 \end{funcdesc}
@@ -208,7 +208,7 @@
 
 \setindexsubitem{(ControlsWindow method)}
 
-\begin{funcdesc}{do_controlhit}{window\, control\, pcode\, event}
+\begin{funcdesc}{do_controlhit}{window, control, pcode, event}
 Part \code{pcode} of control \code{control} was hit by the
 user. Tracking and such has already been taken care of.
 \end{funcdesc}
@@ -220,7 +220,7 @@
 
 \setindexsubitem{(ScrolledWindow method)}
 
-\begin{funcdesc}{scrollbars}{\optional{wantx\, wanty}}
+\begin{funcdesc}{scrollbars}{\optional{wantx, wanty}}
 Create (or destroy) horizontal and vertical scrollbars. The arguments
 specify which you want (default: both). The scrollbars always have
 minimum \code{0} and maximum \code{32767}.
@@ -238,32 +238,32 @@
 \code{getscrollbarvalues} and update the scrollbars.
 \end{funcdesc}
 
-\begin{funcdesc}{scrollbar_callback}{which\, what\, value}
+\begin{funcdesc}{scrollbar_callback}{which, what, value}
 Supplied by you and called after user interaction. \code{Which} will
 be \code{'x'} or \code{'y'}, \code{what} will be \code{'-'},
 \code{'--'}, \code{'set'}, \code{'++'} or \code{'+'}. For
 \code{'set'}, \code{value} will contain the new scrollbar position.
 \end{funcdesc}
 
-\begin{funcdesc}{scalebarvalues}{absmin\, absmax\, curmin\, curmax}
+\begin{funcdesc}{scalebarvalues}{absmin, absmax, curmin, curmax}
 Auxiliary method to help you calculate values to return from
 \code{getscrollbarvalues}. You pass document minimum and maximum value
 and topmost (leftmost) and bottommost (rightmost) visible values and
 it returns the correct number or \code{None}.
 \end{funcdesc}
 
-\begin{funcdesc}{do_activate}{onoff\, event}
+\begin{funcdesc}{do_activate}{onoff, event}
 Takes care of dimming/highlighting scrollbars when a window becomes
 frontmost vv. If you override this method call this one at the end of
 your method.
 \end{funcdesc}
 
-\begin{funcdesc}{do_postresize}{width\, height\, window}
+\begin{funcdesc}{do_postresize}{width, height, window}
 Moves scrollbars to the correct position. Call this method initially
 if you override it.
 \end{funcdesc}
 
-\begin{funcdesc}{do_controlhit}{window\, control\, pcode\, event}
+\begin{funcdesc}{do_controlhit}{window, control, pcode, event}
 Handles scrollbar interaction. If you override it call this method
 first, a nonzero return value indicates the hit was in the scrollbars
 and has been handled.
@@ -281,7 +281,7 @@
 \var{resid}. The dialog object is stored in \code{self.wid}.
 \end{funcdesc}
 
-\begin{funcdesc}{do_itemhit}{item\, event}
+\begin{funcdesc}{do_itemhit}{item, event}
 Item number \var{item} was hit. You are responsible for redrawing
 toggle buttons, etc.
 \end{funcdesc}
diff --git a/Doc/lib/libfuncs.tex b/Doc/lib/libfuncs.tex
index d00ba10..e914e80 100644
--- a/Doc/lib/libfuncs.tex
+++ b/Doc/lib/libfuncs.tex
@@ -54,7 +54,7 @@
   complex number, its magnitude is returned.
 \end{funcdesc}
 
-\begin{funcdesc}{apply}{function\, args\optional{, keywords}}
+\begin{funcdesc}{apply}{function, args\optional{, keywords}}
 The \var{function} argument must be a callable object (a user-defined or
 built-in function or method, or a class object) and the \var{args}
 argument must be a tuple.  The \var{function} is called with
@@ -82,20 +82,20 @@
   inclusive.
 \end{funcdesc}
 
-\begin{funcdesc}{cmp}{x\, y}
+\begin{funcdesc}{cmp}{x, y}
   Compare the two objects \var{x} and \var{y} and return an integer
   according to the outcome.  The return value is negative if \code{\var{x}
   < \var{y}}, zero if \code{\var{x} == \var{y}} and strictly positive if
   \code{\var{x} > \var{y}}.
 \end{funcdesc}
 
-\begin{funcdesc}{coerce}{x\, y}
+\begin{funcdesc}{coerce}{x, y}
   Return a tuple consisting of the two numeric arguments converted to
   a common type, using the same rules as used by arithmetic
   operations.
 \end{funcdesc}
 
-\begin{funcdesc}{compile}{string\, filename\, kind}
+\begin{funcdesc}{compile}{string, filename, kind}
   Compile the \var{string} into a code object.  Code objects can be
   executed by an \keyword{exec} statement or evaluated by a call to
   \function{eval()}.  The \var{filename} argument should
@@ -117,7 +117,7 @@
   \function{long()} and \function{float()}.
 \end{funcdesc}
 
-\begin{funcdesc}{delattr}{object\, name}
+\begin{funcdesc}{delattr}{object, name}
   This is a relative of \function{setattr()}.  The arguments are an
   object and a string.  The string must be the name
   of one of the object's attributes.  The function deletes
@@ -146,7 +146,7 @@
 \end{verbatim}
 \end{funcdesc}
 
-\begin{funcdesc}{divmod}{a\, b}
+\begin{funcdesc}{divmod}{a, b}
   Take two numbers as arguments and return a pair of numbers consisting
   of their quotient and remainder when using long division.  With mixed
   operand types, the rules for binary arithmetic operators apply.  For
@@ -156,7 +156,7 @@
   \code{(math.floor(\var{a} / \var{b}), \var{a} \%{} \var{b})}.
 \end{funcdesc}
 
-\begin{funcdesc}{eval}{expression\optional{\, globals\optional{\, locals}}}
+\begin{funcdesc}{eval}{expression\optional{, globals\optional{, locals}}}
   The arguments are a string and two optional dictionaries.  The
   \var{expression} argument is parsed and evaluated as a Python
   expression (technically speaking, a condition list) using the
@@ -188,7 +188,7 @@
   \function{execfile()}.
 \end{funcdesc}
 
-\begin{funcdesc}{execfile}{file\optional{\, globals\optional{\, locals}}}
+\begin{funcdesc}{execfile}{file\optional{, globals\optional{, locals}}}
   This function is similar to the
   \keyword{exec} statement, but parses a file instead of a string.  It
   is different from the \keyword{import} statement in that it does not
@@ -206,7 +206,7 @@
   \code{None}.
 \end{funcdesc}
 
-\begin{funcdesc}{filter}{function\, list}
+\begin{funcdesc}{filter}{function, list}
 Construct a list from those elements of \var{list} for which
 \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
@@ -226,7 +226,7 @@
   returned.
 \end{funcdesc}
 
-\begin{funcdesc}{getattr}{object\, name}
+\begin{funcdesc}{getattr}{object, name}
   The arguments are an object and a string.  The string must be the
   name of one of the object's attributes.  The result is the value of
   that attribute.  For example, \code{getattr(\var{x},
@@ -240,7 +240,7 @@
 module from which it is called).
 \end{funcdesc}
 
-\begin{funcdesc}{hasattr}{object\, name}
+\begin{funcdesc}{hasattr}{object, name}
   The arguments are an object and a string.  The result is 1 if the
   string is the name of one of the object's attributes, 0 if not.
   (This is implemented by calling \code{getattr(\var{object},
@@ -355,7 +355,7 @@
   see the description of \function{int()}.
 \end{funcdesc}
 
-\begin{funcdesc}{map}{function\, list\, ...}
+\begin{funcdesc}{map}{function, list, ...}
 Apply \var{function} to every item of \var{list} and return a list
 of the results.  If additional \var{list} arguments are passed, 
 \var{function} must take that many arguments and is applied to
@@ -388,7 +388,7 @@
   \exception{OverflowError} exception.
 \end{funcdesc}
 
-\begin{funcdesc}{open}{filename\optional{\, mode\optional{\, bufsize}}}
+\begin{funcdesc}{open}{filename\optional{, mode\optional{, bufsize}}}
   Return a new file object (described earlier under Built-in Types).
   The first two arguments are the same as for \code{stdio}'s
   \cfunction{fopen()}: \var{filename} is the file name to be opened,
@@ -423,7 +423,7 @@
   \function{chr()}.
 \end{funcdesc}
 
-\begin{funcdesc}{pow}{x\, y\optional{\, z}}
+\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 than \code{pow(\var{x}, \var{y}) \% \var{z}}).
@@ -435,7 +435,7 @@
   35000)} is not allowed.
 \end{funcdesc}
 
-\begin{funcdesc}{range}{\optional{start\,} stop\optional{\, step}}
+\begin{funcdesc}{range}{\optional{start,} stop\optional{, step}}
   This is a versatile function to create lists containing arithmetic
   progressions.  It is most often used in \keyword{for} loops.  The
   arguments must be plain integers.  If the \var{step} argument is
@@ -487,7 +487,7 @@
 line editing and history features.
 \end{funcdesc}
 
-\begin{funcdesc}{reduce}{function\, list\optional{\, initializer}}
+\begin{funcdesc}{reduce}{function, list\optional{, initializer}}
 Apply the binary \var{function} to the items of \var{list} so as to
 reduce the list to a single value.  E.g.,
 \code{reduce(lambda x, y: x*y, \var{list}, 1)} returns the product of
@@ -551,7 +551,7 @@
 when passed to \function{eval()}.
 \end{funcdesc}
 
-\begin{funcdesc}{round}{x\, n}
+\begin{funcdesc}{round}{x, n}
   Return the floating point value \var{x} rounded to \var{n} digits
   after the decimal point.  If \var{n} is omitted, it defaults to zero.
   The result is a floating point number.  Values are rounded to the
@@ -560,7 +560,7 @@
   \code{round(0.5)} is \code{1.0} and \code{round(-0.5)} is \code{-1.0}).
 \end{funcdesc}
 
-\begin{funcdesc}{setattr}{object\, name\, value}
+\begin{funcdesc}{setattr}{object, name, value}
   This is the counterpart of \function{getattr()}.  The arguments are an
   object, a string and an arbitrary value.  The string must be the name
   of one of the object's attributes.  The function assigns the value to
@@ -569,7 +569,7 @@
   \code{\var{x}.\var{foobar} = 123}.
 \end{funcdesc}
 
-\begin{funcdesc}{slice}{\optional{start\,} stop\optional{\, step}}
+\begin{funcdesc}{slice}{\optional{start,} stop\optional{, step}}
 Return a slice object representing the set of indices specified by
 \code{range(\var{start}, \var{stop}, \var{step})}.  The \var{start}
 and \var{step} arguments default to None.  Slice objects have
@@ -623,7 +623,7 @@
 other scopes (e.g. modules) can be.  This may change.}
 \end{funcdesc}
 
-\begin{funcdesc}{xrange}{\optional{start\,} stop\optional{\, step}}
+\begin{funcdesc}{xrange}{\optional{start,} stop\optional{, step}}
 This function is very similar to \function{range()}, but returns an
 ``xrange object'' instead of a list.  This is an opaque sequence type
 which yields the same values as the corresponding list, without
diff --git a/Doc/lib/libgdbm.tex b/Doc/lib/libgdbm.tex
index 73fc9ab..08d447f 100644
--- a/Doc/lib/libgdbm.tex
+++ b/Doc/lib/libgdbm.tex
@@ -35,7 +35,7 @@
 raised for general mapping errors like specifying an incorrect key.
 \end{excdesc}
 
-\begin{funcdesc}{open}{filename\, \optional{flag\, \optional{mode}}}
+\begin{funcdesc}{open}{filename, \optional{flag, \optional{mode}}}
 Open a \code{gdbm} database and return a \code{gdbm} object.  The
 \var{filename} argument is the name of the database file.
 
diff --git a/Doc/lib/libgl.tex b/Doc/lib/libgl.tex
index b694d86..7208695 100644
--- a/Doc/lib/libgl.tex
+++ b/Doc/lib/libgl.tex
@@ -119,7 +119,7 @@
 but the pairs have the point first and the normal second.
 \end{funcdesc}
 
-\begin{funcdesc}{nurbssurface}{s_k\, t_k\, ctl\, s_ord\, t_ord\, type}
+\begin{funcdesc}{nurbssurface}{s_k, t_k, ctl, s_ord, t_ord, type}
 % XXX s_k[], t_k[], ctl[][]
 Defines a nurbs surface.
 The dimensions of
@@ -129,13 +129,13 @@
 \code{[len(\var{t_k}) - \var{t_ord}]}.
 \end{funcdesc}
 
-\begin{funcdesc}{nurbscurve}{knots\, ctlpoints\, order\, type}
+\begin{funcdesc}{nurbscurve}{knots, ctlpoints, order, type}
 Defines a nurbs curve.
 The length of ctlpoints is
 \code{len(\var{knots}) - \var{order}}.
 \end{funcdesc}
 
-\begin{funcdesc}{pwlcurve}{points\, type}
+\begin{funcdesc}{pwlcurve}{points, type}
 Defines a piecewise-linear curve.
 \var{points}
 is a list of points.
diff --git a/Doc/lib/libhtmllib.tex b/Doc/lib/libhtmllib.tex
index c3c9c9f..dff837c 100644
--- a/Doc/lib/libhtmllib.tex
+++ b/Doc/lib/libhtmllib.tex
@@ -86,7 +86,7 @@
 
 \setindexsubitem{(HTMLParser method)}
 
-\begin{funcdesc}{anchor_bgn}{href\, name\, type}
+\begin{funcdesc}{anchor_bgn}{href, name, type}
 This method is called at the start of an anchor region.  The arguments
 correspond to the attributes of the \code{<A>} tag with the same
 names.  The default implementation maintains a list of hyperlinks
@@ -100,7 +100,7 @@
 list of hyperlinks created by \method{anchor_bgn()}.
 \end{funcdesc}
 
-\begin{funcdesc}{handle_image}{source\, alt\optional{\, ismap\optional{\, align\optional{\, width\optional{\, height}}}}}
+\begin{funcdesc}{handle_image}{source, alt\optional{, ismap\optional{, align\optional{, width\optional{, height}}}}}
 This method is called to handle images.  The default implementation
 simply passes the \var{alt} value to the \method{handle_data()}
 method.
diff --git a/Doc/lib/libimageop.tex b/Doc/lib/libimageop.tex
index e5d494d..4a93487 100644
--- a/Doc/lib/libimageop.tex
+++ b/Doc/lib/libimageop.tex
@@ -17,7 +17,7 @@
 \end{excdesc}
 
 
-\begin{funcdesc}{crop}{image\, psize\, width\, height\, x0\, y0\, x1\, y1}
+\begin{funcdesc}{crop}{image, psize, width, height, x0, y0, x1, y1}
 Return the selected part of \var{image}, which should by
 \var{width} by \var{height} in size and consist of pixels of
 \var{psize} bytes. \var{x0}, \var{y0}, \var{x1} and \var{y1} are like
@@ -28,14 +28,14 @@
 holds for the y coordinates.
 \end{funcdesc}
 
-\begin{funcdesc}{scale}{image\, psize\, width\, height\, newwidth\, newheight}
+\begin{funcdesc}{scale}{image, psize, width, height, newwidth, newheight}
 Return \var{image} scaled to size \var{newwidth} by \var{newheight}.
 No interpolation is done, scaling is done by simple-minded pixel
 duplication or removal.  Therefore, computer-generated images or
 dithered images will not look nice after scaling.
 \end{funcdesc}
 
-\begin{funcdesc}{tovideo}{image\, psize\, width\, height}
+\begin{funcdesc}{tovideo}{image, psize, width, height}
 Run a vertical low-pass filter over an image.  It does so by computing
 each destination pixel as the average of two vertically-aligned source
 pixels.  The main use of this routine is to forestall excessive
@@ -43,18 +43,18 @@
 interlacing, hence the name.
 \end{funcdesc}
 
-\begin{funcdesc}{grey2mono}{image\, width\, height\, threshold}
+\begin{funcdesc}{grey2mono}{image, width, height, threshold}
 Convert a 8-bit deep greyscale image to a 1-bit deep image by
 tresholding all the pixels.  The resulting image is tightly packed and
 is probably only useful as an argument to \code{mono2grey}.
 \end{funcdesc}
 
-\begin{funcdesc}{dither2mono}{image\, width\, height}
+\begin{funcdesc}{dither2mono}{image, width, height}
 Convert an 8-bit greyscale image to a 1-bit monochrome image using a
 (simple-minded) dithering algorithm.
 \end{funcdesc}
 
-\begin{funcdesc}{mono2grey}{image\, width\, height\, p0\, p1}
+\begin{funcdesc}{mono2grey}{image, width, height, p0, p1}
 Convert a 1-bit monochrome image to an 8 bit greyscale or color image.
 All pixels that are zero-valued on input get value \var{p0} on output
 and all one-value input pixels get value \var{p1} on output.  To
@@ -62,26 +62,26 @@
 values \code{0} and \code{255} respectively.
 \end{funcdesc}
 
-\begin{funcdesc}{grey2grey4}{image\, width\, height}
+\begin{funcdesc}{grey2grey4}{image, width, height}
 Convert an 8-bit greyscale image to a 4-bit greyscale image without
 dithering.
 \end{funcdesc}
 
-\begin{funcdesc}{grey2grey2}{image\, width\, height}
+\begin{funcdesc}{grey2grey2}{image, width, height}
 Convert an 8-bit greyscale image to a 2-bit greyscale image without
 dithering.
 \end{funcdesc}
 
-\begin{funcdesc}{dither2grey2}{image\, width\, height}
+\begin{funcdesc}{dither2grey2}{image, width, height}
 Convert an 8-bit greyscale image to a 2-bit greyscale image with
 dithering.  As for \code{dither2mono}, the dithering algorithm is
 currently very simple.
 \end{funcdesc}
 
-\begin{funcdesc}{grey42grey}{image\, width\, height}
+\begin{funcdesc}{grey42grey}{image, width, height}
 Convert a 4-bit greyscale image to an 8-bit greyscale image.
 \end{funcdesc}
 
-\begin{funcdesc}{grey22grey}{image\, width\, height}
+\begin{funcdesc}{grey22grey}{image, width, height}
 Convert a 2-bit greyscale image to an 8-bit greyscale image.
 \end{funcdesc}
diff --git a/Doc/lib/libimgfile.tex b/Doc/lib/libimgfile.tex
index 098d59b..8ec31e3 100644
--- a/Doc/lib/libimgfile.tex
+++ b/Doc/lib/libimgfile.tex
@@ -30,7 +30,7 @@
 for instance.
 \end{funcdesc}
 
-\begin{funcdesc}{readscaled}{file\, x\, y\, filter\optional{\, blur}}
+\begin{funcdesc}{readscaled}{file, x, y, filter\optional{, blur}}
 This function is identical to read but it returns an image that is
 scaled to the given \var{x} and \var{y} sizes. If the \var{filter} and
 \var{blur} parameters are omitted scaling is done by
@@ -55,7 +55,7 @@
 compatible with X).  The default is zero.
 \end{funcdesc}
 
-\begin{funcdesc}{write}{file\, data\, x\, y\, z}
+\begin{funcdesc}{write}{file, data, x, y, z}
 This function writes the RGB or greyscale data in \var{data} to image
 file \var{file}. \var{x} and \var{y} give the size of the image,
 \var{z} is 1 for 1 byte greyscale images or 3 for RGB images (which are
diff --git a/Doc/lib/libimp.tex b/Doc/lib/libimp.tex
index 0d0bccc..5664c81 100644
--- a/Doc/lib/libimp.tex
+++ b/Doc/lib/libimp.tex
@@ -188,7 +188,7 @@
 support it.)
 \end{funcdesc}
 
-\begin{funcdesc}{load_source}{name\, pathname\, file}
+\begin{funcdesc}{load_source}{name, pathname, file}
 Load and initialize a module implemented as a Python source file and
 return its module object.  If the module was already initialized, it
 will be initialized \emph{again}.  The \var{name} argument is used to
diff --git a/Doc/lib/libmailcap.tex b/Doc/lib/libmailcap.tex
index ecc8369..da337bb 100644
--- a/Doc/lib/libmailcap.tex
+++ b/Doc/lib/libmailcap.tex
@@ -17,7 +17,7 @@
 is not an Internet standard.  However, mailcap files are supported on
 most \UNIX{} systems.
 
-\begin{funcdesc}{findmatch}{caps\, MIMEtype\, key\, filename\, plist}
+\begin{funcdesc}{findmatch}{caps, MIMEtype, key, filename, plist}
 Return a 2-tuple; the first element is a string containing the command
 line to be executed
 (which can be passed to \code{os.system()}), and the second element is
diff --git a/Doc/lib/libmimetools.tex b/Doc/lib/libmimetools.tex
index 0ae3af5..0d4e40f 100644
--- a/Doc/lib/libmimetools.tex
+++ b/Doc/lib/libmimetools.tex
@@ -30,18 +30,18 @@
 \code{'base64'}, \code{'quoted-printable'} and \code{'uuencode'}.
 \end{funcdesc}
 
-\begin{funcdesc}{encode}{input\, output\, encoding}
+\begin{funcdesc}{encode}{input, output, encoding}
 Read data from open file object \var{input} and write it encoded using
 the allowed MIME \var{encoding} to open file object \var{output}.
 Valid values for \var{encoding} are the same as for \method{decode()}.
 \end{funcdesc}
 
-\begin{funcdesc}{copyliteral}{input\, output}
+\begin{funcdesc}{copyliteral}{input, output}
 Read lines until \EOF{} from open file \var{input} and write them to
 open file \var{output}.
 \end{funcdesc}
 
-\begin{funcdesc}{copybinary}{input\, output}
+\begin{funcdesc}{copybinary}{input, output}
 Read blocks until \EOF{} from open file \var{input} and write them to
 open file \var{output}.  The block size is currently fixed at 8192.
 \end{funcdesc}
diff --git a/Doc/lib/libminiae.tex b/Doc/lib/libminiae.tex
index 00666fa..d898551 100644
--- a/Doc/lib/libminiae.tex
+++ b/Doc/lib/libminiae.tex
@@ -36,14 +36,14 @@
 
 \setindexsubitem{(AEServer method)}
 
-\begin{funcdesc}{installaehandler}{classe\, type\, callback}
+\begin{funcdesc}{installaehandler}{classe, type, callback}
 Installs an AppleEvent handler. \code{Classe} and \code{type} are the
 four-char OSA Class and Type designators, \code{'****'} wildcards are
 allowed. When a matching AppleEvent is received the parameters are
 decoded and your callback is invoked.
 \end{funcdesc}
 
-\begin{funcdesc}{callback}{_object\, **kwargs}
+\begin{funcdesc}{callback}{_object, **kwargs}
 Your callback is called with the OSA Direct Object as first positional
 parameter. The other parameters are passed as keyword arguments, with
 the 4-char designator as name. Three extra keyword parameters are
diff --git a/Doc/lib/libmpz.tex b/Doc/lib/libmpz.tex
index 07b2170..1c4b19f 100644
--- a/Doc/lib/libmpz.tex
+++ b/Doc/lib/libmpz.tex
@@ -37,17 +37,17 @@
 mpz-arguments are converted to mpz-values first, and the functions
 return mpz-numbers.
 
-\begin{funcdesc}{powm}{base\, exponent\, modulus}
+\begin{funcdesc}{powm}{base, exponent, modulus}
   Return \code{pow(\var{base}, \var{exponent}) \%{} \var{modulus}}. If
   \code{\var{exponent} == 0}, return \code{mpz(1)}. In contrast to the
   \C-library function, this version can handle negative exponents.
 \end{funcdesc}
 
-\begin{funcdesc}{gcd}{op1\, op2}
+\begin{funcdesc}{gcd}{op1, op2}
   Return the greatest common divisor of \var{op1} and \var{op2}.
 \end{funcdesc}
 
-\begin{funcdesc}{gcdext}{a\, b}
+\begin{funcdesc}{gcdext}{a, b}
   Return a tuple \code{(\var{g}, \var{s}, \var{t})}, such that
   \code{\var{a}*\var{s} + \var{b}*\var{t} == \var{g} == gcd(\var{a}, \var{b})}.
 \end{funcdesc}
@@ -61,7 +61,7 @@
   \code{\var{root}*\var{root} + \var{remainder} == \var{op}}.
 \end{funcdesc}
 
-\begin{funcdesc}{divm}{numerator\, denominator\, modulus}
+\begin{funcdesc}{divm}{numerator, denominator, modulus}
   Returns a number \var{q}. such that
   \code{\var{q} * \var{denominator} \%{} \var{modulus} == \var{numerator}}.
   One could also implement this function in Python, using \code{gcdext}.
diff --git a/Doc/lib/libparser.tex b/Doc/lib/libparser.tex
index cf45b45..ec1bae5 100644
--- a/Doc/lib/libparser.tex
+++ b/Doc/lib/libparser.tex
@@ -153,7 +153,7 @@
 be compiled into executable code objects.  Parse trees may be
 extracted with or without line numbering information.
 
-\begin{funcdesc}{ast2list}{ast\optional{\, line_info\code{ = 0}}}
+\begin{funcdesc}{ast2list}{ast\optional{, line_info\code{ = 0}}}
 This function accepts an AST object from the caller in
 \code{\var{ast}} and returns a Python list representing the
 equivelent parse tree.  The resulting list representation can be used
@@ -172,7 +172,7 @@
 omitted if the flag is false or omitted.
 \end{funcdesc}
 
-\begin{funcdesc}{ast2tuple}{ast\optional{\, line_info\code{ = 0}}}
+\begin{funcdesc}{ast2tuple}{ast\optional{, line_info\code{ = 0}}}
 This function accepts an AST object from the caller in
 \code{\var{ast}} and returns a Python tuple representing the
 equivelent parse tree.  Other than returning a tuple instead of a
@@ -184,7 +184,7 @@
 false or omitted.
 \end{funcdesc}
 
-\begin{funcdesc}{compileast}{ast\optional{\, filename\code{ = '<ast>'}}}
+\begin{funcdesc}{compileast}{ast\optional{, filename\code{ = '<ast>'}}}
 The Python byte compiler can be invoked on an AST object to produce
 code objects which can be used as part of an \code{exec} statement or
 a call to the built-in \function{eval()}\bifuncindex{eval} function.
diff --git a/Doc/lib/libpdb.tex b/Doc/lib/libpdb.tex
index 5cfada5..4fe8ad1 100644
--- a/Doc/lib/libpdb.tex
+++ b/Doc/lib/libpdb.tex
@@ -69,7 +69,7 @@
 The module defines the following functions; each enters the debugger
 in a slightly different way:
 
-\begin{funcdesc}{run}{statement\optional{\, globals\optional{\, locals}}}
+\begin{funcdesc}{run}{statement\optional{, globals\optional{, locals}}}
 Execute the \var{statement} (given as a string) under debugger
 control.  The debugger prompt appears before any code is executed; you
 can set breakpoints and type \code{continue}, or you can step through
@@ -81,14 +81,14 @@
 built-in function.)
 \end{funcdesc}
 
-\begin{funcdesc}{runeval}{expression\optional{\, globals\optional{\, locals}}}
+\begin{funcdesc}{runeval}{expression\optional{, globals\optional{, locals}}}
 Evaluate the \var{expression} (given as a a string) under debugger
 control.  When \code{runeval()} returns, it returns the value of the
 expression.  Otherwise this function is similar to
 \code{run()}.
 \end{funcdesc}
 
-\begin{funcdesc}{runcall}{function\optional{\, argument\, ...}}
+\begin{funcdesc}{runcall}{function\optional{, argument, ...}}
 Call the \var{function} (a function or method object, not a string)
 with the given arguments.  When \code{runcall()} returns, it returns
 whatever the function call returned.  The debugger prompt appears as
diff --git a/Doc/lib/libpickle.tex b/Doc/lib/libpickle.tex
index e2dab0a..d508e5b 100644
--- a/Doc/lib/libpickle.tex
+++ b/Doc/lib/libpickle.tex
@@ -229,7 +229,7 @@
 Apart from the \code{Pickler} and \code{Unpickler} classes, the
 module defines the following functions, and an exception:
 
-\begin{funcdesc}{dump}{object\, file\optional{, bin}}
+\begin{funcdesc}{dump}{object, file\optional{, bin}}
 Write a pickled representation of \var{obect} to the open file object
 \var{file}.  This is equivalent to
 \code{Pickler(\var{file}, \var{bin}).dump(\var{object})}.
diff --git a/Doc/lib/libposix.tex b/Doc/lib/libposix.tex
index 454c652..101938d 100644
--- a/Doc/lib/libposix.tex
+++ b/Doc/lib/libposix.tex
@@ -79,11 +79,11 @@
 Change the current working directory to \var{path}.
 \end{funcdesc}
 
-\begin{funcdesc}{chmod}{path\, mode}
+\begin{funcdesc}{chmod}{path, mode}
 Change the mode of \var{path} to the numeric \var{mode}.
 \end{funcdesc}
 
-\begin{funcdesc}{chown}{path\, uid, gid}
+\begin{funcdesc}{chown}{path, uid, gid}
 Change the owner and group id of \var{path} to the numeric \var{uid}
 and \var{gid}.
 (Not on MS-DOS.)
@@ -103,19 +103,19 @@
 Return a duplicate of file descriptor \var{fd}.
 \end{funcdesc}
 
-\begin{funcdesc}{dup2}{fd\, fd2}
+\begin{funcdesc}{dup2}{fd, fd2}
 Duplicate file descriptor \var{fd} to \var{fd2}, closing the latter
 first if necessary.
 \end{funcdesc}
 
-\begin{funcdesc}{execv}{path\, args}
+\begin{funcdesc}{execv}{path, args}
 Execute the executable \var{path} with argument list \var{args},
 replacing the current process (i.e., the Python interpreter).
 The argument list may be a tuple or list of strings.
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{execve}{path\, args\, env}
+\begin{funcdesc}{execve}{path, args, env}
 Execute the executable \var{path} with argument list \var{args},
 and environment \var{env},
 replacing the current process (i.e., the Python interpreter).
@@ -134,7 +134,7 @@
 after a \function{fork()}.
 \end{funcdesc}
 
-\begin{funcdesc}{fdopen}{fd\optional{\, mode\optional{\, bufsize}}}
+\begin{funcdesc}{fdopen}{fd\optional{, mode\optional{, bufsize}}}
 Return an open file object connected to the file descriptor \var{fd}.
 The \var{mode} and \var{bufsize} arguments have the same meaning as
 the corresponding arguments to the built-in \function{open()} function.
@@ -150,7 +150,7 @@
 Return status for file descriptor \var{fd}, like \function{stat()}.
 \end{funcdesc}
 
-\begin{funcdesc}{ftruncate}{fd\, length}
+\begin{funcdesc}{ftruncate}{fd, length}
 Truncate the file corresponding to file descriptor \var{fd}, 
 so that it is at most \var{length} bytes in size.
 \end{funcdesc}
@@ -194,12 +194,12 @@
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{kill}{pid\, sig}
+\begin{funcdesc}{kill}{pid, sig}
 Kill the process \var{pid} with signal \var{sig}.
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{link}{src\, dst}
+\begin{funcdesc}{link}{src, dst}
 Create a hard link pointing to \var{src} named \var{dst}.
 (Not on MS-DOS.)
 \end{funcdesc}
@@ -211,7 +211,7 @@
 directory.
 \end{funcdesc}
 
-\begin{funcdesc}{lseek}{fd\, pos\, how}
+\begin{funcdesc}{lseek}{fd, pos, how}
 Set the current position of file descriptor \var{fd} to position
 \var{pos}, modified by \var{how}: \code{0} to set the position
 relative to the beginning of the file; \code{1} to set it relative to
@@ -224,7 +224,7 @@
 without symbolic links, this is identical to \function{stat()}.)
 \end{funcdesc}
 
-\begin{funcdesc}{mkfifo}{path\optional{\, mode}}
+\begin{funcdesc}{mkfifo}{path\optional{, mode}}
 Create a FIFO (a \POSIX{} named pipe) named \var{path} with numeric mode
 \var{mode}.  The default \var{mode} is \code{0666} (octal).  The current
 umask value is first masked out from the mode.
@@ -238,7 +238,7 @@
 doesn't open the FIFO --- it just creates the rendezvous point.
 \end{funcdesc}
 
-\begin{funcdesc}{mkdir}{path\optional{\, mode}}
+\begin{funcdesc}{mkdir}{path\optional{, mode}}
 Create a directory named \var{path} with numeric mode \var{mode}.
 The default \var{mode} is \code{0777} (octal).  On some systems,
 \var{mode} is ignored.  Where it is used, the current umask value is
@@ -250,7 +250,7 @@
 niceness.  (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{open}{file\, flags\optional{\, mode}}
+\begin{funcdesc}{open}{file, flags\optional{, mode}}
 Open the file \var{file} and set various flags according to
 \var{flags} and possibly its mode according to \var{mode}.
 The default \var{mode} is \code{0777} (octal), and the current umask
@@ -279,7 +279,7 @@
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{popen}{command\optional{\, mode\optional{\, bufsize}}}
+\begin{funcdesc}{popen}{command\optional{, mode\optional{, bufsize}}}
 Open a pipe to or from \var{command}.  The return value is an open
 file object connected to the pipe, which can be read or written
 depending on whether \var{mode} is \code{'r'} (default) or \code{'w'}.
@@ -291,7 +291,7 @@
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{putenv}{varname\, value}
+\begin{funcdesc}{putenv}{varname, value}
 \index{environment variables!setting}
 Set the environment variable named \var{varname} to the string
 \var{value}.  Such changes to the environment affect subprocesses
@@ -309,7 +309,7 @@
 Return the error message corresponding to the error code in \var{code}.
 \end{funcdesc}
 
-\begin{funcdesc}{read}{fd\, n}
+\begin{funcdesc}{read}{fd, n}
 Read at most \var{n} bytes from file descriptor \var{fd}.
 Return a string containing the bytes read.
 
@@ -333,7 +333,7 @@
 documented below.
 \end{funcdesc}
 
-\begin{funcdesc}{rename}{src\, dst}
+\begin{funcdesc}{rename}{src, dst}
 Rename the file or directory \var{src} to \var{dst}.
 \end{funcdesc}
 
@@ -353,7 +353,7 @@
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{setpgid}{pid\, pgrp}
+\begin{funcdesc}{setpgid}{pid, pgrp}
 Calls the system call \cfunction{setpgid()}.  See the \UNIX{} manual
 for the semantics.
 (Not on MS-DOS.)
@@ -393,7 +393,7 @@
 from a stat structure.
 \end{funcdesc}
 
-\begin{funcdesc}{symlink}{src\, dst}
+\begin{funcdesc}{symlink}{src, dst}
 Create a symbolic link pointing to \var{src} named \var{dst}.  (On
 systems without symbolic links, this always raises \exception{error}.)
 \end{funcdesc}
@@ -413,7 +413,7 @@
 (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{tcsetpgrp}{fd\, pg}
+\begin{funcdesc}{tcsetpgrp}{fd, pg}
 Set the process group associated with the terminal given by
 \var{fd} (an open file descriptor as returned by \function{open()})
 to \var{pg}.
@@ -453,7 +453,7 @@
 the \code{unlink} name is its traditional \UNIX{} name.
 \end{funcdesc}
 
-\begin{funcdesc}{utime}{path\, {\rm (}atime, mtime{\rm )}}
+\begin{funcdesc}{utime}{path, {\rm (}atime, mtime{\rm )}}
 Set the access and modified time of the file to the given values.
 (The second argument is a tuple of two items.)
 \end{funcdesc}
@@ -466,7 +466,7 @@
 byte is set if a core file was produced.  (Not on MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{waitpid}{pid\, options}
+\begin{funcdesc}{waitpid}{pid, options}
 Wait for completion of a child process given by proces id, and return
 a tuple containing its pid and exit status indication (encoded as for
 \function{wait()}).  The semantics of the call are affected by the
@@ -476,7 +476,7 @@
 MS-DOS.)
 \end{funcdesc}
 
-\begin{funcdesc}{write}{fd\, str}
+\begin{funcdesc}{write}{fd, str}
 Write the string \var{str} to file descriptor \var{fd}.
 Return the number of bytes actually written.
 
diff --git a/Doc/lib/libppath.tex b/Doc/lib/libppath.tex
index f1d17d6..6639c7c 100644
--- a/Doc/lib/libppath.tex
+++ b/Doc/lib/libppath.tex
@@ -80,7 +80,7 @@
 detect mount points for all \UNIX{} and \POSIX{} variants.
 \end{funcdesc}
 
-\begin{funcdesc}{join}{p\optional{\, q\optional{\, ...}}}
+\begin{funcdesc}{join}{p\optional{, q\optional{, ...}}}
 Joins one or more path components intelligently.  If any component is
 an absolute path, all previous components are thrown away, and joining
 continues.  The return value is the concatenation of \var{p}, and
@@ -103,7 +103,7 @@
 converts forward slashes to backward slashes.
 \end{funcdesc}
 
-\begin{funcdesc}{samefile}{p\, q}
+\begin{funcdesc}{samefile}{p, q}
 Return true if both pathname arguments refer to the same file or
 directory (as indicated by device number and i-node number).
 Raise an exception if a \function{os.stat()} call on either pathname
@@ -130,7 +130,7 @@
 at most one period.
 \end{funcdesc}
 
-\begin{funcdesc}{walk}{p\, visit\, arg}
+\begin{funcdesc}{walk}{p, visit, arg}
 Calls the function \var{visit} with arguments
 \code{(\var{arg}, \var{dirname}, \var{names})} for each directory in the
 directory tree rooted at \var{p} (including \var{p} itself, if it is a
diff --git a/Doc/lib/libprofile.tex b/Doc/lib/libprofile.tex
index a8b2099..3fa79df 100644
--- a/Doc/lib/libprofile.tex
+++ b/Doc/lib/libprofile.tex
@@ -269,7 +269,7 @@
 ``better'' profilers from the classes presented, or reading the source
 code for these modules.
 
-\begin{funcdesc}{profile.run}{string\optional{\, filename\optional{\, ...}}}
+\begin{funcdesc}{profile.run}{string\optional{, filename\optional{, ...}}}
 
 This function takes a single argument that has can be passed to the
 \keyword{exec} statement, and an optional file name.  In all cases this
@@ -338,7 +338,7 @@
 
 \setindexsubitem{(in module pstats)}
 
-\begin{classdesc}{Stats}{filename\optional{\, ...}}
+\begin{classdesc}{Stats}{filename\optional{, ...}}
 This class constructor creates an instance of a ``statistics object''
 from a \var{filename} (or set of filenames).  \class{Stats} objects are
 manipulated by methods, in order to print useful reports.
@@ -375,7 +375,7 @@
 \end{funcdesc}
 
 
-\begin{funcdesc}{add}{filename\optional{\, ...}}
+\begin{funcdesc}{add}{filename\optional{, ...}}
 This method of the \class{Stats} class accumulates additional
 profiling information into the current profiling object.  Its
 arguments should refer to filenames created by the corresponding
@@ -384,7 +384,7 @@
 single function statistics.
 \end{funcdesc}
 
-\begin{funcdesc}{sort_stats}{key\optional{\, ...}}
+\begin{funcdesc}{sort_stats}{key\optional{, ...}}
 This method modifies the \class{Stats} object by sorting it according
 to the supplied criteria.  The argument is typically a string
 identifying the basis of a sort (example: \code{"time"} or
@@ -441,7 +441,7 @@
 the sort key of choice.
 \end{funcdesc}
 
-\begin{funcdesc}{print_stats}{restriction\optional{\, ...}}
+\begin{funcdesc}{print_stats}{restriction\optional{, ...}}
 This method for the \class{Stats} class prints out a report as described
 in the \function{profile.run()} definition.
 
@@ -476,7 +476,7 @@
 \end{funcdesc}
 
 
-\begin{funcdesc}{print_callers}{restrictions\optional{\, ...}}
+\begin{funcdesc}{print_callers}{restrictions\optional{, ...}}
 This method for the \class{Stats} class prints a list of all functions
 that called each function in the profiled database.  The ordering is
 identical to that provided by \method{print_stats()}, and the definition
@@ -486,7 +486,7 @@
 is the cumulative time spent in the function at the right.
 \end{funcdesc}
 
-\begin{funcdesc}{print_callees}{restrictions\optional{\, ...}}
+\begin{funcdesc}{print_callees}{restrictions\optional{, ...}}
 This method for the \class{Stats} class prints a list of all function
 that were called by the indicated function.  Aside from this reversal
 of direction of calls (re: called vs was called by), the arguments and
diff --git a/Doc/lib/libquopri.tex b/Doc/lib/libquopri.tex
index 4ad0c0f..e379e4a 100644
--- a/Doc/lib/libquopri.tex
+++ b/Doc/lib/libquopri.tex
@@ -13,7 +13,7 @@
 
 \setindexsubitem{(in module quopri)}
 
-\begin{funcdesc}{decode}{input\, output}
+\begin{funcdesc}{decode}{input, output}
 Decode the contents of the \var{input} file and write the resulting
 decoded binary data to the \var{output} file.
 \var{input} and \var{output} must either be file objects or objects that
@@ -21,7 +21,7 @@
 \code{\var{input}.read()} returns an empty string.
 \end{funcdesc}
 
-\begin{funcdesc}{encode}{input\, output\, quotetabs}
+\begin{funcdesc}{encode}{input, output, quotetabs}
 Encode the contents of the \var{input} file and write the resulting
 quoted-printable data to the \var{output} file.
 \var{input} and \var{output} must either be file objects or objects that
diff --git a/Doc/lib/libregex.tex b/Doc/lib/libregex.tex
index f427a88..e3de911 100644
--- a/Doc/lib/libregex.tex
+++ b/Doc/lib/libregex.tex
@@ -192,21 +192,21 @@
 
 \setindexsubitem{(in module regex)}
 
-\begin{funcdesc}{match}{pattern\, string}
+\begin{funcdesc}{match}{pattern, string}
   Return how many characters at the beginning of \var{string} match
   the regular expression \var{pattern}.  Return \code{-1} if the
   string does not match the pattern (this is different from a
   zero-length match!).
 \end{funcdesc}
 
-\begin{funcdesc}{search}{pattern\, string}
+\begin{funcdesc}{search}{pattern, string}
   Return the first position in \var{string} that matches the regular
   expression \var{pattern}.  Return \code{-1} if no position in the string
   matches the pattern (this is different from a zero-length match
   anywhere!).
 \end{funcdesc}
 
-\begin{funcdesc}{compile}{pattern\optional{\, translate}}
+\begin{funcdesc}{compile}{pattern\optional{, translate}}
   Compile a regular expression pattern into a regular expression
   object, which can be used for matching using its \code{match()} and
   \code{search()} methods, described below.  The optional argument
@@ -252,7 +252,7 @@
   Returns the current value of the syntax flags as an integer.
 \end{funcdesc}
 
-\begin{funcdesc}{symcomp}{pattern\optional{\, translate}}
+\begin{funcdesc}{symcomp}{pattern\optional{, translate}}
 This is like \code{compile()}, but supports symbolic group names: if a
 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
@@ -279,7 +279,7 @@
 Compiled regular expression objects support these methods:
 
 \setindexsubitem{(regex method)}
-\begin{funcdesc}{match}{string\optional{\, pos}}
+\begin{funcdesc}{match}{string\optional{, pos}}
   Return how many characters at the beginning of \var{string} match
   the compiled regular expression.  Return \code{-1} if the string
   does not match the pattern (this is different from a zero-length
@@ -293,7 +293,7 @@
   is to start.
 \end{funcdesc}
 
-\begin{funcdesc}{search}{string\optional{\, pos}}
+\begin{funcdesc}{search}{string\optional{, pos}}
   Return the first position in \var{string} that matches the regular
   expression \code{pattern}.  Return \code{-1} if no position in the
   string matches the pattern (this is different from a zero-length
@@ -303,7 +303,7 @@
   \code{match()} method.
 \end{funcdesc}
 
-\begin{funcdesc}{group}{index\, index\, ...}
+\begin{funcdesc}{group}{index, index, ...}
 This method is only valid when the last call to the \code{match()}
 or \code{search()} method found a match.  It returns one or more
 groups of the match.  If there is a single \var{index} argument,
diff --git a/Doc/lib/libregsub.tex b/Doc/lib/libregsub.tex
index 08b990e..b4d3862 100644
--- a/Doc/lib/libregsub.tex
+++ b/Doc/lib/libregsub.tex
@@ -20,7 +20,7 @@
 
 \setindexsubitem{(in module regsub)}
 
-\begin{funcdesc}{sub}{pat\, repl\, str}
+\begin{funcdesc}{sub}{pat, repl, str}
 Replace the first occurrence of pattern \var{pat} in string
 \var{str} by replacement \var{repl}.  If the pattern isn't found,
 the string is returned unchanged.  The pattern may be a string or an
@@ -28,7 +28,7 @@
 \samp{\e \var{digit}} to subpatterns and escaped backslashes.
 \end{funcdesc}
 
-\begin{funcdesc}{gsub}{pat\, repl\, str}
+\begin{funcdesc}{gsub}{pat, repl, str}
 Replace all (non-overlapping) occurrences of pattern \var{pat} in
 string \var{str} by replacement \var{repl}.  The same rules as for
 \code{sub()} apply.  Empty matches for the pattern are replaced only
@@ -36,7 +36,7 @@
 \code{gsub('', '-', 'abc')} returns \code{'-a-b-c-'}.
 \end{funcdesc}
 
-\begin{funcdesc}{split}{str\, pat\optional{\, maxsplit}}
+\begin{funcdesc}{split}{str, pat\optional{, maxsplit}}
 Split the string \var{str} in fields separated by delimiters matching
 the pattern \var{pat}, and return a list containing the fields.  Only
 non-empty matches for the pattern are considered, so e.g.
@@ -47,7 +47,7 @@
 element of the list.
 \end{funcdesc}
 
-\begin{funcdesc}{splitx}{str\, pat\optional{\, maxsplit}}
+\begin{funcdesc}{splitx}{str, pat\optional{, maxsplit}}
 Split the string \var{str} in fields separated by delimiters matching
 the pattern \var{pat}, and return a list containing the fields as well
 as the separators.  For example, \code{splitx('a:::b', ':*')} returns
@@ -55,7 +55,7 @@
 as \code{split}.
 \end{funcdesc}
 
-\begin{funcdesc}{capwords}{s\optional{\, pat}}
+\begin{funcdesc}{capwords}{s\optional{, pat}}
 Capitalize words separated by optional pattern \var{pat}.  The default
 pattern uses any characters except letters, digits and underscores as
 word delimiters.  Capitalization is done by changing the first
diff --git a/Doc/lib/librexec.tex b/Doc/lib/librexec.tex
index 626edd3..e301f81 100644
--- a/Doc/lib/librexec.tex
+++ b/Doc/lib/librexec.tex
@@ -151,7 +151,7 @@
 exception if the module is considered unsafe.
 \end{funcdesc}
 
-\begin{funcdesc}{r_open}{filename\optional{\, mode\optional{\, bufsize}}}
+\begin{funcdesc}{r_open}{filename\optional{, mode\optional{, bufsize}}}
 Method called when \function{open()} is called in the restricted
 environment.  The arguments are identical to those of \function{open()},
 and a file object (or a class instance compatible with file objects)
@@ -172,7 +172,7 @@
 
 And their equivalents with access to restricted standard I/O streams:
 
-\begin{funcdesc}{s_import}{modulename\optional{\, globals, locals, fromlist}}
+\begin{funcdesc}{s_import}{modulename\optional{, globals, locals, fromlist}}
 Import the module \var{modulename}, raising an \exception{ImportError}
 exception if the module is considered unsafe.
 \end{funcdesc}
diff --git a/Doc/lib/librgbimg.tex b/Doc/lib/librgbimg.tex
index 9432d2e..cb11554 100644
--- a/Doc/lib/librgbimg.tex
+++ b/Doc/lib/librgbimg.tex
@@ -29,7 +29,7 @@
 for instance.
 \end{funcdesc}
 
-\begin{funcdesc}{longstoimage}{data\, x\, y\, z\, file}
+\begin{funcdesc}{longstoimage}{data, x, y, z, file}
 This function writes the RGBA data in \var{data} to image
 file \var{file}. \var{x} and \var{y} give the size of the image.
 \var{z} is 1 if the saved image should be 1 byte greyscale, 3 if the
diff --git a/Doc/lib/librotor.tex b/Doc/lib/librotor.tex
index 488a49f..e467d4e 100644
--- a/Doc/lib/librotor.tex
+++ b/Doc/lib/librotor.tex
@@ -25,7 +25,7 @@
 The available functions in this module are:
 
 \setindexsubitem{(in module rotor)}
-\begin{funcdesc}{newrotor}{key\optional{\, numrotors}}
+\begin{funcdesc}{newrotor}{key\optional{, numrotors}}
 Return a rotor object. \var{key} is a string containing the encryption key
 for the object; it can contain arbitrary binary data. The key will be used
 to randomly generate the rotor permutations and their initial positions.
diff --git a/Doc/lib/libselect.tex b/Doc/lib/libselect.tex
index 956bf7f..5a800f5 100644
--- a/Doc/lib/libselect.tex
+++ b/Doc/lib/libselect.tex
@@ -13,7 +13,7 @@
 \code{perror()}.
 \end{excdesc}
 
-\begin{funcdesc}{select}{iwtd\, owtd\, ewtd\optional{\, timeout}}
+\begin{funcdesc}{select}{iwtd, owtd, ewtd\optional{, timeout}}
 This is a straightforward interface to the \UNIX{} \code{select()}
 system call.  The first three arguments are lists of `waitable
 objects': either integers representing \UNIX{} file descriptors or
diff --git a/Doc/lib/libsgmllib.tex b/Doc/lib/libsgmllib.tex
index 78060ec..f93095b 100644
--- a/Doc/lib/libsgmllib.tex
+++ b/Doc/lib/libsgmllib.tex
@@ -140,7 +140,7 @@
 correspond to any open element.
 \end{funcdesc}
 
-\begin{funcdesc}{unknown_starttag}{tag\, attributes}
+\begin{funcdesc}{unknown_starttag}{tag, attributes}
 This method is called to process an unknown start tag.  It is intended
 to be overridden by a derived class; the base class implementation
 does nothing.
diff --git a/Doc/lib/libsignal.tex b/Doc/lib/libsignal.tex
index 39286a7..fd74cf8 100644
--- a/Doc/lib/libsignal.tex
+++ b/Doc/lib/libsignal.tex
@@ -124,7 +124,7 @@
   \UNIX{} man page \manpage{signal}{2}.)
 \end{funcdesc}
 
-\begin{funcdesc}{signal}{signalnum\, handler}
+\begin{funcdesc}{signal}{signalnum, handler}
   Set the handler for signal \var{signalnum} to the function
   \var{handler}.  \var{handler} can be any callable Python object, or
   one of the special values \constant{signal.SIG_IGN} or
diff --git a/Doc/lib/libsocket.tex b/Doc/lib/libsocket.tex
index 913bb8f..aff99d4 100644
--- a/Doc/lib/libsocket.tex
+++ b/Doc/lib/libsocket.tex
@@ -260,7 +260,7 @@
 least 1; the maximum value is system-dependent (usually 5).
 \end{funcdesc}
 
-\begin{funcdesc}{makefile}{\optional{mode\optional{\, bufsize}}}
+\begin{funcdesc}{makefile}{\optional{mode\optional{, bufsize}}}
 Return a \dfn{file object} associated with the socket.  (File objects
 were described earlier in \ref{bltin-file-objects}, ``File Objects.'')
 The file object references a \cfunction{dup()}ped version of the
@@ -293,7 +293,7 @@
 \method{recv()} above.  Returns the number of bytes sent.
 \end{funcdesc}
 
-\begin{funcdesc}{sendto}{string\optional{\, flags}\, address}
+\begin{funcdesc}{sendto}{string\optional{, flags}, address}
 Send data to the socket.  The socket should not be connected to a
 remote socket, since the destination socket is specified by
 \var{address}.  The optional \var{flags} argument has the same
@@ -310,7 +310,7 @@
 raised; in blocking mode, the calls block until they can proceed.
 \end{funcdesc}
 
-\begin{funcdesc}{setsockopt}{level\, optname\, value}
+\begin{funcdesc}{setsockopt}{level, optname, value}
 Set the value of the given socket option (see the \UNIX{} man page
 \manpage{setsockopt}{2}).  The needed symbolic constants are defined in
 the \module{socket} module (\code{SO_*} etc.).  The value can be an
diff --git a/Doc/lib/libsocksvr.tex b/Doc/lib/libsocksvr.tex
index ea1b703..2ee36a4 100644
--- a/Doc/lib/libsocksvr.tex
+++ b/Doc/lib/libsocksvr.tex
@@ -123,14 +123,14 @@
 client, and the client's address.
 \end{funcdesc}
 
-\begin{funcdesc}{handle_error}{request\, client_address}
+\begin{funcdesc}{handle_error}{request, client_address}
 This function is called if the \member{RequestHandlerClass}'s
 \method{handle()} method raises an exception.  The default action is
 to print the traceback to standard output and continue handling
 further requests.
 \end{funcdesc}
 
-\begin{funcdesc}{process_request}{request\, client_address}
+\begin{funcdesc}{process_request}{request, client_address}
 Calls \method{finish_request()} to create an instance of the
 \member{RequestHandlerClass}.  If desired, this function can create a
 new process or thread to handle the request; the \class{ForkingMixIn}
@@ -151,7 +151,7 @@
 address.  May be overridden.
 \end{funcdesc}
 
-\begin{funcdesc}{verify_request}{request\, client_address}
+\begin{funcdesc}{verify_request}{request, client_address}
 Must return a Boolean value; if the value is true, the request will be
 processed, and if it's false, the request will be denied.
 This function can be overridden to implement access controls for a server.
diff --git a/Doc/lib/libstdwin.tex b/Doc/lib/libstdwin.tex
index b16fde6..35ff6a7 100644
--- a/Doc/lib/libstdwin.tex
+++ b/Doc/lib/libstdwin.tex
@@ -80,16 +80,16 @@
 On the Macintosh this function currently returns an empty list.
 \end{funcdesc}
 
-\begin{funcdesc}{setdefscrollbars}{hflag\, vflag}
+\begin{funcdesc}{setdefscrollbars}{hflag, vflag}
 Set the flags controlling whether subsequently opened windows will
 have horizontal and/or vertical scroll bars.
 \end{funcdesc}
 
-\begin{funcdesc}{setdefwinpos}{h\, v}
+\begin{funcdesc}{setdefwinpos}{h, v}
 Set the default window position for windows opened subsequently.
 \end{funcdesc}
 
-\begin{funcdesc}{setdefwinsize}{width\, height}
+\begin{funcdesc}{setdefwinsize}{width, height}
 Set the default window size for windows opened subsequently.
 \end{funcdesc}
 
@@ -176,7 +176,7 @@
 returned by this call exists.
 \end{funcdesc}
 
-\begin{funcdesc}{newbitmap}{width\, height}
+\begin{funcdesc}{newbitmap}{width, height}
 Create a new bitmap object of the given dimensions.
 Methods of bitmap objects are described below.
 Not available on the Macintosh.
@@ -192,7 +192,7 @@
 The user must click OK before the function returns.
 \end{funcdesc}
 
-\begin{funcdesc}{askync}{prompt\, default}
+\begin{funcdesc}{askync}{prompt, default}
 Display a dialog that prompts the user to answer a question with yes or
 no.
 Return 0 for no, 1 for yes.
@@ -203,7 +203,7 @@
 exception is raised.
 \end{funcdesc}
 
-\begin{funcdesc}{askstr}{prompt\, default}
+\begin{funcdesc}{askstr}{prompt, default}
 Display a dialog that prompts the user for a string.
 If the user hits the Return key, the default string is returned.
 If the user cancels the dialog, the
@@ -211,7 +211,7 @@
 exception is raised.
 \end{funcdesc}
 
-\begin{funcdesc}{askfile}{prompt\, default\, new}
+\begin{funcdesc}{askfile}{prompt, default, new}
 Ask the user to specify a filename.
 If
 \var{new}
@@ -221,7 +221,7 @@
 exception is raised.
 \end{funcdesc}
 
-\begin{funcdesc}{setcutbuffer}{i\, string}
+\begin{funcdesc}{setcutbuffer}{i, string}
 Store the string in the system's cut buffer number
 \var{i},
 where it can be found (for pasting) by other applications.
@@ -278,7 +278,7 @@
 Return the total line height of the current font.
 \end{funcdesc}
 
-\begin{funcdesc}{textbreak}{str\, width}
+\begin{funcdesc}{textbreak}{str, width}
 Return the number of characters of the string that fit into a space of
 \var{width}
 bits wide when drawn in the curent font.
@@ -365,7 +365,7 @@
 returned by this call exists.
 \end{funcdesc}
 
-\begin{funcdesc}{scroll}{rect\, point}
+\begin{funcdesc}{scroll}{rect, point}
 Scroll the given rectangle by the vector given by the point.
 \end{funcdesc}
 
@@ -378,7 +378,7 @@
 to the given point in the document.
 \end{funcdesc}
 
-\begin{funcdesc}{setselection}{i\, str}
+\begin{funcdesc}{setselection}{i, str}
 Attempt to set X11 selection number
 \var{i}
 to the string
@@ -428,12 +428,12 @@
 \end{sloppypar}
 \end{funcdesc}
 
-\begin{funcdesc}{setwinpos}{h\, v}
+\begin{funcdesc}{setwinpos}{h, v}
 Set the the position of the window's upper left corner (relative to
 the upper left corner of the screen).
 \end{funcdesc}
 
-\begin{funcdesc}{setwinsize}{width\, height}
+\begin{funcdesc}{setwinsize}{width, height}
 Set the window's size.
 \end{funcdesc}
 
@@ -474,11 +474,11 @@
 Draw a box just inside a rectangle.
 \end{funcdesc}
 
-\begin{funcdesc}{circle}{center\, radius}
+\begin{funcdesc}{circle}{center, radius}
 Draw a circle with given center point and radius.
 \end{funcdesc}
 
-\begin{funcdesc}{elarc}{center\, \(rh\, rv\)\, \(a1\, a2\)}
+\begin{funcdesc}{elarc}{center, \(rh, rv\), \(a1, a2\)}
 Draw an elliptical arc with given center point.
 \code{(\var{rh}, \var{rv})}
 gives the half sizes of the horizontal and vertical radii.
@@ -491,11 +491,11 @@
 Erase a rectangle.
 \end{funcdesc}
 
-\begin{funcdesc}{fillcircle}{center\, radius}
+\begin{funcdesc}{fillcircle}{center, radius}
 Draw a filled circle with given center point and radius.
 \end{funcdesc}
 
-\begin{funcdesc}{fillelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)}
+\begin{funcdesc}{fillelarc}{center, \(rh, rv\), \(a1, a2\)}
 Draw a filled elliptical arc; arguments as for \code{elarc}.
 \end{funcdesc}
 
@@ -507,7 +507,7 @@
 Invert a rectangle.
 \end{funcdesc}
 
-\begin{funcdesc}{line}{p1\, p2}
+\begin{funcdesc}{line}{p1, p2}
 Draw a line from point
 \var{p1}
 to
@@ -522,20 +522,20 @@
 Draw the lines connecting the given list (or tuple) of points.
 \end{funcdesc}
 
-\begin{funcdesc}{shade}{rect\, percent}
+\begin{funcdesc}{shade}{rect, percent}
 Fill a rectangle with a shading pattern that is about
 \var{percent}
 percent filled.
 \end{funcdesc}
 
-\begin{funcdesc}{text}{p\, str}
+\begin{funcdesc}{text}{p, str}
 Draw a string starting at point p (the point specifies the
 top left coordinate of the string).
 \end{funcdesc}
 
-\begin{funcdesc}{xorcircle}{center\, radius}
-\funcline{xorelarc}{center\, \(rh\, rv\)\, \(a1\, a2\)}
-\funcline{xorline}{p1\, p2}
+\begin{funcdesc}{xorcircle}{center, radius}
+\funcline{xorelarc}{center, \(rh, rv\), \(a1, a2\)}
+\funcline{xorline}{p1, p2}
 \funcline{xorpoly}{points}
 Draw a circle, an elliptical arc, a line or a polygon, respectively,
 in XOR mode.
@@ -570,7 +570,7 @@
 font when the window is created.
 \end{funcdesc}
 
-\begin{funcdesc}{bitmap}{point\, bitmap\, mask}
+\begin{funcdesc}{bitmap}{point, bitmap, mask}
 Draw the \var{bitmap} with its top left corner at \var{point}.
 If the optional \var{mask} argument is present, it should be either
 the same object as \var{bitmap}, to draw only those bits that are set
@@ -608,23 +608,23 @@
 
 \setindexsubitem{(menu method)}
 
-\begin{funcdesc}{additem}{text\, shortcut}
+\begin{funcdesc}{additem}{text, shortcut}
 Add a menu item with given text.
 The shortcut must be a string of length 1, or omitted (to specify no
 shortcut).
 \end{funcdesc}
 
-\begin{funcdesc}{setitem}{i\, text}
+\begin{funcdesc}{setitem}{i, text}
 Set the text of item number
 \var{i}.
 \end{funcdesc}
 
-\begin{funcdesc}{enable}{i\, flag}
+\begin{funcdesc}{enable}{i, flag}
 Enable or disables item
 \var{i}.
 \end{funcdesc}
 
-\begin{funcdesc}{check}{i\, flag}
+\begin{funcdesc}{check}{i, flag}
 Set or clear the
 \dfn{check mark}
 for item
@@ -652,7 +652,7 @@
 function.)
 \end{funcdesc}
 
-\begin{funcdesc}{setbit}{point\, bit}
+\begin{funcdesc}{setbit}{point, bit}
 Set the value of the bit indicated by \var{point} to \var{bit}.
 \end{funcdesc}
 
@@ -691,7 +691,7 @@
 The rectangle specifies the redraw area.
 \end{funcdesc}
 
-\begin{funcdesc}{event}{type\, window\, detail}
+\begin{funcdesc}{event}{type, window, detail}
 Pass an event gotten from
 \code{stdwin.getevent()}
 to the text-edit block.
@@ -727,7 +727,7 @@
 The new focus is an insert point at the end of the string.
 \end{funcdesc}
 
-\begin{funcdesc}{setfocus}{i\, j}
+\begin{funcdesc}{setfocus}{i, j}
 Specify the new focus.
 Out-of-bounds values are silently clipped.
 \end{funcdesc}
@@ -869,7 +869,7 @@
 if the list is empty or all its rectangles are empty.
 \end{funcdesc}
 
-\begin{funcdesc}{pointinrect}{point\, rect}
+\begin{funcdesc}{pointinrect}{point, rect}
 Returns true if the point is inside the rectangle.
 By definition, a point
 \code{(\var{h}, \var{v})}
@@ -884,7 +884,7 @@
 \fi
 \end{funcdesc}
 
-\begin{funcdesc}{inset}{rect\, \(dh\, dv\)}
+\begin{funcdesc}{inset}{rect, \(dh, dv\)}
 Returns a rectangle that lies inside the
 \code{rect}
 argument by
diff --git a/Doc/lib/libstring.tex b/Doc/lib/libstring.tex
index 7242c53..98e5a80 100644
--- a/Doc/lib/libstring.tex
+++ b/Doc/lib/libstring.tex
@@ -1,12 +1,11 @@
 \section{Standard Module \sectcode{string}}
 \label{module-string}
-
 \stmodindex{string}
 
 This module defines some constants useful for checking character
 classes and some useful string functions.  See the module
-\code{re} for string functions based on regular expressions.
-\refstmodindex{re}
+\module{re}\refstmodindex{re} for string functions based on regular
+expressions.
 
 The constants defined in this module are are:
 
@@ -20,16 +19,16 @@
 \end{datadesc}
 
 \begin{datadesc}{letters}
-  The concatenation of the strings \code{lowercase} and
-  \code{uppercase} described below.
+  The concatenation of the strings \function{lowercase()} and
+  \function{uppercase()} described below.
 \end{datadesc}
 
 \begin{datadesc}{lowercase}
   A string containing all the characters that are considered lowercase
   letters.  On most systems this is the string
   \code{'abcdefghijklmnopqrstuvwxyz'}.  Do not change its definition ---
-  the effect on the routines \code{upper} and \code{swapcase} is
-  undefined.
+  the effect on the routines \function{upper()} and
+  \function{swapcase()} is undefined.
 \end{datadesc}
 
 \begin{datadesc}{octdigits}
@@ -40,16 +39,16 @@
   A string containing all the characters that are considered uppercase
   letters.  On most systems this is the string
   \code{'ABCDEFGHIJKLMNOPQRSTUVWXYZ'}.  Do not change its definition ---
-  the effect on the routines \code{lower} and \code{swapcase} is
-  undefined.
+  the effect on the routines \function{lower()} and
+  \function{swapcase()} is undefined.
 \end{datadesc}
 
 \begin{datadesc}{whitespace}
   A string containing all characters that are considered whitespace.
   On most systems this includes the characters space, tab, linefeed,
   return, formfeed, and vertical tab.  Do not change its definition ---
-  the effect on the routines \code{strip} and \code{split} is
-  undefined.
+  the effect on the routines \function{strip()} and \function{split()}
+  is undefined.
 \end{datadesc}
 
 The functions defined in this module are:
@@ -60,10 +59,11 @@
 Convert a string to a floating point number.  The string must have
 the standard syntax for a floating point literal in Python, optionally
 preceded by a sign (\samp{+} or \samp{-}).  Note that this behaves
-identical to the built-in function \code{float()} when passed a string.
+identical to the built-in function
+\function{float()}\bifuncindex{float} when passed a string.
 \end{funcdesc}
 
-\begin{funcdesc}{atoi}{s\optional{\, base}}
+\begin{funcdesc}{atoi}{s\optional{, base}}
 Convert string \var{s} to an integer in the given \var{base}.  The
 string must consist of one or more digits, optionally preceded by a
 sign (\samp{+} or \samp{-}).  The \var{base} defaults to 10.  If it is
@@ -72,20 +72,20 @@
 \samp{0} means 8, anything else means 10.  If \var{base} is 16, a
 leading \samp{0x} or \samp{0X} is always accepted.  Note that when
 invoked without \var{base} or with \var{base} set to 10, this behaves
-identical to the built-in function \code{int()} when passed a string.
+identical to the built-in function \function{int()} when passed a string.
 (Also note: for a more flexible interpretation of numeric literals,
-use the built-in function \code{eval()}.)
-\bifuncindex{eval}
+use the built-in function \function{eval()}\bifuncindex{eval}.)
 \end{funcdesc}
 
-\begin{funcdesc}{atol}{s\optional{\, base}}
-Convert string \var{s} to a long integer in the given \var{base}.  The
+\begin{funcdesc}{atol}{s\optional{, base}}
+Convert string \var{s} to a long integer in the given \var{base}.  The 
 string must consist of one or more digits, optionally preceded by a
 sign (\samp{+} or \samp{-}).  The \var{base} argument has the same
-meaning as for \code{atoi()}.  A trailing \samp{l} or \samp{L} is not
-allowed, except if the base is 0.  Note that when invoked without
+meaning as for \function{atoi()}.  A trailing \samp{l} or \samp{L} is
+not allowed, except if the base is 0.  Note that when invoked without
 \var{base} or with \var{base} set to 10, this behaves identical to the
-built-in function \code{long()} when passed a string.
+built-in function \function{long()}\bifuncindex{long} when passed a
+string.
 \end{funcdesc}
 
 \begin{funcdesc}{capitalize}{word}
@@ -93,13 +93,14 @@
 \end{funcdesc}
 
 \begin{funcdesc}{capwords}{s}
-Split the argument into words using \code{split}, capitalize each word
-using \code{capitalize}, and join the capitalized words using
-\code{join}.  Note that this replaces runs of whitespace characters by
-a single space, and removes leading and trailing whitespace.
+Split the argument into words using \function{split()}, capitalize
+each word using \function{capitalize()}, and join the capitalized
+words using \function{join()}.  Note that this replaces runs of
+whitespace characters by a single space, and removes leading and
+trailing whitespace.
 \end{funcdesc}
 
-\begin{funcdesc}{expandtabs}{s\, tabsize}
+\begin{funcdesc}{expandtabs}{s, tabsize}
 Expand tabs in a string, i.e.\ replace them by one or more spaces,
 depending on the current column and the given tab size.  The column
 number is reset to zero after each newline occurring in the string.
@@ -107,29 +108,29 @@
 sequences.
 \end{funcdesc}
 
-\begin{funcdesc}{find}{s\, sub\optional{\, start\optional{\,end}}}
+\begin{funcdesc}{find}{s, sub\optional{, start\optional{,end}}}
 Return the lowest index in \var{s} where the substring \var{sub} is
 found such that \var{sub} is wholly contained in
-\code{\var{s}[\var{start}:\var{end}]}.  Return -1 on failure.
+\code{\var{s}[\var{start}:\var{end}]}.  Return \code{-1} on failure.
 Defaults for \var{start} and \var{end} and interpretation of negative
 values is the same as for slices.
 \end{funcdesc}
 
-\begin{funcdesc}{rfind}{s\, sub\optional{\, start\optional{\,end}}}
-Like \code{find} but find the highest index.
+\begin{funcdesc}{rfind}{s, sub\optional{, start\optional{, end}}}
+Like \function{find()} but find the highest index.
 \end{funcdesc}
 
-\begin{funcdesc}{index}{s\, sub\optional{\, start\optional{\,end}}}
-Like \code{find} but raise \code{ValueError} when the substring is
-not found.
+\begin{funcdesc}{index}{s, sub\optional{, start\optional{, end}}}
+Like \function{find()} but raise \exception{ValueError} when the
+substring is not found.
 \end{funcdesc}
 
-\begin{funcdesc}{rindex}{s\, sub\optional{\, start\optional{\,end}}}
-Like \code{rfind} but raise \code{ValueError} when the substring is
-not found.
+\begin{funcdesc}{rindex}{s, sub\optional{, start\optional{, end}}}
+Like \function{rfind()} but raise \exception{ValueError} when the
+substring is not found.
 \end{funcdesc}
 
-\begin{funcdesc}{count}{s\, sub\optional{\, start\optional{\,end}}}
+\begin{funcdesc}{count}{s, sub\optional{, start\optional{, end}}}
 Return the number of (non-overlapping) occurrences of substring
 \var{sub} in string \code{\var{s}[\var{start}:\var{end}]}.
 Defaults for \var{start} and \var{end} and interpretation of negative
@@ -141,13 +142,13 @@
 \end{funcdesc}
 
 \begin{funcdesc}{maketrans}{from, to}
-Return a translation table suitable for passing to \code{string.translate}
-or \code{regex.compile}, that will map each character in \var{from} 
-into the character at the same position in \var{to}; \var{from} and
-\var{to} must have the same length. 
+Return a translation table suitable for passing to
+\function{translate()} or \function{regex.compile()}, that will map
+each character in \var{from} into the character at the same position
+in \var{to}; \var{from} and \var{to} must have the same length. 
 \end{funcdesc}
 
-\begin{funcdesc}{split}{s\optional{\, sep\optional{\, maxsplit}}}
+\begin{funcdesc}{split}{s\optional{, sep\optional{, maxsplit}}}
 Return a list of the words of the string \var{s}.  If the optional
 second argument \var{sep} is absent or \code{None}, the words are
 separated by arbitrary strings of whitespace characters (space, tab,
@@ -161,24 +162,24 @@
 (thus, the list will have at most \code{\var{maxsplit}+1} elements).
 \end{funcdesc}
 
-\begin{funcdesc}{splitfields}{s\optional{\, sep\optional{\, maxsplit}}}
-This function behaves identically to \code{split}.  (In the past,
-\code{split} was only used with one argument, while \code{splitfields}
-was only used with two arguments.)
+\begin{funcdesc}{splitfields}{s\optional{, sep\optional{, maxsplit}}}
+This function behaves identically to \function{split()}.  (In the
+past, \function{split()} was only used with one argument, while
+\function{splitfields()} was only used with two arguments.)
 \end{funcdesc}
 
-\begin{funcdesc}{join}{words\optional{\, sep}}
+\begin{funcdesc}{join}{words\optional{, sep}}
 Concatenate a list or tuple of words with intervening occurrences of
-\var{sep}.  The default value for \var{sep} is a single space character.
-It is always true that
-\code{string.join(string.split(\var{s}, \var{sep}), \var{sep})}
+\var{sep}.  The default value for \var{sep} is a single space
+character.  It is always true that
+\samp{string.join(string.split(\var{s}, \var{sep}), \var{sep})}
 equals \var{s}.
 \end{funcdesc}
 
-\begin{funcdesc}{joinfields}{words\optional{\, sep}}
-This function behaves identical to \code{join}.  (In the past,
-\code{join} was only used with one argument, while \code{joinfields}
-was only used with two arguments.)
+\begin{funcdesc}{joinfields}{words\optional{, sep}}
+This function behaves identical to \function{join()}.  (In the past,
+\function{join()} was only used with one argument, while
+\function{joinfields()} was only used with two arguments.)
 \end{funcdesc}
 
 \begin{funcdesc}{lstrip}{s}
@@ -198,19 +199,19 @@
 \end{funcdesc}
 
 \begin{funcdesc}{translate}{s, table\optional{, deletechars}}
-Delete all characters from \var{s} that are in \var{deletechars} (if present), and 
-then translate the characters using \var{table}, which must be
-a 256-character string giving the translation for each character
-value, indexed by its ordinal.  
+Delete all characters from \var{s} that are in \var{deletechars} (if
+present), and then translate the characters using \var{table}, which
+must be a 256-character string giving the translation for each
+character value, indexed by its ordinal.  
 \end{funcdesc}
 
 \begin{funcdesc}{upper}{s}
 Convert letters to upper case.
 \end{funcdesc}
 
-\begin{funcdesc}{ljust}{s\, width}
-\funcline{rjust}{s\, width}
-\funcline{center}{s\, width}
+\begin{funcdesc}{ljust}{s, width}
+\funcline{rjust}{s, width}
+\funcline{center}{s, width}
 These functions respectively left-justify, right-justify and center a
 string in a field of given width.
 They return a string that is at least
@@ -221,7 +222,7 @@
 The string is never truncated.
 \end{funcdesc}
 
-\begin{funcdesc}{zfill}{s\, width}
+\begin{funcdesc}{zfill}{s, width}
 Pad a numeric string on the left with zero digits until the given
 width is reached.  Strings starting with a sign are handled correctly.
 \end{funcdesc}
@@ -234,10 +235,10 @@
 \end{funcdesc}
 
 This module is implemented in Python.  Much of its functionality has
-been reimplemented in the built-in module \code{strop}.  However, you
+been reimplemented in the built-in module
+\module{strop}\refbimodindex{strop}.  However, you
 should \emph{never} import the latter module directly.  When
-\code{string} discovers that \code{strop} exists, it transparently
-replaces parts of itself with the implementation from \code{strop}.
+\module{string} discovers that \module{strop} exists, it transparently
+replaces parts of itself with the implementation from \module{strop}.
 After initialization, there is \emph{no} overhead in using
-\code{string} instead of \code{strop}.
-\refbimodindex{strop}
+\module{string} instead of \module{strop}.
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex
index d0fde4f..b92076c 100644
--- a/Doc/lib/libstruct.tex
+++ b/Doc/lib/libstruct.tex
@@ -16,14 +16,14 @@
   describing what is wrong.
 \end{excdesc}
 
-\begin{funcdesc}{pack}{fmt\, v1\, v2\, {\rm \ldots}}
+\begin{funcdesc}{pack}{fmt, v1, v2, {\rm \ldots}}
   Return a string containing the values
   \code{\var{v1}, \var{v2}, {\rm \ldots}} packed according to the given
   format.  The arguments must match the values required by the format
   exactly.
 \end{funcdesc}
 
-\begin{funcdesc}{unpack}{fmt\, string}
+\begin{funcdesc}{unpack}{fmt, string}
   Unpack the string (presumably packed by \code{pack(\var{fmt}, {\rm \ldots})})
   according to the given format.  The result is a tuple even if it
   contains exactly one item.  The string must contain exactly the
diff --git a/Doc/lib/libsyslog.tex b/Doc/lib/libsyslog.tex
index 8348e9c..5d2b6a9 100644
--- a/Doc/lib/libsyslog.tex
+++ b/Doc/lib/libsyslog.tex
@@ -10,7 +10,7 @@
 
 \setindexsubitem{(in module syslog)}
 
-\begin{funcdesc}{syslog}{\optional{priority\,} message}
+\begin{funcdesc}{syslog}{\optional{priority,} message}
 Send the string \var{message} to the system logger.
 A trailing newline is added if necessary.
 Each message is tagged with a priority composed of a \var{facility} and
diff --git a/Doc/lib/libtemplate.tex b/Doc/lib/libtemplate.tex
index db07934..3fb4f51 100644
--- a/Doc/lib/libtemplate.tex
+++ b/Doc/lib/libtemplate.tex
@@ -61,7 +61,7 @@
 % least once in the description; each usage (even inside \code{...})
 % should be enclosed in \var{...}.
 
-\begin{funcdesc}{open}{filename\optional{\, mode\, buffersize}}
+\begin{funcdesc}{open}{filename\optional{, mode, buffersize}}
 Open the file \var{filename} as a can of Spam.  The optional
 \var{mode} and \var{buffersize} arguments specify the read-write mode
 (\code{'r'} (default) or \code{'w'}) and the buffer size (default:
diff --git a/Doc/lib/libthread.tex b/Doc/lib/libthread.tex
index 24ebac5..dabfe70 100644
--- a/Doc/lib/libthread.tex
+++ b/Doc/lib/libthread.tex
@@ -25,7 +25,7 @@
 Raised on thread-specific errors.
 \end{excdesc}
 
-\begin{funcdesc}{start_new_thread}{func\, arg}
+\begin{funcdesc}{start_new_thread}{func, arg}
 Start a new thread.  The thread executes the function \var{func}
 with the argument list \var{arg} (which must be a tuple).  When the
 function returns, the thread silently exits.  When the function
diff --git a/Doc/lib/libtypes.tex b/Doc/lib/libtypes.tex
index 5c87653..70f970e 100644
--- a/Doc/lib/libtypes.tex
+++ b/Doc/lib/libtypes.tex
@@ -534,9 +534,9 @@
 \indexii{dictionary}{type}
 
 Dictionaries are created by placing a comma-separated list of
-\code{\var{key}:\,\var{value}} pairs within braces, for example:
-\code{\{'jack':\,4098, 'sjoerd':\,4127\}} or
-\code{\{4098:\,'jack', 4127:\,'sjoerd'\}}.
+\code{\var{key}: \var{value}} pairs within braces, for example:
+\code{\{'jack': 4098, 'sjoerd': 4127\}} or
+\code{\{4098: 'jack', 4127: 'sjoerd'\}}.
 
 The following operations are defined on mappings (where \var{a} is a
 mapping, \var{k} is a key and \var{x} is an arbitrary object):
@@ -767,7 +767,7 @@
   internal buffer size) are read.
 \end{funcdesc}
 
-\begin{funcdesc}{seek}{offset\, whence}
+\begin{funcdesc}{seek}{offset, whence}
   Set the file's current position, like \code{stdio}'s \code{fseek()}.
   The \var{whence} argument is optional and defaults to \code{0}
   (absolute file positioning); other values are \code{1} (seek
diff --git a/Doc/lib/liburllib.tex b/Doc/lib/liburllib.tex
index 01fc875..1732d85 100644
--- a/Doc/lib/liburllib.tex
+++ b/Doc/lib/liburllib.tex
@@ -55,7 +55,7 @@
 \function{urlretrieve()}.
 \end{funcdesc}
 
-\begin{funcdesc}{quote}{string\optional{\, addsafe}}
+\begin{funcdesc}{quote}{string\optional{, addsafe}}
 Replace special characters in \var{string} using the \samp{\%xx} escape.
 Letters, digits, and the characters \character{_,.-} are never quoted.
 The optional \var{addsafe} parameter specifies additional characters
@@ -64,7 +64,7 @@
 Example: \code{quote('/\~connolly/')} yields \code{'/\%7econnolly/'}.
 \end{funcdesc}
 
-\begin{funcdesc}{quote_plus}{string\optional{\, addsafe}}
+\begin{funcdesc}{quote_plus}{string\optional{, addsafe}}
 Like \function{quote()}, but also replaces spaces by plus signs, as
 required for quoting HTML form values.
 \end{funcdesc}
diff --git a/Doc/lib/liburlparse.tex b/Doc/lib/liburlparse.tex
index 32d88ee..3017a16 100644
--- a/Doc/lib/liburlparse.tex
+++ b/Doc/lib/liburlparse.tex
@@ -61,7 +61,7 @@
 an empty query (the draft states that these are equivalent).
 \end{funcdesc}
 
-\begin{funcdesc}{urljoin}{base\, url\optional{\, allow_fragments}}
+\begin{funcdesc}{urljoin}{base, url\optional{, allow_fragments}}
 Construct a full (``absolute'') URL by combining a ``base URL''
 (\var{base}) with a ``relative URL'' (\var{url}).  Informally, this
 uses components of the base URL, in particular the addressing scheme,
diff --git a/Doc/lib/libuu.tex b/Doc/lib/libuu.tex
index 87182dc..e953628 100644
--- a/Doc/lib/libuu.tex
+++ b/Doc/lib/libuu.tex
@@ -19,7 +19,7 @@
 
 \setindexsubitem{(in module uu)}
 
-\begin{funcdesc}{encode}{in_file\, out_file\optional{\, name\, mode}}
+\begin{funcdesc}{encode}{in_file, out_file\optional{, name, mode}}
 Uuencode file \var{in_file} into file \var{out_file}.  The uuencoded
 file will have the header specifying \var{name} and \var{mode} as the
 defaults for the results of decoding the file. The default defaults
@@ -27,7 +27,7 @@
 respectively. 
 \end{funcdesc}
 
-\begin{funcdesc}{decode}{in_file\optional{\, out_file\, mode}}
+\begin{funcdesc}{decode}{in_file\optional{, out_file, mode}}
 This call decodes uuencoded file \var{in_file} placing the result on
 file \var{out_file}. If \var{out_file} is a pathname the \var{mode} is
 also set. Defaults for \var{out_file} and \var{mode} are taken from
diff --git a/Doc/lib/libwhrandom.tex b/Doc/lib/libwhrandom.tex
index cac7de7..7803184 100644
--- a/Doc/lib/libwhrandom.tex
+++ b/Doc/lib/libwhrandom.tex
@@ -11,7 +11,7 @@
 Chooses a random element from the non-empty sequence \var{seq} and returns it.
 \end{funcdesc}
 
-\begin{funcdesc}{randint}{a\, b}
+\begin{funcdesc}{randint}{a, b}
 Returns a random integer \var{N} such that \code{\var{a}<=\var{N}<=\var{b}}.
 \end{funcdesc}
 
@@ -19,7 +19,7 @@
 Returns the next random floating point number in the range [0.0 ... 1.0).
 \end{funcdesc}
 
-\begin{funcdesc}{seed}{x\, y\, z}
+\begin{funcdesc}{seed}{x, y, z}
 Initializes the random number generator from the integers
 \var{x},
 \var{y}
@@ -29,7 +29,7 @@
 using values derived from the current time.
 \end{funcdesc}
 
-\begin{funcdesc}{uniform}{a\, b}
+\begin{funcdesc}{uniform}{a, b}
 Returns a random real number \var{N} such that \code{\var{a}<=\var{N}<\var{b}}.
 \end{funcdesc}
 
diff --git a/Doc/lib/libxdrlib.tex b/Doc/lib/libxdrlib.tex
index 221a578..62e9df7 100644
--- a/Doc/lib/libxdrlib.tex
+++ b/Doc/lib/libxdrlib.tex
@@ -96,7 +96,7 @@
 \code{0} is packed.
 \end{funcdesc}
 
-\begin{funcdesc}{pack_farray}{n\, array\, pack_item}
+\begin{funcdesc}{pack_farray}{n, array, pack_item}
 Packs a fixed length list (\var{array}) of homogeneous items.  \var{n}
 is the length of the list; it is \emph{not} packed into the buffer,
 but a \exception{ValueError} exception is raised if
@@ -104,7 +104,7 @@
 \var{pack_item} is the function used to pack each element.
 \end{funcdesc}
 
-\begin{funcdesc}{pack_array}{list\, pack_item}
+\begin{funcdesc}{pack_array}{list, pack_item}
 Packs a variable length \var{list} of homogeneous items.  First, the
 length of the list is packed as an unsigned integer, then each element
 is packed as in \method{pack_farray()} above.
@@ -192,7 +192,7 @@
 function that is called to unpack the items.
 \end{funcdesc}
 
-\begin{funcdesc}{unpack_farray}{n\, unpack_item}
+\begin{funcdesc}{unpack_farray}{n, unpack_item}
 Unpacks and returns (as a list) a fixed length array of homogeneous
 items.  \var{n} is number of list elements to expect in the buffer.
 As above, \var{unpack_item} is the function used to unpack each element.
diff --git a/Doc/lib/libxmllib.tex b/Doc/lib/libxmllib.tex
index ba9e006..efc7f00 100644
--- a/Doc/lib/libxmllib.tex
+++ b/Doc/lib/libxmllib.tex
@@ -78,7 +78,7 @@
 as the only argument.
 \end{funcdesc}
 
-\begin{funcdesc}{handle_endtag}{tag\, method}
+\begin{funcdesc}{handle_endtag}{tag, method}
 This method is called to handle endtags for which an
 \code{end_\var{tag}()} method has been defined.  The \var{tag}
 argument is the name of the tag, and the
@@ -170,7 +170,7 @@
 \method{syntax_error()}.
 \end{funcdesc}
 
-\begin{funcdesc}{unknown_starttag}{tag\, attributes}
+\begin{funcdesc}{unknown_starttag}{tag, attributes}
 This method is called to process an unknown start tag.  It is intended
 to be overridden by a derived class; the base class implementation
 does nothing.
diff --git a/Doc/lib/libzlib.tex b/Doc/lib/libzlib.tex
index 9234c5f..c4ad987 100644
--- a/Doc/lib/libzlib.tex
+++ b/Doc/lib/libzlib.tex
@@ -14,7 +14,7 @@
 The available functions in this module are:
 
 \setindexsubitem{(in module zlib)}
-\begin{funcdesc}{adler32}{string\optional{\, value}}
+\begin{funcdesc}{adler32}{string\optional{, value}}
    Computes a Adler-32 checksum of \var{string}.  (An Adler-32
    checksum is almost as reliable as a CRC32 but can be computed much
    more quickly.)  If \var{value} is present, it is used as the
@@ -25,7 +25,7 @@
    authentication or digital signatures.
 \end{funcdesc}
 
-\begin{funcdesc}{compress}{string\optional{\, level}}
+\begin{funcdesc}{compress}{string\optional{, level}}
 Compresses the data in \var{string}, returning a string contained
 compressed data.  \var{level} is an integer from \code{1} to \code{9}
 controlling the level of compression; \code{1} is fastest and produces
@@ -42,7 +42,7 @@
   produces the most.  The default value is \code{6}.
 \end{funcdesc}
 
-\begin{funcdesc}{crc32}{string\optional{\, value}}
+\begin{funcdesc}{crc32}{string\optional{, value}}
    Computes a CRC (Cyclic Redundancy Check) sum of \var{string}. If
    \var{value} is present, it is used as the starting value of the
    checksum; otherwise, a fixed default value is used.  This allows
