diff -urNp a/userguide/avstopam.html b/userguide/avstopam.html
--- a/userguide/avstopam.html	2022-01-03 16:56:37.731614243 +0100
+++ b/userguide/avstopam.html	2022-01-03 16:58:29.889416006 +0100
@@ -2,12 +2,13 @@
 <html><head><title>Avstopam User Manual</title></head>
 <body>
 <h1>avstopam</h1>
-Updated: 07 February 2010
-<br>
-<a href="#index">Table Of Contents</a>
+
+<p>Updated: 07 February 2010</p>
+
+<p><a href="#index">Table Of Contents</a></p>
 <h2>NAME</h2>
 
-<p>avstopam - convert an AVS X image to a Netpbm image
+<p>avstopam - convert an AVS X image to a Netpbm image</p>
 
 <h2 id="synopsis">SYNOPSIS</h2>
 
@@ -16,40 +17,40 @@ Updated: 07 February 2010
 
 <h2 id="description">DESCRIPTION</h2>
 
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
 
 <p><b>avstopam</b> reads a Stardent <abbr title="Application
 Visualization System">AVS</abbr> X image as input and produces a Netpbm
-image as output.
+image as output.</p>
 
 <p><i>avsfile</i> is the input file, which defaults to Standard Input.
-Output is always on Standard Output.
+Output is always on Standard Output.</p>
 
 <h2 id="options">OPTIONS</h2>
 
 <p>There are no command line options defined specifically
 for <b>avstopam</b>, but it recognizes the options common to all
 programs based on libnetpbm (See <a href="index.html#commonoptions">
-Common Options</a>.)
+Common Options</a>.)</p>
 
 <h2 id="author">AUTHOR</h2>
 
 <p>Copyright&nbsp;&copy; 2010 Scott Pakin,
-<a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a>
+<a href="mailto:scott+pbm@pakin.org">scott+pbm@pakin.org</a></p>
 
 <h2 id="seealso">SEE ALSO</h2>
 
-<p><a href="pamtoavs.html">pamtoavs</a>, <a href="pam.html">pam</a>
+<p><a href="pamtoavs.html">pamtoavs</a>, <a href="pam.html">pam</a></p>
 
 <hr>
 
 <h2 id="index">Table Of Contents</h2>
 <ul>
-<li><a href="#synopsis">SYNOPSIS</a>
-<li><a href="#description">DESCRIPTION</a>
-<li><a href="#options">OPTIONS</a>
-<li><a href="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
 </ul>
 </body>
 </html>
diff -urNp a/userguide/faxformat.html b/userguide/faxformat.html
--- a/userguide/faxformat.html	2022-01-03 16:56:37.731614243 +0100
+++ b/userguide/faxformat.html	2022-01-03 16:58:29.890416013 +0100
@@ -5,10 +5,11 @@
 Updated: 03 December 2008
 <br>
 
+<h2>SYNOPSIS</h2>
 <p>This page, part of the <a href="index.html">Netpbm user's guide</a>,
 describes FAX formats in relation to Netpbm facilities.
 
-
+<h2>DESCRIPTION</h2>
 <p>The ITU (formerly CCITT) publishes standards for operation of fax machines
 (the idea is to provide a way to be sure that a fax machine is able to receive
 a fax sent by another).  These standards incidentally specify graphics file
diff -urNp a/userguide/libnetpbm_ug.html b/userguide/libnetpbm_ug.html
--- a/userguide/libnetpbm_ug.html	2022-01-03 16:56:37.732614250 +0100
+++ b/userguide/libnetpbm_ug.html	2022-01-03 16:58:29.891416020 +0100
@@ -374,7 +374,7 @@ plain format.
 <h2 id="reference">Reference</h2>
 
 <p>The <a href="libnetpbm_image.html">Libnetpbm Netpbm Image
-Processing Manual</a> describes the the <b>libnetpbm</b> functions for
+Processing Manual</a> describes the <b>libnetpbm</b> functions for
 processing image data.
 
 <p>The <a href="libpm.html">Libnetpbm Utility Manual</a>
diff -urNp a/userguide/pamfunc.html b/userguide/pamfunc.html
--- a/userguide/pamfunc.html	2022-01-03 16:56:37.730614236 +0100
+++ b/userguide/pamfunc.html	2022-01-03 16:58:29.892416027 +0100
@@ -60,7 +60,7 @@ output image.
 and bit string (such as and with 01001000).  For the arithmetic functions, the
 function arguments and results are the fraction that a sample is of the
 maxval, i.e. normal interpretation of PAM tuples.  But for the bit string
-functions, the value is the the bit string whose value as a binary cipher is
+functions, the value is the bit string whose value as a binary cipher is
 the sample value, and the maxval indicates the width of the bit string.
 
 <h4>Arithmetic functions</h4>
diff -urNp a/userguide/pammixmulti.html b/userguide/pammixmulti.html
--- a/userguide/pammixmulti.html	2022-01-03 16:56:37.731614243 +0100
+++ b/userguide/pammixmulti.html	2022-01-03 16:58:29.893416034 +0100
@@ -7,8 +7,8 @@ Updated: 18 November 2018
 <a href="#index">Table Of Contents</a>
   
 
-<h2>NAME</h2>
-<p>pammixmulti - blend together multiple PAM images
+<h2 id="name">NAME</h2>
+<p>pammixmulti - blend together multiple PAM images</p>
 
 
 <h2 id="synopsis">SYNOPSIS</h2>
@@ -22,14 +22,14 @@ Updated: 18 November 2018
 <p>Minimum unique abbreviation of an option is acceptable. You can use a
 single hyphen instead of double hyphens to denote options. You can use white
 space in place of the equals sign to separate an option name from its
-value.
+value.</p>
 
 
 <h2 id="description">DESCRIPTION</h2>
-<p>This file is part of <a href="index.html">Netpbm</a>.
+<p>This file is part of <a href="index.html">Netpbm</a>.</p>
 
 <p><b>pammixmulti</b> mixes two or more images to produce a new image. The
-program provides multiple ways to interpret "mix."
+program provides multiple ways to interpret "mix."</p>
 
 
 <h2 id="options">OPTIONS</h2>
@@ -37,7 +37,7 @@ program provides multiple ways to interp
 <p>In addition to the options common to all programs based on libnetpbm
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pammixmulti</b> recognizes the following
-command line options:
+command line options:</p>
 
 <dl compact>
 <dt><b>--blend</b>=average|random|mask</dt>
@@ -50,7 +50,7 @@ output is produced by selecting the corr
 images, chosen at random on a per-pixel basis.  With
 <b>--blend</b>=<code>mask</code>, each pixel in the output is produced by a
 weighted average of the corresponding pixels from all the input images based
-on the grayscale level of an additional mask image.
+on the grayscale level of an additional mask image.</p>
 </dd>
 
 <dt><b>--maskfile</b>=<i>filename</i></dt>
@@ -60,7 +60,7 @@ grayscale mask file to control the blend
 not grayscale, the first channel is treated as gray).  Where the mask file is
 black, the first image is selected. Where the mask file is white, the last
 image is selected.  Intermediate levels of gray select intermediate
-images.
+images.</p>
 </dd>
 
 <dt><b>--stdev</b>=<i>number</i></dt>
@@ -77,7 +77,7 @@ that includes roughly equal amounts of t
 and 2 but less of the corresponding pixel from image 3.  As <i>number</i>
 tends towards the number of input images (going beyond that has diminishing
 impact), the output tends to look more
-like <b>--blend</b>=average. <i>number</i> defaults to 0.25.
+like <b>--blend</b>=average. <i>number</i> defaults to 0.25.</p>
 </dd>
 
 <dt><b>--randomseed</b> <i>integer</i>
@@ -85,45 +85,45 @@ like <b>--blend</b>=average. <i>number</
 <dd>This is the seed for the random number generator used with
 <b>--blend=random</b>
 
-<p>Use this to ensure you get the same image on separate invocations.
+<p>Use this to ensure you get the same image on separate invocations.</p>
 
 </dl>
 
 <h2 id="arguments">ARGUMENTS</h2>
 
-<p>You supply the names of the files to mix as non-option arguments.
+<p>You supply the names of the files to mix as non-option arguments.</p>
 
 
 <h2 id="examples">EXAMPLES</h2>
 
-<p>Average a bunch of PPM images to produce a new PAM image:
+<p>Average a bunch of PPM images to produce a new PAM image:</p>
 <pre><code>
     pammixmulti input*.ppm &gt;output.ppm
 </code></pre>
 
 <p>Mix these same images by taking each pixel from a randomly selected input
-image:
+image:</p>
 
 <pre><code>
     pammixmulti --blend=random input*.ppm &gt;output.ppm
 </code></pre>
 
 <p>Use a mask image to control the fading among input images on a
-pixel-by-pixel basis:
+pixel-by-pixel basis:</p>
 
 <pre><code>
     pammixmulti --blend=mask --maskfile=mask.pgm &gt;output.pam \
        one.pam two.pam three.pam four.pam
 </code></pre>
 
-<p>Do the same but with more abrupt transitions:
+<p>Do the same but with more abrupt transitions:</p>
 
 <pre><code>
     pammixmulti --blend=mask --maskfile=mask.pgm --stdev=0.0 &gt;output.pam \
        one.pam two.pam three.pam four.pam
 </code></pre>
 
-<p>and now with more gradual transitions:
+<p>and now with more gradual transitions:</p>
 
 <pre><code>
     pammixmulti --blend=mask --maskfile=mask.pgm --stdev=1.0 &gt;output.pam \
@@ -133,12 +133,12 @@ pixel-by-pixel basis:
 
 <h2 id="history">HISTORY</h2>
 
-<p><b>pammixmulti</b> was new in Netpbm 10.85 (December 2018).
+<p><b>pammixmulti</b> was new in Netpbm 10.85 (December 2018).</p>
 
 
 <h2 id="author">AUTHOR</h2>
 
-<p>Copyright 2018 Scott Pakin, scott+pbm@pakin.org.
+<p>Copyright 2018 Scott Pakin, scott+pbm@pakin.org.</p>
 
 <h2 id="seealso">SEE ALSO</h2>
 
@@ -146,20 +146,20 @@ pixel-by-pixel basis:
 <a href="ppmmix.html">ppmmix</a>,
 <a href="pamarith.html">pamarith</a>,
 <a href="pnm.html">pnm</a>,
-<a href="pam.html">pam</a>
+<a href="pam.html">pam</a></p>
 
 
 <h2 id="index">Table Of Contents</h2>
 
 <ul>
-<li><a href="#synopsis">SYNOPSIS</a>
-<li><a href="#description">DESCRIPTION</a>
-<li><a href="#options">OPTIONS</a>
-<li><a href="#arguments">ARGUMENTS</a>
-<li><a href="#examples">EXAMPLES</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#author">AUTHOR</a>
-<li><a href="#seealso">SEE ALSO</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#arguments">ARGUMENTS</a></li>
+<li><a href="#examples">EXAMPLES</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#author">AUTHOR</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
 </ul>
 
 </body>
diff -urNp a/userguide/pampaintspill.html b/userguide/pampaintspill.html
--- a/userguide/pampaintspill.html	2022-01-03 16:56:37.730614236 +0100
+++ b/userguide/pampaintspill.html	2022-01-03 17:05:08.124277395 +0100
@@ -7,7 +7,7 @@ Updated: 02 November 2021
 <a href="#index">Table Of Contents</a>
 
 <h2>NAME</h2>
-pampaintspill - smoothly spill colors into the background
+<p>pampaintspill - smoothly spill colors into the background</p>
 
 <h2 id="synopsis">SYNOPSIS</h2>
 
@@ -19,17 +19,17 @@ pampaintspill - smoothly spill colors in
 [<b>--downsample</b>=<i>number</i>]
 [<b>--near</b>=<i>number</i>]
 [<b>--power</b>=<i>number</i>] [<i>filename</i>]
-[<b>-randomseed=</b><i>integer</i>]
+[<b>-randomseed=</b><i>integer</i>]</p>
 
 
 <p>Minimum unique abbreviations of option are acceptable.  You may use
 double hyphens instead of single hyphen to denote options.  You may use
 white space in place of the equals sign to separate an option name
-from its value.
+from its value.</p>
 
 <h2 id="description">DESCRIPTION</h2>
 
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
 
 <p><b>pampaintspill</b> produces a smooth color gradient from all of the
 non-background-colored pixels in an input image, effectively "spilling
@@ -40,27 +40,27 @@ paint" onto the background.  <b>pampaint
   <li><b>pampaintspill</b> accepts any number of paint
       sources (non-background-colored pixels), which can lie anywhere
       on the canvas.  <b>pamgradient</b> accepts exactly
-      four paint sources, one in each corner of the image.
+      four paint sources, one in each corner of the image.</li>
 
   <li><b>pampaintspill</b> requires an input image while
       <b>pamgradient</b> generates a new image from
-      scratch.
+      scratch.</li>
 
   <li><b>pampaintspill</b> can produce tileable output and
       can control how tightly the gradient colors bind to their source
-      pixels.
+      pixels.</li>
 </ul>
 
 <p>Results are generally best when the input image contains just a few, crisp
 spots of color. Use your drawing program's pencil tool &mdash; as opposed to a
-paintbrush or airbrush tool &mdash; with a small nib.
+paintbrush or airbrush tool &mdash; with a small nib.</p>
 
 <h2 id="options">OPTIONS</h2>
 
 <p>In addition to the options common to all programs based on libnetpbm
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pampaintspill</b> recognizes the following
-command line options:
+command line options:</p>
 
 <dl>
   <dt><b>--bgcolor</b>=<i>color</i></dt>
@@ -116,46 +116,46 @@ command line options:
       2.0) make the paint sources stand out in the output image by pushing the
       gradients away from them.</dd>
 
-  <dt><b>-randomseed=</b><i>integer</i>
+  <dt><b>-randomseed=</b><i>integer</i></dt>
   <dd>This is the seed for the random number generator that generates the
-  pixels.
+  pixels.</dd>
 
-  <p>Use this to ensure you get the same image on separate invocations.
+  <p>Use this to ensure you get the same image on separate invocations.</p>
 
-  <p>This option was new in Netpbm 10.94 (March 2021).</dd>
+  <p>This option was new in Netpbm 10.94 (March 2021).</p>
 </dl>
 
 
 <h2 id="seealso">SEE ALSO</h2>
 
 <ul>
-<li><a href="pamgradient.html"><b>pamgradient</b></a>
-<li><a href="ppmmake.html"><b>ppmmake</b></a>,
-<li><a href="ppmrainbow.html"><b>ppmrainbow</b></a>,
-<li><a href="pgmramp.html"><b>pgmramp</b></a>,
-<li><a href="ppmpat.html"><b>ppmpat</b></a>,
-<li><a href="pam.html"><b>pam</b></a>
+<li><a href="pamgradient.html"><b>pamgradient</b></a></li>
+<li><a href="ppmmake.html"><b>ppmmake</b></a>,</li>
+<li><a href="ppmrainbow.html"><b>ppmrainbow</b></a>,</li>
+<li><a href="pgmramp.html"><b>pgmramp</b></a>,</li>
+<li><a href="ppmpat.html"><b>ppmpat</b></a>,</li>
+<li><a href="pam.html"><b>pam</b></a></li>
 </ul>
 
 <h2 id="history">HISTORY</h2>
 
-<p><b>pampaintspill</b> was new in Netpbm 10.50 (March 2010).
+<p><b>pampaintspill</b> was new in Netpbm 10.50 (March 2010).</p>
 
 
 <h2 id="copyright">COPYRIGHT</h2>
 
 <p>Copyright&nbsp;&copy; 2010&ndash;2021 Scott Pakin,
-<a href="mailto:scott+pbm@pakin.org"><i>scott+pbm@pakin.org</i></a>.
+<a href="mailto:scott+pbm@pakin.org"><i>scott+pbm@pakin.org</i></a>.</p>
 
 <h2 id="index">Table Of Contents</h2>
 
 <ul>
-<li><a href="#synopsis">SYNOPSIS</a>
-<li><a href="#description">DESCRIPTION</a>
-<li><a href="#options">OPTIONS</a>
-<li><a href="#seealso">SEE ALSO</a>
-<li><a href="#history">HISTORY</a>
-<li><a href="#copyright">COPYRIGHT</a>
+<li><a href="#synopsis">SYNOPSIS</a></li>
+<li><a href="#description">DESCRIPTION</a></li>
+<li><a href="#options">OPTIONS</a></li>
+<li><a href="#seealso">SEE ALSO</a></li>
+<li><a href="#history">HISTORY</a></li>
+<li><a href="#copyright">COPYRIGHT</a></li>
 </ul>
 
 </body>
diff -urNp a/userguide/pamrecolor.html b/userguide/pamrecolor.html
--- a/userguide/pamrecolor.html	2022-01-03 16:56:37.731614243 +0100
+++ b/userguide/pamrecolor.html	2022-01-03 16:58:29.894416041 +0100
@@ -2,9 +2,9 @@
 <html><head><title>Pamrecolor User Manual</title></head>
 <body>
 <h1>pamrecolor</h1>
-Updated: 31 July 2010
+<p>Updated: 31 July 2010
 <br>
-<a href="#index">Table Of Contents</a>
+<a href="#index">Table Of Contents</a></p>
 
 <h2>NAME</h2>
 pamrecolor - alter colors without affecting luminance
@@ -22,15 +22,15 @@ pamrecolor - alter colors without affect
 [<b>-randomseed=</b><i>integer</i>]
 
 [<i>infile</i>]
-
+</p>
 
 <p>Minimum unique abbreviation of option is acceptable.  You may use double
 hyphens instead of single hyphen to denote options.  You may use white
-space in place of the equals sign to separate an option name from its value.
+space in place of the equals sign to separate an option name from its value.</p>
 
 <h2 id="description">DESCRIPTION</h2>
 
-<p>This program is part of <a href="index.html">Netpbm</a>.
+<p>This program is part of <a href="index.html">Netpbm</a>.</p>
 
 <p><b>pamrecolor</b> changes an image's colors to be as close as
 possible to given target colors but with the constraint that the
@@ -39,17 +39,17 @@ image will look identical if both are co
 (e.g. with
 <a href="ppmtopgm.html">ppmtopgm</a>).  You can have <b>pamrecolor</b> select
 target colors randomly, specify a single hue for the entire image, or take the
-target colors from a target image.
+target colors from a target image.</p>
 
 <p>In addition to real Netpbm images, <b>pamrecolor</b> works on pseudo-Netpbm
 images based on arbitrary color spaces.  You can define the color space
-explicitly or choose one of many that <b>pamrecolor</b> knows by name.
+explicitly or choose one of many that <b>pamrecolor</b> knows by name.</p>
 
 <p>The output is a PAM image on standard output.  Options control the
 exact format of the PAM.  If you want a PNM (PBM, PGM, or PPM) image,
 use <a href="pamtopnm.html">pamtopnm</a> on the output.  There is no
 need to convert if you will use the image as input to a current Netpbm
-program, but many other programs don't know what a PAM is.
+program, but many other programs don't know what a PAM is.</p>
 
 
 <h2 id="options">OPTIONS</h2>
@@ -57,7 +57,7 @@ program, but many other programs don't k
 <p>In addition to the options common to all programs based on libnetpbm
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pamrecolor</b> recognizes the following
-command line options:
+command line options:</p>
 
 <dl>
 
@@ -76,9 +76,9 @@ the raster have different meaning.  Many
 images actually use a variation with a different color space.  For example,
 <a href="http://www.gimp.org/">GIMP</a> uses sRGB internally and if you
 have GIMP generate a Netpbm image file, it really generates a variation of
-the format that uses sRGB.
+the format that uses sRGB.</p>
 
-<p><b>pamrecolor</b> knows the following color spaces (<i>name</i> values):
+<p><b>pamrecolor</b> knows the following color spaces (<i>name</i> values):</p>
 
   <dl>
   <dt>adobe</dt>
@@ -109,7 +109,7 @@ the format that uses sRGB.
 <p>The default is "ntsc" because this is the color space that the Netpbm
 formats and many graphics utilities use.  As a counterexample,
 <a href="http://www.gimp.org/">GIMP</a> uses sRGB as its native color
-space.
+space.</p>
 
 <p>The luminance values <b>pamrecolor</b> uses for each of the above come from
 Bruce Lindbloom's
diff -urNp a/userguide/pbmtog3.html b/userguide/pbmtog3.html
--- a/userguide/pbmtog3.html	2022-01-03 16:56:37.732614250 +0100
+++ b/userguide/pbmtog3.html	2022-01-03 16:58:29.894416041 +0100
@@ -36,7 +36,7 @@ use those encodings.
 <p>In addition to the options common to all programs based on libnetpbm
 (most notably <b>-quiet</b>, see <a href="index.html#commonoptions">
 Common Options</a>), <b>pbmtog3</b> recognizes the following
-command line options:
+command line options:</p>
 
 <dl>
 <dt><b>-reversebits</b>
@@ -80,7 +80,7 @@ You cannot specify both.
 <h2 id="history">HISTORY</h2>
 
 <p>Before Netpbm 10.79 (June 2017), there was a different program by the same
-name in Netpbm, which was written by by Paul Haeberli
+name in Netpbm, which was written by Paul Haeberli
 &lt;<a href="mailto:paul@manray.sgi.com">paul@manray.sgi.com</a>&gt; in 1989
 and then modified extensively by others.
 
diff -urNp a/userguide/ppmtogif.html b/userguide/ppmtogif.html
--- a/userguide/ppmtogif.html	2022-01-03 16:56:37.733614257 +0100
+++ b/userguide/ppmtogif.html	2022-01-03 16:58:29.895416049 +0100
@@ -5,17 +5,17 @@
 
 <h2>NAME</h2>
 
-ppmtogif - replaced by pamtogif
-
-<h2>DESCRIPTION</h2>
+<p>ppmtogif - replaced by pamtogif</p>
 
 <p>This program is part of <a href="index.html">Netpbm</a>.
 
+<h2>SYNOPSIS</h2>
 <p><b>ppmtogif</b> was replaced in Netpbm 10.37 (December 2006) by
 <b><a href="pamtogif.html">pamtogif</a></b>.
 
 <p><b>pamtogif</b> is mostly backward compatible with <b>ppmtogif</b>.
 
+<h2>DESCRIPTION</h2>
 <p>One way <b>pamtogif</b> is not backward compatible with <b>ppmtogif</b>
 is that to specify a transparency (alpha) mask with <b>ppmtogif</b>, you
 supply the transparency as a separate pseudo-PGM image and use the
