Lighten up tables.
diff --git a/Doc/lib/libarray.tex b/Doc/lib/libarray.tex
index 19ba91d..180be34 100644
--- a/Doc/lib/libarray.tex
+++ b/Doc/lib/libarray.tex
@@ -10,7 +10,7 @@
 type is specified at object creation time by using a \dfn{type code},
 which is a single character.  The following type codes are defined:
 
-\begin{tableiii}{|c|c|c|}{character}{Type code}{Type}{Minimum size in bytes}
+\begin{tableiii}{c|l|c}{code}{Type code}{C Type}{Minimum size in bytes}
 \lineiii{'c'}{character}{1}
 \lineiii{'b'}{signed integer}{1}
 \lineiii{'B'}{unsigned integer}{1}
diff --git a/Doc/lib/libcd.tex b/Doc/lib/libcd.tex
index e027466..44111a3 100644
--- a/Doc/lib/libcd.tex
+++ b/Doc/lib/libcd.tex
@@ -253,7 +253,7 @@
 for this \var{type} of callback.  The type of the data depends on the
 \var{type} of callback as follows:
 
-\begin{tableii}{|l|p{4in}|}{code}{Type}{Value}
+\begin{tableii}{l|p{4in}}{code}{Type}{Value}
   \lineii{audio}{String which can be passed unmodified to
 \function{al.writesamps()}.}
   \lineii{pnum}{Integer giving the program (track) number.}
diff --git a/Doc/lib/libfl.tex b/Doc/lib/libfl.tex
index a0e0076..7ebec7d 100644
--- a/Doc/lib/libfl.tex
+++ b/Doc/lib/libfl.tex
@@ -377,7 +377,7 @@
 Form objects have the following data attributes; see the FORMS
 documentation:
 
-\begin{tableiii}{|l|c|l|}{member}{Name}{Type}{Meaning}
+\begin{tableiii}{l|l|l}{member}{Name}{C Type}{Meaning}
   \lineiii{window}{int (read-only)}{GL window id}
   \lineiii{w}{float}{form width}
   \lineiii{h}{float}{form height}
@@ -436,7 +436,7 @@
 
 FORMS objects have these data attributes; see the FORMS documentation:
 
-\begin{tableiii}{|l|c|l|}{member}{Name}{Type}{Meaning}
+\begin{tableiii}{l|l|l}{member}{Name}{C Type}{Meaning}
   \lineiii{objclass}{int (read-only)}{object class}
   \lineiii{type}{int (read-only)}{object type}
   \lineiii{boxtype}{int}{box type}
diff --git a/Doc/lib/libimghdr.tex b/Doc/lib/libimghdr.tex
index d624f06..2f21a25 100644
--- a/Doc/lib/libimghdr.tex
+++ b/Doc/lib/libimghdr.tex
@@ -18,7 +18,7 @@
 The following image types are recognized, as listed below with the
 return value from \function{what()}:
 
-\begin{tableii}{|l|l|}{code}{Value}{Image format}
+\begin{tableii}{l|l}{code}{Value}{Image format}
   \lineii{'rgb'}{SGI ImgLib Files}
   \lineii{'gif'}{GIF 87a and 89a Files}
   \lineii{'pbm'}{Portable Bitmap Files}
diff --git a/Doc/lib/libjpeg.tex b/Doc/lib/libjpeg.tex
index 5b765fa..76e70af 100644
--- a/Doc/lib/libjpeg.tex
+++ b/Doc/lib/libjpeg.tex
@@ -40,7 +40,7 @@
 \function{decompress()} calls will use these options.  The following
 options are available:
 
-\begin{tableii}{|l|p{3in}|}{code}{Option}{Effect}
+\begin{tableii}{l|p{3in}}{code}{Option}{Effect}
   \lineii{'forcegray'}{%
     Force output to be grayscale, even if input is RGB.}
   \lineii{'quality'}{%
diff --git a/Doc/lib/liblocale.tex b/Doc/lib/liblocale.tex
index 1752790..07361b8 100644
--- a/Doc/lib/liblocale.tex
+++ b/Doc/lib/liblocale.tex
@@ -84,7 +84,7 @@
 The possible values for \code{p_sign_posn} and \code{n_sign_posn}
 are given below.
 
-\begin{tableii}{|c|l|}{code}{Value}{Explanation}
+\begin{tableii}{c|l}{code}{Value}{Explanation}
 \lineii{0}{Currency and value are surrounded by parentheses.}
 \lineii{1}{The sign should precede the value and currency symbol.}
 \lineii{2}{The sign should follow the value and currency symbol.}
diff --git a/Doc/lib/libposixfile.tex b/Doc/lib/libposixfile.tex
index 570a79b..a1f853d 100644
--- a/Doc/lib/libposixfile.tex
+++ b/Doc/lib/libposixfile.tex
@@ -102,7 +102,7 @@
 Format characters for the \method{lock()} method have the following
 meaning:
 
-\begin{tableii}{|c|l|}{samp}{Format}{Meaning}
+\begin{tableii}{c|l}{samp}{Format}{Meaning}
   \lineii{u}{unlock the specified region}
   \lineii{r}{request a read lock for the specified section}
   \lineii{w}{request a write lock for the specified section}
@@ -110,7 +110,7 @@
 
 In addition the following modifiers can be added to the format:
 
-\begin{tableiii}{|c|l|c|}{samp}{Modifier}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{samp}{Modifier}{Meaning}{Notes}
   \lineiii{|}{wait until the lock has been granted}{}
   \lineiii{?}{return the first lock conflicting with the requested lock, or
               \code{None} if there is no conflict.}{(1)} 
@@ -126,7 +126,7 @@
 Format characters for the \method{flags()} method have the following
 meanings:
 
-\begin{tableii}{|c|l|}{samp}{Format}{Meaning}
+\begin{tableii}{c|l}{samp}{Format}{Meaning}
   \lineii{a}{append only flag}
   \lineii{c}{close on exec flag}
   \lineii{n}{no delay flag (also called non-blocking flag)}
@@ -135,7 +135,7 @@
 
 In addition the following modifiers can be added to the format:
 
-\begin{tableiii}{|c|l|c|}{samp}{Modifier}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{samp}{Modifier}{Meaning}{Notes}
   \lineiii{!}{turn the specified flags 'off', instead of the default 'on'}{(1)}
   \lineiii{=}{replace the flags, instead of the default 'OR' operation}{(1)}
   \lineiii{?}{return a string in which the characters represent the flags that
diff --git a/Doc/lib/libprofile.tex b/Doc/lib/libprofile.tex
index 758944d..61da988 100644
--- a/Doc/lib/libprofile.tex
+++ b/Doc/lib/libprofile.tex
@@ -401,7 +401,7 @@
 abbreviation is unambiguous.  The following are the keys currently
 defined: 
 
-\begin{tableii}{|l|l|}{code}{Valid Arg}{Meaning}
+\begin{tableii}{l|l}{code}{Valid Arg}{Meaning}
   \lineii{'calls'}{call count}
   \lineii{'cumulative'}{cumulative time}
   \lineii{'file'}{file name}
diff --git a/Doc/lib/libresource.tex b/Doc/lib/libresource.tex
index b07240a..bb0bff2 100644
--- a/Doc/lib/libresource.tex
+++ b/Doc/lib/libresource.tex
@@ -146,7 +146,7 @@
   man page for detailed information about these values. A brief
   summary is presented here:
 
-\begin{tableii}{|r|l|}{code}{Offset}{Resource}
+\begin{tableii}{r|l}{code}{Offset}{Resource}
   \lineii{0}{time in user mode (float)}
   \lineii{1}{time in system mode (float)}
   \lineii{2}{maximum resident set size}
diff --git a/Doc/lib/libstruct.tex b/Doc/lib/libstruct.tex
index 5703c05..5925328 100644
--- a/Doc/lib/libstruct.tex
+++ b/Doc/lib/libstruct.tex
@@ -39,7 +39,7 @@
 Format characters have the following meaning; the conversion between C
 and Python values should be obvious given their types:
 
-\begin{tableiii}{|c|l|l|}{samp}{Format}{C}{Python}
+\begin{tableiii}{c|l|l}{samp}{Format}{C Type}{Python}
   \lineiii{x}{pad byte}{no value}
   \lineiii{c}{char}{string of length 1}
   \lineiii{b}{signed char}{integer}
@@ -81,7 +81,7 @@
 indicate the byte order, size and alignment of the packed data,
 according to the following table:
 
-\begin{tableiii}{|c|l|l|}{samp}{Character}{Byte order}{Size and alignment}
+\begin{tableiii}{c|l|l}{samp}{Character}{Byte order}{Size and alignment}
   \lineiii{@}{native}{native}
   \lineiii{=}{native}{standard}
   \lineiii{<}{little-endian}{standard}
diff --git a/Doc/lib/libtime.tex b/Doc/lib/libtime.tex
index a8c134e..ed4f4ef 100644
--- a/Doc/lib/libtime.tex
+++ b/Doc/lib/libtime.tex
@@ -129,7 +129,7 @@
 The following directives, shown without the optional field width and
 precision specification, are replaced by the indicated characters:
 
-\begin{tableii}{|c|p{24em}|}{code}{Directive}{Meaning}
+\begin{tableii}{c|p{24em}}{code}{Directive}{Meaning}
   \lineii{\%a}{Locale's abbreviated weekday name.}
   \lineii{\%A}{Locale's full weekday name.}
   \lineii{\%b}{Locale's abbreviated month name.}
diff --git a/Doc/lib/libtypes.tex b/Doc/lib/libtypes.tex
index 117cce6..2dfe742 100644
--- a/Doc/lib/libtypes.tex
+++ b/Doc/lib/libtypes.tex
@@ -62,9 +62,8 @@
 These are the Boolean operations, ordered by ascending priority:
 \indexii{Boolean}{operations}
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} or \var{y}}{if \var{x} is false, then \var{y}, else \var{x}}{(1)}
-  \hline
   \lineiii{\var{x} and \var{y}}{if \var{x} is false, then \var{x}, else \var{y}}{(1)}
   \hline
   \lineiii{not \var{x}}{if \var{x} is false, then \code{1}, else \code{0}}{(2)}
@@ -102,7 +101,7 @@
 
 This table summarizes the comparison operations:
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Meaning}{Notes}
   \lineiii{<}{strictly less than}{}
   \lineiii{<=}{less than or equal}{}
   \lineiii{>}{strictly greater than}{}
@@ -212,7 +211,7 @@
 priority; all numeric operations have a higher priority than
 comparison operations):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} + \var{y}}{sum of \var{x} and \var{y}}{}
   \lineiii{\var{x} - \var{y}}{difference of \var{x} and \var{y}}{}
   \hline
@@ -277,17 +276,13 @@
 This table lists the bit-string operations sorted in ascending
 priority (operations in the same box have the same priority):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} << \var{n}}{\var{x} shifted left by \var{n} bits}{(1), (2)}
   \lineiii{\var{x} >> \var{n}}{\var{x} shifted right by \var{n} bits}{(1), (3)}
   \hline
-  \hline
   \lineiii{\~\var{x}}{the bits of \var{x} inverted}{}
 \end{tableiii}
 \indexiii{operations on}{integer}{types}
@@ -337,13 +332,12 @@
 \var{s} and \var{t} are sequences of the same type; \var{n}, \var{i}
 and \var{j} are integers:
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} in \var{s}}{\code{1} if an item of \var{s} is equal to \var{x}, else \code{0}}{}
   \lineiii{\var{x} not in \var{s}}{\code{0} if an item of \var{s} is
 equal to \var{x}, else \code{1}}{}
   \hline
   \lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{}
-  \hline
   \lineiii{\var{s} * \var{n}{\rm ,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{(3)}
   \hline
   \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(1)}
@@ -456,7 +450,7 @@
 \indexiii{mutable}{sequence}{types}
 \indexii{list}{type}
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{s}[\var{i}] = \var{x}}
 	{item \var{i} of \var{s} is replaced by \var{x}}{}
   \lineiii{\var{s}[\var{i}:\var{j}] = \var{t}}
@@ -542,7 +536,7 @@
 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):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{len(\var{a})}{the number of items in \var{a}}{}
   \lineiii{\var{a}[\var{k}]}{the item of \var{a} with key \var{k}}{(1)}
   \lineiii{\var{a}[\var{k}] = \var{x}}{set \code{\var{a}[\var{k}]} to \var{x}}{}
diff --git a/Doc/libarray.tex b/Doc/libarray.tex
index 19ba91d..180be34 100644
--- a/Doc/libarray.tex
+++ b/Doc/libarray.tex
@@ -10,7 +10,7 @@
 type is specified at object creation time by using a \dfn{type code},
 which is a single character.  The following type codes are defined:
 
-\begin{tableiii}{|c|c|c|}{character}{Type code}{Type}{Minimum size in bytes}
+\begin{tableiii}{c|l|c}{code}{Type code}{C Type}{Minimum size in bytes}
 \lineiii{'c'}{character}{1}
 \lineiii{'b'}{signed integer}{1}
 \lineiii{'B'}{unsigned integer}{1}
diff --git a/Doc/libcd.tex b/Doc/libcd.tex
index e027466..44111a3 100644
--- a/Doc/libcd.tex
+++ b/Doc/libcd.tex
@@ -253,7 +253,7 @@
 for this \var{type} of callback.  The type of the data depends on the
 \var{type} of callback as follows:
 
-\begin{tableii}{|l|p{4in}|}{code}{Type}{Value}
+\begin{tableii}{l|p{4in}}{code}{Type}{Value}
   \lineii{audio}{String which can be passed unmodified to
 \function{al.writesamps()}.}
   \lineii{pnum}{Integer giving the program (track) number.}
diff --git a/Doc/libfl.tex b/Doc/libfl.tex
index a0e0076..7ebec7d 100644
--- a/Doc/libfl.tex
+++ b/Doc/libfl.tex
@@ -377,7 +377,7 @@
 Form objects have the following data attributes; see the FORMS
 documentation:
 
-\begin{tableiii}{|l|c|l|}{member}{Name}{Type}{Meaning}
+\begin{tableiii}{l|l|l}{member}{Name}{C Type}{Meaning}
   \lineiii{window}{int (read-only)}{GL window id}
   \lineiii{w}{float}{form width}
   \lineiii{h}{float}{form height}
@@ -436,7 +436,7 @@
 
 FORMS objects have these data attributes; see the FORMS documentation:
 
-\begin{tableiii}{|l|c|l|}{member}{Name}{Type}{Meaning}
+\begin{tableiii}{l|l|l}{member}{Name}{C Type}{Meaning}
   \lineiii{objclass}{int (read-only)}{object class}
   \lineiii{type}{int (read-only)}{object type}
   \lineiii{boxtype}{int}{box type}
diff --git a/Doc/libimghdr.tex b/Doc/libimghdr.tex
index d624f06..2f21a25 100644
--- a/Doc/libimghdr.tex
+++ b/Doc/libimghdr.tex
@@ -18,7 +18,7 @@
 The following image types are recognized, as listed below with the
 return value from \function{what()}:
 
-\begin{tableii}{|l|l|}{code}{Value}{Image format}
+\begin{tableii}{l|l}{code}{Value}{Image format}
   \lineii{'rgb'}{SGI ImgLib Files}
   \lineii{'gif'}{GIF 87a and 89a Files}
   \lineii{'pbm'}{Portable Bitmap Files}
diff --git a/Doc/libjpeg.tex b/Doc/libjpeg.tex
index 5b765fa..76e70af 100644
--- a/Doc/libjpeg.tex
+++ b/Doc/libjpeg.tex
@@ -40,7 +40,7 @@
 \function{decompress()} calls will use these options.  The following
 options are available:
 
-\begin{tableii}{|l|p{3in}|}{code}{Option}{Effect}
+\begin{tableii}{l|p{3in}}{code}{Option}{Effect}
   \lineii{'forcegray'}{%
     Force output to be grayscale, even if input is RGB.}
   \lineii{'quality'}{%
diff --git a/Doc/liblocale.tex b/Doc/liblocale.tex
index 1752790..07361b8 100644
--- a/Doc/liblocale.tex
+++ b/Doc/liblocale.tex
@@ -84,7 +84,7 @@
 The possible values for \code{p_sign_posn} and \code{n_sign_posn}
 are given below.
 
-\begin{tableii}{|c|l|}{code}{Value}{Explanation}
+\begin{tableii}{c|l}{code}{Value}{Explanation}
 \lineii{0}{Currency and value are surrounded by parentheses.}
 \lineii{1}{The sign should precede the value and currency symbol.}
 \lineii{2}{The sign should follow the value and currency symbol.}
diff --git a/Doc/libposixfile.tex b/Doc/libposixfile.tex
index 570a79b..a1f853d 100644
--- a/Doc/libposixfile.tex
+++ b/Doc/libposixfile.tex
@@ -102,7 +102,7 @@
 Format characters for the \method{lock()} method have the following
 meaning:
 
-\begin{tableii}{|c|l|}{samp}{Format}{Meaning}
+\begin{tableii}{c|l}{samp}{Format}{Meaning}
   \lineii{u}{unlock the specified region}
   \lineii{r}{request a read lock for the specified section}
   \lineii{w}{request a write lock for the specified section}
@@ -110,7 +110,7 @@
 
 In addition the following modifiers can be added to the format:
 
-\begin{tableiii}{|c|l|c|}{samp}{Modifier}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{samp}{Modifier}{Meaning}{Notes}
   \lineiii{|}{wait until the lock has been granted}{}
   \lineiii{?}{return the first lock conflicting with the requested lock, or
               \code{None} if there is no conflict.}{(1)} 
@@ -126,7 +126,7 @@
 Format characters for the \method{flags()} method have the following
 meanings:
 
-\begin{tableii}{|c|l|}{samp}{Format}{Meaning}
+\begin{tableii}{c|l}{samp}{Format}{Meaning}
   \lineii{a}{append only flag}
   \lineii{c}{close on exec flag}
   \lineii{n}{no delay flag (also called non-blocking flag)}
@@ -135,7 +135,7 @@
 
 In addition the following modifiers can be added to the format:
 
-\begin{tableiii}{|c|l|c|}{samp}{Modifier}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{samp}{Modifier}{Meaning}{Notes}
   \lineiii{!}{turn the specified flags 'off', instead of the default 'on'}{(1)}
   \lineiii{=}{replace the flags, instead of the default 'OR' operation}{(1)}
   \lineiii{?}{return a string in which the characters represent the flags that
diff --git a/Doc/libprofile.tex b/Doc/libprofile.tex
index 758944d..61da988 100644
--- a/Doc/libprofile.tex
+++ b/Doc/libprofile.tex
@@ -401,7 +401,7 @@
 abbreviation is unambiguous.  The following are the keys currently
 defined: 
 
-\begin{tableii}{|l|l|}{code}{Valid Arg}{Meaning}
+\begin{tableii}{l|l}{code}{Valid Arg}{Meaning}
   \lineii{'calls'}{call count}
   \lineii{'cumulative'}{cumulative time}
   \lineii{'file'}{file name}
diff --git a/Doc/libresource.tex b/Doc/libresource.tex
index b07240a..bb0bff2 100644
--- a/Doc/libresource.tex
+++ b/Doc/libresource.tex
@@ -146,7 +146,7 @@
   man page for detailed information about these values. A brief
   summary is presented here:
 
-\begin{tableii}{|r|l|}{code}{Offset}{Resource}
+\begin{tableii}{r|l}{code}{Offset}{Resource}
   \lineii{0}{time in user mode (float)}
   \lineii{1}{time in system mode (float)}
   \lineii{2}{maximum resident set size}
diff --git a/Doc/libstruct.tex b/Doc/libstruct.tex
index 5703c05..5925328 100644
--- a/Doc/libstruct.tex
+++ b/Doc/libstruct.tex
@@ -39,7 +39,7 @@
 Format characters have the following meaning; the conversion between C
 and Python values should be obvious given their types:
 
-\begin{tableiii}{|c|l|l|}{samp}{Format}{C}{Python}
+\begin{tableiii}{c|l|l}{samp}{Format}{C Type}{Python}
   \lineiii{x}{pad byte}{no value}
   \lineiii{c}{char}{string of length 1}
   \lineiii{b}{signed char}{integer}
@@ -81,7 +81,7 @@
 indicate the byte order, size and alignment of the packed data,
 according to the following table:
 
-\begin{tableiii}{|c|l|l|}{samp}{Character}{Byte order}{Size and alignment}
+\begin{tableiii}{c|l|l}{samp}{Character}{Byte order}{Size and alignment}
   \lineiii{@}{native}{native}
   \lineiii{=}{native}{standard}
   \lineiii{<}{little-endian}{standard}
diff --git a/Doc/libtime.tex b/Doc/libtime.tex
index a8c134e..ed4f4ef 100644
--- a/Doc/libtime.tex
+++ b/Doc/libtime.tex
@@ -129,7 +129,7 @@
 The following directives, shown without the optional field width and
 precision specification, are replaced by the indicated characters:
 
-\begin{tableii}{|c|p{24em}|}{code}{Directive}{Meaning}
+\begin{tableii}{c|p{24em}}{code}{Directive}{Meaning}
   \lineii{\%a}{Locale's abbreviated weekday name.}
   \lineii{\%A}{Locale's full weekday name.}
   \lineii{\%b}{Locale's abbreviated month name.}
diff --git a/Doc/libtypes.tex b/Doc/libtypes.tex
index 117cce6..2dfe742 100644
--- a/Doc/libtypes.tex
+++ b/Doc/libtypes.tex
@@ -62,9 +62,8 @@
 These are the Boolean operations, ordered by ascending priority:
 \indexii{Boolean}{operations}
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} or \var{y}}{if \var{x} is false, then \var{y}, else \var{x}}{(1)}
-  \hline
   \lineiii{\var{x} and \var{y}}{if \var{x} is false, then \var{x}, else \var{y}}{(1)}
   \hline
   \lineiii{not \var{x}}{if \var{x} is false, then \code{1}, else \code{0}}{(2)}
@@ -102,7 +101,7 @@
 
 This table summarizes the comparison operations:
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Meaning}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Meaning}{Notes}
   \lineiii{<}{strictly less than}{}
   \lineiii{<=}{less than or equal}{}
   \lineiii{>}{strictly greater than}{}
@@ -212,7 +211,7 @@
 priority; all numeric operations have a higher priority than
 comparison operations):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} + \var{y}}{sum of \var{x} and \var{y}}{}
   \lineiii{\var{x} - \var{y}}{difference of \var{x} and \var{y}}{}
   \hline
@@ -277,17 +276,13 @@
 This table lists the bit-string operations sorted in ascending
 priority (operations in the same box have the same priority):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} | \var{y}}{bitwise \dfn{or} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} \^{} \var{y}}{bitwise \dfn{exclusive or} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} \&{} \var{y}}{bitwise \dfn{and} of \var{x} and \var{y}}{}
-  \hline
   \lineiii{\var{x} << \var{n}}{\var{x} shifted left by \var{n} bits}{(1), (2)}
   \lineiii{\var{x} >> \var{n}}{\var{x} shifted right by \var{n} bits}{(1), (3)}
   \hline
-  \hline
   \lineiii{\~\var{x}}{the bits of \var{x} inverted}{}
 \end{tableiii}
 \indexiii{operations on}{integer}{types}
@@ -337,13 +332,12 @@
 \var{s} and \var{t} are sequences of the same type; \var{n}, \var{i}
 and \var{j} are integers:
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{x} in \var{s}}{\code{1} if an item of \var{s} is equal to \var{x}, else \code{0}}{}
   \lineiii{\var{x} not in \var{s}}{\code{0} if an item of \var{s} is
 equal to \var{x}, else \code{1}}{}
   \hline
   \lineiii{\var{s} + \var{t}}{the concatenation of \var{s} and \var{t}}{}
-  \hline
   \lineiii{\var{s} * \var{n}{\rm ,} \var{n} * \var{s}}{\var{n} copies of \var{s} concatenated}{(3)}
   \hline
   \lineiii{\var{s}[\var{i}]}{\var{i}'th item of \var{s}, origin 0}{(1)}
@@ -456,7 +450,7 @@
 \indexiii{mutable}{sequence}{types}
 \indexii{list}{type}
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{\var{s}[\var{i}] = \var{x}}
 	{item \var{i} of \var{s} is replaced by \var{x}}{}
   \lineiii{\var{s}[\var{i}:\var{j}] = \var{t}}
@@ -542,7 +536,7 @@
 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):
 
-\begin{tableiii}{|c|l|c|}{code}{Operation}{Result}{Notes}
+\begin{tableiii}{c|l|c}{code}{Operation}{Result}{Notes}
   \lineiii{len(\var{a})}{the number of items in \var{a}}{}
   \lineiii{\var{a}[\var{k}]}{the item of \var{a} with key \var{k}}{(1)}
   \lineiii{\var{a}[\var{k}] = \var{x}}{set \code{\var{a}[\var{k}]} to \var{x}}{}
diff --git a/Doc/perl/python.perl b/Doc/perl/python.perl
index 300ac18..d37aab1 100644
--- a/Doc/perl/python.perl
+++ b/Doc/perl/python.perl
@@ -720,7 +720,7 @@
 
 sub setup_column_alignments{
     local($_) = @_;
-    my($j1,$a1,$a2,$a3,$j4) = split(/[|]/,$_);
+    my($a1,$a2,$a3) = split(/[|]/,$_);
     my($th1,$th2,$th3) = ('<th>', '<th>', '<th>');
     $col_aligns[0] = (($a1 eq "c") ? "<td align=center>" : "<td>");
     $col_aligns[1] = (($a2 eq "c") ? "<td align=center>" : "<td>");
diff --git a/Doc/texinputs/python.sty b/Doc/texinputs/python.sty
index c58a55b..fc121b8 100644
--- a/Doc/texinputs/python.sty
+++ b/Doc/texinputs/python.sty
@@ -600,9 +600,8 @@
 \newenvironment{tableii}[4]{%
   \begin{center}%
     \def\lineii##1##2{\csname#2\endcsname{##1}&##2\\}%
-    \begin{tabular}{#1}\hline \strong{#3}&\strong{#4} \\ \hline%
+    \begin{tabular}{#1}\strong{#3}&\strong{#4} \\ \hline%
 }{%
-      \hline%
     \end{tabular}%
   \end{center}%
 }
@@ -610,9 +609,8 @@
 \newenvironment{tableiii}[5]{%
   \begin{center}%
     \def\lineiii##1##2##3{\csname#2\endcsname{##1}&##2&##3\\}%
-    \begin{tabular}{#1}\hline \strong{#3}&\strong{#4}&\strong{#5} \\ \hline%
+    \begin{tabular}{#1}\strong{#3}&\strong{#4}&\strong{#5} \\ \hline%
 }{%
-      \hline%
     \end{tabular}%
   \end{center}%
 }