Centralize the processing logic for LaTeX documents into the mkhowto script;
do not use mkdvi.sh or mkhtl.sh any more.

This slows down building all versions of the documentation, but if you are
only building one format, it does not matter.
diff --git a/Doc/html/Makefile b/Doc/html/Makefile
index 2115132..0778fb8 100644
--- a/Doc/html/Makefile
+++ b/Doc/html/Makefile
@@ -1,9 +1,6 @@
-# Convenience Makefile for building HTML documentation.  You probably need to
-# set TEXINPUTS from the command line for this to be useful, unless you
-# actually build the .dvi files in the top level directory.
-#
-# Note that the .dvi files must already be built and TEXINPUTS must include the
-# directory where latex's working files (esp. *.aux) are kept.
+# Convenience Makefile for building HTML documentation.  You probably
+# need to set TEXINPUTS from the command line for this to be useful,
+# unless you actually build the .dvi files in the top level directory.
 
 PAPER=letter
 TOPDIR=..
@@ -15,16 +12,10 @@
 # Where are the various programs?
 PYTHON=	   python
 WEBCHECKER=$(PYTHON) $(TOPDIR)/../Tools/webchecker/webchecker.py
-WCNEW=$(PYTHON) $(TOPDIR)/../Tools/webchecker/wcnew.py
-MKAUX=	   PAPER=$(PAPER) TEXINPUTS=$(TEXINPUTS) $(TOOLSDIR)/mkdvi.sh --aux
-MKHTML=	   PAPER=$(PAPER) $(TOOLSDIR)/mkhtml.sh
-KPSEWHICH= TEXINPUTS=$(TEXINPUTS) kpsewhich tex
+MKHOWTO=   $(TOOLSDIR)/mkhowto
 
 BUILDINDEX=$(TOOLSDIR)/buildindex.py
 
-# make it clear to l2h, since our support only generates HTML 4.0
-L2HARGS=   -html_version 4.0
-
 PYTHONDOCS='<hr>See <i><a href="about.html">About this document...</a></i> for information on suggesting changes.'
 HTMLBASE=  file:`pwd`
 
@@ -70,55 +61,43 @@
 		--address $(PYTHONDOCS) \
 		lib/modindex.html mac/modindex.html
 
-api/api.html:  $(PAPERDIR)/api.aux $(BUILDINDEX) $(TOOLSDIR)/mkhtml.sh
-	$(MKHTML) api $(L2HARGS) -split 5
+api/api.html:  $(APIFILES) $(BUILDINDEX)
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
+		--html $(TOPDIR)/api/api.tex
 
-doc/doc.html:  $(DOCFILES) $(BUILDINDEX) $(TOPDIR)/perl/ltxmarkup.perl
-	$(TOOLSDIR)/mkhowto --about stdabout.dat --address $(PYTHONDOCS) \
+doc/doc.html:  $(DOCFILES) $(BUILDINDEX)
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
 		--html $(TOPDIR)/doc/doc.tex
 
-ext/ext.html:  $(PAPERDIR)/ext.aux $(TOOLSDIR)/mkhtml.sh
-	$(MKHTML) ext $(L2HARGS) -split 5
+ext/ext.html:  $(EXTFILES)
+	echo $(EXTFILES)
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
+		--html $(TOPDIR)/ext/ext.tex
 
-lib/lib.html:  $(PAPERDIR)/lib.aux $(BUILDINDEX) $(TOOLSDIR)/mkhtml.sh
-	$(TOOLSDIR)/fix_libaux.sed <`$(KPSEWHICH) lib.aux` >lib1.aux
-	mv lib1.aux `$(KPSEWHICH) lib.aux`
-	$(MKHTML) lib $(L2HARGS) -split 5
+lib/lib.html:  $(LIBFILES) $(BUILDINDEX)
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
+		--html $(TOPDIR)/lib/lib.tex
 
 mac/mac.html:  $(MACFILES) $(BUILDINDEX)
-	$(TOOLSDIR)/mkhowto --about stdabout.dat --address $(PYTHONDOCS) \
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
 		--html $(TOPDIR)/mac/mac.tex
 
-ref/ref.html:  $(PAPERDIR)/ref.aux $(BUILDINDEX) $(TOOLSDIR)/mkhtml.sh
-	$(MKHTML) ref $(L2HARGS) -split 5
+ref/ref.html:  $(REFFILES) $(BUILDINDEX)
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
+		--html $(TOPDIR)/ref/ref.tex
 
-tut/tut.html:  $(PAPERDIR)/tut.aux $(TOOLSDIR)/mkhtml.sh
-	$(MKHTML) --numeric tut $(L2HARGS) -split 3
+tut/tut.html:  $(TUTFILES) $(TOOLSDIR)/mkhowto
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
+		--html --numeric --split 3 $(TOPDIR)/tut/tut.tex
 
-inst/inst.html:$(INSTFILES) $(TOPDIR)/perl/distutils.perl
-	$(TOOLSDIR)/mkhowto --about stdabout.dat --address $(PYTHONDOCS) \
+inst/inst.html: $(INSTFILES) $(TOPDIR)/perl/distutils.perl
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
 		--html $(TOPDIR)/inst/inst.tex
 
 dist/dist.html:$(DISTFILES) $(TOPDIR)/perl/distutils.perl
-	$(TOOLSDIR)/mkhowto --about stdabout.dat --address $(PYTHONDOCS) \
+	$(MKHOWTO) --about stdabout.dat --address $(PYTHONDOCS) \
 		--html $(TOPDIR)/dist/dist.tex
 
-$(PAPERDIR)/api.aux: $(APIFILES)
-	(cd $(PAPERDIR); $(MKAUX) api)
-
-$(PAPERDIR)/ext.aux: $(EXTFILES)
-	(cd $(PAPERDIR); $(MKAUX) ext)
-
-$(PAPERDIR)/lib.aux: $(LIBFILES)
-	(cd $(PAPERDIR); $(MKAUX) lib)
-
-$(PAPERDIR)/ref.aux: $(REFFILES)
-	(cd $(PAPERDIR); $(MKAUX) ref)
-
-$(PAPERDIR)/tut.aux: $(TUTFILES)
-	(cd $(PAPERDIR); $(MKAUX) tut)
-
-
 webcheck: all
 	$(WEBCHECKER) $(HTMLBASE)/api/
 	$(WEBCHECKER) $(HTMLBASE)/doc/
@@ -130,16 +109,6 @@
 	$(WEBCHECKER) $(HTMLBASE)/dist/
 	$(WEBCHECKER) $(HTMLBASE)/inst/
 
-wcnew: all
-	$(WCNEW) $(HTMLBASE)/api/
-	$(WCNEW) $(HTMLBASE)/doc/
-	$(WCNEW) $(HTMLBASE)/ext/
-	$(WCNEW) -m290000 $(HTMLBASE)/lib/
-	$(WCNEW) $(HTMLBASE)/mac/
-	$(WCNEW) $(HTMLBASE)/ref/
-	$(WCNEW) $(HTMLBASE)/tut/
-
-
 clean:
 	rm -rf @webchecker.pickle
 
@@ -154,7 +123,7 @@
 # It's at the end of the file since it wedges font-lock in XEmacs.
 
 BOILERPLATE=$(TOPDIR)/texinputs/boilerplate.tex
-index.html: index.html.in $(BOILERPLATE)
+index.html: $(TOPDIR)/html/index.html.in $(BOILERPLATE)
 	REL=`grep '\\release{' $(BOILERPLATE) | sed 's/.*\\release{\(.*\)}.*$$/\1/'`; \
 		REL=`echo "$$REL" | sed 's/[$$]//g'`; \
 		sed "s/@RELEASE@/$$REL/g" $< >TEMP
@@ -162,4 +131,3 @@
 		if [ "$$DATE" = '\today' ] ; then DATE=`date '+%B %e, %Y'`;fi;\
 		sed "s/@DATE@/$$DATE/g" TEMP >$@
 	rm -f TEMP
-
diff --git a/Doc/paper-letter/Makefile b/Doc/paper-letter/Makefile
index b81ee2e..d95be8a 100644
--- a/Doc/paper-letter/Makefile
+++ b/Doc/paper-letter/Makefile
@@ -2,20 +2,14 @@
 PAPER=letter
 
 # Where are the various programs?
-LATEX=		latex
-PDFLATEX=	pdflatex
 DVIPS=		dvips -N0 -t $(PAPER)
-MAKEINDEX=	makeindex -s ../texinputs/python.ist
 PYTHON=		python
 
 TOOLSDIR=	../tools
-TEXINPUTS=	.:../texinputs:
 
-MKDVI=		TEXINPUTS=$(TEXINPUTS) $(TOOLSDIR)/mkdvi.sh
-# The --keep option is needed to keep the intermediate files for generating
-# the HTML global module index.
-MKHOWTO=	$(TOOLSDIR)/mkhowto --keep
-MKPDF=		TEXINPUTS=$(TEXINPUTS) $(TOOLSDIR)/mkdvi.sh --pdf
+MKHOWTO=	$(TOOLSDIR)/mkhowto
+MKDVI=		$(MKHOWTO) --dvi
+MKPDF=		$(MKHOWTO) --pdf
 
 
 # what's what
@@ -36,17 +30,14 @@
 include ../Makefile.deps
 
 
-SCRIPTS:	  ../tools/fix_hack ../tools/mkdvi.sh ../tools/indfix.py
+SCRIPTS:	  ../tools/indfix.py
 
-$(DVIFILES):	  $(SCRIPTS)
-$(PDFFILES):	  $(SCRIPTS)
-
-$(HOWTODVIFILES): ../tools/mkhowto
-$(HOWTOPDFFILES): ../tools/mkhowto
+$(DVIFILES):	  $(SCRIPTS) $(MKHOWTO)
+$(PDFFILES):	  $(SCRIPTS) $(MKHOWTO)
 
 
 # Rules to build PostScript and PDF formats
-.SUFFIXES: .dvi .ps .pdf
+.SUFFIXES: .dvi .ps
 
 .dvi.ps:
 	$(DVIPS) -o $@ $<
@@ -64,20 +55,20 @@
 
 # Python/C API Reference Manual
 api.dvi: api.tex $(APIFILES)
-	$(MKDVI) api
+	$(MKDVI) ../api/api.tex
 
 api.pdf: api.tex $(APIFILES)
-	$(MKPDF) api
+	$(MKPDF) ../api/api.tex
 
 api.tex: ../api/api.tex ../api/refcounts.dat ../tools/anno-api.py
 	$(PYTHON) ../tools/anno-api.py -o $@ ../api/api.tex
 
 # Distributing Python Modules
 dist.dvi: $(DISTFILES)
-	$(MKHOWTO) --dvi ../dist/dist.tex
+	$(MKDVI) ../dist/dist.tex
 
 dist.pdf: $(DISTFILES)
-	$(MKHOWTO) --pdf ../dist/dist.tex
+	$(MKPDF) ../dist/dist.tex
 
 # Documenting Python
 doc.dvi: $(DOCFILES)
@@ -88,10 +79,10 @@
 
 # Extending and Embedding the Python Interpreter
 ext.dvi: $(EXTFILES)
-	$(MKDVI) ext
+	$(MKDVI) ../ext/ext.tex
 
 ext.pdf: $(EXTFILES)
-	$(MKPDF) ext
+	$(MKPDF) ../ext/ext.tex
 
 # Installing Python Modules
 inst.dvi: $(INSTFILES)
@@ -102,10 +93,10 @@
 
 # Python Library Reference
 lib.dvi: $(LIBFILES)
-	$(MKDVI) lib
+	$(MKDVI) ../lib/lib.tex
 
 lib.pdf: $(LIBFILES)
-	$(MKPDF) lib
+	$(MKPDF) ../lib/lib.tex
 
 # Macintosh Library Modules
 mac.dvi: $(MACFILES)
@@ -116,17 +107,17 @@
 
 # Python Reference Manual
 ref.dvi: $(REFFILES)
-	$(MKDVI) ref
+	$(MKDVI) ../ref/ref.tex
 
 ref.pdf: $(REFFILES)
-	$(MKPDF) ref
+	$(MKPDF) ../ref/ref.tex
 
 # Python Tutorial
 tut.dvi: $(TUTFILES)
-	$(MKDVI) tut
+	$(MKDVI) ../tut/tut.tex
 
 tut.pdf: $(TUTFILES)
-	$(MKPDF) tut
+	$(MKPDF) ../tut/tut.tex
 
 
 clean: