Structure of the MH Book

This page is for people who want to understand the book's internal structure -- for instance, people who'll revise or extend the book.

The printed book MH & xmh: Email for Users & Programmers, ISBN 1-56592-093-7, had three major editions and some minor revisions in between. There were seven major Parts: three for MH; one each for xmh, mh-e and exmh; and one with appendices. Each part had several chapters or appendices. Almost every chapter and appendix had more than one section. The Section What's in This Book gives a short summary of each part, chapter and appendix. The Complete Table of Contents shows the structure in more detail, though it doesn't list sub-subsections.

Files

To convert the book to HTML, I split it into more than 400 separate files. Each major section of a chapter (for example, Sections 1.1, 1.2, 1.3, etc., of Chapter 1) went into its own file. The idea was to make links between sections work quickly: in most cases, to follow a link, a browser only has to load a few kbytes. Each filename starts with from 1 to 8 characters and ends with .htm. These short names can be cryptic, but they make the book compatible with filesystems on old DOS computers and CD-ROMs. (People who have slow or no Internet connections can download the book onto their local hard disks; see the browsing help page for info.)

I designed the HTML files to be reorganized. The filenames are meant to be position-independent: they usually aren't related to the place where a section originally fell in the print book. The only section and chapter numbers are in the Tables of Contents. In fact, the "glue" that holds the zillions of files together is in the Tables of Contents and the previous/next links between the files. As the book is rearranged in the future -- with new sections and chapters -- I hope this structure will help to avoid broken links from peoples' bookmarks and other HTML pages.

If a file ever needs to be completely removed, it should be replaced with a "stub" file that points people to the section(s) which replaced the original file. (The stub files don't need to be listed in the Table of Contents -- though, on second thought, maybe there should be a part of the TOC for "Old Stuff".) That way, people with old links to the file can find their way through the new structure. At least, these stub files should have a link to the Table of Contents. Especially, try to avoid renaming a file or changing its purpose -- that means more links need to be changed.

Top-level Directory

In general, files in the top directory apply to all of the book's sections.
Index files
Two files have, or point to, all the index entries: indx-cgi.htm is designed for searching by the mh-index CGI script; it's built from individual files in the */indexes subdirectories. indx-map.htm points to individual browsable indexes in the book's sections (subdirectories). There's also a srchhelp.htm file for help with index searching. (The file index.htm, and the symbolic link index.html that points to it, aren't index files. They're the book's home page.)
Tables of Contents
Two almost-identical files have complete tables of contents. toc.htm is for people using the non-frames interface to the book, and frm-toc.htm is the same file with TARGET attributes to drive the frames interface.
Frames Files
Besides the frm-toc.htm file, there are three other files for the frames interface. frm-home.htm sets up the frames. frm-help.htm explains how to use the frames. frm-srch.htm is an interface that runs the mh-index-frames script and returns matching entries with TARGET attributes that the user can click on.

Subdirectories

The book has six user-visible subdirectories:
download
This subdirectory has tar- and ZIP-format archives of the whole book, ready to download, for people who don't want to read online. There's also a subdirectory split with copies of individual scripts and library files; the whole thing is also available as a tarball.
exmh
is for the chapters about the exmh interface to MH.
mh
covers MH and nmh.
mh-e
is for the chapters about the mh-e interface to MH. These files are automatically generated and in a different format than other parts of the book.
overall
has chapters that apply to more than one part of the book: for instance, an overview of MIME.
xmh
is for the chapters about the xmh interface to MH.
Each of those except mh-e has subdirectories of its own:
*/figs
This subdirectory has Figures and other graphics.
*/indexes
This subdirectory has the index files: Most of these files are generated automatically from a file of index entries named index-raw and a list of section titles index-map by a sort-of-buggy Perl script named index-make.pl.
*/tocs
This subdirectory has tables of contents:

Missing (Moved) Parts

Some servers probably won't have all of this book. Two Parts of the book, on mh-e and exmh, are also the basis for documentation of those software packages. Those two Parts probably won't be used often by people who use plain MH. Some sites may have copies of just the mh-e or exmh Parts; those Parts will have links back to a site with the rest of the book. And some sites will have only the other Parts, with links to mh-e and exmh. I hope this tangly mess will be straightened out a little (in a backward-compatible way, of course :) as time goes on.

Making Changes

If you want to make changes to the book, I hope you'll get in touch with me and explain what you're trying to do. I might know of someone else who's already doing the same thing. I can put you in touch with other volunteers who are working on the book and help you get your changes distributed.

Oh, and please remember that the book is distributed under the GNU General Public License. Please read the file with information about copying, distributing, and modifying this book.

--Jerry Peek, 22 April 1999

[This book's Home Page] [Table of Contents]


Last change $Date: 1999/10/10 05:14:05 $

This file first appeared in the updated online edition of the book MH & nmh: Email for Users & Programmers, by Jerry Peek. Copyright © 1997 by Jerry Peek. This file is freely available; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation. For more information, see the file copying.htm.

Suggestions are welcome: Jerry Peek <jpeek@jpeek.com>