Python main documentation -- in LaTeX
-------------------------------------

This directory contains the LaTeX sources to the Python documentation
and a published article about Python.

The following are the LaTeX source files:

	tut.tex				The tutorial
	lib.tex, lib[1-5].tex		The library reference
	ref.tex, ref[1-8].tex		The reference manual
	qua.tex, quabib.bib		Article published in CWI Quarterly

All except qua.tex use the style option file "myformat.sty".  This
contains some macro definitions and sets some style parameters.

The style parameters are set up for European paper size (21 x 29.7 cm,
a.k.a. A4, or roughly 8.27 x 11.7 inch) by default.  To use US paper,
comment out the line saying \input{a4wide.sty} in myformat.sty (you
may want to fiddle with lay-out parameters like \textwidth and
\textheight, since the default format uses rather wide margins).

You need the makeindex utility to produce the index for ref.tex
lib.tex; you need bibtex to produce the references list for qua.tex.

There's a Makefile to call latex and the other utilities in the right
order and the right number of times.  This will produce dvi files for
each document made; to preview them, use xdvi.  Printing depends on
local conventions; at my site, I use dvips and lpr.  For example:

	make ref			# creates ref.dvi
	xdvi ref			# preview it
	dvips -Ppsc ref | lpr -Ppsc	# print it on printer "psc".

If you don't have latex, you can ftp the pre-formatted PosytScript
versions of the documents; see "../misc/FTP" for information about
ftp-ing Python files.

Making the INFO version of the Library Reference
------------------------------------------------

The Library Reference can now also be read in hypertext form using the
Emacs INFO system.  This uses Texinfo format as an intermediate step.
It requires texinfo version 2 (we have used 2.14).

To build the info files (python-lib.info*), say "make libinfo".  This
takes a while, even on machines with 33 MIPS and 16 Mbytes :-) You can
ignore the output.

But first you'll have to change a site dependency in fix.el: if
texinfo 2.xx is installed by default at your site, comment out the two
lines starting with "(setq load-path"; if it isn't, change the path!
(I'm afraid that if you don't have texinfo 2.xx this won't work -- use
archie to locate a version and ftp to fetch it.)

The files used by the conversion process are:

partparse.py            the dirty-written Python script that converts
                        LaTeX sources to texi files. Output is left in
                        `@out.texi'

texi{pre,post}.dat      these files will be put before and after the
                        result

fix.sh                  calls emacs in order to update all the nodes and
                        menus. After this, makeinfo will convert the
                        texinfo-source to the info-file(s). Assumption:
                        the texi-source is called `@out.texi'

fix.el                  the elisp-file executed by emacs. Two calls to
                        'texinfo-all-menus-update are necessary in
			some cases

fix_hack                executable shell script that fixes the results
                        of the underscore hack. {\ptt \char'137} is
                        back-translated to a simple underscore. This is
                        needed for the texindex program

handy.el                some handy Emacs-macro's that helped converting
                        ``old'' documentation to a format that could be
                        understood by the converter scipt (partparse.py).
			(You don't really need this, but, as the name
			says, these macros are "handy")

A Million thanks for Jan-Hein B\"uhrman for writing and debugging the
convertor and related scripts, and for fixing the LaTeX sources and
writing new macros for myformat.sty!
