From 82d52884d37b1a23afa751837ee5df24e03a99a4 Mon Sep 17 00:00:00 2001
From: Manuel Pégourié-Gonnard <mpg@elzevir.fr>
Date: Mon, 2 Jun 2008 14:38:57 +0000
Subject: memoir v1.61803

git-svn-id: svn://tug.org/texlive/trunk@8483 c570f23f-e606-0410-a88d-b1316a301751
---
 Master/texmf-dist/doc/latex/memoir/memman.tex | 41199 +++++++++++++++++-------
 1 file changed, 29482 insertions(+), 11717 deletions(-)

(limited to 'Master/texmf-dist/doc/latex/memoir/memman.tex')

diff --git a/Master/texmf-dist/doc/latex/memoir/memman.tex b/Master/texmf-dist/doc/latex/memoir/memman.tex
index 2a8b26a5708..d3df5984017 100644
--- a/Master/texmf-dist/doc/latex/memoir/memman.tex
+++ b/Master/texmf-dist/doc/latex/memoir/memman.tex
@@ -1,354 +1,47 @@
-% memman.tex    edition 6,  Memoir class user manual
+% memman.tex    edition 7
+%               Memoir class user manual
 %                Author: Peter Wilson
-%                Copyright 2001, 2002, 2003, 2004 Peter R. wilson
-
-\documentclass[10pt,letterpaper]{memoir}
-%%%%\usepackage{memfixa}
-%%%%\usepackage{memfixc}
-%%\usepackage{makeidx}
-\usepackage{layouts}[2001/04/29]
-%%\usepackage{verbatim}
-\usepackage{url}
-\usepackage{fixltx2e}
-\usepackage{alltt}
-\usepackage{graphicx}
-\makeindex
-
-%%%%%%\usepackage{amsmath}
-
-\ifpdf
-  \pdfoutput=1
-  \usepackage[plainpages=false,pdfpagelabels,bookmarksnumbered]{hyperref}
-  \usepackage{memhfixc}
-\fi
-
-%\showindexmarktrue
-
-\newcommand{\theclass}{memoir}
-
-\providecommand{\tx}{TeX}
-\providecommand{\ltx}{LaTeX}
-
-
-\makeatletter
-
-%%% Print and Index macros
-\newcommand{\Ppstyle}[1]{\textsl{#1}}
-\newcommand{\pstyle}[1]{\Ppstyle{#1}%
-            \index{#1 pages?\Ppstyle{#1} (pagestyle)}%
-            \index{pagestyle!#1?\Ppstyle{#1}}}            % pagestyle
-\newcommand{\Pcstyle}[1]{\textsl{#1}}
-\newcommand{\cstyle}[1]{\Pcstyle{#1}%
-            \index{#1 chaps?\Pcstyle{#1} (chapterstyle)}%
-            \index{chapterstyle!#1?\Pcstyle{#1}}}          % chapterstyle
-\newcommand{\Pclass}[1]{\textsf{#1}}
-\newcommand{\Lclass}[1]{\Pclass{#1}%
-            \index{#1 class?\Pclass{#1} (class)}%
-            \index{class!#1?\Pclass{#1}}}                % class name
-\newcommand{\Ppack}[1]{\textsf{#1}}
-\newcommand{\Lpack}[1]{\Ppack{#1}%
-            \index{#1 pack?\Ppack{#1} (package)}%
-            \index{package!#1?\Ppack{#1}}}              % package name
-\newcommand{\Popt}[1]{\textsf{#1}}
-\newcommand{\Lopt}[1]{\Popt{#1}%
-            \index{#1 opt?\Popt{#1} (option)}%
-            \index{option!#1?\Popt{#1}}}               % option name
-\newcommand{\Ie}[1]{\texttt{#1}\index{#1 env?\texttt{#1} (environment)}%
-                               \index{environment!#1?\texttt{#1}}}
-\newcommand{\Icn}[1]{\texttt{#1}\index{#1 cou?\texttt{#1} (counter)}%
-                                \index{counter!#1?\texttt{#1}}}
-\newcommand{\Itt}[1]{\texttt{#1}\index{#1tt?\texttt{#1}}}
-
-% print and index an \if... \piif{if...} or friend (e.g., \else)
-\newcommand{\piif}[1]{\cs{#1}\index{#1?\cs{#1}}}
-
-%%%\newcommand{\seealso}[2]{\emph{see also} #1}
-
-\newcommand{\listofx}{`List of\ldots'}
-
-% print a begin environment
-\newcommand{\senv}[1]{\texttt{\bs begin\{#1\}}}
-
-% print an end environment
-\newcommand{\eenv}[1]{\texttt{\bs end\{#1\}}}
-
-% print a file name
-\newcommand{\file}[1]{\texttt{#1}}
-
-% print and index a file name
-\newcommand{\ixfile}[1]{\file{#1}%
-            \index{#1 file?\file{#1} (file)}%
-            \index{file!#1?\file{#1}}}
-
-% print & index CTT
-\newcommand{\ctt}{\textsc{ctt}}
-\newcommand{\pictt}{\ctt\index{CTT?\ctt}}
-
-% index marking
-\newcommand{\idxmark}[1]{#1\markboth{#1}{#1}}
-
-\newcommand{\foredge}{foredge}
-\newlength{\pwlayi}\setlength{\pwlayi}{0.45\textwidth} % 
-\newlength{\pwlayii}\setlength{\pwlayii}{0.45\pwlayi}
-
-%% definition of \meta is taken from doc.dtx
-\begingroup
-\obeyspaces%
-\catcode`\^^M\active%
-\gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
-\let^^M\do@space\let \do@space%
-\def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\itshape}%
-\m@ta}%
-\endgroup
-\def\m@ta#1{\leavevmode\hbox\bgroup$\langle$\itshape#1\/$\rangle$\egroup
-    \endgroup}
-\def\do@space{\egroup\space
-    \hbox\bgroup\itshape\futurelet\next\sp@ce}
-\def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
-\def\sp@@ce#1{\futurelet\next\sp@ce}
-%% end of \meta and supports
-
-
-%% The definition of \MakeShortVerb & \DeleteShortVerb
-%% are now in the memoir class.
-
-%% The macros \cmd, \cs, \marg, \oarg, \parg are taken from ltxdoc.dtx
-% \cmd{\fred} typesets \fred
-\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-% \cs{fred} typesets \fred
-\DeclareRobustCommand{\cs}[1]{\texttt{\char`\\#1}}
-% \marg{arg} typesets {<arg>}
-\providecommand{\marg}[1]{%
-  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-% \oarg{arg} typesets [<arg>]
-\providecommand{\oarg}[1]{%
-  {\ttfamily\char`\[}\meta{#1}{\ttfamily\char`\]}}
-% \parg{x,y} typesets (<x,y>)
-\providecommand{\parg}[1]{%
-  {\ttfamily\char`\(}\meta{#1}{\ttfamily\char`\)}}
-
-\def\bs{\texttt{\char`\\}}
-
-%%% macro \cmd from Heiko Oberdiek CTT 2001/05/26 (prints and indexes a command)
-\newcommand*{\cmdprint}[1]{\texttt{\string#1}}
-\def\cmd#1{\cmdprint{#1}%
-  \index{\expandafter\@gobble\string#1?\string\cmdprint{\string#1}}}
-
-% print and index \\!
-\newcommand{\pixslashbang}{\cmdprint{\\!}\index{"\"\"!?\string\cmdprint{\\}\texttt{"!}}}
-
-% print and index \!
-\newcommand{\pixabang}{\cmdprint{\!}\index{"!?\string\cs{}\texttt{"!}}}
-
-
-\newcommand{\lnc}[1]{\cmdprint{#1}%
-  \index{\expandafter\@gobble\string#1len?\string\cmdprint{\string#1} (length)}%
-  \index{length!\expandafter\@gobble\string#1len?\string\cmdprint{\string#1}}}
-
-%%%%%% stuff for new LaTeX code environment
-
-% \zeroseps sets list before/after skips to minimum values
-\newcommand{\@zeroseps}{\setlength{\topsep}{\z@}
-                        \setlength{\partopsep}{\z@}
-                        \setlength{\parskip}{\z@}}
-\newlength{\gparindent} \setlength{\gparindent}{\parindent}
-% now we can do the new environment. This has no extra before/after spacing.
-\newenvironment{lcode}{\@zeroseps
-  \renewcommand{\verbatim@startline}{\verbatim@line{\hskip\gparindent}}
-  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-  {\endverbatim
-   \vspace{-\baselineskip}%
-   \noindent
-}
-
-%%%%% LaTeX syntax
-\newenvironment{syntax}{\begin{center}
-                        \begin{tabular}{|p{0.9\linewidth}|} \hline}%
-                       {\hline
-                        \end{tabular}
-                        \end{center}}
-
-\providecommand{\Note}{\textbf{NOTE:}}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-% Save file as: DROP.STY               Source: FILESERV@SHSU.BITNET  
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%  DROP.DOC <February 17, 1988>
-%  Macro for dropping and enlarging the first letter(s) of a paragraph.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  Macro written by David G. Cantor, and published Fri, 12 Feb 88, in
-%  TeXhax, 1988 #16.  
-%  Internet:  dgc@math.ucla.edu
-%  UUCP:      ...!{ihnp4, randvax, sdcrdcf, ucbvax}!ucla-cs!dgc
-%
-%  Modified for use with LaTeX by Dominik Wujastyk, February 17, 1988
-%  Internet:   dow@wjh12.harvard.edu
-%  Bitnet:     dow@harvunxw.bitnet
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%  This LaTeX macro is for dropping and enlarging the first letter(s) of a
-%  paragraph.  The argument may be one or more letters.
-%
-%  Here is an example of its usage:
-%
-%  \documentstyle[drop]{article}
-%  \begin{document}
-%    \drop{IN} THE beginning God created the heaven and the earth.  Now the
-%    earth was unformed and void, and darkness was upon the face of the
-%    deep; and the spirit of God hovered over the face of the waters.
-%  \end{document}
-%
-%  Which will produce something along these lines:
-%
-%  I I\  I THE beginning God  created the heaven and  the earth.
-%  I I \ I Now the earth was unformed and void, and darkness was
-%  I I  \I upon the face of the deep; and the spirit of God hov-
-%  ered over the face of the waters.
-%
-%  In the first instance the macro will pause during LaTeX processing and 
-%  ask you for the font you wish to use for you drop capital.  When you
-%  have something that looks good, then comment out box one in DROP.STY,
-%  and comment in box two, replacing "cmr10 scaled \magstep5" with the font
-%  of your choice.
-%
-%  In my opinion (DW) there are no fonts available in the standard
-%  TeX/LaTeX set that are ideal for this use, unless you go down to 9pt or 
-%  8pt for your text face, and this is too small.  If you have Metafont you
-%  should consider generating a cmr17 font at a magstep of two (about 25pt)
-%  or three (about 30pt), or even more, depending on the point size of your
-%  main text.  Why not go the whole hog and design some really fancy 
-%  capitals from scratch!
-%
-%%%%%%%%%%%%%%%%%%%%% BOX ONE %%%%%%%%%%%%%%%%%%%%%%%%%
-%\typein[\dropinitialfont]{Font for Dropped initial:}  %
-%\font\largefont \dropinitialfont                      %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%
-%%%%%%%%%%%%%%%%%%%%% BOX TWO %%%%%%%%%%%%%%%%%%%%%%%%%
-%\font\largefont= cmr10 scaled \magstep5              %
-%\font\largefont= cmbx10 scaled \magstep5              %
-%\font\largefont= cmbx17 scaled \magstep3              %
-\font\largefont= cmr17 scaled \magstep5              %
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\def\drop#1#2{{\noindent
-    \setbox0\hbox{\largefont #1}\setbox1\hbox{#2}\setbox2\hbox{(}%
-    \count0=\ht0\advance\count0 by\dp0\count1\baselineskip
-    \advance\count0 by-\ht1\advance\count0by\ht2
-    \dimen1=.5ex\advance\count0by\dimen1\divide\count0 by\count1
-    \advance\count0 by1\dimen0\wd0
-    \advance\dimen0 by.25em\dimen1=\ht0\advance\dimen1 by-\ht1
-    \global\hangindent\dimen0\global\hangafter-\count0
-    \hskip-\dimen0\setbox0\hbox to\dimen0{\raise-\dimen1\box0\hss}%
-    \dp0=0in\ht0=0in\box0}#2}
-
-% end of DROP.STY
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\newcommand{\versal}[1]{{\noindent
-    \setbox0\hbox{\largefont #1}%
-    \count0=\ht0                   % height of versal
-    \count1=\baselineskip          % baselineskip
-    \divide\count0 by \count1      % versal height/baselineskip
-    \dimen1 = \count0\baselineskip % distance to drop versal
-    \advance\count0 by 1\relax     % no of indented lines
-    \dimen0=\wd0                   % width of versal
-    \global\hangindent\dimen0      % set indentation distance
-    \global\hangafter-\count0      % set no of indented lines
-    \hskip-\dimen0\setbox0\hbox to\dimen0{\raise-\dimen1\box0\hss}%
-    \dp0=0in\ht0=0in\box0}}
-
-\makeatother
-
-\MakeShortVerb{\|}
-% \DeleteShortVerb{\|}
-
-
-%%% need more space for ToC page numbers
-\setpnumwidth{2.55em}
-\setrmarg{3.55em}
-
-%%% need more space for ToC section numbers
-\cftsetindents{section}{1.5em}{3.0em}
-\cftsetindents{subsection}{4.5em}{3.9em}
-\cftsetindents{subsubsection}{8.4em}{4.8em}
-\cftsetindents{paragraph}{10.7em}{5.7em}
-\cftsetindents{subparagraph}{12.7em}{6.7em}
-
-%%% need more space for LoF numbers
-\cftsetindents{figure}{0em}{3.0em}
+%                Copyright 2001, 2002, 2003, 2004, 2008 Peter R. wilson
+%\listfiles
+\documentclass[10pt,letterpaper,extrafontsizes]{memoir}
+\listfiles
+\usepackage{comment}
 
-%%% and do the same for the LoT
-\cftsetindents{table}{0em}{3.0em}
-
-%%% set up the page layout
-\settrimmedsize{11in}{210mm}{*}
-\setlength{\trimtop}{0pt}
-\setlength{\trimedge}{\stockwidth}
-\addtolength{\trimedge}{-\paperwidth}
-\settypeblocksize{7.75in}{33pc}{*}
-\setulmargins{4cm}{*}{*}
-\setlrmargins{1.25in}{*}{*}
-\setmarginnotes{17pt}{51pt}{\onelineskip}
-\setheadfoot{\onelineskip}{2\onelineskip}
-\setheaderspaces{*}{2\onelineskip}{*}
-\checkandfixthelayout
 
+\usepackage{memsty}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\usepackage{titlepages}  % code of the example titlepages
+\usepackage{memlays}     % extra layout diagrams
+\usepackage{dpfloat}     % floats on facing pages
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\bibliographystyle{alpha}
+%%%% Change section heading styles
+%%%\memmansecheads
 
-\newcommand{\prtoc}{ToC}             % print ToC
-\newcommand{\prlof}{LoF}
-\newcommand{\prlot}{LoT}
-\newcommand{\ixtoc}{\index{ToC}}     % index ToC
-\newcommand{\ixlof}{\index{LoF}}
-\newcommand{\ixlot}{\index{LoT}}
-\newcommand{\toc}{\prtoc\ixtoc}      % print & index ToC
-\newcommand{\lof}{\prlof\index{LoF}}
-\newcommand{\lot}{\prlot\index{LoT}}
+%%%% Use the built-in division styling
+\headstyles{memman}
 
-\newcommand{\noidxnum}[1]{}
+%%% ToC down to subsections
+\settocdepth{subsection}
+%%% Numbering down to subsections as well
+\setsecnumdepth{subsection}
 
-%%% subfigures and subtables
-\newsubfloat{figure}
-\newsubfloat{table}
+%%%% extra index for first lines
+\makeindex[lines]
 
 %% end preamble
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 \begin{document}
+\tightlists
+%%%%\firmlists
+\midsloppy
+\raggedbottom
+\chapterstyle{demo3}
+
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%% list subfigures
-\setcounter{lofdepth}{2}
-
-\index{table of contents|see{ToC}}
-\index{list!of figures|see{LoF}}
-\index{figure!list of|see{LoF}}
-\index{list!of tables|see{LoT}}
-\index{table!list of|see{LoT}}
-\index{marginal note|see{marginalia}}
-\index{footnote!in title|see{thanks}}
-\index{counter|noidxnum}
-\index{environment|noidxnum}
-\index{length|noidxnum}
-\index{list|noidxnum}
-\index{illustration|seealso{float, figure}}
-\index{figure|seealso{float}}
-\index{file|noidxnum}
-\index{table|seealso{float}}
-\index{chapter!style|see{chapterstyle}}
-\index{chapter!heading|see{heading}}
-\index{page!style|see{pagestyle}}
-\index{part!heading|see{heading}}
-\index{subfloat|noidxnum}
+\input{memnoidxnum}
 
-%%% ToC down to subsections
-\settocdepth{subsection}
 \frontmatter
 \pagestyle{empty}
 
@@ -365,6 +58,9 @@
 \begin{flushright}
 \HUGE\sffamily  Class
 \end{flushright}
+%%\begin{center}
+%%\sffamily (Draft Edition 7)
+%%\end{center}
 \end{adjustwidth}
 \vspace*{\fill}
 \cleardoublepage
@@ -388,9 +84,15 @@
 \LARGE\textsf{Peter Wilson}\par
 \end{center}
 \vspace*{\fill}
+\def\THP{T\kern-0.2em H\kern-0.4em P}%   OK for CMR
+\def\THP{T\kern-0.15em H\kern-0.3em P}%   OK for Palatino
+\newcommand*{\THPress}{The Herries Press}%
 \begin{center}
-\textrm{\normalsize T\kern-0.2em H\kern-0.4em P} \\
-\textsf{The Herries Press}
+\settowidth{\droptitle}{\textsf{\THPress}}%
+\textrm{\normalsize \THP} \\
+\textsf{\THPress} \\[0.2\baselineskip]
+\includegraphics[width=\droptitle]{anvil2.mps}
+\setlength{\droptitle}{0pt}%
 \end{center}
 \clearpage
 
@@ -400,7 +102,7 @@
 \setlength{\parindent}{0pt}
 \setlength{\parskip}{\baselineskip}
 %%\ttfamily
-\textcopyright{} 2001, 2002, 2003, 2004 Peter R. Wilson \\
+\textcopyright{} 2001, 2002, 2003, 2004, 2008 Peter R. Wilson \\
 All rights reserved
 
 The Herries Press, Normandy Park, WA.
@@ -426,6 +128,8 @@ Third edition:                        & 17 November 2001 \\
 Fourth edition:                       & 16 March 2002 \\
 Fifth edition:                        & 10 August 2002 \\
 Sixth edition:                        & 31 January 2004 \\
+%%Draft Seventh edition:                & 31 January 2008 \\
+Seventh edition:                       & 10 May 2008 \\
 \end{tabular}
 \end{center}
 
@@ -464,28 +168,37 @@ Sixth edition:                        & 31 January 2004 \\
   \hspace*{\fill} \textit{Webster's New World Dictionary, Second College Edition}.
 \end{quote}
 
-%\vspace{2\baselineskip}
-%
-%\begin{quote}
-%\textbf{memoir,} \textit{n.} a fiction designed to flatter the subject 
-%  and to impress the reader. \\[0.5\baselineskip]
-%\hspace*{\fill} With apologies to Reuben Thomas and Ambrose Bierce
-%\end{quote}
+\vspace{2\baselineskip}
+
+
+\begin{quote}
+\textbf{memoir,} \textit{n.} a fiction designed to flatter the subject 
+  and to impress the reader. \\[0.5\baselineskip]
+\hspace*{\fill} With apologies to Ambrose Bierce % and Reuben Thomas
+\end{quote}
 
 \vspace*{\fill}
 
 \cleardoublepage
 
 % ToC, etc
-\pagenumbering{roman}
+%%%\pagenumbering{roman}
 \pagestyle{headings}
 %%%%\pagestyle{Ruled}
 
+\setupshorttoc
+\tableofcontents
+\clearpage
+\setupparasubsecs
+\setupmaintoc
 \tableofcontents
+\setlength{\unitlength}{1pt}
 \clearpage
 \listoffigures
 \clearpage
 \listoftables
+\clearpage
+\listofegresults
 
 %\chapter{Foreword}
 \chapter{Preface}
@@ -526,6 +239,7 @@ answers. It is a friendly and educational forum.
 
 {\raggedleft{\scshape Peter Wilson} \\ Seattle, WA \\ June 2001\par}
 
+\begin{comment}
 \chapter{Introduction to the first edition}
 
     This is not a guide to the general use of LaTeX but rather concentrates
@@ -533,21 +247,23 @@ on where the \index{class}\Lclass{memoir} class differs from the standard LaTeX
 \Lclass{book} and \Lclass{report} classes. There are other sources that deal with LaTeX in 
 general, some of which are listed in the \bibname. Lamport~\cite{LAMPORT94}
 is of course the original user manual for LaTeX, while the Companion
-series, for example~\cite{GOOSSENS94}, go into further details and auxiliary
+series, for example~\cite{COMPANION}, go into further details and auxiliary
 programs. The Comprehensive TeX Archive Network (CTAN) is a valuable source
 of free information and the LaTeX system itself. For general questions see
 the FAQ~\cite{FAQ} which also has pointers to information sources. Among
-these are \textit{The Not So Short Introduction to LaTeX2e}~\cite{LSHORT},
-Keith Reckdahl's \textit{Using imported graphics in LaTeX2e}~\cite{EPSLATEX}
-and Piet van Oostrum's \textit{Page layout in LaTeX}~\cite{FANCYHDR}.
+these are \btitle{The Not So Short Introduction to LaTeX2e}~\cite{LSHORT},
+Keith Reckdahl's \btitle{Using imported graphics in LaTeX2e}~\cite{EPSLATEX}
+and Piet van Oostrum's \btitle{Page layout in LaTeX}~\cite{FANCYHDR}.
 The question of how to use different fonts with LaTeX is left strictly alone;
-Alan Hoenig's book~\cite{HOENIG98} is the best guide to this that I know of.
+Alan Hoenig's book~\cite{HOENIG98} is the best guide to this that I know of
+although Philipp Lehman's \btitle{The Font Installation Guide}~\cite{FONTINST} 
+has much information.
 
 
     The first part of the manual discusses briefly some aspects of book
 design and typography, independently of the means of typesetting. Among
 the several books on the subject listed in the \bibname{} I prefer
-Bringhurst's \textit{The Elements of Typographic Style}~\cite{BRINGHURST92}.
+Bringhurst's \btitle{The Elements of Typographic Style}~\cite{BRINGHURST99}.
 I have used the LaTeX \Lclass{book} design, which is the default
 \Lclass{memoir} class style, in typesetting Part~\ref{part:art}.
 
@@ -596,9 +312,9 @@ I hope that, apart from these, the class supports everything that the
       and simple methods for defining new ones.
 \item Configurable captions, with several predefined captioning styles and
       methods for defining new ones.
-\item Ability to define new `List of...' and new floats with their accompanying
-      captions and `List of...'.
-\item Control over whether the `List of...', bibliography, index, etc., appear
+\item Ability to define new `\listofx' and new floats with their accompanying
+      captions and `\listofx'.
+\item Control over whether the `\listofx', bibliography, index, etc., appear
       in the Table of Contents.
 \item Support for epigraphs.
 \end{itemize}
@@ -613,8 +329,8 @@ page and titling style.
     The following conventions are used in the manual:
 \begin{itemize}
 \item \Pclass{The names of LaTeX classes\index{class} and 
-              packages\index{package} are typeset in this font.}
-\item \Popt{Class options\index{option} are typeset in this font.}
+              packages\index{package} are typeset in this font,
+             as are class and package options\index{option}.}
 \item \Ppstyle{The names of chapterstyles\index{chapterstyle} and 
                pagestyles\index{pagestyle} are typeset in this font.}
 \item \texttt{LaTeX code is typeset in this font.}
@@ -634,11 +350,9 @@ Javier Bezos (\url{jbezos@wanadoo.es}),
 Sven Bovin (\url{sven.bovin@chem.kuleuven.ac.be}),
 Scott Pakin (\url{pakin@uiuc.edu}),
 and
-Paul Stanley (\url{pstanley@essexcourt-chambers.co.uk})
-.}
+Paul Stanley (\url{pstanley@essexcourt-chambers.co.uk}).}
 may have, especially regarding errors, mispeaking, and desireable 
-enhancements. I can be reached either by posting to \url{comp.text.tex}
-or more directly at \url{peter.r.wilson@boeing.com}.
+enhancements. I can be reached by posting to \url{comp.text.tex}.
 
     TeX was designed principally for typesetting documents containing a 
 lot of mathematics. In such works the mathematics breaks up the flow
@@ -651,7 +365,7 @@ and does this by allowing vertical spaces to stretch and shrink a little
 so that the actual height of the typeblock is constant. Therefore LaTeX, being
 built on top of TeX, does not typeset on a fixed grid, and it would be a 
 very major task to try and make it do so; this has been tried but as far as 
-I know nobody has been successful.
+I know nobody has been successful. Experimental work, though, is still ongoing.
 
     The manual includes many unbreakable names of LaTeX commands,
 some of which stick out into the margin. The way of getting rid of these
@@ -659,6 +373,9 @@ is to rewrite the text so that they don't come at the end of a typeset
 line. This is tedious and I haven't done it because I expect the manual
 to be revised and that would throw off any hand tweaking done now.
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{comment}
+
 \chapter{Introduction to the second edition}
 
     Since the first edition of the manual was published the \Lclass{memoir}
@@ -924,175 +641,907 @@ and please let me know so that I can correct the omisssion.
     Of course, none of this would have been possible without Donald Knuth's
 TeX system and the subsequent development of LaTeX by Leslie Lamport.
 
+\end{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Introduction to the seventh edition}
+
+    The \Lclass{memoir} class and this manual have seen many changes since
+they first saw the light of day. The major functions, and extensions to
+them, were listed in the various
+introductions to the previous editions of this manual and it would now be 
+tedious to read them.
+
+    The \Mname\ class was first released in 2001 and since then
+has proven to be reasonably popular. The class can be used as a replacement
+for the \Lclass{book} and \Lclass{report} classes, by default generating
+documents virtually indistinguisable from ones produced by those classes.
+The class includes some options to produce documents with other appearances;
+for example an \Lclass{article} class look or one that looks as though 
+the document was
+produced on a typewriter with a single font, double spacing, no hyphenation, 
+and so on. In the following I use the term `standard class'\index{standard class} to denote
+the \Lclass{book} and \Lclass{report} classes and, when appropriate, the
+\Lclass{article} class as well.
+
+    The \Mname\ class includes the functionality of many packages, for
+instance the \Lpack{tocloft} package for controlling the table of contents or
+methods similar to the \Lpack{fancyhdr} package for designing your own
+headers. The built-in package functions are mainly related to document
+design and layout; \Mname\ does not touch upon areas like those that are 
+covered by the \Lpack{babel} or \Lpack{hyperref} packages or any related to 
+typesetting mathematics. On the other hand it is easy to configure a work
+produced with \Mname\ 
+to meet a university's thesis layout requirements.
+
+    \Mname\ has improved substantially since it was first released ---
+over 50 \ltx ers have provided code or suggestions for improvements.
+The class is included in the \TeXUG\ \tx\ distributions and the latest 
+version of the class and its supporting documentation is always
+available from %
+\ctan\ at \url{latex/contrib/memoir}.
+
+    This is not a guide to the general use of \ltx\ but rather concentrates
+on where the \index{class}\Lclass{memoir} class differs from the standard \ltx\
+\Lclass{book} and \Lclass{report} classes. There are other sources that deal 
+with \ltx\ in general, some of which are noted later.
+I assume that you have already used \ltx\ and therefore know how to prepare
+a \ltx\ manuscript, how to run \ltx\ and print the resulting document,
+and that you can also use auxiliary programs like \Lmakeindex\ 
+and \Lbibtex.
 
+\begin{comment}
+listed in \the \bibname. Lamport~\cite{LAMPORT94}
+is of course the original user manual for LaTeX, while the Companion
+series, for example~\cite{COMPANION}, go into further details and auxiliary
+programs. The Comprehensive TeX Archive Network (CTAN) is a valuable source
+of free information and the LaTeX system itself. For general questions see
+the FAQ~\cite{FAQ} which also has pointers to information sources. Among
+these are \btitle{The Not So Short Introduction to LaTeX2e}~\cite{LSHORT},
+Keith Reckdahl's \btitle{Using imported graphics in LaTeX2e}~\cite{EPSLATEX}
+and Piet van Oostrum's \btitle{Page layout in LaTeX}~\cite{FANCYHDR}.
+The question of how to use different fonts with LaTeX is left strictly alone;
+Alan Hoenig's book~\cite{HOENIG98} is the best guide to this that I know of
+although Philipp Lehman's \btitle{The Font Installation Guide}~\cite{FONTINST} 
+has much information.
+\end{comment}
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Terminology}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{General considerations}
 
-    Like all professions and trades, typographers and printers have their
-specialised vocabulary.
+    The class is a large one consisting of about 10,000 lines of \ltx\ code
+documented in a 400 page report; there is no need for most users to look at 
+this~\cite{MEMCODE}. However if you want to see exactly how some part, 
+or all of, \Mname\ is defined it is there for you to peruse.
+The document you are now reading is the separate comprehensive 
+User Manual~\cite{MEMMAN} which runs to about 500 pages, and from time to 
+time an Addendum~\cite{MEMADD} is released noting extensions to the class.
+Again, if you want to see how something was done in this Manual, which
+of course was prepared using \Mname\ itself, the source
+is available for you to read.
+There is also the \Lpack{memexsupp} package by Lars Madsen~\cite{MEMEXSUPP} 
+which provides some extra facilities for the class.
 
-    First there is the question of pages, leaves and sheets. 
-The trimmed sheets of paper\index{paper} that make up a book are called 
-\emph{leaves}\index{leaf},
-and I will call the untrimmed sheets the \emph{stock}\index{stock} material. 
-A leaf
-has two sides, and a \emph{page}\index{page} is one side of a leaf. 
-If you think of a book
-being opened flat, then you can see two leaves. The front of the righthand
-leaf, is called the \emph{recto}\index{recto} page of that leaf, 
-and the side of the
-lefthand leaf that you see is called the \emph{verso}\index{verso} page 
-of that leaf. 
-So, a leaf has a recto and a verso page. Recto pages are the odd-numbered 
-pages and verso pages are even-numbered.
 
-   Then there is the question of folios. The typographical term for
-the number of a page is \emph{folio}\index{folio}.
-This is not to be confused with
-the same term as used in `Shakespeare's First Folio' where the reference is
-to the height and width of the book, nor to its use in the phrase
-`\emph{folio} signature'\index{signature} where the term refers to the 
-number of times a printed sheet is folded. 
-Not every page in a book has a printed
-folio, and there may be pages that do not have a folio at all. Pages with
-folios, whether printed or not, form the \emph{pagination}\index{pagination} 
-of the book. Pages
-that are not counted in the pagination have no folios.
+The first part of this Manual discusses some aspects of book design 
+and typography in
+general, something that I haven't come across in the usual \ltx\ books
+and manuals. This is intended to provide a little background for when
+you design your own printed documents.
 
-   A \emph{font}\index{font} is a set of characters. In the days of 
-metal type and hot lead a font meant a complete alphabet and auxiliary
-characters in a given size. More recently it is taken to mean a complete
-set of characters regardless of size. A font of roman type normally
-consists of CAPITAL LETTERS, \textsc{small capitals}, lowercase letters,
-numbers, punctuation marks, ligatures (such as `fi' and `ffi'), and a
-few special symbols like \&.
-   A \emph{font family}\index{font!family} is a set of fonts designed to
-work harmoniously together, such as a pair of roman and italic fonts.
+\begin{comment}
+    \Mname\ provides slightly enhanced facilities for creating title pages but
+in my view it is better to create your own layout for a title page. To aid
+in this I have created some 25 examples of title pages that can be used
+as a starting point for your design~\cite{TITLEPAGES}. These were produced
+using regular \ltx\ facilities and are not dependent on \Mname.
+\end{comment}
 
-   The size of a font\index{font} is expressed in points\index{point} 
-(72.27 points equals 1 inch
-equals 25.4 millimeters). The size is a rough indication of the height
-of the tallest character, but different fonts with the same size may have
-very different actual heights.
+    The second, and by far the longer part, describes the capabilities
+of \Mname\ and how to use them. This manual is not a \ltx\ tutorial; I assume
+that you already know the basics. If you don't then there are several 
+free tutorials available. In some instances I show you the internal code
+for the class which may involve \ltx\ commands that you won't come
+across in the tutorials and also sometimes basic \tx\ commands. Information
+on these, if you want it, is obtained from reading the \ltx\ source itself
+and the \txbook, and perhaps one of the free \tx\ manuals such as
+\btitle{TeX for the Impatient}~\cite{IMPATIENT} or 
+\btitle{TeX by Topic}~\cite{TEXBYTOPIC}.
+
+\section{Class options}
+
+    The standard classes provide point options of 10, 11, or 12 points for the
+main body font. \Mname\ extends this by also providing a 9 point option, and 
+options ranging from 14 to 60 points.
+The width of the text block is automatically adjusted according to 
+the selected point size to try and keep within generally accepted 
+typographical limits for line lengths; you can override this if you wish. 
+The class also provides easy methods for specifying the 
+page layout parameters such as the margins --- both the side margins and 
+those at 
+the top and bottom of the page; the methods are similar to those of the
+\Lpack{geometry} package.
+
+    The page layout facilities also include methods, like those provided
+by the \Lpack{fancyhdr} package, for defining your own
+header and footer styles, and you can have as many different ones as you wish.
+In fact the class provides seven styles to choose from before having to
+create your own if none of the built-in styles suit you. 
+
+   Sometimes it is useful, or even required, to place trimming marks on
+each page showing the desired size of the final page with respect to the sheet
+of paper that is used in the printer. This is provided by the \Lopt{showtrims}
+option. A variety of trim marks are provided and you can define your own 
+if you need some other kind.
+
+\section{Sectioning styles}
+
+    Handles are provided for designing and using your own styles for chapter
+titles and such. The class comes with over 20 predefined chapter styles ranging
+from the default look to a style that mimics that used in the 
+\emph{Companion} series of \ltx\ books. There are even a couple which use
+words instead of numerals for chapter numbers.
+% The Manual shows 
+%examples of these styles and about 30 are shown in Lars 
+%Madsen's collection~\cite{MEMCHAPS}.
+
+   For those who like putting quotations near chapter titles the 
+\Ie{epigraph} environment can be used.
+
+    The options for changing \cs{section} and lower level titles
+are more constrained, but generally speaking document design, unless for
+advertisements or other eye-catching ephemera, should be constrained.
+The class does provide 9 integrated sets of sectional heading styles instead
+of the usual single set.
+
+    Sometimes, but particularly in novels, a sectional division is indicated
+by just leaving a blank line or two between a pair of paragraphs, or there 
+might be some decorative item like three or four asterisks, or a fleuron
+or two. (A \emph{fleuron}\index{fleuron} is a printers ornament looking 
+like a leaf, such as \ding{166} or \ding{167}.) Commands
+are available for typesetting such anonymous divisions.
+
+   In the standard classes the sectioning commands have an optional argument
+which can be used to put a short version of the section title into the 
+table of contents and the page header. \Mname\ extends this with a second 
+optional argument so you can specify one short version for the contents and 
+an even shorter one for page headers where space is at a premium.
 
-    The typographers' and printers' term for the vertical space between
-the lines of normal text is \emph{leading}\index{leading}, which is also
-usually expressed in points and is usually larger than the font size.
-A convention for describing the font and leading is give the font size 
-and leading separated by a slash; for instance $10/12$ for a
-10pt font set with a 12pt leading, or $12/14$ for a 12pt font set with a
-14pt leading.
+\section{Captions}
 
-    The normal length of a line of text is often called the 
-\emph{measure}\index{measure} and is normally specified in terms of
-picas\index{pica} where 1 pica equals 12 points (1pc = 12pt).
+    \Mname\ incorporates the code from my \Lpack{ccaption} package which
+lets you easily modify the appearance of figure and table captions; bilingual
+captions are available if required, as are captions placed at the side of
+a figure or table or continuation captions from, say, one illustration to
+another. Captioning can also be applied
+to `non-floating' illustrations or as legends (i.e., unnumbered captions) to
+the regular floats. The captioning system
+also supports subfigures and subtables along the lines of the \Lpack{subfig}
+package, plus letting you define your own new kinds of floats together
+with the corresponding `\listofx'. 
 
-    Documents may be described as being typeset with a particular font
-with a particular size and a particular leading on a particular measure;
-this is normally given in a shorthand form. 
-A 10pt font with 11pt leading on a 20pc measure is described as
-$10/11 \times 20$, and $14/16 \times 22$ describes a 14pt font
-with 16pt leading set on a a 22pc measure.
+\section{Tables}
 
-\section{Units of measurement}
+    Code from the \Lpack{array}, \Lpack{dcolumn}, \Lpack{delarray} and
+\Lpack{tabularx} packges is integrated within the class. To improve
+the appearance of rules in tabular material the \Lpack{booktabs}
+package is also included.
+
+    Multipage tabulations are often set with the \Lpack{longtable} or
+\Lpack{xtab} packages, which can of course be used with the class. For
+simple tabulations that may continue from one page to the next, \Mname\
+offers a `continuous tabular' environment. This doesn't have all the 
+flexibility provided by the packages but can often serve instead
+of using them.
+
+    More interestingly, but more limited, the class provides `automatic 
+tabulars'. For these you provide a list of simple entries, like a set of names,
+ and a number of
+columns and the entries are automatically put into the appropriate column.
+You choose whether the entries should be added row-by-row, like this with
+the \cs{autorows} command:
+
+\begin{lcode}
+\autorows{c}{5}{l}{one, two, three, four,
+    five, six, seven, eight, nine, ten,
+    eleven, twelve, thirteen }
+\end{lcode}
+
+\showit{
+{\centering
+\begin{tabular}{lllll}
+one & two & three & four & five \\
+six & seven & eight & nine & ten \\
+eleven & twelve & thirteen \\
+\end{tabular} 
+\par}
+}
 
-    Typographers and printers use a mixed system of units, some of which
-we met above. The fundamental unit is the point; \tref{tab:units} lists 
-the most common units employed.
+ Or if you use the \cs{autocols} command the entries are listed 
+column-by-column, like this :
 
-\begin{table}
-\centering
-\caption{Printers units} \label{tab:units}
-\begin{tabular}{ll} \hline
-Name (abbreviation) & Value \\ \hline
-point (pt)\index{point}\index{pt}          &            \\
-pica (pc)\index{pica}\index{pc}           & 1pc = 12pt \\
-inch (in)\index{inch}\index{in}           & 1in = 72.27pt \\
-centimetre (cm)\index{centimetre}\index{cm}     & 2.54cm = 1in \\
-millimetre (mm)\index{millimetre}\index{mm}     & 10mm = 1cm \\ 
-big point (bp)\index{big point}\index{bp}      & 72bp = 72.27pt \\
-didot point (dd)\index{didot point}\index{dd}    & 1157dd = 1238pt \\
-cicero (cc)\index{cicero}\index{cc}         & 1cc = 12dd \\
-\hline
-\end{tabular}
-\end{table}
+\begin{lcode}
+\autocols{c}{5}{l}{one, two, three, four,
+    five, six, seven, eight, nine, ten,
+    eleven, twelve, thirteen }
+\end{lcode}
 
-    Points\index{point} and picas\index{pica} 
-are the traditional printers units used in English-speaking countries. 
-The didot point\index{didot point} and cicero\index{cicero} are the 
-corresponding units used in continental Europe. In Japan `kyus'\index{kyus}
-(a quarter of a millimetre) may be used as the unit of measurement.
-Inches\index{inch} and centimetres\index{centimetre} are the units that we
-are all, or should be, familiar with.
+\showit{
+{\centering
+\begin{tabular}{lllll}
+one &    four & seven & ten & thirteen \\
+two &    five & eight & eleven &  \\
+three &  six  & nine  & twelve &  \\
+\end{tabular} 
+\par}
+}
 
-    The point system was invented by Pierre Fournier le jeune in 1737 with
-a length of 0.349mm. Later in the same century Fran\c{c}ois-Ambroise Didot
-introduced his point system with a length of 0.3759mm. This is the value
-still used in Europe. Much later, in 1886, the American Type Founders
-Association settled on 0.013837in as the standard size for the point, and
-the British followed in 1898. Conveniently for those who are not entirely
-metric in their thinking this means that 
-six picas are approximately equal to one inch.
+\section{Verse}
 
-    The big point\index{big point} 
-is somewhat of an anomaly in that is a recent
-invention. It tends to be used
-in page markup languages, like PostScript\footnote{PostScript is a 
-registered trademark of Adobe Systems Incorporated.\label{fn:ps}},
-in order to make to make calculations quicker and easier.
+    The standard classes provide a very simple \Ie{verse} environment for
+typesetting poetry. This is greatly extended in \Mname. For example in the
+standard classes the verse stanzas are at a fixed indentation from the 
+left margin whereas \Mname\ lets you control the amount of indentation so 
+that you can make a poem appear optically centered within the textwidth.
 
-    The above units are all constant in value. There are also some units
-whose value depends on the particular font\index{font} being used. 
-The \textit{em}\index{em}
-is the nominal height of the current font; it is used as a width measure.
-An \textit{en}\index{en} is half an em.
-The \textit{ex}\index{ex} is
-nominally the height of the letter `x' in the current font. You may also
-come across the term \textit{quad}\index{quad}, often as in a phrase
-like `starts with a quad space'. It is a length defined in terms of
-an em, often a quad is 1em.
+    Stanzas may be numbered, as can individual lines within a poem. There is
+a special environment for stanzas where lines are alternately indented. Also
+you can can define an indentation pattern for stanzas when this is not regular 
+as, for example, in a limerick where the 3rd and 4th of the five lines are 
+indented with respect to the other three as shown below. 
 
+\begin{lcode}
+\indentpattern{00110}
+\begin{verse}
+\begin{patverse}
+There was a young man of Quebec \\
+Who was frozen in snow to his neck. \\
+When asked: `Are you friz?' \\
+He replied: `Yes, I is, \\
+But we don't call this cold in Quebec.'
+\end{patverse}
+\end{verse}
+\end{lcode}
 
-\cleardoublepage
-\pagenumbering{arabic}
+\showit{
+\begin{verse}
+There was a young man of Quebec \\
+Who was frozen in snow to his neck. \\
+\hspace*{2em}When asked: `Are you friz?' \\
+\hspace*{2em}He replied: `Yes, I is, \\
+But we don't call this cold in Quebec.'
+\end{verse}
+}
 
-% body
-\mainmatter
+    It is not always possible to fit
+a line into the available space and you can specify the particular indentation
+to be used when a `logical' verse line spills over the available textwidth, 
+thus forming two or more typeset `physical' lines. On other occasions
+where there are two half lines the poet might want the second half line
+to start where the first one finished, like this:
 
-\part{Art and Theory} \label{part:art}
+\begin{lcode}
+\begin{verse}
+Come away with me. \\
+\vinphantom{Come away with me.} Impossible!
+\end{verse}
+\end{lcode}
 
-\chapter{The Parts of a Book}
+\showit{
+\begin{verse}
+Come away with me. \\
+\leavevmode\phantom{Come away with me.} Impossible!
+\end{verse}
+}
 
-\section{Introduction}
 
-    This chapter describes the various parts of a book, the 
-ordering of the parts, and the typical page numbering scheme used
-in books. 
+\section{End matter}
 
+    Normally appendices come after the main body of a book. The class provides
+various methods for introducing appendices at the end, or you can place one or 
+more appendices at the end of selected chapters if that suits you better.
 
+    \Mname\ also lets you have more than one index and an index can be set in 
+either the normal double column style or as a single column which would be more
+appropriate, say, for an index of first lines in a book of poetry. The titles
+of any bibliography or indexes are added to the table of contents, but you
+can prevent this if you wish.
 
-\section{Front matter}
+    The class provides a set of tools for making glossaries or lists of 
+symbols, the appearance of which can, of course, be easily altered. The 
+\Lmakeindex\ program is used to sort the entries. 
+%An example is
+%shown in the current version of the Addendum. A recent addition
+Also, the class provides configurable end notes which can be used as well as, 
+or instead of, footnotes. 
 
 
-    There are three major divisions in a book: 
-the front matter\index{front matter} or preliminaries\index{preliminaries}, 
-the main matter\index{main matter} or text, 
-and the back matter\index{back matter} or references. 
-The main differences as
-far as appearance goes is that in the front matter the folios\index{folio} are 
-expressed as roman numerals and sectional divisions are not numbered. The 
-folios\index{folio} are expressed as arabic numerals in the main and back matter. Sectional
-divisions are numbered in the main matter but not in the back matter.
+\section{Miscellaneous}
 
-    The front matter\index{front matter} consists of such elements as the title
-of the book, a table of contents\ixtoc, and similar items. The first few pages
-in the front matter are not paginated\index{pagination} and so do not have folios\index{folio}. The remainder
-are paginated and the folios\index{folio} are usually expressed as roman numerals. Not all
+%    As already noted, the Manual for \Mname\ runs to some 300 pages and it
+%is impossible to cover everything in a short article. 
+%Suffice it to say that 
+Hooks and macros are provided for most aspects of document layout; 
+for instance,
+footnotes can be as normal, typeset in two or three columns, or all run 
+into a single paragraph. There is a \cs{sidenote} macro which
+is a non-floating \cs{marginpar} as well as the \cs{sidebar} macro for
+typesetting sidebars in the margin, starting at the top of the text block. 
+You can create new verbatim-like environments, read 
+and write information in external files, design your own style of 
+\cs{maketitle}, convert numbers to words, reserve space at the bottom of a 
+page, and so on and so forth.
+
+
+%% \appendix
+\section{Packages}
+
+    Most packages work with the \Mname\ class, the main exception being
+the \Lpack{hyperref} package. This package modifies
+many of the internals of the standard classes but does not cater for all of
+the differences between \Mname\ and the standard ones. If you wish to use
+\Lpack{hyperref} with \Mname\ then you must use the \Lpack{memhfixc}
+package\footnote{\Lpack{memhfixc} is supplied as part of the \Mname\
+distribution.} after using \Lpack{hyperref}. For example like:
+\begin{lcode}
+\documentclass[...]{memoir}
+...
+\usepackage[...]{hyperref}
+\usepackage{memhfixc}
+...
+\begin{document}
+\end{lcode}
+However, if you have a version of \Lpack{hyperref} dated 2006/11/15 or after, 
+\Lpack{hyperref}
+will automatically call in \Lpack{memhfixc} so that you don't have to do 
+anything.
+
+The \Mname\ class includes code either equivalent to, or extensions of, the 
+following packages; that is, the set of commands and environments is at least
+the same as those in the packages: 
+%\begin{itemize}%\item 
+\begin{lineitems}
+      \Lpack{abstract}
+\item \Lpack{appendix}
+\item \Lpack{array}
+\item \Lpack{booktabs}
+\item \Lpack{ccaption}
+\item \Lpack{chngcntr}
+\item \Lpack{chngpage}
+\item \Lpack{dcolumn}
+\item \Lpack{delarray}
+\item \Lpack{enumerate}
+\item \Lpack{epigraph}
+\item \Lpack{framed}
+\item \Lpack{ifmtarg}
+\item \Lpack{ifpdf}
+\item \Lpack{index}
+\item \Lpack{makeidx}
+\item \Lpack{moreverb}
+\item \Lpack{needspace}
+\item \Lpack{newfile}
+\item \Lpack{nextpage}
+\item \Lpack{parskip}
+\item \Lpack{patchcmd}
+\item \Lpack{setspace}
+\item \Lpack{shortvrb}
+\item \Lpack{showidx}
+\item \Lpack{tabularx}
+\item \Lpack{titleref}
+\item \Lpack{titling}
+\item \Lpack{tocbibind}
+\item \Lpack{tocloft}
+\item \Lpack{verbatim}
+\item \Lpack{verse}.
+\end{lineitems}
+%\end{itemize}
+The class automatically ignores any 
+\verb?\usepackage? or \verb?\RequirePackage? related to these. However, if
+you want to specifically use one of these packages rather than the integrated
+version then you can do so. For arguments sake, assuming you really want 
+to use the \Lpack{titling} the package you can do this:
+\begin{lcode}
+\documentclass[...]{memoir}
+\DisemulatePackage{titling}
+\usepackage{titling}
+\end{lcode}
+
+    The \Mname\ class incorporates a version of the \Lpack{setspace} package, 
+albeit using different names for the macros. The package enables documents
+to be set double spaced but leaves some document elements, 
+like captions for example, single spaced. To do this it has to make some 
+assumptions about how the document class works. I felt that this kind
+of capability should be part of the class and not depend on assumptions.
+In the particular case of the \Lpack{setspace} package, even with the
+standard classes, there can be some unexpected spacing around displayed
+material; this has not occured with \Mname's implementation. 
+
+The class also provides functions similar to those provided by the following 
+packages, although the commands are different: 
+%\begin{itemize}%\item 
+\begin{lineitems}%\item 
+\Lpack{crop}
+\item \Lpack{fancyhdr}
+\item \Lpack{geometry}
+\item \Lpack{sidecap}
+\item \Lpack{subfigure}
+\item \Lpack{titlesec}.
+\end{lineitems}
+%\end{itemize}
+You can use these packages 
+if you wish, or just use the capabilities of the \Mname\ class.
+
+\begin{comment}
+
+    Sometimes a class or package may define a command that is also, 
+differently, defined by a succeeding package. As an example, assume that
+you want to use the \Mname\ class together with the \Lpack{pack} package but
+they have both defined \cs{amacro}. There are several ways of dealing with
+this.
+
+\begin{enumerate}
+\item Discard the class's definition:
+\begin{verbatim}[\vopt]
+  \documentclass[...]{memoir}
+  % kill the class definition
+  \let\amacro\undefined% or \relax
+  \usepackage{pack}
+\end{verbatim}
+and \Lpack{pack}'s version of \cs{amacro} is used from now on.
+\item Discard the package's definition:
+\begin{verbatim}[\vopt]
+  \documentclass[...]{memoir}
+  % save the class definition
+  \let\memamacro\amacro%
+  \let\amacro\undefined
+  \usepackage{pack}
+  % restore the class definition
+  \let\amacro\memamacro
+\end{verbatim}
+and \Mname's version of \cs{amacro} is used from now on.
+\item Keep both definitions:
+\begin{verbatim}[\vopt]
+  \documentclass[...]{memoir}
+  \let\memamacro\amacro
+  \let\amacro\undefined
+  \usepackage{pack}
+\end{verbatim}
+and after this use \cs{memamacro} when you need \Mname's version
+and \cs{amacro} when you want to use \Lpack{pack}'s definition. But
+this solution doesn't always work as you might not know when the particular
+versions must be used, or it is impossible to partition the uses.
+\end{enumerate}
+
+A last resort is to ask the authors that one or the other macro names be
+changed; however, for good reasons, neither may be willing to do this.
+
+
+\end{comment}
+
+\section{Resources} \label{sec:resources}
+
+
+    Scattered throughout, but mainly in Part~\ref{part:art},
+are comments about aspects of book design and typography, in some cases
+accompanied by examples of better and poorer practice. If you want more
+authorative remarks there are several books on the subject listed in 
+the \bibname;  I prefer
+Bringhurst's \textit{The Elements of Typographic Style}~\cite{BRINGHURST99}.
+
+
+    \ltx\ is based on the \tx\ program which was designed principally 
+for typesetting documents containing a 
+lot of mathematics. In such works the mathematics breaks up the flow
+of the text on the page, and the vertical space required for displayed
+mathematics is highly dependent on the mathematical particularities. 
+Most non-technical books are typeset on a fixed
+grid as they do not have arbitrary insertions into the text; it is these
+kinds of publications that typographers are most comfortable talking about.
+
+    There are other sources that deal with \ltx\ in 
+general, some of which are listed in the \bibname. Lamport~\cite{LAMPORT94}
+is of course the original user manual for \ltx, while the Companion
+series~\cite{COMPANION,GCOMPANION,WCOMPANION} go into further 
+details and auxiliary
+programs. George Gr\"{a}tzer's \textit{Math into \ltx} is valuable if you
+typeset a lot of mathematics with excellent coverage of the American
+Mathematical Society's packages.
+
+   The \cTeXan{} (\pixctan) is an invaluable source
+of free information and of the \ltx\ system itself. For general questions see
+the FAQ (Frequently Asked Questions, and answers) maintained by
+Robin Fairbairns~\cite{FAQ}, which also has pointers to many information 
+sources. Among
+these are \textit{The Not So Short Introduction to \ltxe}~\cite{LSHORT},
+Keith Reckdahl's \textit{Using imported graphics in \ltxe}~\cite{EPSLATEX}
+and Piet van Oostrum's \textit{Page layout in \ltx}~\cite{FANCYHDR}.
+Peter Flynn's \textit{Formatting information}~\cite{FLYNN02} is unique 
+in that it describes how to install a \ltx\ system and editors for 
+writing your documents as well as how to use \ltx. There are a myriad
+of packages and software tools freely available to enhance any \ltx\ system;
+the great majority of these are listed in Graham Williams' magnificent 
+on line searchable catalogue~\cite{CATALOGUE}, which also links directly
+to \pixctan. This is just one of the services offered by the \TeXUG{} (\pixtug)
+and information on how to access it is available 
+at \url{http://www.tug.org}
+which is the homepage for the \TeXUG.
+
+    The most recent crops of messages on the \url{comp.text.tex}
+newsgroup (\pixctt) show an increasing interest in using a wider range
+of fonts with \ltx. This is a question that I have left alone.
+Alan Hoenig's book~\cite{HOENIG98} is the best guide to this that I know of.
+\pixctan\ hosts Philipp Lehman's font installation guide~\cite{FONTINST}; 
+this is well worth looking at just as an example of fine typesetting.
+
+    The source code for the \Lclass{memoir} class is, of course,
+freely available from \pixctan\ if you wish to see exactly what it does
+and how it does it.
+
+    For a more interactive resource you can ask questions on the
+\url{comp.text.tex} newsgroup. If you are a newcomer to \pixctt\
+please read the FAQ~\cite{FAQ} before asking a question, and also read
+a few day's worth of messages to check that your question hasn't just
+been answered.
+
+
+\section{Type conventions}
+
+    The following conventions are used:
+\begin{itemize}
+\item \Pclass{The names of \ltx\ classes\index{class} and 
+              packages\index{package} are typeset in this font.}
+\item \Popt{Class options\index{option} are typeset in this font.}
+\item \Ppstyle{The names of chapterstyles\index{chapterstyle} and 
+               pagestyles\index{pagestyle} are typeset in this font.}
+\item \texttt{\ltx\ code is typeset in this font.}
+\item \Pprog{The names of programs are in this font.}
+\end{itemize}
+\begin{syntax}
+Macro command syntax is enclosed in a rectangular box.\\
+For referential purposes, arguments are denoted by \meta{arg} \\
+\end{syntax}
+
+
+
+
+\section{Acknowledgements}
+
+     Many people have contributed to the \Lclass{memoir} class and this manual
+in the forms of code, solutions to problems, suggestions for new functions, 
+bringing my attention to errors and infelicities in the code 
+and manual, and last but not least in simply being encouraging. 
+I am very grateful to the following for all they have done, whether they
+knew it or not:
+Paul Abrahams,      % code
+William Adams,      % typography
+Tim Arnold,         % among other things, \leavespergathering in general
+Donald Arseneau,    % code
+Stephan von Bechtolsheim,
+Jens Berger,
+Karl Berry,         % code
+Ingo Beyritz,       % bug report (tabularx in subtable)
+Javier Bezos,
+Stefano Bianchi,    % chaptersytyle
+Sven Bovin,
+Alan Budden,
+Ignasi Furi\'{o} Caldenty,
+Ezequiel Mart\'{\i}n C\'{a}mara,
+David Carlisle,     % code
+Gustafo Cevolani, 
+Jean-C{\^o}me Charpentier,   % memmanadd typo fix
+Michael A. Cleverly,       % code
+Steven Douglas Cochran,    % code
+Frederic Connes,           % code
+\v{Z}arko F. \v{C}u\v{c}ej, % bug report (contcaption & hyperref)
+Christopher Culver,       % chapterstyle
+Michael W. Daniels,       % code
+Michael Downes,           % code
+Christopher Dutchyn,
+Thomas Dye,               % code
+Victor Eijkhout,          % code
+Danie Els,                % code
+Robin Fairbairns,         % code
+Simon Fear,               % code
+Kai von Fintel,
+Ivars Finvers,            % bug report
+Ulrike Fischer,           % general code ideas
+Matthew Ford,
+Musa Furber,
+Daniel Richard G,
+Ignacio Fern{\'a}ndez Galv{\'a}n,
+Gerardo Garcia,          % chapterstyle
+Romano Giannetti,        % code
+Donald Goodman,          % manual typo (1/2 titke page should be in pagination)
+Gabriel Guernik,         % bug report & suggested fix
+Matthias Haldiman,       % bug report, fixed by Heiko
+Kathryn Hargreaves,      % code
+Sven Hartrumpf,
+hazydirk,                % code
+Carsten Heinz,           % code
+Florence Henry,
+Peter Heslin,
+Morton H{\o}gholm,       % code
+Henrik Holm,
+Vladimir Ivanovich,
+Martin J{\o}rgensen,     % bug report
+Stefan Kahrs,
+Marcus Kohm,             % algorithm
+Flavian Lambert,         % float type bug
+J\o{}gen Larsen,         % bug reports and fix
+Kevin Lin,
+Matthew Lovell,
+Daniel Luecking,         % codef
+Anders Lyhne,            % chapterstyle
+Lars Madsen,             % code
+Vittorio De Martino,
+Ben McKay,               % errors in pagenote instructions
+Frank Mittelbach,        % code
+Vilar Camara Neto,
+Rolf Niepraschk,
+Patrik Nyman,    
+Heiko Oberdiek,          % code
+Scott Pakin,
+Adriano Pascoletti,
+Paul,                    % bug report
+Ted Pavlic,              % typo report
+Troels Pedersen,         % chapterstyle
+Steve Peter,
+Erik Quaeghebeur,        % bug report
+Bernd Raichle,           % code
+Aaron Rendahl,           % bug report and fix
+Ren{\'e},                % correction (paper folding)
+Alan Ristow,             % request for \leavespergathering
+Robert,
+Chris Rowley,
+Robert Schlicht,         % code
+Doug Schenck,
+Dirk Schlimm,
+Arnaud Schmittbuhl,
+Rainer Sch\"{o}pf,       % code
+Paul Stanley,
+Per Starb{\"a}ck,        % boxedverbatim in narrow text bug, documentation
+James Szinger,           % code
+Jens Taprogge,
+Ajit Thakkar,            % reference to an appendix, typo
+Scott Thatcher,          % chapterstyle
+Reuben Thomas,
+Bastiaan Niels Veelo,    % code
+Guy Verville,            % chapterstyle
+Emanuele Vicentini,
+J{\"o}rg Vogt,           % suggestion re verse
+J\"{u}rgen Vollmer,
+M J Williams,            % \input in tabular bug
+and 
+David Wilson.
+
+
+If I have inadvertently left anyone off the list I apologise, 
+and please let me know so that I can correct the 
+omisssion.\footnote{I am currently occasionably reachable via email
+at \texttt{herries dot press (at) earthlink dot net}.}
+Along those lines, if you have any questions please direct them 
+to the \url{comp.text.tex} newsgroup instead of directly to me as
+you are much more likely to get a satisfactory and timely response.
+
+    Of course, none of this would have been possible without Donald Knuth's
+\tx\ system and the subsequent development of \ltx\ by Leslie Lamport.
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Terminology}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    Like all professions and trades, typographers and printers have their
+specialised vocabulary.
+
+    First there is the question of pages, leaves and sheets. 
+The trimmed sheets of paper\index{paper} that make up a book are called 
+\emph{leaves}\index{leaf},
+and I will call the untrimmed sheets the \emph{stock}\index{stock} material. 
+A leaf
+has two sides, and a \emph{page}\index{page} is one side of a leaf. 
+If you think of a book
+being opened flat, then you can see two leaves. The front of the righthand
+leaf, is called the \emph{recto}\index{recto} page of that leaf, 
+and the side of the
+lefthand leaf that you see is called the \emph{verso}\index{verso} page 
+of that leaf. 
+So, a leaf has a recto and a verso page. Recto pages are the odd-numbered 
+pages and verso pages are even-numbered.
+
+   Then there is the question of folios. The typographical term for
+the number of a page is \emph{folio}\index{folio}.
+This is not to be confused with
+the same term as used in `Shakespeare's First Folio' where the reference is
+to the height and width of the book, nor to its use in the phrase
+`\emph{folio} signature'\index{signature} where the term refers to the 
+number of times a printed sheet is folded. 
+Not every page in a book has a printed
+folio, and there may be pages that do not have a folio at all. Pages with
+folios, whether printed or not, form the \emph{pagination}\index{pagination} 
+of the book. Pages
+that are not counted in the pagination have no folios.
+
+   A \emph{font}\index{font} is a set of characters. In the days of 
+metal type and hot lead a font meant a complete alphabet and auxiliary
+characters in a given size. More recently it is taken to mean a complete
+set of characters regardless of size. A font of roman type normally
+consists of CAPITAL LETTERS, \textsc{small capitals}, lowercase letters,
+numbers, punctuation marks, ligatures (such as `fi' and `ffi'), and a
+few special symbols like \&.
+   A \emph{font family}\index{font!family} is a set of fonts designed to
+work harmoniously together, such as a pair of roman and italic fonts.
+
+   The size of a font\index{font} is expressed in points\index{point} 
+(72.27 points equals 1 inch
+equals 25.4 millimeters). The size is a rough indication of the height
+of the tallest character, but different fonts with the same size may have
+very different actual heights. Traditionally font sizes were referred to
+by names (see \tref{tab:fontsizes}) but nowadays just the number of points 
+is used.
+
+
+\begin{table}
+\centering
+\caption{Traditional font size designations} \label{tab:fontsizes}
+\begin{tabular}{cl@{\hspace{2em}}cl} \toprule
+Points & Name & Points & Name \\ \midrule
+%%3      & Excelsior \\
+\phantom{0}3      & Excelsior &
+11     &  Small Pica \\
+\phantom{0}3\rlap{\slashfrac{1}{2}} & Brilliant &
+12     & Pica \\
+\phantom{0}4      & Diamond &
+14     & English \\
+\phantom{0}5      & Pearl &
+18     & Great Primer \\
+\phantom{0}5\rlap{\slashfrac{1}{2}} & Agate &
+24     & Double (or Two Line) Pica \\
+\phantom{0}6      & Nonpareil &
+28     & Double (or Two Line) English \\
+\phantom{0}6\rlap{\slashfrac{1}{2}} & Mignonette &
+36     & Double (or Two Line) Great Primer \\
+\phantom{0}7      & Minion &
+48     & French Canon (or Four Line Pica) \\
+\phantom{0}8      & Brevier &
+60     & Five Line Pica \\
+\phantom{0}9      & Bourgeois &
+72     & Six line Pica \\
+10     & Long Primer &
+%%16     & Columbian \\
+%%20     & Paragon \\
+%%22     & Double Small Pica \\
+%%32     & Four Line Brevier \\
+%%40     & Double Paragon \\
+%%44     & Meridian \\
+96     & Eight Line Pica \\ \bottomrule
+\end{tabular}
+\end{table}
+
+
+
+    The typographers' and printers' term for the vertical space between
+the lines of normal text is \emph{leading}\index{leading}, which is also
+usually expressed in points and is usually larger than the font size.
+A convention for describing the font and leading is to give the font size 
+and leading separated by a slash; for instance $10/12$ for a
+10pt font set with a 12pt leading, or $12/14$ for a 12pt font set with a
+14pt leading.
+
+    The normal length of a line of text is often called the 
+\emph{measure}\index{measure} and is normally specified in terms of
+picas\index{pica} where 1 pica equals 12 points (1pc = 12pt).
+
+    Documents may be described as being typeset with a particular font
+with a particular size and a particular leading on a particular measure;
+this is normally given in a shorthand form. 
+A 10pt font with 11pt leading on a 20pc measure is described as
+\abyb{10/11}{20}, and \abyb{14/16}{22} describes a 14pt font
+with 16pt leading set on a a 22pc measure.
+
+\section{Units of measurement}
+
+    Typographers and printers use a mixed system of units, some of which
+we met above. The fundamental unit is the point; \tref{tab:units} lists 
+the most common units employed.
+
+\begin{table}
+\centering
+\caption{Printers units} \label{tab:units}
+\begin{tabular}{ll} \hline
+Name (abbreviation) & Value \\ \hline
+point (pt)\index{point}\index{pt}          &            \\
+pica (pc)\index{pica}\index{pc}           & 1pc = 12pt \\
+inch (in)\index{inch}\index{in}           & 1in = 72.27pt \\
+centimetre (cm)\index{centimetre}\index{cm}     & 2.54cm = 1in \\
+millimetre (mm)\index{millimetre}\index{mm}     & 10mm = 1cm \\ 
+big point (bp)\index{big point}\index{bp}      & 72bp = 72.27pt \\
+didot point (dd)\index{didot point}\index{dd}    & 1157dd = 1238pt \\
+cicero (cc)\index{cicero}\index{cc}         & 1cc = 12dd \\
+\hline
+\end{tabular}
+\end{table}
+
+    Points\index{point} and picas\index{pica} 
+are the traditional printers units used in English-speaking countries. 
+The didot point\index{didot point} and cicero\index{cicero} are the 
+corresponding units used in continental Europe. In Japan `kyus'\index{kyus}
+(a quarter of a millimetre) may be used as the unit of measurement.
+Inches\index{inch} and centimetres\index{centimetre} are the units that we
+are all, or should be, familiar with.
+
+    The point system was invented by Pierre Fournier le jeune in 1737 with
+a length of 0.349mm. Later in the same century Fran\c{c}ois-Ambroise Didot
+introduced his point system with a length of 0.3759mm. This is the value
+still used in Europe. Much later, in 1886, the American Type Founders
+Association settled on 0.013837in as the standard size for the point, and
+the British followed in 1898. Conveniently for those who are not entirely
+metric in their thinking this means that 
+six picas are approximately equal to one inch.
+
+    The big point\index{big point} 
+is somewhat of an anomaly in that it is a recent
+invention. It tends to be used
+in page markup languages, like \pscript\footnote{\pscript{} is a 
+registered trademark of Adobe Systems Incorporated.\label{fn:ps}},
+in order to make to make calculations quicker and easier.
+
+    The above units are all constant in value. There are also some units
+whose value depends on the particular font\index{font} being used. 
+The \textit{em}\index{em}
+is the nominal height of the current font; it is used as a width measure.
+An \textit{en}\index{en} is half an em.
+The \textit{ex}\index{ex} is
+nominally the height of the letter `x' in the current font. You may also
+come across the term \textit{quad}\index{quad}, often as in a phrase
+like `starts with a quad space'. It is a length defined in terms of
+an em, often a quad is 1em.
+
+
+\cleardoublepage
+\pagenumbering{arabic}
+
+% body
+\mainmatter
+
+\part{Art and Theory} \label{part:art} 
+
+\chapter{The Parts of a Book}
+
+%\section{Introduction}
+
+    This chapter describes the various parts of a book, the 
+ordering of the parts, and the typical page numbering scheme used
+in books. 
+
+
+
+\section{\prfrontmatter}
+
+
+    There are three major divisions in a book: 
+the \pixfrontmatter\ or preliminaries\index{preliminaries}, 
+the \pixmainmatter\ or text, 
+and the \pixbackmatter\ or references. 
+The main differences as
+far as appearance goes is that in the \pixfrontmatter\ the folios\index{folio} are 
+expressed as roman numerals and sectional divisions are not numbered. The 
+folios\index{folio} are expressed as arabic numerals in the \pixmainmatter\ 
+and \pixbackmatter. Sectional
+divisions are numbered in the \pixmainmatter\ but not in the \pixbackmatter.
+
+    The \pixfrontmatter\ consists of such elements as the title
+of the book, a table of contents\ixtoc, and similar items. All pages are
+paginated\index{pagination} --- that is they are counted --- but the first 
+few pages in the \pixfrontmatter, the title pages and such, do not usually have 
+folios\index{folio}. 
+The remainder of the pages in the \pixfrontmatter\ do have folios\index{folio} 
+which are usually expressed as roman numerals. Not all
 books have all the elements described below.
 
-    The first page is a recto \emph{half title}\index{half title page} 
+    The first page is a recto 
+\emph{half-title}\index{half-title page}\index{title page!half-title},
+or \emph{bastard title}\index{bastard title page}\index{title page!bastard},
 page with no folio\index{folio}. 
 The page is very simple and displays just the main title of the book --- 
 no subtitle, author, or other information. One purported purpose of this
@@ -1121,25 +1570,27 @@ typeset in a smaller font\index{font!change} than the normal text.
     Following the copyright page may come a dedication or an epigraph\index{epigraph}, 
 on a recto page, with the following verso page blank.
 
-    This essentially completes the unpaginated pages.
+    This essentially completes the unfolioed pages.
 
     The headings\index{heading} and textual forms for the paginated 
-pages should be the same as those for the main matter, except that 
+pages should be the same as those for the \pixmainmatter, except that 
 headings\index{heading} are usually unnumbered.
 
-    The first paginated page,
-usually with roman numerals (e.g., this is folio i),
+    The first folioed page,
+usually with roman numerals (e.g., this is folio iii),
 is recto with the Table of Contents (\toc). If the book contains 
 figures\index{figure} (illustrations\index{illustration}) 
-and/or tables\index{table}, the List of Figures (\lof) and/or List of Tables (\lot) come 
-after the \toc, with no blank pages separating them. The \toc{} should contain
-an entry for each following major element. If there is a \lot, say, this 
-should be listed in the \toc. The main chapters\index{chapter} must be listed, of course, and
-so should elements like a preface\index{preface}, bibliography\index{bibliography} or an index\index{index}.
+and/or tables\index{table}, the List of Figures (\lof) and/or List of Tables 
+(\lot) come after the \toc, with no blank pages separating them. The \toc\ 
+should contain an entry for each following major element. If there is a \lot, 
+say, this should be listed in the \toc. The main chapters\index{chapter} must 
+be listed, of course, and so should elements like a preface\index{preface}, 
+bibliography\index{bibliography} or an index\index{index}.
 
     There may be a foreword\index{foreword} after the listings, with no blank
 separator. A foreword is usually written by someone other than the author, 
-preferably an eminent person, and is signed by the writer. The writer's
+preferably an eminent person whose name will help increase the sales potential,
+and is signed by the writer. The writer's
 signature is often typeset in small caps after the end of the piece.
 
    A preface\index{preface} is normally written by the author, in which he
@@ -1155,14 +1606,14 @@ The last elements in the front material may be a list of abbreviations, list
 of symbols, a chronology of events, a family tree, or other information of
 a like sort depending on the particular work.
 
-    Table~\ref{tab:front} summarises the potential elements in the front
-matter.
+    Table~\ref{tab:front} summarises the potential elements in the 
+\pixfrontmatter.
 
 \begin{table}
 \centering
-\caption{Front matter}\label{tab:front}
+\caption{\prFrontmatter}\label{tab:front}
 \begin{tabular}{llcc} \hline
-Element                      & Page  & Paginated & Leaf \\ \hline
+Element                      & Page  & Folio     & Leaf \\ \hline
 Half-title page              & recto & no        & 1 \\
 Frontispiece, etc., or blank & verso & no        & 1 \\
 Title page                   & recto & no        & 2 \\
@@ -1245,69 +1696,84 @@ digit, 2 in the example, is a check digit.
     It is left as an exercise for the reader to garner more information about
 obtaining CIP and ISBN data.\index{copyright page|)}
 
-\section{Main matter}
+\section{\prMainmatter}
 
-    The main matter\index{main matter|(} forms the heart of the book.
+    The \pixmainmatter\ forms the heart of the book.
 
-    All pages within the main matter are paginated, even though some folios\index{folio} may
-not be expressed. The folios\index{folio} are normally presented as arabic numerals, with 
-the numbering starting at 1 on the first recto page of the main matter.
+    Just as in all the other parts of a book the pages within the 
+\pixmainmatter\
+are included in the pagination, even though some folios\index{folio} may
+not be expressed. The folios\index{folio} are normally presented as arabic 
+numerals, with 
+the numbering starting at 1 on the first recto page of the \pixmainmatter.
 
-    The main matter is at least divided into \emph{chapters}\index{chapter}, 
+    The \pixmainmatter\ is at least divided into \emph{chapters}\index{chapter}, 
 unless it is something like a 
-young child's book which consists of a single short story. The chapters
-may be grouped within \emph{parts}\index{part} which would then be the highest level
-of division within the book. Typically both parts\index{part!number} and chapters\index{chapter!number} are numbered.
+young child's book which consists of a single short story.
+When the material may be logically divided into sections larger than
+chapters, the chapters may be grouped into \emph{parts}\index{part} which
+would then be the highest level of division within the book.
+Frederic Connes\index{Connes, Frederic}
+has told me that in French typography there is often a division above the
+part level. This is also sometimes the case with English typography where
+it is typically called a \emph{book}\index{book} --- the
+\btitle{Chicago Manual of Style}~\cite[p. 21]{CMS} shows an example.
+A single physical book may thus be divided into levels from \emph{book} 
+through 
+\emph{part} and \emph{chapter} to further refinements.  
+Typically all of books\index{book!number}, parts\index{part!number} 
+and chapters\index{chapter!number} are numbered.
 Obviously, part numbering should be continuous throughout the book, but even
 with parts the chapter numbering is also continuous throughout the book.
 
-    The title of a part\index{heading!part} is usually on a recto page which just contains the
-part title, and number if there is one. Chapters\index{chapter} also start on recto pages
-but in this case the text of the chapter\index{chapter} starts on the same page as the chapter
+    The title of a part\index{heading!part} is usually on a recto page which 
+just contains the part title, and number if there is one. 
+Book titles\index{heading!book} are usually treated the same way.
+Chapters\index{chapter} also start on recto pages but in this case the text 
+of the chapter\index{chapter} starts on the same page as the chapter
 title.
 
-    Chapters\index{chapter} may be divided into sections, either numbered or unnumbered, with
+    Where chapters\index{chapter} are long, or when the material is
+complicated, they may be divided into sections\index{section}, each introduced
+by a subhead\index{subhead}, either numbered or unnumbered, with
 the numbering scheme starting afresh within each chapter. Similarly sections
-may be partitioned into subsections but except for more technical works this 
-is usually as fine as the subdivisions need go to. Normally there are no 
-required page 
-breaks before the start of any subdivisions within a chapter\index{chapter}.
+may be partitioned into subsections by inserting sub-subheads, but except 
+for more technical works this is usually as fine as the subdivisions need 
+go to. Normally there are no required page breaks before the start of any 
+subhead\index{subhead} within a chapter\index{chapter}.
 
     The title page of a part\index{part}
  or chapter\index{chapter} need not have the folio\index{folio} expressed, nor
 a possibly textless verso page before the start of a chapter\index{chapter}, but all other 
 pages should display their folios\index{folio}.
 
-    There may be a final chapter\index{chapter} in the main matter called Conclusions, 
+    There may be a final chapter\index{chapter} in the \pixmainmatter\ called Conclusions, 
 or similar, which may be a lengthy summary of the work presented, untouched
 areas, ideas for future work, and so on.
 
     If there are any numbered appendices\index{appendix} 
 they logically come at the end of
-the front matter. Appendices are often `numbered' alphabetically rather
+the \pixmainmatter. Appendices are often `numbered' alphabetically rather
 than numerically, so the first might be Appendix A, the second Appendix B,
 and so on.
 
     An epilogue\index{epilogue} or an afterword\index{afterword} is a 
 relatively short piece that the author may
 include. These are not normally treated as prominently as the preceding
-chapters\index{chapter}, and may well be put into the back matter if they are 
-unnumbered.\index{main matter|)}
+chapters\index{chapter}, and may well be put into the \pixbackmatter\ if they are 
+unnumbered.
 
-\section{Back matter}
+\section{\prBackmatter}
 
-    The back matter\index{back matter|(}
+    The \pixbackmatter\
 is optional but if present conveys information ancilliary
-to that in the main matter.
-
-    An unnumbered appendix\index{appendix} 
-would normally come in the back matter.
+to that in the \pixmainmatter. The elements are not normally numbered, so an
+unnumbered appendix\index{appendix} would normally come in the \pixbackmatter.
 
     Other elements include Notes, a Glossary\index{glossary}
  and/or lists of symbols\index{symbol} or 
 abbreviations\index{abbreviation}, which could be in the 
-front matter\index{front matter} 
-instead. These elements 
+\pixfrontmatter\ instead. These elements 
 are normally unnumbered, as is any list of contributors\index{contributor}, 
 Bibliography\index{bibliography} or Index\index{index}.
 
@@ -1315,13 +1781,13 @@ Bibliography\index{bibliography} or Index\index{index}.
 and notes may be given at the end of each
 chapter\index{chapter} instead of being lumped at the back.
 
-    The first element in the back matter starts on a recto page but the 
+    The first element in the \pixbackmatter\ starts on a recto page but the 
 remainder may start on either recto or verso pages.
 
     In older books it was often the custom to have a colophon\index{colophon}
 as the final element in a book. This is an inscription which includes 
 information about the production and design of the book and nearly 
-always indicates which fonts\index{font} were used.\index{back matter|)}
+always indicates which fonts\index{font} were used.
 
 
 \section{Signatures and casting off}
@@ -1329,7 +1795,8 @@ always indicates which fonts\index{font} were used.\index{back matter|)}
 
     Professionally printed books have many pages printed per sheet of (large)
 paper\index{paper}, which is then folded and cut where necessary to produce a 
-\emph{signature} of several smaller sheets. An 
+\emph{gathering}\index{gathering} or \emph{signature} of several smaller 
+sheets. An 
 unfolded sheet is called a \emph{broadside}\index{broadside}. 
 Folding a sheet in half produces a one sheet 
 \emph{folio}\index{folio} signature with two leaves and four pages. 
@@ -1362,23 +1829,108 @@ Octavo, \emph{8vo} & 3 & $b/4 \times a/2$ & & 4 & & & 8 & & & 16 & \\
 leaf\index{leaf} in 
 the signature
 with respect to the size of the broadside. When made up into a book the
-leaves will trimmed to a slightly smaller size, at the discretion of the
+leaves will be trimmed to a slightly smaller size, at the discretion of the
 designer and publisher; typically a minimum of 1/8 inch or 3 millimetres
-would be trimmed from the top, bottom and foredge of a leaf.
+would be cut from the top, bottom and \foredge\ of a leaf.
 
     Other folds can produce other signatures. For example a 
 \emph{sexto}\index{sexto},
 obtained by folding in thirds and then folding in half, is a three sheet
 signature with six leaves and 12 pages.
 
-    In making up the book, the pages in each signature are first fastened
-together, usually by sewing through the folds. The signatures are then bound
-together and the covers, end papers\index{paper!end} and spine are attached to form
-the completed whole.
+    Paper has always been made in a wide range of sizes for a myriad of uses.
+Table~\ref{tab:uspapersizes} lists some common American paper sizes.
 
+\begin{table}
+\centering
+\caption[Some American paper sizes]{Some American paper sizes (in inches)}\label{tab:uspapersizes}
+\begin{tabular}{lll}\toprule
+`Dollar bill'   & \abyb{7}{3}    & Used for origami, not bills \\ 
+Statement       & \abyb{8.5}{5.5}   & \\
+Executive       & \abyb{10.5}{7.25} &  \\
+Letter          & \abyb{11}{8.5} & Also in double, half or quarter size \\
+Old (untrimmed) & \abyb{12}{9}   & Also called Architectural-A \\
+Legal           & \abyb{14}{8.5} & \\
+Ledger          & \abyb{17}{11}  & Also called Tabloid \\
+Broadsheet      & \abyb{22}{17}  & As used in newsprint \\ \bottomrule
+\end{tabular}
+\end{table}
 
-    Publishers like the final typeset book to be of a length that just fits
-within an integral number of signatures\index{signature}, 
+Traditionally the sizes are denoted by name but manufacturers did not 
+necessarily make paper of the size that matched the name they gave it.
+Some common names and trimmed sizes for British book work are given in 
+\tref{tab:britpapersizes}.
+
+\begin{table}
+\centering
+\caption[Some traditional British book paper sizes]{Some traditional British book paper sizes (in inches)}\label{tab:britpapersizes}
+\begin{tabular}{lll}\toprule
+Name        & Quarto             & Octavo \\ \midrule
+pott        & \abyb{8}{6.5}      & \abyb{6.25}{4}{in} \\
+foolscap    & \abyb{8.5}{6.75}   & \abyb{6.75}{4.25} \\
+crown       & \abyb{10}{7.5}     & \abyb{7.5}{5} \\
+post        & \abyb{10}{8}       & \abyb{8}{5} \\
+large crown & \abyb{10.5}{8}     & \abyb{8}{5.25} \\
+large post  & \abyb{10.25}{8.25} & \abyb{8.25}{5.25} \\
+small demy  & \abyb{11.25}{8.5}  & \abyb{8.5}{5.675} \\
+demy        & \abyb{11.25}{8.75} & \abyb{8.75}{5.675} \\
+medium      & \abyb{11.5}{9}     & \abyb{9}{5.75} \\
+small royal & \abyb{12.25}{9.25} & \abyb{9.25}{6.175} \\
+royal       & \abyb{12.5}{10}    & \abyb{10}{6.25} \\
+super royal & \abyb{13.5}{10.25} & \abyb{10.25}{6.75} \\
+imperial    & \abyb{15}{11}      & \abyb{11}{7.5} \\ \bottomrule
+\end{tabular}
+\end{table}
+
+The metric sizes, given in \tref{tab:metricpapersizes}, are those now 
+recommended for book production where the metric system holds sway,
+which includes the UK~\cite[p. 104]{MCLEAN80}.
+
+\begin{table}
+\centering
+\caption[Metric book paper sizes]{Metric book paper sizes (in mm)}\label{tab:metricpapersizes}
+\begin{tabular}{lll}\toprule
+  & untrimmed & trimmed \\ \midrule
+metric crown octavo       & \abyb{192}{126} & \abyb{186}{123} \\
+metric large crown octavo & \abyb{205}{132} & \abyb{198}{129} \\
+metric demy octavo        & \abyb{222}{141} & \abyb{216}{138} \\
+metric small royal octavo & \abyb{240}{158} & \abyb{234}{156} \\
+A5                        &                 & \abyb{210}{148} \\ \bottomrule
+\end{tabular}
+\end{table}
+
+    In making up the book, the pages in each signature are first fastened
+together, usually by sewing through the folds. The signatures are then bound
+together and the covers, end papers\index{paper!end} and spine are attached to form
+the completed whole.
+
+
+\begin{table}
+\centering
+\caption[Common American commercial paper sizes]%
+        {Common American commercial paper sizes (in inches)} \label{tab:adriansizes}
+\begin{tabular}{llll} \toprule
+Sheet size & Book trim size & Common use & Pages per sheet (max) \\ \midrule
+\abyb{45}{35} & \abyb{8.5}{5.5} & scholarly works & 32 pages \\
+\abyb{50}{38} & \abyb{9.25}{6.125} & major nonfiction & 32 pages \\
+\abyb{66}{44} & \abyb{8}{5.375} & fiction \& minor fiction & 64 pages \\
+\abyb{68}{45} & \abyb{8.25}{5.5} & major fiction \& nonfiction & 64 pages \\
+\abyb{45}{35} & \abyb{11}{8.5} & children's books, manuals & 16 pages \\
+\abyb{50}{38} & \abyb{12.125}{9.25} & art monographs, children's books & 16 pages \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+    Commercial printers use paper larger than shown in the previous tables;
+they print several (final) pages on a single sheet, then fold it and trim it
+down to the finished page size. Table~\ref{tab:adriansizes} is from
+\cite[p. 59]{ADRIANWILSON93}. He also says that other common trimmed sizes are
+\abybm{9.25}{6.125}{in} out of \abybm{50}{38}{in} sheets, 
+\abybm{10.25}{8.25}{in} out of \abybm{45}{35}{in} sheets, and so on.
+
+
+    Publishers like the final typeset book to be of a length that just fits
+within an integral number of signatures\index{signature}, 
 with few if any blank pages required
 to make up the final signature. Casting off\index{casting off} is the
 process of determining how many lines a given text will make in a given
@@ -1432,6 +1984,121 @@ a phrase like: `Between pages 52 and 53'.
 
 \index{signature|)}
 
+\section{Paper}
+
+\index{paper|(}
+
+    Paper, on which I assume your work will be printed, can be thought of
+in seven categories, six of which are used in the making of books. The 
+categories are: 
+\begin{description}
+\item[Special]\index{paper!special} is not used for books. 
+It includes `wet strength tissues' and
+other sanitary, cosmetic and industrial papers.
+\item[Wrapping]\index{paper!wrapping} papers are for protective purposes. 
+Of these kraft paper is made from
+unbleached chemical wood fibre sized with resin. The fibres are long and 
+strong, hence the name `kraft' from the German word for `strength'. The usual
+colour is brown. Kraft paper is used in bookbinding for reinforcing endpapers
+and, strengthening and shaping spines.
+\item[Printing]\index{paper!printing} paper covers a wide range, 
+from economical to expensive,
+in surface finish from rough to highly polished (for fine art four colour
+printing), and in colour.
+\item[Writing]\index{paper!writing} paper is suitable for all stationery 
+requirements. Ledger
+paper is made from rag fibre, or a mixture of rag and wood pulp, 
+and is strong, opaque and durable, with a smooth
+surface. It is used for visitor's and account books and registers, and for
+fine printing. Bank and bond papers are of good quality, strong, durable 
+and nearly Ph neutral; they are made from fibres of chemical wood
+sized with resin. In books they are mainly used for strengthening damaged
+signatures. Artists' and designers' drawing papers usually have a rough 
+surface --- cartridge paper, made from well sized chemical wood fibres, 
+is often used for tipped on endpapers.
+\item[Decorative]\index{paper!decorative} papers used for the endpapers 
+and sides of books are 
+of an extensive variety of colours, textures, patterns, and quality. Any
+decorative paper used in a book should be strong with a good firm surface.
+\item[Ingres]\index{paper!Ingres} and similar papers are mould-made 
+from linen and/or cotton 
+with a little
+wood pulp. They come from Europe in a variety of quiet colours and are 
+used in fine bindings for sides and endpapers.
+\item[Japanese]\index{paper!Japanese} papers and tissues are mould-made 
+from good quality rag fibre.
+They are fine but strong and are extensively used for repairing documents,
+mending leaves, and replacing damaged or missing areas. I find 
+Kozo\index{paper!Kozo} paper very useful for repairing documents and, for 
+example, as hinges when bookbinding. Although not paper, there are some 
+wonderful Japanese bookcloths for binding covers.
+\end{description}
+
+\index{paper!machine-made|(}
+
+    Machine-made paper, which is the commonest, comes in a number of 
+sometimes overlapping categories, of which the main ones are:
+\begin{description}
+\item[Antique]\index{paper!antique} papers are soft textured papers originally
+made for letterpress printing, but there are now surface sized ones for
+offset lithography. 
+\item[Machine finish]\index{paper!machine finish} papers have varying degrees 
+of surface smoothness. They are also known as 
+super-calendered\index{paper!super-calendered} or 
+English\index{paper!English finish}.
+\item[Coated]\index{paper!coated} paper has been flooded with fine clay and
+adhesive to make them particularly good for halftones. Finishes range from 
+dull through matte to glossy. 
+\item[Impregnated]\index{paper!impregnated} papers are also known as
+as pigmented\index{paper!pigmented}. They are surface sized, lightly coated
+and calendered and can take halftones, especially by lithography.
+\item[Text]\index{paper!text} papers are textured and coloured and are 
+useful for limited editions, book jackets and end papers. They often have 
+a deckle edge on the two long sides.
+\item[Cover]\index{paper!cover} papers are heavier varieties of text and other
+papers and are typically used for pamphlet binding and paperback covers.
+\item[Moldmade]\index{paper!moldmade} papers are made by machine to resemble
+handmade papers, with deckle edges. They come in a wide range of textures,
+colours, and weights. The available range includes papers suitable for
+binding sides, endpapers, book jackets, or the text block.
+\end{description}
+
+    Handmade paper comes as single sheets but machine made paper can be 
+obtained in either rolls or sheets. For some letterpress printing 
+I recently bought some Strathmore 400
+Drawing Paper as \abybm{3}{30}{feet} rolls at about 1/3 the price of the
+same quantity of paper in sheet form; the downside was that I had to slice 
+it up into
+the sheet size I wanted to use, but in this case the upside was that I tore
+rather than cut and obtained sheets with deckle edges on all four sides
+so that it at the end it looked rather like handmade paper.
+
+
+\index{paper!machine-made|)}
+
+
+    It is not often that books include information about the paper on which
+they are printed. If they do they are likely to be fine press books or 
+limited editions, but even then most I have seen are silent on the matter. 
+A few trade books do include details. Among the more popular 
+papers\footnote{Meaning that I know that they have been used in more than
+one book.} I have
+come across are: 
+Arches\index{paper!Arches}, of various kinds; 
+Curtis Rag\index{paper!Curtis Rag};
+Fabriano\index{paper!Fabriano};
+Glatfelter\index{paper!Glatfelter};
+Linweave Early American\index{paper!Linweave Early American}, which
+has been used by the University of California press;
+Mohawk Superfine\index{paper!Mohawk superfine};
+Strathmore\index{paper!Strathmore},\footnote{At the time of writing I 
+have nearly finished hand letterpress printing a small book of 35 printed
+pages on Strathmore 400 Drawing Paper.}  of several kinds; and
+Warren's Old Style\index{paper!Warren's Old Style}, which has been used for 
+several books published by the University of California.
+
+\index{paper|)}
+
 %%%\clearpage
 %%%\raggedbottom
 \chapter{The page}  \label{chap:lpage}
@@ -1494,77 +2161,86 @@ is wider than it is high.
     It might appear that the designer has great freedom in choosing the
 size of the work, but for economic reasons this is not normally the case.
 Much typographical design is based upon the availabilty of certain 
-standard industrial sizes of sheets of paper\index{paper!size}. A page size of $12 \times 8$
-inches will be much more expensive than one which fits on a standard
-US letter sheet\index{paper!size!letterpaper} of $11 \times 8 \; 1/2$ inches. Similarly, 
-one of the standard sizes
-for a business envelope is $4 \; 1/8 \times 9 \; 1/2$ inches. 
+standard industrial sizes of sheets of paper\index{paper!size}. 
+A page size of \abybm{12}{8}{inches} will be much more expensive than one 
+which fits on a standard
+US letter sheet\index{paper!size!letterpaper} 
+of \abybm{11}{8\:\Mfrac{1}{2}}{inches}. 
+Similarly, one of the standard sizes
+for a business envelope is \abybm{4\:\Mfrac{1}{8}}{9\:\Mfrac{1}{2}}{inches}. 
 Brochures for mailing
 should be designed so that they can be inserted into the envelope with 
-minimal folding. Thus a brochure size of $5 \times 10$ inches will be 
+minimal folding. Thus a brochure size of \abybm{5}{10}{inches} will be 
 highly inconvenient, no matter how good it looks visually.
 
     Over the years books have been produced in an almost infinite variety
 of proportions,
-where by \emph{proportion}\index{proportion} 
+where by \emph{proportion}\index{proportion}
 I mean the ratio of the height to the width of a
-rectangle. However, certain proportions\index{proportion} occur time after time throughout
+rectangle. However, certain proportions occur time after time throughout
 the centuries and across many different countries and 
-civilizations. This is because some proportions\index{proportion} are inherently
-more pleasing to the eye than others are. These pleasing proportions\index{proportion} are
+civilizations. This is because some proportions are inherently
+more pleasing to the eye than others are. These pleasing proportions are
 also commonly found in nature --- in  physical, biological, and chemical
 systems and constructs. 
 
-    Some examples of pleasing proportions\index{proportion} can be
+\index{proportion!page|(}
+
+    Some examples of pleasing proportions can be
 seen in Japanese wood block prints, such as the \textit{Hoso-ye} size
-($2 : 1$) which is a double square, the \textit{Oban} ($3 : 2$),
-the \textit{Chuban} ($11 : 8$) and the \textit{Koban} size
-($\sqrt{2} : 1$). Sometimes these prints were made up into books, but
+(\ratio{2}{1}) which is a double square, the \textit{Oban} (\ratio{3}{2}), %($3 : 2$),
+the \textit{Chuban} (\ratio{11}{8}) and the \textit{Koban} size
+(\ratio{{\sqrt{2}}}{1}). Sometimes these prints were made up into books, but
 were often published as stand-alone art work. Similarly Indian paintings,
 at least in the 16th to the 18th century,
-often come in the range $1.701 : 1$ to $13 : 9$, thus being around
-$3 : 2$ in proportion\index{proportion}.
+often come in the range \ratio{1.701}{1} to \ratio{13}{9}, thus being around
+\ratio{3}{2} in proportion.
 
-    In medieval Europe page proportions\index{proportion} were generally in the range
-$1.25 : 1$ to $1.5 : 1$. Sheets of paper\index{paper} were typically 
+    In medieval Europe page proportions were generally in the range
+\ratio{1.25}{1} to \ratio{1.5}{1}. Sheets of paper\index{paper} were typically 
 produced in the
-proportion\index{proportion} $4 : 3$ ($1.33 : 1$) or $3 : 2$ ($1.5 : 1$). 
-These proportions\index{proportion}
+proportion \ratio{4}{3} (\ratio{1.33}{1}) or \ratio{3}{2} 
+(\ratio{1.5}{1}). 
+All sheet proportions
 have the property that they are reproduced with each alternate
 folding of the sheet.
-For example, if a sheet starts at a size of $60 \times 40$ 
-(i.e., $3 : 2$),
-then the first fold will make a double sheet of size $30 \times 40$
-(i.e., $3 : 4$). The next fold will produce a quadrupled sheet of size
-$30 \times 20$, which is again $3 : 2$, and so on. 
-It is an interesting fact,
-though, that it is impossible to fold a sheet of paper\index{paper}, no matter how large 
-and thin, more than six times altogether. The Renaissance typographers
-tended to like taller books, and their proportions\index{proportion} would go up 
-to $1.87 : 1$
+For example, if a sheet starts at a size of \abyb{60}{40} 
+(i.e., \ratio{3}{2}),
+then the first fold will make a double sheet of size \abyb{30}{40}
+(i.e., \ratio{3}{4}). The next fold will produce a quadrupled sheet of size
+\abyb{30}{20}, which is again \ratio{3}{2}, and so on. 
+ The Renaissance typographers tended to like taller books, and their 
+proportions would go up to \ratio{1.87}{1}
 or so. The style nowadays has tended to go back towards the medieval
-proportions\index{proportion}.
-
-    The standard ISO page proportions\index{proportion} are $\sqrt{2} : 1$ 
-($1.414 : 1$). These
-have a similar property to those of medieval times. However, in this case
-each fold reproduces the page proportion\index{proportion}. Thus halving an A0 sheet 
-(size $1189 \times 841$ mm) produces an A1 size sheet ($594 \times 841$),
-which in turn being halved produces the A2 sheet ($420 \times 594$), down
-through the A3, A4 ($210 \times 297$ mm), and A5 sheets.
-
-   There is no one perfect proportion\index{proportion} for a page, although some are 
-clearly better
+proportions.
+
+    The standard ISO page proportions are 
+\ratio{{\sqrt{2}}}{1} (\ratio{1.414}{1}). These
+have a similar folding property to the other proportions, except in this case
+each fold reproduces the original page proportion.
+Thus halving an A0 sheet 
+(size \abybm{1189}{841}{mm}) produces an A1 size sheet (\abyb{594}{841}),
+which in turn being halved produces the A2 sheet (\abyb{420}{594}), down
+through the A3, A4 (\abybm{210}{297}{mm}), A5, \ldots sheets.
+
+For many years it was thought that it was impossible to fold a sheet of 
+paper\index{paper}, no matter how large and thin, more than six times 
+altogether. This is not so as in 2002 a high school student, Britney Gallivan,
+managed to fold a sheet of paper in half twelve times (see, for example,
+\url{http://mathworld.wolfram.com/Folding.html}).
+
+
+   There is no one perfect proportion for a page, 
+although some are clearly better
 than others. For ordinary books both publishers and readers tend to prefer
-books whose proportions\index{proportion} range from the light $9 : 5$ ($1.8 : 1$) 
-to the heavy
-$5 : 4$ ($1.25 : 1$). Some examples are shown in \fref{flpage:prop}.
- Wider pages, those with proportions\index{proportion} less than
-$\sqrt{2} : 1$ ($1.414 : 1$), 
+books whose proportions range from the light 
+\ratio{9}{5} (\ratio{1.8}{1}) to the heavy
+\ratio{5}{4} (\ratio{1.25}{1}). Some examples are shown in \fref{flpage:prop}.
+ Wider pages, those with proportions less than
+\ratio{{\sqrt{2}}}{1} (\ratio{1.414}{1}),
 are principally useful for documents that need
-extra width for tables\index{table}
-, marginal notes\index{marginalia}, or where multi-column\index{column!multiple} printing
-is preferred. 
+extra width for tables\index{table}, marginal notes\index{marginalia}, 
+or where multi-column\index{column!multiple} printing is preferred. 
 
 \begin{figure}
 \centering
@@ -1617,23 +2293,26 @@ is preferred.
 
 
 
-    In books where the illustrations\index{illustration} are the primary concern, the shape of
-the illustrations\index{illustration} is generally the major influence on the page proportion\index{proportion}.
+    In books where the illustrations\index{illustration} are the primary 
+concern, the shape of the illustrations\index{illustration} is generally 
+the major influence on the page proportion.
 The page size should be somewhat higher than that of the average 
-illustration\index{illustration}.
-The extra height is required for the insertion of captions\index{caption} describing the
-illustration\index{illustration}. A proportion\index{proportion} of $\pi{} : e$ ($1.156 : 1$), 
+illustration\index{illustration}. The extra height is required for the 
+insertion of captions\index{caption} describing the
+illustration\index{illustration}. 
+A proportion of \ratio{{\pi}}{e} (\ratio{1.156}{1}), 
 which is slightly higher
 than a perfect square, is good for square illustrations.\footnote{Both $e$
 and $\pi$ are well known mathematical numbers. $e$ ($= 2.718 \ldots$)
 is the base of natural logarithms and $\pi$ ($= 3.141 \ldots$) is the
 ratio of the circumference of a circle to its diameter.}
-The $e : \pi$
-($0.864 : 1$) proportion\index{proportion} is useful for landscape photographs  taken with 
-a $4 \times 5$
+The \ratio{e}{{$\pi$}}
+(\ratio{0.864}{1}) proportion is useful for landscape 
+photographs  taken with a \abyb{4}{5}
 format camera, while those from a 35mm camera (which produces a negative
-with a $2 : 3$ proportion\index{proportion}) are better accomodated on 
-a $0.83 : 1$ page.
+with a \ratio{2}{3} proportion) are better accomodated on 
+an \ratio{0.83}{1} page.
+\index{proportion!page|)}
 
 \subsection{The golden section and Fibonacci series}
 
@@ -1732,7 +2411,8 @@ approaching it ever more closely.
   89/55 & = & 1.6182
 \end{eqnarray*}
 
-    For the mathematically inclined there is another, to me, striking
+    For the mathematically inclined there is another, to me, typographically
+striking
 relationship between $\varphi$ and the Fibonacci series. Define the
 Fibonacci numbers as $F_{n}$, where
 \begin{equation}
@@ -1749,8 +2429,14 @@ Then
 The arrangement of seeds in a sunflower, the pattern on the surface of a 
 pinecone, and the spacing of leaves around a stalk all exhibit Fibonacci
 paterns (for example see~\cite{CONWAY96}). Martin Gardener~\cite{GARDNER66}
-reports on studies that claimed that the average ratio of a person's height
-to the height of the navel is $1.618+$ --- suspiciously close to $\varphi$.
+reports on a study of 65 women that claimed that the average ratio of a 
+person's height to the height of the navel is $1.618+$ --- suspiciously 
+close to $\varphi$. According to Dan Brown, the author of 
+\btitle{The Da Vinci Code}, Mario Livio's 
+\btitle{The Golden Ratio}~\cite{LIVIO02} 
+`\ldots unveils the history and mystery of the remarkable
+number phi in such a way that \ldots you will never again look at a pyramid,
+pinecone, or Picasso in the same light'.
 
 \index{Fibonacci series|)}
 \index{golden section|)}
@@ -1761,31 +2447,38 @@ to the height of the navel is $1.618+$ --- suspiciously close to $\varphi$.
 
 \section{The spread} \label{sec:spread}
 \index{spread|(}
+\index{proportion!page|(}
+\index{proportion!typeblock|(}
 
-    The typeblock\index{typeblock} is that part of the page which is normally covered with
-type. The same proportions\index{proportion} that are useful for the shape of a page are also
-useful for the shape of the typeblock\index{typeblock}. This does not mean, though, that the
-proportions\index{proportion} of the page and the typeblock\index{typeblock} should be the same. For instance,
-a square typeblock\index{typeblock} on a square page is inherently dull.
+    The typeblock\index{typeblock} is that part of the page which is normally 
+covered with type. The same proportions that are useful for the shape of a 
+page are also useful for the shape of the typeblock. This does not mean, 
+though, that the proportions of the page and the typeblock should be the same. 
+For instance, a square typeblock on a square page is inherently dull.
 
     When we first start to learn to read we scan horizontally along each line
 of text. As our skills improve we tend to scan vertically rather than
-horizontally. A tall column\index{column} of text helps in this process, provided that
-the column\index{column} is not too wide.
+horizontally. A tall column\index{column} of text helps in this process, 
+provided that the column\index{column} is not too wide.
 
     A page in a book will typically contain several elements. Principal
-among these is the typeblock\index{typeblock}, but there are also items like the folio\index{folio}
-(that is, the page number), a running head and/or foot which carries the
-chapter\index{chapter} and/or book title, and possibly marginalia\index{marginalia} and footnotes\index{footnote}. These latter
+among these is the typeblock\index{typeblock}, but there are also items like 
+the folio\index{folio} (that is, the page number), 
+a running header\index{header} and/or footer\index{footer} 
+which carries the chapter\index{chapter} 
+and/or book title, and possibly marginalia\index{marginalia} and 
+footnotes\index{footnote}. These latter
 elements, although essential to the content of the book, are minor visual
-elements compared to the typeblock\index{typeblock}. But even minor decoration can obscure
+elements compared to the typeblock\index{typeblock}. 
+But even minor decoration can obscure
 or kill an otherwise good design.
 
-  The major concern is the positioning of the typeblock\index{typeblock} on the page. 
-The mere 
-fact of positioning the typeblock\index{typeblock} also has the result of producing margins\index{margin}
-onto the page. Page design is a question of balancing the page proportions\index{proportion}
-with the proportions\index{proportion} of the typeblock\index{typeblock} and the proportions\index{proportion} of the margins\index{margin} to 
+  The major concern is the positioning of the typeblock on the page. 
+The mere fact of positioning the typeblock\index{typeblock} also has 
+the result of producing margins\index{margin} onto the page. 
+Page design is a question of balancing the page proportions
+with the proportions of the typeblock and the proportions 
+of the margins\index{margin} to 
 create an interesting yet harmonious composition. A single page, except
 for a title page, is never the subject of a design but rather the design
 is in terms of the two pages that are on view when a book is opened --- the
@@ -1797,7 +2490,7 @@ design is in terms of a \emph{double spread}.
 \begin{table}
 \caption{Some page designs} \label{tlpage:allp}
 \centering
-\DeleteShortVerb{\|}
+%%\DeleteShortVerb{\|}
 %\begin{tabular}{|l|l|l|c|} \hline
 \begin{tabular}{|r|r|rrrrr|l|} \hline
 \multicolumn{1}{|c|}{$P$} & \multicolumn{1}{c|}{$T$} & \multicolumn{5}{c|}{Margins \& Columns} & 
@@ -1829,23 +2522,25 @@ $13/9$     & $\sqrt{2}$ & $w/30$ & $2s$  & $9s/2$  & $4s$    & $s/2$ & \ref{fb:1
 $\sqrt{2}$ & $\varphi$ & $w/9$  & $s$    & $2s$    & $2s$    &       & \ref{fb:12} left \\ %Orig A4
 $\sqrt{2}$ & $\varphi$ & $w/8$  & $s$    & $5s/3$  & $5s/3$  &       & \ref{fb:12} right \\ %Mod A4
 $7/5$      & $1.641$   & $w/7$  & $s$    & $8s/5$  & $8s/5$  &       & \ref{fb:13} left \\ %Emery Walker
-$1.294$    & $\varphi$ & $0.176w$ & $1.03s$ & $1.685s$ & $13s/9$ &   & \ref{fb:13} right \\ %LaTeX
+%%%$1.294$    & $\varphi$ & $0.176w$ & $1.03s$ & $1.685s$ & $13s/9$ &   & \ref{fb:13} right \\ %LaTeX
+$17/22$    & $1.594$ & $0.176w$ & $1.21s$ & $1.47s$ & $1.05s$ &      & \ref{fb:13} right \\ %LaTeX
 $1.294$    & $13/9$  & $w/12$   & $s$    & $2s$    & $10s/7$ & $s/2$ & \ref{fb:14} left \\ %Wilson
 $9/7$      & $19/9$  & $2w/5$   & $5s/8$ & $5s/8$  & $5s/6$  &       & \ref{fb:14} right \\ %Kuniyoshi
 $5/4$      & $13/11$ & $w/10$   & $3s/2$ & $2s$    & $8s/3$  &       & \ref{fb:15} left \\ %Fens
-$7/6$    & $17/15$ & $w/13$   & $s$    & $s$     & $7s/5$  & $.382$ & \ref{fb:15} right \\ %Durer
+%%%$7/6$    & $17/15$ & $w/13$   & $s$    & $s$     & $7s/5$  & $.382$ & \ref{fb:15} right \\ %Durer
+$7/6$      & $55/48$ & $w/10$   & $9s/10$ & $8s/10$ & $13s/10$ & $1.05s$ & \ref{fb:15} right \\ %Durer
 %$1.176$    & $1.46$  & $0.107w$ & $5s/6$ & $2.41s$ & $3s/2$  &       & \ref{fb:12} left \\ %Art
 $e/\pi$    & $0.951$ & $w/9$    & $s$    & $2s$    & $3s/2$  &       & \ref{fb:16} left \\ %Hammer & Hand
 $5/7$      & $2/3$   & $w/9$    & $s/2$  & $2s/3$  & $s$     & $s/3$ & \ref{fb:16} right \\ \hline %Hokusai
 \end{tabular}
-\MakeShortVerb{\|}
+%%\MakeShortVerb{\|}
 \end{table}
 
   Table~\ref{tlpage:allp} gives some examples of 
 page designs. These are arranged in increasing order of
 fatness. In this table, and afterwards, I have just used a single number
 to represent the ratio of the page height to the width; that is, for example,
-$1.5$ instead of $1.5 : 1$ or $12/7$ instead of $12 : 7$.
+$1.5$ instead of \ratio{1.5}{1} or $12/7$ instead of \ratio{12}{7}.
 The following symbols are used in the table:
 \begin{description}
 \item[Proportions]:
@@ -1869,16 +2564,27 @@ The following symbols are used in the table:
   \begin{itemize}
   \item[$s$] = spine margin (back margin)
   \item[$t$] = top margin (head margin)
-  \item[$e$] = fore-edge (front margin)
+  \item[$e$] = \foredge\ (front margin)
   \item[$f$] = foot margin (bottom margin)
   \item[$g$] = internal gutter (on a multi-column page)
   \end{itemize}
 \end{description}
+
+    Theoretically the following relationship holds among the several
+variables:
+\begin{displaymath}
+f + t - T(s + e) = w(P - T)
+\end{displaymath}
+However, due to measurement and other difficulties, the numbers given in 
+the table do not always obey this rule but they are close enough to give
+a good idea of the relative values. In any event, page design is not a
+simple arithmetic exercise but requires aesthetic judgement.
+
     The designs are also shown in \figurerefname s~\ref{fb:1} 
 to~\ref{fb:16}. Each of these shows a double page spread; the 
 page width has been kept constant throughout the series to enable easier
-visual comparison --- it is the relative proportions\index{proportion}, not the absolute size, 
-that are important. I have only shown the pages and the typeblocks\index{typeblock} to avoid
+visual comparison --- it is the relative proportions, not the absolute size, 
+that are important. I have only shown the pages and the typeblocks to avoid
 confusing the diagrams with headers\index{header}, footers\index{footer} 
 or folios\index{folio}.
 
@@ -1898,14 +2604,27 @@ or folios\index{folio}.
 \end{figure}
 
     Shown in \fref{fb:1} are two modern books. On the left is the layout
-for Robert Bringhurst's \textit{The Elements of Typographical Style} published
+for Robert Bringhurst's\index{Bringhurst, Robert} 
+\btitle{The Elements of Typographical Style} published
 by Hartley \& Marks in 1992, and designed by Bringhurst. The text face is
-Minion set with $12$pt leading on a $21$pc measure. The captions are
-set in Syntax. The original
-size is $227 \times 132$mm. I highly recommend this book if you are
-interested in typography. The layout on the right is The Folio Society's
-1970 edition of \textit{The Prince} by Niccol\`{o} Machiavelli. The original
-size is $216 \times 125$mm and is set in $12/13 \times 22$ Centaur.
+Minion\index{Minion} set with $12$pt leading on a $21$pc measure. 
+The captions are set in Scala Sans\index{Scala Sans}. The original
+size is \abybm{227}{132}{mm} and is printed on Glatfelter laid 
+\index{paper!Glatfelter}paper. 
+I highly recommend this book if you are
+interested in typography. 
+
+The layout on the right is The Folio Society's\index{Folio Society}
+1970 edition of \btitle{The Prince} by Niccol\`{o} Machiavelli. The original
+size is \abybm{216}{125}{mm} and is set in \abyb{12/13}{22} Centaur\index{Centaur}.
+Chapter titles\index{chapter!design} are set as raggedright block 
+paragraphs using Roman numbers
+and small caps for the text; not all chapters start a new page. There are
+no running headers and the folios\index{folio} 
+are set at the center of the footer\index{footer!design}
+The ToC is typeset like the standard \ltx\ ToC\index{ToC!design} 
+but with the chapter titles
+in small caps.
 
 
 
@@ -1924,14 +2643,37 @@ size is $216 \times 125$mm and is set in $12/13 \times 22$ Centaur.
 \end{figure}
 
     Figure~\ref{fb:2} (left) illustrates a small book by Wilfred T.~Grenfell
-entitled \textit{Adrift on an Ice-Pan} published in 1909 by the Riverside
-Press of Boston. The text is set with a leading of $16$pt on a $16$pc measure.
-The large leading and small measure combine to give a very open appearance.
-The original
-size is $184 \times 107$mm. On the right is another book from the
-Folio Society --- \textit{Three Men in a Boat} by Jerome K.~Jerome printed
-in 1964. The original size is $215 \times 128$mm and is typeset with
-Ehrhardt at $11/12 \times 22$.
+entitled \btitle{Adrift on an Ice-Pan} published in 1909 by the Riverside
+Press\index{Riverside Press} of Boston. The text is set with a leading 
+of $16$pt on a $16$pc 
+measure. The large leading and small measure combine to give a very 
+open appearance. The original size is \abybm{184}{107}{mm}. 
+ The half-title\index{half-title}\index{page!half-title} is set in 
+bold uppercase about 1/3
+of the way down the page. Uppercase is used for chapter\index{chapter!design}
+headings which are centered. Captions for the photographs\index{illustration}
+are also uppercase and are listed on an illustrations page. 
+The folios\index{folio} are
+centered in the footer\index{footer!design} and enclosed in square 
+brackets (e.g., [17]), and the
+headers\index{header!design} contain the book title, centered, 
+and in uppercase.
+
+
+
+On the right is another book from the
+Folio Society\index{Folio Society} --- \btitle{Three Men in a Boat} 
+by Jerome K.~Jerome printed
+in 1964. The original size is \abybm{215}{128}{mm} and is typeset with
+Ehrhardt\index{Ehrhardt} at \abyb{11/12}{22}. 
+Chapter\index{chapter!design} titles are
+centered and simply consist of  the word `CHAPTER' followed by the number.
+There are no headers and the folio\index{folio} 
+is set between square brackets (like [27])
+in the center of the footer\index{footer!design}. The ToC\index{ToC!design}
+title is centered, and the chapter entries are like standard \ltx\ except
+that the numbers are set in a roman font while the texts, which give a 
+summary of the chapter contents, are typeset in italic.
 
 \begin{figure}
 \centering
@@ -1947,16 +2689,42 @@ Ehrhardt at $11/12 \times 22$.
          (Right) Canada, 1995.} \label{fb:3}
 \end{figure}
 
-   Jean de Tourmes, a Parisian publisher, printed \textit{Histoire et Chronique}
+   Jean de Tourmes\index{de Tourmes, Jean}, a Parisian publisher, 
+printed \btitle{Histoire et Chronique}
 by Jean Froissart in 1559. This is a history book with the main text in
 roman and sidenotes in italic at roughly 80\% of the size of the main text.
-The layout is shown in \fref{fb:3} (left). The gutter (not shown) between the main
-text and the sidenote column\index{column} is very small, but the change in fonts and sizes
-enables the book to be read with no confusion. Another Hartley \& Marks
-typography book --- \textit{Finer Points in the Spacing \& Arrangement
-of Type} by Geoffrey Dowding --- is shown at the right of \fref{fb:3}.
-This is typeset in Ehrhardt at $10.5/14 \times 23$ on a page size of
-$231 \times 143$mm.
+The layout is shown in \fref{fb:3} (left). The gutter (not shown) between 
+the main text and the sidenote\index{sidenote} column\index{column} 
+is very small, 
+but the change in fonts and sizes enables the book to be read with no 
+confusion. 
+
+
+Another Hartley \& Marks
+typography book --- \btitle{Finer Points in the Spacing \& Arrangement
+of Type} by Geoffrey Dowding\index{Dowding, Geoffrey} --- 
+is shown at the right of \fref{fb:3}.
+This is typeset in Ehrhardt\index{Ehrhardt} at \abyb{10.5/14}{23} on a page 
+size of \abybm{231}{143}{mm} on Glatfelter\index{paper!Glatfelter} Laid 
+Offset paper. 
+The half-title\index{half-title} is uppercased,
+centered, and in the upper quarter of the page. On the title 
+page\index{title page} the title is typeset with a large bold italic font 
+while the author's is set using normal uppercase and the publisher
+is set in small caps. Dowding uses `part' instead of `chapter'. 
+Chapter\index{chapter!design} heads are centered with the number written 
+out, like `PART ONE', and below this is the title set in large italics.
+Section\index{section!design} heads are in uppercase and subsection heads in 
+small caps, both centered. Folios\index{folio} are in the center of the 
+footer\index{footer!design}; verso running heads\index{header!design}
+consist of the book title in small caps and centered, and recto heads
+contain the chapter title in italics and centered. On the 
+contents\index{ToC!design} page the part (chapter) numbers and titles
+are centered, using small caps and large italics respectively (and no page
+numbers). Section titles are in small caps, left justified with the
+page numbers right justified. Titles from the \pixfrontmatter\ 
+and \pixbackmatter, for example the Foreword and 
+Bibliography, are typeset in italics.
 
 
 
@@ -1974,20 +2742,38 @@ $231 \times 143$mm.
          (Right) USA, 1990.} \label{fb:4}
 \end{figure}
 
-    Bruce Rogers (1870--1957) described how he came to design his 
-Centaur typeface in
-\textit{Centaur Types}, a privately published book by his studio October
+    Bruce Rogers\index{Rogers, Bruce} (1870--1957) 
+described how he came to design his Centaur\index{Centaur} typeface in
+\btitle{Centaur Types}, a privately published book by his studio October
 House in 1949. The layout of this book, which of course was typeset in
 Centaur, is shown at the left of \fref{fb:4}. Centaur is an upright
-seriffed type based on Nicolas Jenson's type as used in \textit{Eusebius}
-published in 1470. \textit{Centaur Types} demonstrates typefaces other than
+seriffed type based on Nicolas Jenson's\index{Jenson, Nicolas} type as 
+used in \btitle{Eusebius} published in 1470. 
+\btitle{Centaur Types} demonstrates typefaces other than
 Centaur, and also includes exact size reproductions of the engraver's 
-patterns. It is set at $14/16 \times 22$ on a page size of $240 \times 150$mm.
-Figure~\ref{fb:4} (right) is the layout of another book on typefaces.
-It is \textit{The Anatomy of a Typeface} by Alexander Lawson published by
+patterns. It is set at \abyb{14/16}{22} on a page size of \abybm{240}{150}{mm}.
+
+   Figure~\ref{fb:4} (right) is the layout of another book on typefaces.
+It is \btitle{The Anatomy of a Typeface} by Alexander Lawson published by
 David R.~Godine in 1990.
-This is set in Galliard with $13$pt leading and a measure of $24$pc on
-a page size of $227.5 \times 150$mm.
+This is set in Galliard\index{Galliard} with $13$pt leading and a measure of $24$pc on
+a page size of \abybm{227.5}{150}{mm} on Glatfelter\index{paper!Glatfelter} 
+Offset Smooth Eggshell paper. The half-title\index{half-title}\index{page!half-title}
+is set in uppercase in the upper quarter of the page. On the 
+title\index{page!title} page the title is in uppercase in a large outline 
+font, with a double rule above and a short single rule below. The author
+is set in small caps (both upper- and lowercase like \textsc{Lawson})
+and the publisher is in regular lowercase small caps.
+Chapter\index{chapter!design} heads are centered with the number set between
+a pair of fleurons\index{fleuron}, followed by the title in 
+large uppercase, and with
+a short rule between the title and the start of the text. 
+The folios\index{folio}
+are in the center of the footer\index{footer!design} with a short rule
+above them; there are no running headers. The contents\index{ToC!design}
+page is set with the body type; chapter numbers are flushleft with a 
+following period and the page numbers are flushright.
+
 
 
 \begin{figure}
@@ -1997,26 +2783,44 @@ a page size of $227.5 \times 150$mm.
 \end{minipage}
 \hfill
 \begin{minipage}[b]{\pwlayi}
-\drawaspread{\pwlayii}{1.583}{1.6}{.0833}{1.4}{1.6}{0} % Abcedarium
+\drawaspread{\pwlayii}{1.583}{1.6}{.0833}{1.4}{1.6}{0} % Abecedarium
 \end{minipage}
 \caption[Two spreads: England, 1908 and USA, 1993]%
         {Two spreads: (Left) England, 1908.
          (Right) USA, 1993.} \label{fb:5}
 \end{figure}
 
-    \textit{Microcosmographica Academia} by F. M. Cornford is shown in
+    \btitle{Microcosmographica Academia} by F. M. Cornford is shown in
 \fref{fb:5}. Despite its title, it is written in English and was published
 by Bowes \& Bowes, London, in 1908. It is a dryly humourous look at academic
 politics as practised in Cambridge University at the turn of the nineteenth
-century (possibly the twentieth as well). It is set with $14$pt leading
-on $22$pc. The original page size is $216 \times 136$mm.
+century (probably in the twentieth and twenty-first as well). 
+It is set with $14$pt leading
+on $22$pc. The original page size is \abybm{216}{136}{mm}.
+The half-title\index{half-title}\index{page!half-title} 
+is in normal uppercase in the upper
+sixth of the page; the title\index{page!title} page is all uppercase in
+various sizes. Chapter\index{chapter!design} heads are centered with first 
+the number in Roman numerals and below the title in uppercase.
+Folios\index{folio} are centered in the footer\index{footer!design} 
+and there are no running heads. There is no table of contents.
+
+
+
 The right of this figure illustrates a book with another unusual title ---
-\textit{The Alphabet Abcedarium} by Richard A.~Firmage  and published by
-David R.~Godine in  1993. It is set in Adobe Garamond on a $27$pc measure
-with $14$pt leading. The original page size is $227.5 \times 150$mm. The
-book gives a history of each letter of the latin alphabet. One
-unusual feature is that there is a deep footer\index{footer} on each page
-showing many examples of typefaces of the letter being described.
+\btitle{The Alphabet Abecedarium} by Richard A.~Firmage and published by
+David R.~Godine in 1993. It is set in 
+Adobe Garamond\index{Adobe Garamond}\index{Garamond!Adobe} on a $27$pc measure
+with $14$pt leading. The original page size is \abybm{227.5}{150}{mm}. The
+book gives a history of each letter of the Latin alphabet. 
+Chapter\index{chapter!design} heads are centered and consist of an 
+ornamental version of the letter in question. One
+unusual feature is that there is a deep footer\index{footer!design} 
+on each page showing many examples of typefaces of the letter being 
+described. Verso running headers\index{header!design} consist of the book
+title in mixed small caps and centered with the folio\index{folio} flushleft.
+Recto headers have the folio\index{folio} flushright, and centered is the alphabet, 
+typeset in small caps except for the current letter which is enlarged.
 
 
 \begin{figure}
@@ -2035,15 +2839,27 @@ showing many examples of typefaces of the letter being described.
 
 
     W.~A.~Dwiggins was, among many other things, an American book designer.
-Figure~\ref{fb:6} (left) shows his layout of H.~G.~Wells' \textit{The Time
-Machine} for Random House in 1931. The page size is $231 \times 147$mm.
+Figure~\ref{fb:6} (left) shows his layout of H.~G.~Wells' \btitle{The Time
+Machine} for Random House in 1931. The page size is \abyb{231}{147}{mm}.
+
 The right of the figure illustrates the layout of a book called 
-\textit{Two Men --- Walter Lewis and Stanley Morrison at Cambridge}
-by Brooke Crutchley and published by Cambridge University Press in 1968.
-Crutchley was the Cambridge University Printer and each year would produce
+\btitle{Two Men --- Walter Lewis and Stanley Morrison at Cambridge}
+by Brooke Crutchley\index{Crutchley, Brooke} 
+and published by Cambridge University 
+Press\index{Cambridge University Press} in 1968. This is typeset in 
+Monotype Barbon\index{Monotype Barbon}\index{Barbon!Monotype}
+with $17.5$ leading on a $26$pc measure on a \abybm{253}{162}{mm} page.
+Crutchley was the Cambridge University 
+Printer\index{Cambridge University Press!Crutchley, Brooke} and each year would produce
 a limited edition of a book about Cambridge or typography, and preferably
-both together. This is typeset in Monotype Barbon with $17.5$ leading on
-a $26$pc measure on a $253 \times 162$mm page.
+both together, for presentation to friends of the Press. The tradition of
+the Printer's Christmas Book\index{Cambridge University Press!Christmas Book} 
+was started by Stanley 
+Morison\index{Morison, Stanley}\index{Cambridge University Press!Morison, Stanley} 
+in 1930 and continued until 1974. The books usually consisted of a short 
+essay on a
+particular topic, so they did not have chapter heads, tables of contents,
+or other appurtenances, apart from a Preface.
 
 
 
@@ -2062,15 +2878,42 @@ a $26$pc measure on a $253 \times 162$mm page.
 \end{figure}
 
     A modern technical book layout is given in \fref{fb:7}. The book
-is \textit{Information Modeling the EXPRESS Way} by Douglas Schenck and Peter
+is \btitle{Information Modeling the EXPRESS Way} by Douglas Schenck and Peter
 Wilson, published by Oxford University Press (New York) in 1994. This is
-set in Computer Modern Roman at $10/12 \times 27$ on a page 
-$233 \times 150$mm. Ruari McLean's \textit{The Thames and Hudson Manual of
-Typography} (1988) is at the right in \fref{fb:7}. This is typeset in
-$10/11 \times 20$ Monophoto Garamond on a $240 \times 156$mm page. The wide
-\foredge{} is used for small illustrations\index{illustration}. Notes are also set in this
+set in Computer Modern Roman\index{Computer Modern Roman} at \abyb{10/12}{27} 
+on a page \abybm{233}{150}{mm}. 
+It has the typical \ltx\ appearance with perhaps the exception of the
+epigraphs\index{epigraph} after each chapter\index{chapter!design} heading.
+
+Ruari McLean's\index{McLean, Ruari} \btitle{The Thames and Hudson Manual of
+Typography} (1988) is at the right in \fref{fb:7}. This is typeset in \abyb{10/11}{20} 
+Monophoto Garamond\index{Monophoto Garamond}\index{Garamond!Monophoto} 
+on a \abybm{240}{156}{mm} page. The wide
+\foredge{} is used for small illustrations\index{illustration}. 
+Notes are also set in this
 margin\index{margin} rather than at the foot of the page.
+The half-title\index{half-title}\index{page!half-title} 
+is in a bold font, flushright, in the 
+upper quarter of the page; there is a wood engraving of a galleon at the 
+bottom, also flushright. The title\index{page!title} uses a mixture of fonts
+and is set flushright; an example title page based on this design is shown
+in \fref{fig:titleTH}. Chapter\index{chapter!design} are on recto
+pages and consist of the number and title in a bold font, flushleft and near
+the top of the page, and an engraving of some kind is at the bottom
+right of the page; there is no other text on this page, the body of
+the chapter starting at the top of the following verso page. 
+Folios\index{folio} are in the footers\index{footer!design} at the outer edge
+of the page. Running headers\index{header!design} contain the chapter
+title in small caps flushright in the outer margin.
 
+\begin{figure}
+\centering
+\begin{showtitle}
+\titleTH
+\end{showtitle}
+\caption{Title page design based on \btitle{The Thames and Hudson Manual of
+Typography} (1988)} \label{fig:titleTH}
+\end{figure}
 
 
 \begin{figure}
@@ -2090,18 +2933,21 @@ margin\index{margin} rather than at the foot of the page.
  Many page layouts in earlier days were constructed by
 drawing with compass and ruler, usually based on regular geometric figures; 
 the use of squares, pentagons and hexagons being particularly
-prevelant.
-    Unusually, the typeblock\index{typeblock} in \fref{fb:8} (left) is centered on the page.
-The typeblock\index{typeblock} is based on a square, the depth being twice the measure.
-The book, \textit{Canzone} by Giangiorgio Trissino, is a volume of poems
-and was published in Rome about 1523 by Ludovico degli Arrighi. Prose works
-from the same typographer followed the normal style of having the fore-edge
-wider than the spine margin\index{margin}.
-    The page proportion\index{proportion} in \fref{fb:8} (right) is also a simple $3 : 2$ 
-ratio. The proportions\index{proportion} of the typeblock\index{typeblock}, being $1.7$, are based upon 
-a pentagon.
-The book is \textit{Hypnerotomachia Poliphili} by Francesco Colonna and was
-published by Aldus Manutius in Venice in 1499. The story of this,
+prevelant. Unusually, the typeblock\index{typeblock} in \fref{fb:8} (left) 
+is centered on the page. The typeblock\index{typeblock} is based on a 
+square, the depth being twice the measure. The book, \btitle{Canzone} by 
+Giangiorgio Trissino, is a volume of poems and was published in Rome 
+about 1523 by Ludovico degli Arrighi\index{Arrighi, Ludovico degli}. 
+Prose works
+from the same typographer followed the normal style of having the \foredge\
+wider than the spine margin\index{margin!spine}\index{margin!inner}.
+
+    The page proportion in \fref{fb:8} (right) is also a simple \ratio{3}{2}
+ratio. The proportions of the typeblock, being \ratio{1.7}{1}, 
+are based upon a pentagon.
+The book is \btitle{Hypnerotomachia Poliphili} by Francesco Colonna and was
+published by Aldus Manutius\index{Manutius, Aldus} in Venice in 1499. 
+The story of this,
 including some reproductions from the original, is told by Helen
 Barolini~\cite{BAROLINI92}.
 
@@ -2130,23 +2976,24 @@ A very few manuscripts of his report are in existence.
 The layout of one of these manuscripts which is in the Beinecke Rare
 Book and Manuscript Library at Yale is shown at the left of \fref{fb:9}.
 The manuscript, which is written in French, is called 
-\textit{Navigation et descouurement de la Inde superieure et isles
+\btitle{Navigation et descouurement de la Inde superieure et isles
 de Malueque ou naissent les cloux de Girosle} (Navigation and discovery
 of Upper India and the Isles of Molucca where the cloves grow) is written
-in a beautiful humanistic miniscule. There are 27 lines to a page, which
-is $286 \times 190$mm and made of vellum. The text measure is $29.5$
-and the `leading' is $21$pt. The wide fore margin\index{margin} is used for sidenotes
+in a beautiful humanistic minuscule\index{minuscule!humanist}. 
+There are 27 lines to a page, which
+is \abybm{286}{190}{mm} and made of vellum. The text measure is $29.5$
+and the `leading' is $21$pt. The wide outer (\foredge) margin\index{margin!outer} is used 
+for sidenotes\index{sidenote}
 indicating highlights of the story. The manuscript was probably prepared 
 soon before 1530; the scribe and where he worked is unknown.
 
-    Many of the books produced by Johannes Gutenberg (1398--1468)
-and his early successors 
-followed the form shown in
-\fref{fb:9} (right). This set of proportions\index{proportion} was also often used in
-medieval incunabula\footnote{Early books, especially those printed before
-1500.}  and manuscripts. The page and typeblock\index{typeblock} proportions\index{proportion}
-are the same ($3 : 2$). The margins\index{margin} are in the proportions\index{proportion}
-$2 : 3 : 4 : 6$.
+    Many of the books produced by Johannes Gutenberg\index{Gutenberg, Johannes}
+(1398--1468) and his early successors followed the form shown in
+\fref{fb:9} (right). This set of proportions was also often used in
+medieval incunabula\index{incunabula}\footnote{Early books, especially 
+those printed before 1500.}  and manuscripts. The page and typeblock 
+proportions are the same (\ratio{3}{2}). The margins\index{margin} are in the 
+proportions $2 : 3 : 4 : 6$.
 A graphical method for constructing this, and similar designs, is 
 shown later in \fref{flpage:lgut}.
 
@@ -2165,15 +3012,15 @@ shown later in \fref{flpage:lgut}.
 \end{figure}
 
      Two versions of the same publication are shown in \fref{fb:10}.
-On the left is a Persian manuscript \textit{Khamsch of Nizami} written
-about 1525. The page size is about $324 \times 216$mm. The 
+On the left is a Persian manuscript \btitle{Khamsch of Nizami} written
+about 1525. The page size is about \abybm{324}{216}{mm}. The 
 illustrations\index{illustration} and
 the typeblock\index{typeblock} are inextricably mixed. On the right is a translation of
-some of the manuscript published as \textit{Tales from the Khamsch of Nizami}
+some of the manuscript published as \btitle{Tales from the Khamsch of Nizami}
 by the Metropolitan Museum of Art, New York, in 1975. The modern version
-has a page size of $300 \times 200$mm, slightly smaller than the original
-but in the same proportions\index{proportion}. The typeblock\index{typeblock} is $32$pc wide and the type is
-set with a $15$pt leading.
+has a page size of \abybm{300}{200}{mm}, slightly smaller than the original
+but in the same proportions. The typeblock\index{typeblock} is $32$pc wide 
+and the type is set with a $15$pt leading.
 
 \begin{figure}
 \centering
@@ -2189,10 +3036,12 @@ set with a $15$pt leading.
          (Right) England, 1087.} \label{fb:11}
 \end{figure}
 
-    Frederic Goudy was a prolific American type designer. Shown at the left of
-\fref{fb:11} is the layout of his book \textit{The Alphabet and Elements
+    Frederic Goudy\index{Goudy, Frederick} was a prolific American 
+type designer. Shown at the left of
+\fref{fb:11} is the layout of his book \btitle{The Alphabet and Elements
 of Lettering} published by the University of California Press in 1952.
-This is typeset in his University of California Old Style, which has
+This is typeset in his University of California Old Style
+\index{University of California Old style}, which has
 interesting ct and st ligatures. The measure is $36$pc and the leading
 is $18$pt. The first half of the book gives a short history of the development
 of writing and fonts. The second half consists of 27 plates, one for each 
@@ -2202,14 +3051,13 @@ century.
 
 
     Figure~\ref{fb:11} (right) shows the layout of the English 
-\textit{Domesday Book} which is a manuscript book written in 1087. 
-It records all the
-domains won by William the Conqueror in 1066. The book is written
-in a Caroline miniscule
-in two columns\index{column!double}, with 44 lines per column ragged right. The two columns
-have slightly different widths. The first part of the book is more meticulously
-written than the later parts, where the scribe appears to be in haste to
-finish.
+\btitle{Domesday Book} which is a manuscript book written in 1087. 
+It records all the domains won by William the Conqueror in 1066. 
+The book is written in a Carolingian minuscule\index{minuscule!Carolingian}
+in two columns\index{column!double}, with 44 lines per column ragged right. 
+The two columns have slightly different widths. The first part of the book 
+is more meticulously written than the later parts, where the scribe appears 
+to be in haste to finish.
 
 
 \begin{figure}
@@ -2227,11 +3075,11 @@ finish.
 \end{figure}
 
     Figure~\ref{fb:12} shows two different layouts for a page corresponding
-to the ISO international standard proportion\index{proportion} of $\sqrt{2}$. In each case
+to the ISO international standard proportion of $\sqrt{2}$. In each case
 the typeblock\index{typeblock} is the same and proportioned in the 
-golden section\index{golden section}, 
-but the margins\index{margin} are different. The layout on the left provides adequate
-room for marginal\index{marginalia} notes in the fore-edge.
+golden section\index{golden section}, but the margins\index{margin} are 
+different. The layout on the left provides adequate
+room for marginal\index{marginalia} notes in the \foredge.
 
 
 \begin{figure}
@@ -2248,12 +3096,27 @@ room for marginal\index{marginalia} notes in the fore-edge.
          (Right) LaTeX $10$pt book style.} \label{fb:13}
 \end{figure}
 
-    Another of the Cambridge Printer's Christmas books is at the left
-of \fref{fb:13}. In this case it is \textit{Emery Walker --- Some Light
+    Another of the Cambridge University 
+Printer's\index{Cambridge University Press!Christmas Book} Christmas books 
+is at the left
+of \fref{fb:13}. In this case it is \btitle{Emery Walker --- Some Light
 on his Theories of Printing and on his Relations with William Morris
 and Cobden-Sanderson} by Colin Franklin and published in 1973. The
-page size is $295 \times 210$mm with a measure of $31$pc set with
-$15$pt leading. On the right is the default layout provided by the
+page size is \abybm{295}{210}{mm} with a measure of $31$pc set with
+$15$pt leading.  Unusually for this series it has chapter 
+heads\index{chapter!design} which are simply the number centered above 
+the title in a large font. It also has illustrations\index{illustration}
+which are listed on an Illustrations page where the caption\index{caption}
+titles are set flushleft and page numbers flushright. The page is divided
+into two lists. The first has a heading (centered) in italics of
+\textit{`In text'} with \textit{`page'} flushright above the page numbers.
+The second has the centered heading \textit{`In pocket at end'} and there
+are no page numbers in this list as the corresponding illustrations
+are not bound into the book, instead thay are loosely inserted in a 
+pocket at the end of the book.
+
+
+On the right is the default layout provided by the
 LaTeX $10$pt book class on US letterpaper\index{paper!size!letterpaper}.
 
 \begin{figure}
@@ -2270,20 +3133,47 @@ LaTeX $10$pt book class on US letterpaper\index{paper!size!letterpaper}.
          (Right) England, 1982.} \label{fb:14}
 \end{figure}
 
-    Adrian Wilson, who died in 1988, was an acclaimed American book designer.
-His work on book design, \textit{The Design of Books}, out of print since
-1988 but reissued in 1993 by
-Chronicle Books, is outlined
-at the left of \fref{fb:14}. This is in two columns\index{column!double}, with many illustrations\index{illustration},
-on letterpaper\index{paper!size!letterpaper} size pages. It is typeset in Palatino and Linotype Aldus
-with $12$pt leading. Each column is $18$pc wide. The other layout in this
-figure is B.~W.~Robinson's \textit{Kuniyoshi: The Warrior Prints} published
-by Phaidon, Oxford in 1982. The page size is $310 \times 242$mm with a
+    Adrian Wilson\index{Wilson, Adrian}, who died in 1988, was an 
+acclaimed American book designer.
+His work on book design, \btitle{The Design of Books}, out of print since
+1988 but reissued in 1993 by Chronicle Books, is outlined
+at the left of \fref{fb:14}. This is in two columns\index{column!double}, 
+with many illustrations\index{illustration},
+on letterpaper\index{paper!size!letterpaper} size pages. 
+It is typeset in Palatino\index{Palatino} and 
+Linotype Aldus\index{Linotype Aldus}\index{Aldus!Linotype} 
+with $12$pt leading. 
+Each column is $18$pc wide. The title page is a simple design and an
+example based on it is shown in \fref{fig:titleDB}. 
+Chapter\index{chapter!design} heads are 
+flushright in a large italic, preceeded by the number. 
+Section\index{section!design} heads are flushleft in uppercase and 
+subsection heads are also flushleft but in normal sized italics.
+The Contents\index{ToC!design} list is in the left hand column, typeset 
+using the normal font with titles flushleft and page numbers flushright;
+there is an engraving in the bottom half of the right hand column.
+There are no running headers. Verso footers\index{footer!design} have the
+chapter title flushleft in small caps with the folio\index{folio}
+to the left of this (i.e., in the margin); recto footers similarly have
+the chapter title flushright and the folio to the right in the margin.
+
+\begin{figure}
+\centering
+\begin{showtitle}
+\titleDB
+\end{showtitle}
+\caption{Title page design based on Adrian Wilson's \btitle{The Design of Books}} \label{fig:titleDB}
+\end{figure}
+
+The other layout in this
+figure is B.~W.~Robinson's \btitle{Kuniyoshi: The Warrior Prints} published
+by Phaidon, Oxford in 1982. The page size is \abybm{310}{242}{mm} with a
 measure of $28.5$pc. The type is set with $13$pt leading. The wide spine
-margin\index{margin} is used for some small reproductions of Japanese woodblock prints, 
-some of which extend across the binding itself. The majority of the book
-has no text apart from captioning the many reproduced prints which take 
-up full pages.
+margin\index{margin!spine}\index{margin!inner} is used for some small 
+reproductions of Japanese 
+woodblock prints, some of which extend across the binding itself. 
+The majority of the book has no text apart from captioning the many 
+reproduced prints which take up full pages.
 
 \begin{figure}
 \centering
@@ -2299,19 +3189,35 @@ up full pages.
          (Right) Switzerland, 1980.} \label{fb:15}
 \end{figure}
 
-    \textit{The Waterways of the Fens} by Peter Eden with drawings by
-Warwick Hutton is another of the Cambridge Printer's Christmas books.
+    \btitle{The Waterways of the Fens} by Peter Eden with drawings by
+Warwick Hutton is another of the Cambridge 
+Printer's\index{Cambridge University Press!Christmas Book} Christmas books.
 This is set with $17$pt leading on a measure of $27$pc. The original
-page size is $195 \times 150$mm and is illustrated on the left 
+page size is \abybm{195}{150}{mm} and is illustrated on the left 
 of \fref{fb:15}. 
 The amount of text on a page varies
 and there are many line drawings, some of which take a double spread.
-On the right of this figure is another art book, namely \textit{D\"{u}rer}
+Folios\index{folio} are in the outer margin level with the top
+line of text.
+
+On the right of this figure is another art book, namely \btitle{D\"{u}rer}
 by Fedja Anzelewsky published by Chartwell Books in 1980. This is set in
 two columns\index{column!double} with $14$pt leading on a $23.5$pc measure, 
 although there are more illustrations\index{illustration} than text. The page
-size is $280 \times 240$mm, considerably larger than its companion in
+size is \abybm{280}{240}{mm}, considerably larger than its companion in
 the figure, yet with much smaller margins\index{margin}.
+Roman numerals are used for chapter\index{chapter!design} heads which are
+set flushleft in a large font. Immediately below the chapter head is a line
+of `section' titles, flushleft, in a font size intermediate between the
+chapter head and the body. A centered dot is used to separate the section
+titles. Folios\index{folio} are set in the foot\index{footer!design} flush
+with the outside of the typeblock; there are no running heads. 
+The Table of Contents\index{ToC!design} title matches the chapter heads.
+Chapter title entries are set flushleft with their page numbers flushright.
+The section titles are set in a line below the chapter entry, again separated
+by centered dots. In the text, references to 
+illustrations\index{illustration} are placed in the outside margins in 
+a small font.
 
 \begin{figure}
 \centering
@@ -2330,25 +3236,45 @@ the figure, yet with much smaller margins\index{margin}.
 
 
     Two more layouts for illustrated books are given in \fref{fb:16}.
-In this case the illustrations\index{illustration} are drawings in landscape mode (i.e., they
-are wider than they are high); the shape of the drawings has had a major
-effect on the page proportions\index{proportion}. In the case on the left the page
-proportion\index{proportion} is in the ratio $\pi : e$. The measure is longer than usual
-at $37$pc and to compensate for this the leading of $17$pt 
-is also larger than customary. It is typeset in Centaur.
+In this case the illustrations\index{illustration} are drawings in landscape 
+mode (i.e., they are wider than they are high); the shape of the drawings 
+has had a major effect on the page proportions. In the case on the left 
+the page proportion is in the ratio \ratio{{\pi}}{e}. The measure is 
+longer than usual at $37$pc and to compensate for this the leading of $17$pt 
+is also larger than customary. It is typeset in Centaur\index{Centaur}.
 The book is
-\textit{Hammer and Hand} by Raymond Lister with drawings by Richard Bawden.
-It was published in 1969 by Cambridge University Press and is another of
-the University Printer's Christmas books.
-Shown on the right of \fref{fb:16} is \textit{Hokusai --- One Hundred Poets}
-by Peter Morse and published by George Braziller in 1989. The introductory
-text is set in two columns\index{column!double} as shown. The body consists of illustrations\index{illustration} of
-Japanese wood block prints, originally in the large \textit{oban} size
-of about $250 \times 380$ mm.
+\btitle{Hammer and Hand} by Raymond Lister with drawings by Richard Bawden.
+It was published in 1969 by Cambridge University 
+Press\index{Cambridge University Press!Christmas Book} and is another of
+the University Printer's Christmas books. Folios\index{folio}
+are in a large font at the outside edge of the page and level with the 
+top text line.
 
-\subsection{A geometric construction}
 
-    Nowadays it is easy to pick and calculate any kind of page proportion\index{proportion}
+Shown on the right of \fref{fb:16} is \btitle{Hokusai --- One Hundred Poets}
+by Peter Morse and published by George Braziller in 1989. The introductory
+text is set in two columns\index{column!double} as shown. The body consists 
+of illustrations\index{illustration} of Japanese wood block prints, 
+originally in the large \textit{oban} size of about \abybm{250}{380}{mm}.
+The half-title\index{half-title}\index{page!half-title} 
+is set in a large font in the top
+right hand corner of the page, but the text on the title\index{page!title}
+page is centered. The main body is organised with a wood block print
+on each recto page and the commentary on the facing verso page. At the
+top of each commentary page, centered, is the number of the print, a short
+rule, the title of the print in a large italic font, a longer rule,
+and then side by side the poem in Japanese and an English translation.
+The commentary itself is underneath, set in three raggedright 
+columns\index{column!multiple}; minor heading in the commentary are
+flushleft in small caps. The folio\index{folio} is at the center
+of the foot\index{footer!design}. At the end of the book is a commentary on
+those poems where there are no known illustrations; this is typeset
+raggedright in four columns\index{column!multiple}.
+
+
+\subsection{A geometric construction} \label{sec:gutenbergpage}
+
+    Nowadays it is easy to pick and calculate any kind of page proportion
 that takes your fancy, but how did the early printers do it? They certainly
 did not have the use of calculators and I suspect that they had only enough
 arithmetic to keep their accounts. Printing was a craft and craftsmen did
@@ -2356,14 +3282,15 @@ not release their trade secrets lightly. I believe that most of the designs
 were based on simple geometric figures, which required nothing more than
 a ruler and a pair of compasses.
 
-
- Jan Tschichold gives a simple construction for the layout of many of Gutenberg's 
-books~\cite[pages 44--57]{TSCHICHOLD91}, which is shown in \fref{flpage:lgut}.
+ Jan Tschichold\index{Tschichold, Jan} gives a simple construction for the 
+layout of many of the books based on Gutenberg's\index{Gutenberg, Johannes} 
+work~\cite[pages 44--57]{TSCHICHOLD91}, 
+which is shown in \fref{flpage:lgut}.
 The construction actually divides the page up into ninths (the point
 \textsc{p} in the diagram, which is at the intersection of the main and half
 diagonal construction lines, is one third of the way down and across both the
-page and the typeblock\index{typeblock}). This construction can be used no matter what the
-page proportions\index{proportion} and will give the same relative result.
+page and the typeblock\index{typeblock}). This construction can be used 
+no matter what the page proportions and will give the same relative result.
 
 
 \begin{figure}
@@ -2389,25 +3316,30 @@ page proportions\index{proportion} and will give the same relative result.
 \label{flpage:lgut}
 \end{figure}
 
+\index{proportion!typeblock|)}
+\index{proportion!page|)}
 \index{spread|)}
 
-\section{The typeblock} \label{sec:tblock}
 
+\section{The typeblock} \label{sec:tblock}
 
-    The typeblock\index{typeblock} is not just a rectangular block of text. If the typeblock\index{typeblock}
-does consist of text, then this will normally be broken up into paragraphs\index{paragraph};
-it is not good style to have paragraphs that are longer than a page. Also,
-the typeblock\index{typeblock} may include tables\index{table} and illustrations\index{illustration} which provide relief from
-straight text. Some pages may have chapter or section headings\index{heading}
- on them which
-will also break the run of the text. In general the typeblock\index{typeblock} will
+\index{typeblock|(}
+    The typeblock is not just a rectangular block of text. If the typeblock
+does consist of text, then this will normally be broken up into 
+paragraphs\index{paragraph}; it is not good authorial style to have 
+paragraphs that are longer than a page. Also, the typeblock may include 
+tables\index{table} and illustrations\index{illustration} which provide 
+relief from straight text. Some pages may have chapter or section 
+headings\index{heading} on them which
+will also break the run of the text. In general the typeblock will
 be a mixture of text, white space, and possibly non-text items.
 
-    Consider a typeblock\index{typeblock} that includes no illustrations\index{illustration} or tables\index{table}.
+    Consider a typeblock that includes no illustrations\index{illustration} 
+or tables\index{table}.
 The lines of text must be laid out so that they are easy to read.
 Common practice, and more recently psychological testing, has shown that
 long lines of text are difficult to read. Thus, there is a physiological
-upper limit to the width of the typeblock\index{typeblock}. From a practical viewpoint,
+upper limit to the width of the typeblock. From a practical viewpoint,
 a line should not be too short because then there is difficulty in justifying
 the text.
 
@@ -2416,27 +3348,29 @@ single column\index{column} text on a page should be
 in the range 60 to 70 for ease of reading. The range may be as much
 as 45 to 75 characters but 66 characters is often
 considered to be the ideal number. Much shorter and the eye is dashing
-back and forth between each line. Much longer it is hard to pick up the
+back and forth between each line. Much longer and it is hard to pick up the
 start of the next line if the eye has to jump back too far --- the same line
 may be read twice or the following line may be inadvertently jumped over.
-For double column\index{column!double} text the ideal number of characters is around 45, 
-give or take 5 or so.
+For double column\index{column!double} text the ideal number of characters 
+is around 45, give or take 5 or so.
 
-    Bringhurst~\cite{BRINGHURST92} gives a method for determining the number
+    Bringhurst\index{Bringhurst, Robert}~\cite{BRINGHURST99} gives a 
+method for determining the number
 of characters in a line for any font\index{font!measuring}: 
-measure the length of the lowercase
-alphabet and use a copyfitting\index{copyfitting} 
+measure the length of the lowercase alphabet and use a 
+copyfitting\index{copyfitting} 
 table that shows for a given alphabet 
 length and line length, the average number of characters in that line.
  Table~\ref{tab:copyfitting} is an
 abridged version of Bringhurt's copyfitting table.
 For example, it suggests that a font with a length of 130pt should be
-set on a measure of about 26pc for a single column\index{column!double} or in an 18pc wide
-column if there are multiple\index{column!multiple} columns.
+set on a measure of about 26pc for a single column\index{column!single} 
+or in an 18pc wide column if there are multiple\index{column!multiple} 
+columns.
  
 
 \begin{table}
-\DeleteShortVerb{\|}
+%%%\DeleteShortVerb{\|}
 \centering
 \caption{Average characters per line} \label{tab:copyfitting}
 \begin{tabular}{r|rrrrrrrr} \hline
@@ -2476,12 +3410,23 @@ Pts. & \multicolumn{8}{c}{Line length in picas} \\
 340  & 10 & 15 & 19 & 23 & 27 & 32 & 37 & 42 \\
 \hline
 \end{tabular}
-\MakeShortVerb{\|}
+%%%\MakeShortVerb{\|}
 \end{table}
 
+    Morten H{\o}gholm\index{H{\o}gholm, Morten} has done some curve fitting
+to the data. He determined that the expressions
+\begin{equation}
+L_{65} = 2.042\alpha + 33.41 \label{eq:L65}
+\end{equation}
+and
+\begin{equation}
+L_{45} = 1.415\alpha + 23.03 \label{eq:L45}
+\end{equation}
+fitted aspects of the data, where $\alpha$ is the length of the alphabet
+in points, and $L_{i}$ is the suggested width in points, for a line with
+$i$ characters (remember that 1pc = 12pt).
 
-
-   The vertical height of the typeblock\index{typeblock} should be constant from page to
+   The vertical height of the typeblock should be constant from page to
 page. The lines of text on facing pages should be aligned
 horizontally across the spine, which also means that they will be at
 the same place on both sides of a leaf. Alignment across the spine
@@ -2489,14 +3434,14 @@ means that the eye is not distracted by an irregularity at the centre
 of a spread, and leaf alignment stops ghosting of text through a thin page,
 giving a crisper look to the work. 
 So, the spacing between lines should
-be constant. This implies that the depth of the typeblock\index{typeblock} should be an
+be constant. This implies that the depth of the typeblock should be an
 integral multiple of the space required for each line; that is, be specified
 as a multiple of the leading. A ten point type, for example, will normally
 have two points between lines, to give a leading of 12 points. This can be
 written as 10/12. Usefully, one pica is 12 points so with a 12pt leading
 vertical distances can be conveniently expressed in picas 
-(one pica per line). Another
-implication of this is that any space left for illustrations\index{illustration} or tables\index{table}, or
+(one pica per line). Another implication of this is that any space left 
+for illustrations\index{illustration} or tables\index{table}, or
 the amount of space taken by chapter and section headings\index{heading} 
 should also be
 an integer multiple of the leading\index{leading}.
@@ -2510,33 +3455,35 @@ of the \emph{p}. To avoid this, the vertical separation between baselines
 is increased above the type size. Adding two extra points of vertical space
 allows the text to breathe, and gives a leading of 12 points. Few fonts
 read well when set solid. Typical settings are 9/11, 10/12, 11/13 and 12/15.
-Longer measures require more leading than shorter ones, as do darker and larger
+Longer measures require more leading than shorter ones, as do darker 
+and larger
 fonts compared with lighter and smaller fonts. More leading is also
-useful if the text contains many super-\index{superscript} or sub-scripts, 
-or many uppercase 
-letters.
+useful if the text contains many super-\index{superscript} or 
+sub-scripts\index{subscript}, or many uppercase letters.
 
+\index{typeblock|)}
 
 
 \subsection{Page color}
 
     One of the aims of the typographer is to produce pages that are uniform
-in `color'\index{page color}. 
-By this they mean that the typeblock\index{typeblock} has a reasonably constant
+in `color'\index{page color}. By this they mean that the 
+typeblock\index{typeblock} has a reasonably constant
 grayness, not being broken up by too much white space which is a distraction
 to the reader. There will be white space around headings\index{heading}, 
-which is acceptable
-as a heading is meant to attract attention. There may be white space between 
-paragraphs\index{paragraph}, but this is usually under the control of the designer. There 
-may be vertical rivulets of white space when the interword spaces on
-adjacent lines coincide; fixing this usually requires some handwork, either
+which is acceptable as a heading is meant to attract attention. 
+There may be white space between paragraphs\index{paragraph}, and this is 
+usually under the control of the designer. But there 
+may be vertical rivulets, or even rivers, of white space when the 
+interword spaces on adjacent lines coincide; fixing this usually 
+requires some handwork, either
 by the author changing his wording so as to alter the location of
 the spaces, or by the typesetter tweaking a little bit. 
 
     Another form of distraction is if too many lines end with hyphens, or
-several adjacent lines start or end with the same text; this not only
-will cause a rivulet but will make it harder for the reader to reliably
-jump to the next line.
+several adjacent lines start or end with the same text; not only does
+this cause a stack of identical characters but will make it harder for 
+the reader to reliably jump to the next line.
 
     The main font used controls the depth of the color of a page. To
 see what color is produced by a particular font it is necessary to look
@@ -2552,20 +3499,23 @@ Morison~\cite{MORISON99} all show pages set in many different fonts.
 
 \subsection{Legibility}
 
-    One of the principle requirements on the typography of a document is that
-the document is \emph{legible}. Legibility means that the document is designed
-to be easily read under a certain set of circumstances. The criteria for
+    One of the principle requirements on the typography of a document is 
+that the document is \emph{legible}. Legibility\index{legibility} 
+means that the document 
+is designed to be easily read under a certain set of circumstances. 
+The criteria for
 legibility on a poster that is placed on the side of a bus, for example, are
 different from those that apply to a book to be read while sitting in an
 easy chair. Essentially, the viewer should be able to read the document
-with no physical strain caused by the appearance, but the contents, of course,
-may lead to anything ranging from acute mental strain to extreme boredom.
+with no physical strain caused by the appearance, but the contents, 
+of course, may lead to anything ranging from acute mental strain to 
+extreme boredom.
 
-    Type faces and the layout of the typeblock\index{typeblock} must be chosen to optimise
-between legibility and `artistic' presentation. The design of the document
-should be almost invisible, giving full compliments to the author's
-communication. However, if you are a master, like
-Hermann Zapf~\cite{ZAPF00}, you can break the rules.
+    Type faces and the layout of the typeblock\index{typeblock} must be 
+chosen to optimise between legibility and `artistic' presentation. 
+The design of the document should be almost invisible, giving full 
+compliments to the author's communication. However, if you are a master, 
+like Hermann Zapf\index{Zapf, Hermann}~\cite{ZAPF00}, you can break the rules.
 
     
 
@@ -2578,36 +3528,46 @@ picked up on this later style of letter form. In carving inscriptions, they
 first wrote the inscription on the stone using a broad, flat brush. This
 naturally led to serifs and differing thicknesses of the letter strokes,
 depending on the angle of the stroke with respect to the movement and
-orientation of the brush.
+orientation of the brush. Similarly the written letterforms included
+serifs.
 
     Between the Roman times and Gutenberg there were many changes and
 experiments in European letterforms. The scribes used different scripts
 for titles, subheads, continuous text, illuminated initial letters, and so
-on. In time, two families of letterforms evolved, called \emph{majuscules}
-and \emph{miniscules}. The former were larger and more formal, while the latter
+on. In time, two families of letterforms evolved, 
+called \emph{majuscules}\index{majuscule} and \emph{minuscules}\index{minuscule}. 
+The former were larger and more formal, while the latter
 were smaller and less formal. We now call these two divisions upper case and
 lower case. The upper case derives from Roman times, while the lower case
 acquired its fundamental form during the reign of the Holy Roman Emperor
-Charlemagne a thousand years later.
+Charlemagne\index{Charlemagne} a thousand years later. In order to 
+promote communication
+throughout his wide flung empire the Anglo Saxon Benedictine monk 
+Alcuin\index{Alcuin}, at the behest of Charlemagne, established a common
+script to be used; this is now called Carolingian 
+minuscule\index{minuscule!Carolingian}.
 A further division also appeared, between black letter (what is
 commonly referred to as Gothic or Old English) type and the roman type.
 
-    These types were all upright. Italic letterforms were cut in Italy
+    These types were all upright. Italic\index{italic} letterforms were 
+cut in Italy
 in the early sixteenth century, as a more cursive style. Initially these were
 lower case only, used in conjunction with upper case roman. By the end of
 the century, sloped roman capitals were also in use with italic.
 
+\index{serif versus sans-serif type|(}
 \index{font!seriffed|(}
 \index{font!sans|(}
-    The late nineteenth century saw the appearance again of sans-serif
+    The late nineteenth century saw the appearance again of sans-serif\index{sans}
 typefaces.
 
-    Looking carefully at seriffed and sans-serif fonts it is apparent that
+    Looking carefully at seriffed\index{serif} and sans-serif fonts it is apparent that
 the serifs have three main functions:
 \begin{enumerate}
 \item They help to keep letters apart.
 \item At the same time, they help to keep letters in a word together. This
-  helps with legibility as research has shown that we tend to recognize
+  helps with legibility\index{legibility} as research has shown that 
+  we tend to recognize
   words by the shape of the word rather than by individual characters.
 \item They help to differentiate between individual but similar letters.
 \end{enumerate}
@@ -2640,7 +3600,8 @@ does it stand for `Ill', `one hundred and eleven', `three', or something
 completely different like a dingbat or a set of cricket stumps?
 
     
-    There are three generally agreed legibility principles for setting text for
+    There are three generally agreed legibility\index{legibility} 
+principles for setting text for
 continuous reading.
 
 \begin{enumerate}
@@ -2684,7 +3645,8 @@ picking up the correct one.
     Text lines are justified by altering the inter-word spacing, and possibly
 by hyphenating the last word on the line if the spacing would be too bad
 otherwise. Sans-serif fonts often look best if set ragged right, as this will
-keep the inter-word spacing constant. Text set in narrow columns\index{column} also often
+keep the inter-word spacing constant. Text set in narrow 
+columns\index{column!narrow} also often
 looks best when set ragged right.
 
 
@@ -2692,9 +3654,10 @@ looks best when set ragged right.
 
 \subsubsection{Seriffed versus sans-seriffed fonts}
 
+
     As noted earlier there seems to be a permanent debate over the use
 of seriffed and sans fonts. You will have to make up your own mind as
-to what is best for any particular work, but here are some general
+to what is best for any particular work, but here are a few general
 comments from some of the literature on the subject.
 
 \begin{itemize}
@@ -2741,6 +3704,58 @@ in a variety of uses. Among the many results he reported:
 typefaces for continuous reading, but for titling the choice is
 wide open.
 
+
+    To finish off in a lighter vein,  
+    Daniel Luecking\index{Luecking, Daniel} had this to say on the subject
+in a posting to \pixctt\ in January 2002.
+\begin{quotation}
+    It is often conjectured that serifed fonts are easier to read because
+the serifs contribute more points of difference between words. This is
+often countered with the conjecture that they are easier to read because 
+that is what we are used to reading. But no one can doubt that words
+like Ill, Iliad and Illinois in a sans-serif font 
+[e.g., \textsf{Ill, Iliad and Illinois}] are going to cause the eye/brain 
+system at last momentary confusion while it sorts out which plain vertical
+lines are uppercase i's and which lowercase L's.
+
+    I don't know if this contributes anything, but I can say unequivocally
+that serif fonts are somwhat easier to read upside down than sans-serif,
+but sans-serif is far easier to read mirored than serif. (I spent much
+of my time as a child reading comics on the floor with my brother. As
+he hated reading any way but straight on, we faced in different directions
+and I saw the page upside down. I tried mirror reading just to se if
+I could do that as easily. Serif fonts were almost impossible, sans-serif
+actually quite easy.)
+
+\end{quotation}
+
+    He later expanded on the mirror reading to me as follows.
+\begin{quotation}
+Here's an interesting (to me) anecdote about mirror reading: I was waiting
+in line at an airport lunch counter, reading the menu posted on the wall,
+when it suddenly struck me as odd that the menu was on the wall opposite
+(so that one had to turn away from the counter to read it). Then I
+realized in a sort of flash that I was reading it from a mirror. I turned
+to look at the real menu and was momentarily disoriented (while my brain
+turned itself around I guess) before I could read the actual menu. That
+was when I first ran some tests to see why that was so easy to read and
+other mirror writing was not. It seemed to be serif vs sans-serif, but
+it might also be the typical letter forms: the typical serif lower case
+`a', the one with the 'flag' above the bowl [e.g., a], is particularly 
+difficult to recognize compared to the simple `circle plus stick' 
+[e.g., \textit{a}] form.
+
+    Some sort of dyslexia (or eulexia), no doubt, when backwards
+words are nearly as easy to read as normal ones.
+\end{quotation}
+
+
+\index{font!sans|)}
+\index{font!seriffed|)}
+\index{serif versus sans-serif type|)}
+
+
+
 \index{font!sans|)}
 \index{font!seriffed|)}
 
@@ -2748,21 +3763,33 @@ wide open.
 
     Inconvenient page breaks can also cause a hiatus in the reader's perusal
 of a work. These happen when a page break occurs near the start or end of
-a paragraph\index{paragraph}. 
-
-    A \emph{widow}\index{widow} is where the last line of a paragraph\index{paragraph} is the first
-line on the page. The term is sometimes also used to refer to when the
-last word in a paragraph\index{paragraph} is on a line by itself. A widow looks forlorn. 
-As Robert Bringhurst said, `A widow has a past but no future'.
-Typographically, widows should be avoided. Especially to be avoided 
-are widows that are
-the only line on a page, for example at the end of a chapter\index{chapter}. Five lines
-on the last page of a chapter\index{chapter} is a reasonable minimum.
-
-    An orphan\index{orphan} is not nearly so troubling to typographers as a widow. An
-\emph{orphan} is where the first one or two lines of a paragraph\index{paragraph} are at the
-bottom of a page. Bringhurt's memory trick for orphans is, `An orphan has
-a future but no past'.
+a paragraph\index{paragraph}\index{lonely line}. 
+
+    A \emph{widow}\index{widow} is where the last line of a 
+paragraph\index{paragraph} is the first line on the page. The term is 
+sometimes also used to refer to when the last word in a 
+paragraph\index{paragraph} is on a line by itself. A widow looks forlorn.
+In German they are called \textit{Hurenkinder}\index{Hurenkinder} --- 
+whores' children --- which seems rather cruel to me.
+As Robert Bringhurst said, `A widow has a past but no future'. 
+Typographically, widows should be avoided as they are a weak start to a page 
+and may optically destroy the page and type rectangle. However, a single widow
+is not too troubling if the header includes a rule across the width of the 
+typeblock. Especially to be 
+avoided are widows that are the only line on a page, for example at the end 
+of a chapter\index{chapter}. Five lines on the last page of a 
+chapter\index{chapter} is a reasonable minimum. 
+Jan Tschichold~\cite{TSCHICHOLD91} claims that Hurenkinder can always 
+be avoided by even if a recto (verso) page must be made a line shorter or
+longer than the corresponding verso (recto) page, which he considers to be 
+less of an affront than widows.
+
+    An orphan\index{orphan} is not nearly so troubling to typographers as a 
+widow. An \emph{orphan} is where the first one or two lines of a 
+paragraph\index{paragraph} are at the bottom of a page. In German they are 
+called \textit{Schusterjungen}\index{Schusterjungen} --- cobbler's apprentices.
+Bringhurt's memory trick for orphans is, `An orphan has a future but no 
+past'.\index{lonely line} 
 
 \subsection{Paragraphs and versals} \label{sec:versal}
 
@@ -2771,7 +3798,9 @@ a future but no past'.
     Early books did not have paragraphs as we know them nowadays; the text
 was written continuously, except for a break at a major division like the
 start of a new book in a bible. Instead
-the scribes used a symbol like \P\ (the pilcrow) to mark the beginning of
+the scribes used a symbol like \P\ 
+(the pilcrow)\index{pilcrow (\P)} 
+to mark the beginning of
 paragraphs. This symbol is derived from the Greek $\Pi$, for
 \textit{par\'{a}graphos}. Mind you, they often did not use any punctuation
 at all and were sparing in their use of uppercase letters, 
@@ -2783,6 +3812,11 @@ usque \P\ te canit adcelebratque polus rex gazifier hymnis
        \P\ transzephyrique globum scandunt tua facta per axem
 \end{quote}
 
+    Often the \P\ was colored red by the rubricators\index{rubricator} and the
+scribe, or printer, would leave a blank space for the rubricator to add the \P.
+This did not always happen and the start of a paragraph eventually became
+marked by a space rather than a symbol.
+
     Nowadays paragraphs are ended by stopping the line of text at 
 the end of the
 paragraph, and then starting the next paragraph on a new line. The question
@@ -2794,13 +3828,14 @@ each paragraph, or put additional vertical space between the last and
 first lines of paragraphs.
 
     The traditional technique, which has served well for centuries, is to
-indent the first line of a paragraph\index{paragraph!indentation}. The indentation need not be large,
-about an em will be enough, but more will be required if the typeblock\index{typeblock}
-is wide.
+indent the first line of a paragraph\index{paragraph!indentation}. 
+The indentation need not be large, about an em will be enough, but 
+more will be required if the typeblock\index{typeblock} is wide.
 
     The other method is used mainly in business letters and is a recent 
-invention. The first lines of paragraphs\index{paragraph!indentation} are not indented and typically
- one blank line is left between paragraphs. This may
+invention. The first lines of paragraphs\index{paragraph!indentation} 
+are not indented and typically one blank line is left between paragraphs. 
+This may
 perhaps be acceptable when using a typewriter, but seems to have no real
 justification aesthetically. There is also the problem when a paragraph
 both ends with a full line and ends a page. As the next paragraph then starts
@@ -2813,10 +3848,12 @@ or not.
 then there
 is no need to indicate that it is a new paragraph --- it is obvious from its
 position. So, the first paragraph after a heading\index{heading} 
-should not be indented\index{paragraph!indentation}.
+need not be indented\index{paragraph!indentation}, and for some centuries now 
+the tradition is not to indent after a heading.
 In some novels only chapters are headed yet each chapter is broken into
 sections by putting additional vertical blank space between the sections.
-Like nonindented paragraphs\index{paragraph!indentation}, this can cause problems where a section division
+Like nonindented paragraphs\index{paragraph!indentation}, 
+this can cause problems where a section division
 coincides with a page break. In this case, typographers sometimes use a
 decoration to separate sections (for example, a short centered row of a few
 asterisks).
@@ -2830,7 +3867,8 @@ like to start the first paragraph in a chapter
 with a versal. A \emph{versal} is a large initial letter, either raised or
 dropped. This comes from the scribal tradition of illuminating the first
 letter of a manuscript. The versal may be raised or dropped, as already noted,
-or it may be placed in the margin\index{margin}, or otherwise treated in a special manner.
+or it may be placed in the margin\index{margin}, or otherwise treated in 
+a special manner.
 
 \versal{S}\textsc{ome versals,} especially dropped versals, are very difficult
 to typeset correctly. Many attempts of this kind are abject failures, so
@@ -2839,9 +3877,9 @@ first two paragraphs. They are both of the same letter and font, yet the first
 one is horrible compared to the one starting this paragraph.
 
 
-\noindent {\huge I}\textsc{t is easier} to start a paragraph with 
-a raised
-capital than one that is dropped. A raised versal should only be used
+\noindent {\huge A}\textsc{raised versal} is often easier to use to 
+start a paragraph than a dropped versal. 
+However, a raised versal should only be used
 where there is naturally some vertical space above it. As you can see, extra
 spacing has had to be inserted before this paragraph to accomodate the versal.
 There are still problems with typesetting a raised versal but as these tend
@@ -2864,19 +3902,20 @@ contrast with the lower-case.
 \subsection{Footnotes}
 
 \index{footnote|(}
-    Footnotes are considered to be part of the typeblock\index{typeblock}. They are
-typeset in the space allocated for the typeblock\index{typeblock}, in contrast to 
-footers\index{footer}
+    Footnotes are considered to be part of the typeblock\index{typeblock}. 
+They are typeset in the space allocated for the typeblock\index{typeblock}, 
+in contrast to footers\index{footer}
 which are typeset below the typeblock\index{typeblock}.
 
-    Footnotes are normally set in the same type style as the typeblock\index{typeblock}. 
-That is, if an upright seriffed font is used for the typeblock\index{typeblock}, it is
+    Footnotes are normally set in the same type style as the 
+typeblock\index{typeblock}. That is, if an upright seriffed font is used 
+for the typeblock\index{typeblock}, it is
 also used for the footnote. The
 type size is smaller to distinguish the note from the body text and often
 the leading in the footnote is also reduced from that in the main text body.
 The bottom footnote line should be at the same height as the bottom line
-of the typeblock\index{typeblock}. This usually requires some adjustment of the vertical 
-space before the footnotes.
+of the typeblock\index{typeblock}. This usually requires some adjustment 
+of the vertical space before the footnotes.
 
     A vertical blank space is often used to set off the footnotes from the
 main text, and sometimes a short horizontal line is also used as demarcation.
@@ -2895,24 +3934,26 @@ in a book. Here I use folio in this last sense.
     Documents should have folios, at a minimum to help the reader know where
 he is. Occasionally books have their folios placed near the spine but this
 positioning is unhelpful for navigation. The more usual positions are
-either centered with respect to the typeblock\index{typeblock} or aligned with the outside
-of the typeblock\index{typeblock}, and sometimes even in the outside margin\index{margin}. The folios
+either centered with respect to the typeblock\index{typeblock} or aligned 
+with the outside of the typeblock\index{typeblock}, and sometimes even in 
+the outside margin\index{margin!outer}. The folios
 can be either at the top or bottom of the page but at least on pages 
-with chapter\index{chapter} openings are normally placed at the bottom of the page so that
-they do not distract from the title text.
+with chapter\index{chapter} openings are normally placed at the bottom of 
+the page so that they do not distract from the title text.
 
-    Every page in a document, except perhaps the title and half title pages
-in a book, should be numbered, even if the page does not have a folio. 
+    Every page in a book is numbered, even if the page does not have a folio. 
 In books, the folios for the front material are often in roman numerals.
-The main and rear matter folios are arabic numerals, with the sequence
-starting from 1 after the front matter. In certain technical documents,
-folios may be in the form of chapter number\index{chapter!number} and page number, with the page 
-number starting from 1 in each new chapter. Other folio schemes are possible 
-but unusual.
-
-    Folios should be placed harmoniously with respect to the typeblock\index{typeblock} and
-page margins\index{margin}. The font used for the folios need not be the same as that
-for the typeblock\index{typeblock} but must at least be complementary and non-intrusive.
+The \pixmainmatter\ and \pixbackmatter\ folios are arabic numerals, 
+with the sequence
+starting from 1 after the \pixfrontmatter. In certain technical documents,
+folios may be in the form of chapter number\index{chapter!number} and 
+page number, with the page number starting from 1 in each new chapter. 
+Other folio schemes are possible but unusual.
+
+    Folios should be placed harmoniously with respect to the 
+typeblock\index{typeblock} and page margins\index{margin}. The font used for 
+the folios need not be the same as that for the typeblock\index{typeblock} 
+but must at least be complementary and non-intrusive.
 
 \index{folio|)}
 
@@ -2920,21 +3961,23 @@ for the typeblock\index{typeblock} but must at least be complementary and non-in
 
 \index{header|(}\index{footer|(}
     Headers and footers are repetitive material that is placed at either 
-the head or the foot of the page. Typically, folios\index{folio} are headers or footers,
-but not always as sometimes they are placed in the margin\index{margin} at or below the
-first line in the typeblock.\index{typeblock}
+the head or the foot of the page. Typically, folios\index{folio} are headers 
+or footers, but not always as sometimes they are placed in the 
+margin\index{margin} at or below the first line in the 
+typeblock.\index{typeblock}
 
-   From now on I will not distinguish between headers and footers and 
+   For the time being I will not distinguish between headers and footers and 
 just use the word header. Sometimes the header is purely decorative (apart
-from a folio\index{folio}) like a horizontal line or some other non-textual marking.
-Normally they have a functional use in helping the reader locate himself
-in the document.
+from a folio\index{folio}) like a horizontal line or some other non-textual 
+marking. Normally, though, they have a functional use in helping the 
+reader locate himself in the document.
 
     The most ubiquitous header is one which gives the title of the document.
 If this is the only header, then I consider this to be decorative rather
 than functional. As a reader I know what document I am reading and do not
 need to be reminded every time I turn a page. More useful are headers that
-identify the current part of the document, like a chapter\index{chapter} title or number.
+identify the current part of the document, like a chapter\index{chapter} 
+title or number.
 When you put the document down and pick it up later to continue reading, these
 help you find your place, or if you need to refer back to a previous chapter
 for some reason, then it is a boon to have a chapter heading\index{heading} 
@@ -2946,25 +3989,629 @@ on alternate pages.
 
     Occasionally both headers and footers are used, in which case one normally
 has constant text, like a copyright\index{copyright} notice. 
-I have the feeling that using
-the latter is only functional for the publishers of the document
-when they fear photocopying or some such.
+I have the feeling that using the latter is only functional for the 
+publishers of the document when they fear photocopying or some such.
 
     The header text is usually aligned with the spine side 
-of the typeblock\index{typeblock}, but may be centered on top of the typeblock\index{typeblock}. In any event,
-it should not interfere with the folio\index{folio}. The type style need not be the same
-as the style for the typeblock\index{typeblock}. For example, headers could be set in italic
-or small caps, which must blend with the style used for the 
+of the typeblock\index{typeblock}, but may be centered on top of the 
+typeblock\index{typeblock}. In any event, it should not interfere with 
+the folio\index{folio}. The type style need not be the same as the style 
+for the typeblock\index{typeblock}. For example, headers could be set in italic
+or small caps, which, however, must blend with the style used for the 
 typeblock.\index{typeblock}
 
 \index{footer|)}\index{header|)}
 
+\section{Electronic books}
+\index{electronic books|(}\index{Ebook|see{electronic books}}
+
+    For want of a better term I am calling electronic books, or Ebooks, 
+those documents intended to be read on a computer screen. The vast bulk
+of Ebooks are in the form of email but I'm more interested here in 
+publications that are akin to hardcopy reports and books that require
+more time than a few minutes to read.
+
+    Unlike real books which have been available for hundreds of years there
+is virtually no experience to act as a guide in suggesting how Ebooks should
+appear. However, I offer some suggestions for the layout of Ebooks, based on
+my experience of such works. 
+Not considered are internal navigation aids
+(e.g., hyperlinks) within and between Ebooks, nor HTML documents where
+the visual appearance is meant to set by the viewing software and not 
+by the publisher.
+
+    The publication medium is obviously very different --- a TV-style 
+screen with limited resolution and pretty much fixed in position versus
+foldable and markable paper\index{paper} held where the reader finds it best.
+These differences lead to the following suggestions.
+
+    A book can be held at whatever distance is comfortable for reading, even
+when standing up.
+The computer user is normally either sitting in a chair with the monitor
+on a desk or table, or is trying to read from a laptop, which may be 
+lighter but nobody would want to hold one for any length of time. To try
+and alleviate the physical constraints on the Ebook reader the font size
+should be larger than normal for a similar printed book. This will provide
+a wider viewing range. A larger font will also tend to
+increase the sharpness of the print as more pixels will be available for
+displaying each character.
+    The font size should not be less than 12pt. The font may have to be
+more robust than you would normally use for printing, as fine hairlines 
+or small serifs will not display well unless on a high resolution screen.
+
+    I find it extremely annoying if I have to keep scrolling up and down
+to read a page. Each page should fit within the screen, which means that
+Ebook pages will be shorter than traditional pages. 
+A suggested size for an Ebook page, in round numbers, is 
+about 9 by 6 inches~\cite{ADOBEBOOK} or 23 by 15 centimetres overall.
+
+    The page design for printed books is based on a double spread. For
+Ebooks the design should be based on a single page. The 
+typeblock\index{typeblock} must be centered on the page otherwise it gets 
+tiring, not to mention aggravating, if your eyes have to 
+flip from side to side when moving from one page to the next. Likewise
+any header\index{header} and the top of the typeblock\index{typeblock} 
+must be at a constant height on the screen. A constant position for the 
+bottom of the text is not nearly so critical.
+
+    It is more difficult with an Ebook than with a paper book 
+to flip through it to find a particular place. 
+Navigation aids --- headers\index{header} and footers\index{footer} ---
+are therefore more critical. Each page should have both a chapter 
+(perhaps also a section) header\index{header} title and a page number. 
+Note that I'm not considering HTML publications.
+
+    Many viewers for Ebooks let you jump to a particular page. The page
+numbers that they use, though, are often based on the sequence number from
+the first page, not the displayed folio\index{folio}. In such cases it 
+can be helpful to arrange for a continuous sequence of page numbers, 
+even if the folios\index{folio} are printed using different styles. 
+For example, if the \pixfrontmatter\ uses roman numerals and the 
+\pixmainmatter\ arabic numerals and the last page of the
+\pixfrontmatter\ is page xi, then make the first page of the \pixmainmatter\ 
+page 12.
+
+    I see no point in Ebooks having any blank pages --- effectively the
+concept of recto and verso pages is irrelevant.
+
+    Some printed books have illustrations\index{illustration} that are 
+tipped in, and the tipped in pages are sometimes excluded from the 
+pagination. In an Ebook the illustrations\index{illustration} have to 
+be `electronically tipped in' in some fashion, either
+by including the electronic source of the illustrations\index{illustration} 
+or by providing some navigation link to them. Especially in the former case, 
+the tipped in elements should be included in the pagination.
+
+    Don't forget that a significant percentage of the population is 
+color-blind.\index{color|(}\index{color!blind} 
+The most common form is a reduced ability to distinguish
+between red and green; for example some shades of pink may be perceived
+as being a shade of blue, or lemons, oranges and limes may all appear to
+be the same color. Along with color-blindness there may be a reduced
+capacity to remember colors.
+
+    I have seen Ebooks where color has been liberally used to indicate, say, 
+different revisions of the text or different sources for the data in a graph. 
+Unless the colors used are really distinctive 10\% or more of the potential 
+readership will be lost or confused. Further,
+Ebooks may be printed for reading off-line and if a non-color printer is
+used then any colors will appear as shades of grey; these must be such that
+they are both readily distinguishable and legible. Yellow on white is almost
+as difficult to read as off-white on white or navy blue on black, all of
+which I have seen on web sites but rarely have I seen the text after I 
+have tried to print the page.
+
+\index{color|)}
+\index{electronic books|)}
+
+
+\chapter{Styling the elements}
+
+    A book should present a consistent typographic style throughout, although
+some elements, principally those in the \pixfrontmatter\ and \pixbackmatter\ 
+may be treated slightly differently than the main body. 
+
+    Much of this chapter is based my interpretation of my namesake's 
+work~\cite{ADRIANWILSON93} and the \btitle{Chicago Manual of Style}~\cite{CMS}.
+
+\section{\prFrontmatter}
+
+\subsection{Title pages}
+
+    The main and half-title pages are the gatekeepers to the book. As such,
+they need to be welcoming and give an indication of the `look and feel'
+of the contents. You don't want to scare off potential readers before they
+have even cursorily scanned the contents.
+
+    The half-title\index{page!half-title}\index{half-title page}, or bastard 
+title\index{bastard title|seealso{half-title}}, page contains just the 
+title of the
+work, which is traditionally set high on the page --- perhaps about as high
+as the chapter openings. The title page\index{page!title}\index{title page} 
+itself presents the title in full, 
+the author and maybe the illustrator or
+other names likely to attract the reader, and perhaps the publisher and date.
+Both the title pages are recto but the full title may be a double spread.
+The full title layout in particular must be both attractive and informative.
+
+\subsubsection{Advertising}
+
+    If the book is one of a series, or the author has been prolific, then
+details of associated works may be provided. Titles by the same author
+are usually set in italic, and a series title perhaps in small caps. The
+font size should be no larger than for the main text. This advertising material
+may be put on the copyright page but it is more often on the recto page
+immediately after the half-title, before the title page, or on the verso of 
+the half-title\index{half-title page}\index{page!half-title} page.
+
+\subsubsection{Frontispiece}
+
+    The traditional place for a frontispiece\index{frontispiece}, 
+which may be the only
+illustration in the book, is facing the title page. Every attempt must be
+made to make the resulting double spread hamonious.
+
+\subsection{Copyright page}
+
+    The copyright\indextwo{copyright}{page} and related publishing 
+information is set in small type
+on the verso of the title page. In some instances the book designer's name may
+be listed among the small print.
+
+\subsection{Dedication}
+
+    A dedication\index{dedication} is nearly always on a recto page and 
+simply typeset. If 
+pages are limited it could be placed at the top of the copyright 
+page\indextwo{copyright}{page} instead.
+
+\subsection{Foreword and preface}
+
+    The same type size should be used for the headings 'foreword', `preface',
+`acknowledgements', etc., and the similar ones in the \pixbackmatter. This
+may be the same size as the chapter heads, or smaller. The body type should be
+the same as for the \pixmainmatter\ text.
+The foreword\index{foreword} starts on a recto page. It may face the 
+copyright page\indextwo{copyright}{page}, or if 
+there is a dedication\index{dedication} it will face the dedication's 
+blank verso.
+
+    The preface\index{preface}, which is the author's opening statement, 
+is treated like a chapter opening, and commences on a recto page.
+
+\subsection{Acknowledgements}
+
+    If there are any acknowledgements\index{acknowledgements} and they 
+require only a few sentences then they are often put at the end of the 
+preface\index{preface}, if there is one. Otherwise the acknowledgements
+shoud be treated as a distinct unit, like a foreword or preface, and commence
+on a recto page.
+
+\subsection{Contents and illustration lists}
+
+    The table of contents\indextwo{contents}{list} is often laid out so 
+that the page numbers
+are not too distant from the titles, thus reducing the need for dotted lines,
+even if this makes the contents block narrower than the text page width. 
+An alternate strategy is to use more interlinear space between the entries
+so that there is little or no difficulty in recognising which page
+numbers belong to which titles. The parts of major sections should be
+clearly separated to aid visual navigation.
+
+   If the captions in an illustration list\indextwo{illustration}{list} 
+are short, and it follows the
+contents list then it should be set in the same style as the contents. 
+If, however, the list is at the back of the book a smaller font size could 
+be used.
+
+\subsection{Introduction}
+
+    The heading for an Introduction\index{introduction} is an unnumbered
+chapter opening on a recto page. The body text is set in the same font 
+as the main body text. 
+
+\subsection{Part title page}
+
+    If the book is divided into Parts\index{part} then the Part One 
+page\indextwo{page}{part title} could either precede or follow the 
+Introduction. Ideally the layout of the title pages for the Parts should
+follow the layout of the book's half-title\indextwo{page}{half-title} page 
+to provide a cohesiveness throughout the work.
+
+\section{\prMainmatter}
+
+\subsection{Chapter openings}
+
+    Normally, chapters are the major divisions of a (volume of a) book, 
+but if it is long
+it may have higher divisions, such as parts, or even books. In any event,
+chapters are numbered consecutively throughout the volume. The numbering
+is usually arabic but if there are few chapters, or there are numbered
+subdivisions within chapters, or the work has classical allusions, then
+roman numerals might be appropriate.
+
+    Chapters often begin on recto pages but if there are many short chapters
+or reproduction cost is all important then they may begin on the page
+immediately following the end of the previous chapter, or, in rare cases,
+even on the same page if there is enough space. In any event, the first chapter
+should start on a recto page.
+
+\subsection{Mixed portrait and landscape pages}
+
+    It is usual for all the pages in a document to be in 
+portrait\index{orientation}\index{portrait}\indextwo{orientation}{portrait}
+but this is not always possible if there are illustrations or tabular material
+that is better displayed in 
+landscape\index{landscape}\indextwo{orientation}{landscape} 
+orientation rather than portrait.
+
+    When a double spread consists of a portrait page and a landscape page, as 
+in~\fref{fig:portrait-landscape} and~\ref{fig:landscape-portrait}, there are
+two choices for which way the landscape page is turned with respect to the
+portrait page. In each case it seems more natural to me when the document 
+has to be turned to the right to view the landscape page. 
+
+
+    Figure~\ref{fig:landscape-landscape} shows double spreads where both pages
+are in landscape orientation. Whichever way they face, they must both face in
+the same direction so that the document has only to be turned once to read
+both of them.
+
+    The general rule for mixed landscape and portrait pages is that the
+document is held in one position to read the 
+portrait\indextwo{orientation}{portrait} pages and is turned
+in a consistent direction, usually to the right, to read the 
+landscape\indextwo{orientation}{landscape} pages. The key is consistency.
+
+\begingroup
+\newcommand*{\tht}{6}
+\newcommand*{\twd}{8}
+\newcommand*{\htwd}{4}
+\setlength{\unitlength}{0.5cm}
+
+\begin{figure}
+\centering
+\mbox{}\hfill
+\begin{picture}(\twd,\tht)
+  \put(0,0){\framebox(\htwd,\tht){\textsc{portrait}}}
+  \put(\htwd,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{90}{\textsc{landscape}}}}
+\end{picture}
+\hfill
+\begin{picture}(\twd,\tht)
+  \put(0,0){\framebox(\htwd,\tht){\textsc{portrait}}}
+  \put(\htwd,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{-90}{\textsc{landscape}}}}
+\end{picture}
+\hfill
+\mbox{}
+
+\caption[Portrait and landscape spreads]%
+  {Portrait and landscape spreads: the layout on the left is preferable to the one on the right} \label{fig:portrait-landscape}
+\end{figure}
+
+\begin{figure}
+\centering
+\mbox{}\hfill
+\begin{picture}(\twd,\tht)
+  \put(\htwd,0){\framebox(\htwd,\tht){\textsc{portrait}}}
+  \put(0,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{90}{\textsc{landscape}}}}
+\end{picture}
+\hfill
+\begin{picture}(\twd,\tht)
+  \put(\htwd,0){\framebox(\htwd,\tht){\textsc{portrait}}}
+  \put(0,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{-90}{\textsc{landscape}}}}
+\end{picture}
+\hfill\mbox{}
+
+\caption[Landscape and portrait spreads]%
+  {Landscape and portrait spreads: the layout on the left is preferable to the one on the right}\label{fig:landscape-portrait}
+\end{figure}
+
+\begin{figure}
+\centering
+\mbox{}\hfill
+\begin{picture}(\twd,\tht)
+  \put(\htwd,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{90}{\textsc{landscape}}}}
+  \put(0,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{90}{\textsc{landscape}}}}
+\end{picture}
+\hfill
+\begin{picture}(\twd,\tht)
+  \put(\htwd,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{90}{\textsc{landscape}}}}
+  \put(0,0){\framebox(\htwd,\tht){\rotatebox[origin=c]{-90}{\textsc{landscape}}}}
+\end{picture}
+\hfill\mbox{}
+
+\caption[Double landscape spreads]%
+  {Double landscape spreads: never use the layout on the right}\label{fig:landscape-landscape}
+\end{figure}
+
+\endgroup
+\subsection{Extracts}
+
+    Typographers use `extract'\index{extract} as a generic 
+term for what I would think of as a quotation\index{quotation}. 
+Essentially a quotation is an extract from some source.
+Quotations\index{quotation}\index{extract} from other works, 
+unless they are so short as to be 
+significantly less than a line, should be set off from the main text. 
+This could be
+as an indented block, or by using a different type style or size, or a 
+combination of these. A size difference of one or two points from the body
+size is usually enough to be distinctive, for instance 11/13 or 10/12 point
+for a 12/14 point body size. In any event, extra space, at least two or 
+three points, should be inserted and below the extract.
+
+\subsection{Footnotes and endnotes}
+
+\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
+\let\oldfootnoterule\footnoterule
+\renewcommand*{\footnoterule}{}
+    This section is a synthesis of the views of Ruari McLean~\cite{MCLEAN80},
+Jan Tschichold~\cite{TSCHICHOLD91} and 
+Emerson Wulling~\cite{WULLING-FOOTNOTES}.
+
+    Footnotes\index{footnote} are ancilliary the the main material and 
+expand in some way
+upon the current theme. For instance, remarks that are too large or off the
+main thread, or some side comment by the author, may be sunk to a footnote 
+at the bottom of the page. By definition, a footnote is placed at the 
+bottom of a page but, if it is long or space is short, may run over to a 
+second, or even a third page. A footnote should have some immediate 
+relevance to the reader.
+
+Endnotes\index{endnote}, which are collected together at the end of the 
+document, include 
+material similar to that in footnotes, but which is not of immediate interest.
+If you use endnotes it is safe to assume that only a small percentage
+of your readers will ever correlate them with the text.
+ 
+    Within the text the presence of a footnote is indicated by a raised 
+`reference mark'\index{reference mark} following the
+word, phrase, or sentence to which it refers. The same mark is used 
+to introduce the footnote at the bottom of the page.
+The reference mark may be either a 
+symbol or a number. For illustrative purposes I'm using symbols
+as markers in this section.
+
+   If there are many footnotes then it is convenient for the reader if numbers 
+are used for the marks\index{footnote!mark} The numbering may be continuous 
+throughout the document,
+or start afresh with each chapter; starting anew on each page may lead to
+some confusion. When there is only an occasional footnote then symbols 
+are usually preferred as reference marks.
+
+    Endnotes may or may not be marked\index{endnote!mark} in the main text. 
+If they are marked then numbers
+should be used, not symbols. If there are both footnotes and marked endnotes 
+then different series of marks must be used for the two classes of notes.
+
+    There is some debate as to how reference marks should relate to the 
+marked element in the main text. For example, should the mark immediately 
+follow the element\footnote{This mark immediately folllows the main element.} 
+or should there be a thin space\,\footnote{There is a thin space between this
+mark and the element it is attached to.} separating the two. A convenient 
+procedure is to use a thin space between the 
+element\,\footnote{A thin space is used here.} and the mark when the end of 
+the element is tall, and 
+none\footnote{There is no extra space here.} when the end of the element is 
+low. There is no need for any extra space between punctuation and a reference
+mark.\footnote{There is no extra space here.}
+
+    McLean, Tschichold, and Wulling are all agreed that there should not be
+a rule separating the main text from any footnotes --- a space and change in
+font size is sufficient to distinguish the two. The font size for 
+footnotes\index{footnote!font size}
+is usually two sizes smaller than the main font but with the same 
+leading\index{leading}. For example if the main text is set 10/12 then 
+footnotes would be set 8/10. Notes to tables, though, are often set even 
+smaller; for instance at 6pt or 7pt in a 10pt document. 
+Each footnote should be introduced by the 
+appropriate reference mark in the same font size as the note itself. If it is 
+not raised then follow it by a period if it is a number, or by a space 
+if a symbol, in order to distinguish it from the note's text. 
+If there are any footnotes on a
+short page, such as perhaps the last page of a chapter, they are placed
+at the bottom of the page, not immediately below the last line of the main 
+text.
+
+   Endnotes may be set in the same font font as the main text, but usually in
+the same size\index{endnote!font size} as for footnotes.\footnote{That is, two
+sizes smaller than the main text,but with the same leading.} 
+
+   Endnotes may be grouped at the end of each chapter or collected together
+towards the end of the document. If the latter, then they should be presented
+in groups corresponding to the noted chapters. It is a courtesy to the reader
+to indicate the page which gives rise to each note so that backward reference,
+as well as forward reference, is facilitated; this is especially important
+if there is no endnote mark\index{endnote!mark} in the main text. Endnotes
+that have no reference mark\index{reference mark} in the text are usually
+tagged with some words from the main text that identify the idea or statement
+that they are referring to.
+   In an endnote listing note numbers are usually either indented or the note
+is set flush-and-hang\index{flush-and-hang} style; that is, with the 
+first line set flushleft and any remaining lines indented.
+
+Whether a note
+is presented as a footnote or an endnote, it should always finish with a
+period\index{period}.
+
+
+\renewcommand*{\thefootnote}{\arabic{footnote}}
+%%%%\afterpage{\let\footnoterule\oldfootnoterule}
+
+\section{\prBackmatter}
+
+    Divisions in the \pixbackmatter\ are not numbered.
+
+    In commercial printing, saving a page here and a page there can save the
+publisher money and hopefully at least some of the reduced cost will be passed
+on to the readers. One way of reducing the number of pages is by reducing
+the font size. The material in the \pixbackmatter\ is in some sense auxiliary 
+to the \pixmainmatter, hence of less importance, and some of it may then be 
+reasonably set in smaller type.
+
+\subsection{Appendices}
+
+    Appendices\index{appendix} come immediately after the main text. Depending
+on their importance and interest they can be set in the same manner as the 
+main text. If the appendices consist of long supporting documents they could
+be set in a type one or two points smaller than the main text.
+
+    In some instances there are appendices at the end of individual chapters,
+where they form the last divisions of the chapters, and are treated as any of
+the other divisions.
+
+\subsection{Endnotes}
+
+   In an endnote\index{endnotes} listing, note numbers are usually 
+either indented or the note
+is set flush-and-hang\index{flush-and-hang} style; that is, with the 
+first line set flushleft and any remaining lines indented. There are, 
+of course, corresponding numbers at the appropriate points in the main text.
+
+   In another style, the endnotes are identified by a phrase taken from the 
+main text together with the relevant page number. In this case there
+are no numbers in the text to disturb the flow, but that often means that the
+notes never get read.
+
+    The notes are often set in the same sized type as used for footnotes or,
+if they are exceptionally interesting, in a size intermediate with the main 
+text.
+
+\subsection{Bibliography}
+
+   The list of books, etc., that the author has used as source material is
+usually placed at the back of the book under the title `Bibliography'. In
+some works there may be a bibliography\index{bibliography} at the end of 
+each chapter and the title `References' is often used for these.
+
+    A font size intermediate between those for quotations and footnotes is
+very reasonable, and a slight extra space between entries, say two points,
+can improve the readability.
+
+\subsection{Glossary}
+
+   The list of definitions of terms or symbols used in the text normally
+comes towards the end of a book, although it could as well come towards
+the end of the \pixfrontmatter, or a symbol list\indextwo{symbol}{list} 
+in the \pixfrontmatter\ and a glossary\index{glossary}
+in the \pixbackmatter. The terms are usually set in italics, or in textbooks 
+in bold. Most often a flush-and-hang\index{flush-and-hang} style is used, with
+perhaps one or two points extra leading between the entries.
+
+    The type size could be the same as for quotations if the glossary is short,
+or the size used for the bibliography for longer lists.
+
+\subsection{Index}
+
+    The entries in an index\index{index} are usually short and most indexes
+are set in two, or more columns. As examples, author's names are usually 
+relatively short so an index of names would typically be in two columns;
+on the other hand, verse lines are relatively long and an index of first lines
+is often set as a single column. In either case, the entries are usually set 
+raggedright with the page numbers close to the corresponding item's text.
+In multicolumn setting the gutter between the columns must be wide enough,
+at least a pica, so
+that the eye does not jump across it when reading an entry. The entries are
+normally set flush-and-hang\index{flush-and-hang}.
+
+    When there are subentries, or sub-subentries, they are typically
+each indented by 1em with respect to the major entry.
+
+   A change of collation, such as between entries starting with `P' and those
+with `Q' should be signalled by at least one or two blank lines. If the index
+is long, then a suitable character (e.g., `Q') or word should be used as 
+part of the break, indicating what is coming next. The index could be set
+in the same size type as the bibliography\index{bibliography}.
+
+\section{Type size}
+
+\begin{table}
+\centering
+\caption{Some relative type sizes for elements of books}\label{tab:reltypesizing}
+\begin{tabular}{lll} \toprule
+Body size & 12/14  & 10/12 \\
+Extracts  & 10/12 &  9/10 \\
+Bibliography & 9/10 & 8/9 \\
+Glossary     & 9/10 & 8/9 \\
+Footnotes   & 8/9 & 8/8 \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+    As indicated above, the type size is normally related to the `importance' 
+of what is being set. Chapter headings are set in large type and footnotes 
+set in small type. Of course, it is a matter of judgement as to what 
+`important' means in any given work. Some possible combinations of type sizes
+are given in \tref{tab:reltypesizing} though these should be considered as
+starting points for a design rather than fixed rules.
+
+\section{Poems and plays}
+
+    In literature such as poems\index{poem} or plays\index{play} 
+the length of the line is determined
+by the author whereas in prose works the book designer establishes the measure.
+For this kind of work the designer should respect the author's wishes as 
+far as possible within a maximum text width.
+
+\subsection{Poetry}
+
+    If possible the type and measure should be chosen so that the longest
+poetical line will fit on one printed line, so that the shape of the poem
+is retained.
+
+    Poems in a book of poetry will differ from one another in their width, 
+and the best way of setting these is to optically center each poem on the 
+page. However, blank verse and poems where the majority of the lines are
+long are usually indented by a constant amount from the left margin.
+
+    In some context verse lines are numbered, often every fifth or tenth line.
+The numbers are usually small and right justified.
+
+\subsection{Plays}
+
+    When presenting a play a list of characters\indextwo{characters}{list} 
+(\textit{Dramatis Personae}\index{Dramatis Personae?\textit{Dramatis Personae}})
+is frequently given at the beginning of the play. It is presented between the
+title and the start of the play itself, either on the same page as the title, or 
+on a page by itself, or at the top of the first page of the play. The list may be
+ordered alphabetically, in order of appearance, or by the character's importance.
+A remark about a character, if less than a sentence, follows the name, separated
+by a comma. If the remark is one or several sentences they are set as usual.
+
+    Act\indextwo{play}{act} and scene\indextwo{play}{scene} 
+names and numbers are often treated in the same manner as
+subheads in a prose work. A new act does not necessarily start a new page
+but there should be at least twelve points above and six below the number.
+A new scene has about eight points above and six points below the number.
+Either arabic or roman numerals may be used for the numbers. If roman
+is used for both, then uppercase for acts and lowercase for scenes.
+
+   The name of each speaker in a play\indextwo{play}{speaker} must be readily 
+identifiable and stand apart from the speech. Names are commonly set in a 
+different font, such as small caps or italic, to the text which is usually set
+in roman. They may be placed on a separate line, where they are most easily
+identifiable, of, to save space, in the margin. The names are often abbreviated,
+and if so the abbreviations must be cinsisten throughout the work.
+
+    Stage directions\index{play!stage directions}\index{stage directions} have to
+be differentiated from the text. They are usually set in italics and enclosed
+in brackets, or less often, in parentheses; speakers' names in stage directions,
+though, are set in roman to distinguish themselves. Directions at the start of a 
+scene, such as saying who is entering, are typically centered while in the body
+of the scene are set flush right, often on a line by themselves.
+
+
 \chapter{Picky points}
+\let\footnoterule\oldfootnoterule
+
+
+    The main elements of good typography are legibility\index{legibility} 
+and page color\index{color}.
+This chapter discusses some of the smaller points related to 
+these topics.
+
 
-\section{Introduction}
 
-    The main elements of good typography are legibility and page color.
-This chapter discusses some of the smaller points related to these topics.
 
 \section{Word and line spacing}
 
@@ -2973,7 +4620,9 @@ their overall shape rather than by stringing together the individual letters
 forming the words. A surprisingly narrow gap between words
 is sufficient for most to distinguish the word boundaries.
 
-    Most typographers state that the space between words in continuous
+    Most typographers state that the space between 
+words\index{space!interword}
+ in continuous
 text should be about the width of the letter `i'. Any closer and the
 words run together and too far apart the page looks speckled with white
 spots and the eye finds it difficult to move along the line rather than
@@ -3012,10 +4661,11 @@ jumping to the next word in the next line.
 Extra spacing after punctuation is not necessary.
 \end{quotation}
 \begin{quotation}
-%\settowidth{\unitlength}{i}
-\settowidth{\fontdimen2\font}{i}
-    The interword spacing in the following paragraph is the width 
-of the letter `i'.
+\settowidth{\unitlength}{i}
+\setlength{\unitlength}{0.75\unitlength}
+\fontdimen2\font=\unitlength
+    The interword spacing in the following paragraph is three-quarters of
+the width of the letter `i'.
  
     Most typographers state that the space between words in continuous
 text should be about the width of the letter `i'. Any closer and the
@@ -3038,11 +4688,19 @@ I always found typewritten texts with double spaces after the end
 of sentences a particular eyesore. However, with typeset texts any 
 extra spacing is usually not as large as that.
 
-    The spacing between lines of text should be greater than the interword
+    The spacing between lines\index{space!interline} of text 
+should be greater than the interword\index{space!interword}
 spacing, otherwise there is a tendency for the eye to skip to the
-next line instead of the next word. Figure~\ref{fig:interline} illustrates
+next line instead of the next word. The space in question is the apparent
+amount of whitespace between the bottom of the text on one line and the top
+of the text on the next line. In a rough sense it is the leading minus the
+actual height of the font.
+Figure~\ref{fig:interline} illustrates
 some text typeset with different line spacings. The normal interword
-spacing is used in the samples.
+spacing is used in the samples. When text is set solid there is a tendancy
+for the descenders on one line to touch, or even overlap, the ascenders on the 
+following line.\footnote{\tx\ has a built-in mechanism that tries hard to 
+prevent this from happening.}
 
 \begin{figure}
 \centering
@@ -3052,25 +4710,27 @@ spacing is used in the samples.
 \normalfont\setlength{\unitlength}{\baselineskip}
 \begin{quotation}
 \normalfont\setlength{\baselineskip}{1em}
-    This paragraph is set solid --- the interline spacing is the same
-as the font size. The normal interword spacing is used.
+    This and the next paragraph are set solid --- the interline spacing 
+is the same as the font size. \par
+The normal interword spacing is used in these paragraphs.
     The spacing between lines of text should be greater than the interword
 spacing, otherwise there is a tendency for the eye to skip to the
 next line instead of the next word. \par
 \end{quotation}
 \begin{quotation}
 \normalfont\setlength{\baselineskip}{\unitlength}
-    This paragraph is set with the normal interline spacing for the font.
-The normal interword spacing is used.
+    This and the next paragraph are set with the normal interline spacing 
+for the font. \par
+The normal interword spacing is used in these paragraphs.
     The spacing between lines of text should be greater than the interword
 spacing, otherwise there is a tendency for the eye to skip to the
 next line instead of the next word. \par
 \end{quotation}
 \begin{quotation}
-\normalfont\setlength{\baselineskip}{1.2\unitlength}
-    This paragraph is set with the interline spacing 20\% greater than
-is normal for the font.
-The normal interword spacing is used.
+\normalfont\setlength{\parskip}{0.2\baselineskip}\setlength{\baselineskip}{1.2\unitlength}
+    This and the next paragraph are set with the interline spacing 20\% 
+greater than is normal for the font. \par
+The normal interword spacing is used in these paragraphs.
     The spacing between lines of text should be greater than the interword
 spacing, otherwise there is a tendency for the eye to skip to the
 next line instead of the next word. \par
@@ -3082,6 +4742,7 @@ next line instead of the next word. \par
 \setlength{\unitlength}{1pt}
 \caption{Interline spacings}\label{fig:interline}
 \end{figure}
+\setlength{\unitlength}{1pt}
 
 \section{Abbreviations and acronyms}
 
@@ -3092,6 +4753,13 @@ full word. Thus, it is Mr for Mister, Dr for Doctor, but Prof.~for Professor.
 No extra spacing should be used after the full stop, even if extra
 spacing is normally used after punctuation.
 
+    The general American, and English, trend nowadays is away from the use 
+of periods (full stops) after abbreviations following the precept that
+reducing typographic fussiness increases the ease of reading. Having said that,
+where an abbreviation is a combination of abbreviations, such as Lt.Col for
+Lieutentant Colonel, often an internal period is used with a word space
+between the elements.
+
     Acroynms\index{acronym} are typeset in uppercase but the 
 question is, which uppercase?
 The simple way is to use the uppercase of the normal font, like UNICEF, but
@@ -3100,7 +4768,15 @@ to intrude. If the font family has one, then small caps can be used,
 giving \textsc{unicef}. If small caps are not available, or appear
 undesireable, then a smaller size of the normal uppercase can be used,
 such as {\small UNICEF} or {\footnotesize UNICEF}; some experimentation
-may be required to select the appropriate size.
+may be required to select the appropriate size. These several versions
+were input as:\par
+\begin{tabular}{ll}
+regular UNICEF text & \verb?regular UNICEF text? \\
+regular \textsc{unicef} text & \verb?regular \textsc{unicef} text? \\
+regular {\small UNICEF} text & \verb?regular {\small UNICEF} text? \\
+regular {\footnotesize UNICEF} text & \verb?regular {\footnotesize UNICEF} text? 
+\end{tabular}
+
 
 \section{Dashes and ellipses}
 
@@ -3111,15 +4787,17 @@ width of the letter `n', and the largest is the em-dash (---) which is
 approximately twice the length of an en-dash. An expert font may provide
 more.
 
-   Unsurprisingly, the hyphen is used for hyphenation, such as in em-dash, or
+   Unsurprisingly, the hyphen\index{dash!hyphen}\index{hyphen} 
+is used for hyphenation, such as in em-dash, or
 at the end of a line where a word had to be broken.
 
-    The en-dash is normally used between numerals to indicate a range. For
+    The en-dash\index{dash!en}\index{en-dash} 
+is normally used between numerals to indicate a range. For
 example a reference may refer to pages 21--27 in some journal or book. There
 is no space surrounding the en-dash when used in this manner.
 
-    The em-dash, or the en-dash, is used as 
-punctuation --- often when making a side 
+    The em-dash\index{dash!em}\index{em-dash}, 
+or the en-dash, is used as punctuation --- often when making a side 
 remark --- as a phrase separator.
  When en-dashes are used as punctuation it is normal to put spaces around them
 but the question of spaces around an em-dash appears to be the subject of
@@ -3135,21 +4813,23 @@ a sentence the English style is to have no spaces and include the full
 stop, making four dots in all, like so\ldots.
 
    Dashes are also used to indicate missing characters or a word. Missing
-characters in the middle of a word are indicated by a 2em-dash (a dash that
+characters in the middle of a word are indicated by a 
+2em-dash\index{dash!2em}\index{2em-dash} (a dash that
 is twice as long as an em-dash), as in:
 \begin{quote}
 \textbf{snafu,} \textit{(U.S. slang)} \textit{n.} chaos. --- \textit{adj.}
   chaotic. [\textit{s}ituation \textit{n}ormal --- \textit{a}ll
   \textit{f}------d \textit{u}p.]
 \end{quote}
-A 3em-dash is used to indicate a missing word. When I lived in Maryland my
+A 3em-dash\index{dash!3em}\index{3em-dash} is used to indicate a 
+missing word. When I lived in Maryland my
 local small town newspaper was the \textit{Frederick Post.} 
 The following is from an 
 obituary I happened to read; I have hidden the name to protect the 
 innocent.
 \begin{quote}
   Although he had spent the last 92 years of his life here, 
-Mr. --------- was not a Fredericktonian.
+Mr --------- was not a Fredericktonian.
 \end{quote}
 
 \index{dash|)}
@@ -3167,12 +4847,14 @@ end ('') of spoken words. If the speaker quotes in the speech then single
 quote marks (` and ') are used to delineate the internal quotation\index{quotation}.
 
     The English practice is exactly the opposite. Main speech is delineated
-by single quotes and internal quotations\index{quotation} by double quotes. In any event,
+by single quotes and internal quotations\index{quotation} by double quotes. 
+In any event,
 if single and double quotes are adjacent they should be separated by a thin
-space in order to distinguish one from the other --- a full interword space
-is too wide.
+space\index{space!thin} in order to distinguish one from the other --- 
+a full interword space is too wide.
 
-    As there are likely to be few internal quotations\index{quotation} it seems to me that
+    As there are likely to be few internal quotations\index{quotation} 
+it seems to me that
 the English practice produces a less spotty appearance than the American.
 Figure~\ref{fig:qmarks} shows the same text typeset in both the English
 and American styles. The example is from Lewis Carroll's 
@@ -3264,24 +4946,24 @@ punctuation, but there are always those who like to prove a rule.
 (registered) trademarks. These may produce ugly gaps. Sometimes these
 cannot be avoided but it may be possible to change the text to minimise
 the hiccup. There is an example of this on \pref{fn:ps}. I tried various
-schemes in identifying `PostScript' as being a registered trademark of
+schemes in identifying `\pscript' as being a registered trademark of
 Adobe Systems Incorporated. Among the discarded trials were:
 \begin{quote}
-\ldots languages like PostScript\texttrademark, presumably \ldots
+\ldots languages like \pscript\texttrademark, presumably \ldots
 
-\ldots languages like PostScript\textsuperscript{\textregistered}, presumably \ldots
+\ldots languages like \pscript\textsuperscript{\textregistered}, presumably \ldots
 
-\ldots like the PostScript\textsuperscript{\textregistered}{} language, presumably \ldots
+\ldots like the \pscript\textsuperscript{\textregistered}{} language, presumably \ldots
 
 \end{quote}
 My final solution was to note the registered trademark information in
 a footnote:
 \begin{quote}
-\ldots languages, like PostScript\footnote{PostScript is a registered 
+\ldots languages, like \pscript\footnote{\pscript{} is a registered 
 trademark of Adobe Systems Incorporated.}, presumably \ldots
 \end{quote}
 In this case I decided that the footnote\index{footnote} was really tied to the word
-`PostScript', taking the place of the registered symbol, so I put the
+`\pscript', taking the place of the registered symbol, so I put the
 footnote mark\index{footnote!mark} before the comma rather than after it.
 \index{symbol|)}
 
@@ -3293,11 +4975,12 @@ footnote mark\index{footnote!mark} before the comma rather than after it.
 surrounding text, such as when emphasizing\index{emphasis} 
 a word by setting it in an
 italic font. If the word is followed by a punctuation mark the normal
-practice is to set the mark using the new font instead of the normal
+practice is to set the punctuation mark using the new font instead of 
+the normal
 font. In some cases the font used for the punctuation may not be
 particularly noticeable but sometimes it may be. 
 
-    The frontmatter contains two definitions of the word \textit{memoir,}
+    The \pixfrontmatter\ contains definitions of the word \textit{memoir,}
 which is typeset using a bold font. The definitions thus commence like \\
 \hspace*{2em} \textbf{memoir,} \textit{n.} \ldots \\
 instead of \\
@@ -3308,8 +4991,9 @@ instead of \\
 \section{Narrow measures}
 
 \index{measure!narrow|(}
+\index{column!narrow|(}
 
-    Typesetting in a narrow column\index{column} is difficult, especially if you are
+    Typesetting in a narrow column is difficult, especially if you are
 trying to make the text flush left and right. As the lines get shorter
 it becomes more and more difficult to fit the words in without an excessive
 amount of interword spacing or word breaking at the ends of lines. 
@@ -3317,7 +5001,8 @@ In the limit, of course, there
 will not be even enough room to put a syllable on a line.
 
     The best recourse in situations like this is to forget justification
-and typeset ragged right. Ragged right looks far better than justified
+and typeset raggedright\index{raggedright}. 
+Raggedright looks far better than justified
 text with lots of holes in it.
 The question then is, to hyphenate or not to hyphenate?\index{hyphenation}
 
@@ -3327,12 +5012,66 @@ can be used to reduce the raggedness but somehow short lines ending with
 a hyphen may look a bit odd. This is where you have to exercise your
 judgement and design skills.
 
-    Indexes\index{index} are often typeset in double, or even triple or quadruple columns\index{column!multiple},
-as each entry is typically short. Also, indexes\index{index} are typically consulted
-for a particular entry rather than being read as continuous text. To help
-the eye, page numbers are normally typeset immediately after the 
-the name of the indexed topic, so indexes\index{index} tend to be naturally ragged right
-as a matter of reader convenience.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%% 109pt could be good for this
+\newlength{\rag}
+  \setlength{\rag}{0.25\textwidth} %% gives 90pt
+  \addtolength{\rag}{10pt} 
+  \addtolength{\rag}{9pt}  
+%% 107pt seems good
+\setlength{\rag}{107pt}
+\newcommand{\ragtext}{%
+The \ltx\ document preparation system is a special version of
+Donald Knuth's \tx\ program. \tx\ is a sophisticated program
+designed to produce high-quality typesetting, especially for
+mathamatical works. It is extremely flexible albeit somewhat 
+idiosynchratic. One can typeset justified, flushleft-raggedright,
+centered, or raggedleft-flushright.}
+
+\begin{figure}
+\centering
+\begin{minipage}[t]{\rag}
+\raggedright
+%%\noindent\verb?\raggedright?
+\noindent No hyphenation
+\vspace{\onelineskip}
+
+\parindent=15pt\indent \ragtext
+\end{minipage}
+\hfill
+\begin{minipage}[t]{\rag}
+\raggedyright
+%%\noindent\verb?\raggedyright?
+\noindent Hyphenation (1)
+\vspace{\onelineskip}
+
+\indent \ragtext
+\end{minipage}
+\hfill
+\begin{minipage}[t]{\rag}
+\raggedyright[1em]
+%%\noindent\verb?\raggedyright[1em]?
+\noindent Hyphenation (2)
+\vspace{\onelineskip}
+
+\indent \ragtext
+\end{minipage}
+\caption{Raggedright text in narrow columns} \label{fig:raggedright}
+\end{figure}
+
+    Figure~\ref{fig:raggedright} shows a text set in a column
+\the\rag{} wide with 
+different raggednesses. Preventing hyphenation, as in the left column, 
+resulted in very noticeably ragged text. Hyphenation has been allowed
+in the other two columns, to differing degrees. I prefer
+the one on the right but with different text and column widths the results
+might have been different.
+
+\begin{comment}
 
 \index{measure!narrow|)}
 
@@ -3351,19 +5090,26 @@ that indicates the potential break points.
 \section{Emphasis}
 
 \index{emphasis|(}
-    Underlining\index{underline} should \underline{emphatically} \underline{not} be
+    Underlining\index{underline} should \underline{emphatically} 
+\underline{not} be
 used to emphasise something in a typeset document. This is a hangover
 from the days when manuscripts were typewritten and there was little
 that could be done. The other way of emphasising something was to
-put extra space between the characters of the w\,o\,r\,d being
-e\,m\,p\,h\,a\,s\,i\,s\,e\,d, as has been done twice in this sentence.
+put extra space\index{space!between characters} between the 
+characters of the w\,o\,r\,d being
+e\,m\,p\,h\,a\,s\,i\,s\,e\,d, as has been done twice in this sentence
+(for the words `word' and `emphasised' in case you didn't spot them).
+This is called letterspacing\index{letterspacing}; it is more often
+used to make fine adjustments to the physically spacing between
+letters in a book title to make them appear to be optically
+uniformly spaced.
 As an aside, for me at least, that extra spacing produces the 
 illusion that the
 characters are slightly larger than normal, which is not the case.
 
     With the range of fonts and sizes available when typesetting there
 are other methods for emphasis, although German typographers have used
-letterspacing for emphasis with the fraktur and other similar font types.
+letterspacing\index{letterspacing} for emphasis with the fraktur and other similar font types.
 
     There are basically three aproaches: 
 change the {\large size} of the font;
@@ -3378,32 +5124,32 @@ to be a reasonable compromise between the need and the desire.
 
 \section{Captions and legends}
 
-\index{caption|(}
-\index{legend|(}
 
     I am not entirely sure what is the difference between a
-caption and a legend as both terms refer to the title of an illustration\index{illustration}
-or table\index{table}. However, legend may also be used to refer to some explanatory 
-material within an illustration\index{illustration}, such as the explanation of the symbols
-used on a map.
-
-    In any event, captions and legends are usually typeset in a font that
+caption\index{caption} and a legend\index{legend} as both terms 
+refer to the title of an 
+illustration\index{illustration}
+or table\index{table}. However, legend may also be used to refer to 
+some explanatory material within an illustration\index{illustration}, 
+such as the explanation of the symbols used on a map.
+
+    In any event, captions and legends are usually typeset in a 
+font\index{caption!font}\index{legend!font} that
 is smaller than the main text font, and which may also be different from the
 main font. For example, if the main font is roman and a sans font is used
 for chapter titles, then it could be appropriate to use a small size
 of the sans font for captions as well.
 
-    The caption for a table\index{table} is normally placed above the table while
-captions for illustrations\index{illustration} are placed below.
+    The caption for a table\index{table} is normally placed above the 
+table while captions for illustrations\index{illustration} are placed below.
 
-\index{legend|)}
-\index{caption|)}
 
 \section{Tables}
 
-\index{table|(}
+\index{table}
 
-    A table is text or numbers arranged in columns\index{column!multiple}, and nearly always
+    A table is text or numbers arranged in columns\index{column!multiple}, 
+and nearly always
 with a `legend'\index{legend} above each column describing the meaning of
 the entries in the column. The legends and the column entries are
 separated from each other, perhaps by some vertical space but more often
@@ -3412,143 +5158,439 @@ by a horizontal line.
     In general typographers dislike vertical lines in a table, which may
 be likely to be used to separate the columns. I'm not sure why this is.
 There is an obvious explanation when hand setting the individual characters
-as although it would be easy to set horizontal rules it would be very 
+as although it is easy to set horizontal rules it is very 
 difficult to get all the pieces of type with the bits of the vertical rules
 aligned properly --- the eye is very sensitive to jags in what is meant to
 be a straight line. In the days of digital typography the alignment problem
 has gone away, so perhaps the antipathy to vertical lines is a tradition
-from earlier days.
+from earlier days. On the other hand Edward Tufte~\cite[page 96]{TUFTE83} 
+exhorts us to `Maximize the data-ink ratio' and to `Erase non-data-ink'
+and Bringhurst~\cite[page 70]{BRINGHURST99} says `There should be a minimum
+amount of furniture (rules, boxes, dots and other guiderails for
+travelling through typographic space) and a maximum amount
+of information'.
 
     If you want to use vertical lines, just be aware that not everybody
 may appreciate your effort.
 
 
-\index{table|)}
+\section{Number formatting}
 
+\index{number!formatting|(}
+
+    Number formatting is country- and language-dependent. Continental 
+Europe differs
+from England, and in its turn the United States differs from England.
+
+    Ignoring decimal numbers we have \emph{cardinal} and \emph{ordinal}
+numbers. An ordinal\indextwo{ordinal}{number} number, like 3rd, 
+indicates a position in a sequence,
+while a cardinal\indextwo{cardinal}{number} number, like 3, 
+expresses `how many'. \ltx\ typesets
+numbers as cardinals, and these can be displayed as a sequence of
+arabic digits or as upper- or lower-case Roman numerals. 
+
+    Limiting the discussion to numbers represented as arabic digits,
+some societies prefer these to be presented as an unbroken string of
+digits (e.g 12345). Other societies prefer the digits in longer 
+numbers to separated, in some cases by commas (e.g., 12,345) or other 
+punctuation marks, and in others by spaces (e.g., 12\:345); the 
+digits are grouped into threes, counting from the right.
+
+    The class provides some macros for formatting numbers. The argument
+to one of these formatting macros is a `number', essentially some \ltx\
+construct that resolves to a series of arabic digits. Typical arguments
+might be:
+\begin{itemize}
+\item Some digits \\
+      e.g., \verb?\ordinal{123} -> ? \ordinal{123}.
+\item A macro expanding to digits \\
+      e.g., \verb?\def\temp{3}\ordinal{\temp} -> ? {\def\temp{3}\ordinal{\temp}}
+\item The value of a counter \\
+       e.g., \verb?\ordinal{\value{page}} -> ? \ordinal{\value{page}}
+\item The arabic representation of a counter \\
+       e.g., \verb?\ordinal{\thepage} -> ? \ordinal{\thepage}
+
+       However, if the representation of the counter is not completely
+in arabic digits, such as \cmd{\thesection} which prints here as
+\thesection, it will produce peculiar results or nasty errors if it is
+used as the argument. For instance: \\
+\verb?\ordinal{\thesection} -> ? \ordinal{\thesection}
+\end{itemize}
 
+    For our purposes, a `numeric number' is one that is typeset using 
+arabic digits and a `named number' is one that is typeset using words.
 
-\chapter{Electronic books}
-\index{electronic books|(}\index{Ebook|see{electronic books}}
-\section{Introduction}
+\subsection{Numeric numbers}
 
-    For want of a better term I am calling electronic books, or Ebooks, 
-those documents intended to be read on a computer screen. The vast bulk
-of Ebooks are in the form of email but I'm more interested here in 
-publications that are akin to hardcopy reports and books that require
-more time than a few minutes to read.
+\index{number!formatting!numeric|(}
 
-    This brief chapter includes some suggestions for the
-layout of Ebooks, based on my experience with such works. 
-Not considered are internal navigation aids
-(e.g., hyperlinks) within and between Ebooks, nor HTML documents where
-the visual appearance is meant to set by the viewing software and not 
-by the publisher.
+    Both cardinal and ordinal numeric numbers are available.
 
-\section{Observations}
+\begin{syntax}
+\cmd{\cardinal}\marg{num} \\
+\cmd{\fcardinal}\marg{num} \\
+\cmd{\fnumbersep} \\
+\end{syntax}
 
-    Unlike real books which have been available for hundreds of years there
-is virtually no experience to act as a guide in suggesting how Ebooks should
-appear. 
+    The macro \cmd{\fcardinal} prints its \meta{num} argument 
+formatted using \cmd{\fnumbersep} between each triple of digits. The
+default definition of \cmd{\fnumbersep} is:
+\begin{lcode}
+\newcommand{\fnumbersep}{,}
+\end{lcode}
+Here are some examples: \\
+\verb?\fcardinal{12} -> ? \fcardinal{12} \\ 
+\verb?\fcardinal{1234} -> ? \fcardinal{1234} \\ 
+\verb?\fcardinal{1234567} -> ? \fcardinal{1234567} \\ 
+\verb?\renewcommand{\fnumbersep}{ }\fcardinal{12345678} -> ? 
+  \renewcommand{\fnumbersep}{ }\fcardinal{12345678} \\ 
+\renewcommand{\fnumbersep}{,}
 
-    The publication medium is obviously very different --- a TV-style 
-screen with limited resolution and pretty much fixed in position versus
-foldable and markable paper\index{paper} held where the reader finds it best.
-These differences lead to the following suggestions.
 
-    A book can be held at whatever distance is comfortable for reading, even
-when standing up.
-The computer user is normally either sitting in a chair with the monitor
-on a desk or table, or is trying to read from a laptop, which may be 
-lighter but nobody would want to hold one for any length of time. To try
-and alleviate the physical constraints on the Ebook reader the font size
-should be larger than normal for a similar printed book. This will provide
-a wider viewing range. A larger font will also tend to
-increase the sharpness of the print as more pixels will be available for
-displaying each character.
+    The \cmd{\cardinal} macro is like \cmd{\fcardinal} except that there
+is no separation between any of the digits.
 
-    I find it extremely annoying if I have to keep scrolling up and down
-to read a page. Each page should fit within the screen, which means that
-Ebook pages will be shorter than traditional pages. 
-    A suggested size for an Ebook page, in round numbers, is 
-about 9 by 6 inches~\cite{ADOBEBOOK} or 23 by 15 centimetres overall.
 
-    The font size should not be less than 12pt. The font may have to be
-more robust than you would normally use for printing, as fine hairlines 
-or small serifs will not display well unless on a high resolution screen.
+\begin{syntax}
+\cmd{\ordinal}\marg{num} \\
+\cmd{\fordinal}\marg{num} \\
+\cmd{\ordscript}\marg{chars} \\
+\cmd{\iststring} \cmd{\iindstring} \cmd{\iiirdstring} \cmd{\nthstring} \\
+\end{syntax}
+Numbers are typeset as ordinals by the \cmd{\ordinal} and \cmd{\fordinal}
+commands, which are the analogues of the cardinal macros; \cmd{\fnumbersep}
+applies to \cmd{\fordinal} just as it applies to \cmd{\fcardinal}. The
+characters denoting the ordinal\footnote{`th', `st', etc.} 
+(ordination characters?) are typeset as the \meta{chars}
+argument of \cmd{\ordscript}, whose default defintion is very simply
+\begin{lcode}
+\newcommand{\ordscript}[1]{#1}
+\end{lcode}
 
-    The page design for printed books is based on a double spread. For
-Ebooks the design should be based on a single page. The typeblock\index{typeblock} must
-be centered on the page otherwise it gets tiring, not to mention
-aggravating, if your eyes have to 
-flip from side to side when moving from one page to the next. Likewise
-any header\index{header} and the top of the typeblock\index{typeblock} must be at a constant height
-on the screen. A constant position for the bottom of the text is not
-nearly so critical.
+    Some examples of ordinals are: \\
+\verb?\ordinal{12} -> ? \ordinal{12} \\ 
+\verb?\fordinal{1231} -> ? \fordinal{1231} \\
+\verb?    \renewcommand{\ordscript}[1]{\textsuperscript{#1}}?  
+    \renewcommand{\ordscript}[1]{\textsuperscript{#1}} \\
+\verb?\ordinal{1234563} -> ? \ordinal{1234563} \\ 
 
-    It is more difficult with an Ebook than with a paper\index{paper} book to flip through
-it to find a particular place. Navigation aids --- headers\index{header} and footers\index{footer} ---
-are therefor more critical. Each page should have both a chapter 
-(perhaps also a section) header\index{header} title and a page number. Note that I'm not
-considering HTML publications.
+    There are four sets of ordination characters specified by the four
+macros 
+\cmd{\iststring} (default: st) for ordinals ending in 1 like \ordinal{1}, 
+\cmd{\iindstring} (default: nd) for ordinals ending in 2 like \ordinal{22},
+\cmd{\iiirdstring} (default: rd) for ordinals ending in 3 like \ordinal{33},
+and \cmd{\nthstring} (default: th) for all others like \ordinal{44} or 
+\ordinal{50}.
 
-    Many viewers for Ebooks let you jump to a particular page. The page
-numbers that they use, though, are often based on the sequence number from
-the first page, not the displayed folio\index{folio}. In such cases it can be helpful
-to arrange for a continuous sequence of page numbers, even if the folios\index{folio}
-are printed using different styles. For example, if the front matter uses
-roman numerals and the main matter arabic numerals and the last page of the
-frontmatter is page xi, then make the first page of the main matter page 12.
+\renewcommand{\ordscript}[1]{#1}
+    It seems to be normal English and American practice nowadays to
+typeset the ordination characters as ordinary characters on the baseline, 
+like \ordinal{62}, rather than as superscripts. 
 
-    I see no point in Ebooks having any blank pages --- effectively the
-concept of recto and verso pages is irrelevant.
+\index{number!formatting!numeric|)}
 
-    Some printed books have illustrations\index{illustration} that are tipped in, and the tipped
-in pages are sometimes excluded from the pagination. In an Ebook the
-illustrations\index{illustration} have to be `electronically tipped in' in some fashion, either
-by including the electronic source of the illustrations\index{illustration} or by providing
-some navigation link to them. Especially in the former case, the
-tipped in elements should be included in the pagination.
+\subsection{Named numbers}
 
-    Don't forget that a significant percentage of the population is 
-color-blind.\index{color|(}\index{color!blind} 
-The most common form is a reduced ability to distinguish
-between red and green; for example some shades of pink may be perceived
-as being a shade of blue, or lemons, oranges and limes may all appear to
-be the same color. Along with color-blindness there may be a reduced
-capacity to remember colors.
+\index{number!formatting!named|(}
 
-    I have seen Ebooks where color has been liberally used to indicate, say, 
-different revisions of the text or different sources for the data in a graph. 
-Unless the colors used are really 
-distinctive 10\% or more of the potential readership will be lost
-or confused. Further,
-Ebooks may be printed for reading off-line and if a non-color printer is
-used then any colors will appear as shades of grey; these must be such that
-they are both readily distinguishable and legible. Yellow on white is almost
-as difficult to read as off-white on white or navy blue on black, all of
-which I have seen on web sites but rarely after I have tried to print 
-the page.
+    Named numbers can be typeset in either cardinal or ordinal form.
 
-\index{color|)}
-\index{electronic books|)}
+\begin{syntax}
+\cmd{\numtoname}\marg{num} \cmd{\numtoName}\marg{num} \cmd{\NumToName}\marg{num} \\
+\cmd{\ordinaltoname}\marg{num} \cmd{\ordinaltoName}\marg{num} \cmd{\OrdinalToName}\marg{num} \\
+\end{syntax}
+The \cs{num...} commands typeset \meta{num} as named cardinals and similarly
+the \cs{ordinal...} macros typeset \meta{num} as spelled out ordinals.
+The capitalization of the macros indicates the capitalization applied
+to the spelled numbers. The all lower case macros, 
+for instance \cmd{\numtoname}, use lower case throughout the names.
+The \cs{...toName} macros capitalize the first letter of the first word in
+the name, and the last form, e.g., \cmd{\NumToName}, capitalizes the first 
+letter in each word in the name (except for any conjunction, like and).
+As examples: \\
+\verb?\numtoname{12345} -> ? \numtoname{12345} \\
+\verb?\numtoName{12345} -> ? \numtoName{12345} \\
+\verb?\NumToName{12345} -> ? \NumToName{12345} \\
+
+    By default some punctuation and conjunctions are used in the 
+representation of named numbers.
+\begin{syntax}
+\cmd{\tensunitsep} \cmd{\namenumbercomma} \cmd{\namednumberand}  \\
+\end{syntax}
+According to both American and English practice a hyphen should be
+inserted between a `tens' name (e.g., thirty) and a following `units'
+name (e.g., three). The name macros actually use \cmd{\tensunitsep}
+which is initially defined as
+\begin{lcode}
+\newcommand{\tensunitsep}{-}
+\end{lcode}
+English practice, but not American, is to include commas (the value of
+\cmd{\namenumbercomma}) and conjunctions (the value of
+\cmd{\namenumberand}) at strategic places betwen the words. These are initially
+defined as
+\begin{lcode}
+\newcommand{\namenumberand}{ and }
+\newcommand{\namenumbercomma}{, }
+\end{lcode}
+so that numbers are spelled out following the English tradition.
+\begin{syntax}
+\cmd{\lcminusname} \cmd{\ucminusname} \cmd{\minusname} \\
+\end{syntax}
+When a named number is negative, \cmd{\minusname} is inserted before
+the number words. The definitions of the macros just noted are
+\begin{lcode}
+\newcommand*{\lcminusname}{minus }
+\newcommand*{\ucminusname}{Minus }
+\let\minusname\lcminusname
+\end{lcode}
+which means that `minus' is normally all lower case. To get it typeset
+with an initial upper case letter simply:
+\begin{lcode}
+\let\minusname\ucminusname
+\end{lcode}
+If you ever needed a capitalized version of the `and' conjunction you will
+have to renew \cmd{\namenumberand} appropriately.
+
+    There is a group of maros that hold the names for the numbers. 
+To typeset named numbers in a language other than English these will have
+to be changed appropriately. The actual picking and ordering of the
+names is done by an internal macro called \cmd{\n@me@number}. If the
+ordering is not appropriate for your language, and it probably won't be,
+then you will have to study and change it.
 
+    The macros described in this section can not handle numbers that
+are larger than \tx's normal limit as given below: 
+\begin{lcode}
+The largest number \tx\ can handle is \cardinal{2147483647} 
+or in other words, \numtoname{2147483647}.
+\end{lcode}
+The largest number \tx\ can handle is \cardinal{2147483647} 
+or in other words, \numtoname{2147483647}.
 
+\index{number!formatting!named|)}
 
 
-    
+\subsection{Fractions}
+
+\index{fraction!formatting|(}
+
+    When typesetting a simple fraction in text \ltx\ provides two
+styles, like 3/4 or \(\frac{3}{4}\), neither of which may blend neatly
+with their surroundings. These fractions were typeset via:
+\begin{lcode}
+... like 3/4 or \(\frac{3}{4}\) ...
+\end{lcode}
+Note that the \cmd{\frac} command can only be used in math mode.
 
+\begin{syntax}
+\cmd{\slashfrac}\marg{top}\marg{bottom} \\
+\cmd{\slashfracstyle}\marg{num} \\
+\end{syntax}
+The class provides the \cmd{\slashfrac} command which typesets its arguments 
+like \slashfrac{3}{4}. Unlike \cmd{\frac} which is restricted to math
+mode, the \cmd{\slashfrac} command can be used in both text and math mode.
 
+    The \cmd{\slashfrac} macro calls \cmd{\slashfracstyle} to reduce the
+size of the numbers in the fraction. The size reduction is with respect
+to the surrounding font size; for the normal body font \cmd{\slashfracstyle}
+will use a font size similar to the one used for superscripts. You can
+use \cmd{\slashfracstyle} by itself.
+\begin{lcode}
+Summarising, fractions can be typeset like 8/97 or 
+\(\frac{8}{97}\) or \slashfrac{8}{97} or \slashfracstyle{8/97} 
+depending on the particular need.
+\end{lcode}
+Summarising, fractions can be typeset like 8/97 or 
+\(\frac{8}{97}\) or \slashfrac{8}{97} or \slashfracstyle{8/97} 
+depending on the particular need.
 
+\index{fraction!formatting|)}
 
+\index{number!formatting|)}
 
+\end{comment}
 
 
-%%%%%%%%%%%%%%%%%%%%%%
-%\endinput
-%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    Indexes\index{index!multiple column} are often typeset in double, 
+or even triple or quadruple columns\index{column!multiple},
+as each entry is typically short. Also, indexes are typically 
+consulted
+for a particular entry rather than being read as continuous text. To help
+the eye, page numbers are normally typeset immediately after the 
+the name of the indexed topic, so indexes tend to be 
+naturally raggedright\indextwo{index}{raggedright} as a matter of reader 
+convenience.
 
 
+\index{column!narrow|)}
+\index{measure!narrow|)}
+
+    Talking of hyphenation\index{hyphenation},
+ each language has its own rules for allowable
+hyphenation points. As you might now have come to suspect, English and 
+American rules are different even though the language is nominally the same.
+Broadly speaking, American English hyphenation points are typically based on
+the sound of the word, so the acceptable locations are between syllables.
+In British English the hyphenation points tend to be related to the
+etymology of the word, so there may be different locations depending on 
+whether the word came from the Greek or the Latin. If you are not sure
+how a particular word should be hyphenated, look it up in a dictionary
+that indicates the potential break points.
+
+\section{Emphasis}
+
+\index{emphasis|(}
+    Underlining\index{underline} should \underline{emphatically} \underline{not} be
+used to emphasise something in a typeset document. This is a hangover
+from the days when manuscripts were typewritten and there was little
+that could be done. The other way of emphasising something was to
+put extra space between the characters of the w\,o\,r\,d being
+e\,m\,p\,h\,a\,s\,i\,s\,e\,d, as has been done twice in this sentence
+(for the words `word' and `emphasised' in case you didn't spot them).
+This is called \emph{letterspacing}\index{letterspacing}; it is more often 
+used to make fine adjustments to the physical spacing between letters in a book
+title in order to make them appear to be optically uniformly spaced. 
+As an aside, for me at least, that extra spacing just now produces the 
+illusion that the
+characters are slightly larger than normal, which is not the case.
+
+    With the range of fonts and sizes available when typesetting there
+are other methods for emphasis, although German typographers have used
+letterspacing for emphasis with the fraktur and other similar font types.
+
+    There are basically three aproaches: 
+change the {\Large size} of the font;
+change the \textbf{weight} of the font; or most usually, change the
+\emph{shape} of the font. There is a creative tension when trying
+to emphasise something --- there is the need to show the reader the 
+emphasised
+element, but there is also the desire not to interrupt the general flow
+of the text. Out of the three basic options, changing the shape seems
+to be a reasonable compromise between the need and the desire.
+\index{emphasis|)}
+
+\section{Captions and legends}
+
+\index{caption|(}
+\index{legend|(}
+
+    I am not entirely sure what is the difference between a
+caption and a legend as both terms refer to the title of an 
+illustration\index{illustration} or table\index{table}. 
+However, legend may also be used to refer to some explanatory 
+material within an illustration\index{illustration}, such as the 
+explanation of the symbols used on a map.
+
+    In any event, captions and legends are usually typeset in a font that
+is smaller than the main text font, and which may also be different from the
+main font. For example, if the main font is roman and a sans font is used
+for chapter titles, then it could be appropriate to use a small size
+of the sans font for captions as well.
+
+    The caption for a table\index{table} is normally placed above the 
+table while captions for illustrations\index{illustration} are placed below.
+
+\index{legend|)}
+\index{caption|)}
+
+\section{Tables}
+
+\index{table|(}
+
+    A table is text or numbers arranged in columns\index{column!multiple}, 
+and nearly always
+with a `legend'\index{legend} above each column describing the meaning of
+the entries in the column. The legends and the column entries are
+separated from each other, perhaps by some vertical space but more often
+by a horizontal line.
 
+    In general typographers dislike vertical lines in a table, which may
+be likely to be used to separate the columns. I'm not sure why this is.
+There is an obvious explanation when hand setting the individual characters
+as, although it would be easy to set horizontal rules, it would be very 
+difficult to get all the pieces of type with the bits of the vertical rules
+aligned properly --- the eye is very sensitive to jags in what is meant to
+be a straight line. In the days of digital typography the alignment problem
+has gone away, so perhaps the antipathy to vertical lines is a tradition
+from earlier days. On the other hand Edward Tufte~\cite[p. 96]{TUFTE83} 
+exhorts us to `Maximize the data-ink ratio' and to `Erase non-data-ink'
+and Bringhurst~\cite[p. 70]{BRINGHURST99} says `There should be a minimum
+amount of furniture (rules, boxes, dots and other guiderails for
+travelling through typographic space) and a maximum amount
+of information'.
+
+    If you want to use vertical lines, just be aware that not everybody
+may appreciate your effort.
+
+
+\index{table|)}
+
+\section{Number formatting}
+
+\index{number!formatting|(}
+
+    Number formatting is country- and language-dependent. Continental 
+Europe differs
+from England, and in its turn the United States differs from England.
+
+    Ignoring decimal numbers we have \emph{cardinal} and \emph{ordinal}
+numbers. An ordinal\indextwo{ordinal}{number} number, like 3rd, 
+indicates a position in a sequence,
+while a cardinal\indextwo{cardinal}{number} number, like 3, 
+expresses `how many'. \ltx\ typesets
+numbers as cardinals, and these can be displayed as a sequence of
+arabic digits or as upper- or lower-case Roman numerals. 
+
+    It general text the tradition seems to be that cardinal numbers between
+one and ten are spelled out rather than being presented as numerals.
+In the United States numbers between one and ninety-nine are spelled (with
+twenty-one, twenty-two, etc., being hyphenated). Similar customs
+apply to ordinal numbers such as eighth, twenty-first. When not spelled out
+ordinals should be set like 378th rather than 378\textsuperscript{th}.
+
+
+    Regarding cardinal numbers represented as arabic digits,
+some cultures prefer these to be presented as an unbroken string of
+digits (e.g 12345). Other societies prefer the digits in longer 
+numbers to separated, in some cases by commas (e.g., 12,345) or other 
+punctuation marks (e.g., 12.345), and in others by small spaces (e.g., 12\:345); 
+the digits are grouped into threes, counting from the right.
+
+   When the arabic digits became generally used they, like the letters, 
+were given both uppercase and lowercase forms. The uppercase form, like these
+1 2 3 4 5 6 7 8 9 0, which
+is the one normally supplied as part of a font are called 
+\emph{titling figures}\indextwo{titling}{figures}, 
+\emph{ranging figures}\indextwo{ranging}{figures}, or
+\emph{lining figures}\indextwo{lining}{figures} because
+they range or align with the uppercase.
+Digits in this class all
+have the same width so they are used in tables were numbers are meant to
+be aligned vertically. They are also used when typesetting mathematics.
+
+    The lowercase form, like \Moldstyle{1 2 3 4 5 6 7 8 9 0}, are called
+\emph{text figures}\indextwo{text}{figures},
+\emph{hanging figures}\indextwo{hanging}{figures},
+\emph{lowercase figures}\indextwo{lowercase}{figures}, or
+\emph{old-style figures}\indextwo{old-style}{figures}.
+These may be used whenever the surrounding text is set in mixed case, or small caps; I
+have seen them used typesetting the folios, but I must admit that they look very odd
+to me in that situation.
+
+    If you are typesetting mathematics, where you use lining figures, and are also using
+old-style figures in the text then be very careful; `mathematical numbers' should always
+be set with lining figures even if they are in the body of the text. For example: \\
+\ldots from the equation the result is 42 \ldots \\
+\ldots the men of the \Moldstyle{42}nd Foot performed magnificently \ldots.
 
 
 
@@ -3561,139 +5603,532 @@ the page.
 
 \chapter{Starting off} \label{chap:starting}
 
-\pagestyle{headings}
-This chapter uses the \pstyle{headings} pagestyle\index{pagestyle}; 
-pagestyles are described in \S\ref{chap:signposts}.
 
     As usual, the \Lclass{memoir} class is called by 
-\cmd{\documentclass}\oarg{options}\texttt{\{memoir\}}. The \meta{options}
-include being able to select a paper\index{paper!size} size from among a range of sizes, 
+\cmd{\documentclass}\oarg{options}\texttt{\{memoir\}}. The \meta{options}\index{class options}
+include being able to select a paper\indextwo{paper}{size} size from among a range of sizes, 
 selecting a type size, selecting the kind of manuscript, and some related
 specifically to the typesetting of mathematics.
 
 \section{Stock paper size options}
 
-    The stock\index{stock} size is the size of a single sheet of the paper\index{paper} you expect to 
-put through the printer.
-    There are a range of stock\index{stock} paper\index{paper!size} sizes from which to make a selection. 
-These include:
-\begin{itemize}
+    The stock\indextwo{stock}{size} size is the size of a single sheet of the 
+paper\index{paper} you expect to put through the printer. There is a range of 
+stock\indextwo{stock}{size} paper sizes from which to make a selection. 
+These are listed in\index{class options!stock size} \tref{tab:sizeoptsmetric} 
+through \tref{tab:sizeoptsbrit}. Also 
+included in the tables are commands that will set the stock size or paper size to 
+the same dimensions.
+
+\begin{table}
+\centering
+\caption{Class stock metric paper size options, and commands}\label{tab:sizeoptsmetric}
+\begin{tabular}{llll} \toprule
+Option & Size & stock size command & page size command \\ \midrule
+\Lopt{a6paper}\index{paper!size!A6}\index{stock!size!A6} 
+   & \abybm{148}{105}{mm} & \cmd{\stockavi} & \cmd{\pageavi} \\
+\Lopt{a5paper}\index{paper!size!A5}\index{stock!size!A5}
+   & \abybm{210}{148}{mm} & \cmd{\stockav} & \cmd{\pageav} \\
+\Lopt{a4paper}\index{paper!size!A4}\index{stock!size!A4} 
+    & \abybm{297}{210}{mm} & \cmd{\stockaiv} & \cmd{\pageaiv} \\
+\Lopt{a3paper}\index{paper!size!A3}\index{stock!size!A3}
+    & \abybm{420}{297}{mm} & \cmd{\stockaiii} & \cmd{\pageaiii} \\
+\Lopt{b6paper}\index{paper!size!B6}\index{stock!size!B6} 
+   & \abybm{176}{125}{mm} & \cmd{\stockbvi} & \cmd{\pagebvi} \\
+\Lopt{b5paper}\index{paper!size!B5}\index{stock!size!B5} 
+   &  \abybm{250}{176}{mm} & \cmd{\stockbv} & \cmd{\pagebv} \\
+\Lopt{b4paper}\index{paper!size!B4}\index{stock!size!B4} 
+   & \abybm{353}{250}{mm} & \cmd{\stockbiv} & \cmd{\pagebiv} \\
+\Lopt{b3paper}\index{paper!size!B3}\index{stock!size!B3} 
+   & \abybm{500}{353}{mm} & \cmd{\stockbiii} & \cmd{\pagebiii} \\
+\Lopt{mcrownvopaper}\index{paper!size!metric crown octavo}\index{stock!size!metric crown octavo}
+   & \abybm{186}{123}{mm} & \cmd{\stockmetriccrownvo} & \cmd{\pagemetriccrownvo} \\
+\Lopt{mlargecrownvopaper}\index{paper!size!metric large crown octavo}\index{stock!size!metric large crown octavo}
+   & \abybm{198}{129}{mm} & \cmd{\stockmlargecrownvo} & \cmd{\pagemlargecrownvo} \\
+\Lopt{mdemyvopaper}\index{paper!size!metric demy octavo}\index{stock!size!metric demy octavo}
+   & \abybm{216}{138}{mm} & \cmd{\stockmdemyvo} & \cmd{\pagemdemyvo} \\
+\Lopt{msmallroyalvopaper}\index{paper!size!metric small royal octavo}\index{stock!size!metric small royal octavo}
+   & \abybm{234}{156}{mm} & \cmd{\stockmsmallroyalvo} & \cmd{\pagemsmallroyalvo} \\
+\bottomrule
+\end{tabular}
+\glossary(a6paperco)%
+  {\Popt{a6paper}}%
+  {Class option for A6 stock paper size.}%
+\glossary(a5paperco)%
+  {\Popt{a5paper}}%
+  {Class option for A5 stock paper size.}%
+\glossary(a4paperco)%
+  {\Popt{a4paper}}%
+  {Class option for A4 stock paper size.}%
+\glossary(a3paperco)%
+  {\Popt{a3paper}}%
+  {Class option for A3 stock paper size.}%
+\glossary(b6paperco)%
+  {\Popt{b6paper}}%
+  {Class option for B6 stock paper size.}%
+\glossary(b5paperco)%
+  {\Popt{b5paper}}%
+  {Class option for B5 stock paper size.}%
+\glossary(b4paperco)%
+  {\Popt{b4paper}}%
+  {Class option for B4 stock paper size.}%
+\glossary(b3paperco)%
+  {\Popt{b3paper}}%
+  {Class option for B3 stock paper size.}%
+\glossary(mcrownvopaperco)%
+  {\Popt{mcrownvopaper}}%
+  {Class option for metric crown octavo stock paper size.}%
+\glossary(mlargecrownvopaperco)%
+  {\Popt{mlargecrownvopaper}}%
+  {Class option for metric large crown octavo stock paper size.}%
+\glossary(mdemyvopaperco)%
+  {\Popt{mdemyvopaper}}%
+  {Class option for metric demy octavo stock paper size.}%
+\glossary(msmallroyalvopaperco)%
+  {\Popt{msmallroyalvopaper}}%
+  {Class option for metric small royal octavo stock paper size.}%
+\end{table}
+
+
+
+
+
+\begin{table}
+\centering
+\caption{Class stock US paper size options, and commands}\label{tab:sizeoptsus}
+\begin{tabular}{llll} \toprule
+Option & Size & stock size command & page size command \\ \midrule
+\Lopt{dbillpaper}\index{paper!size!dollar bill}\index{stock!size!dollar bill} 
+   & \abybm{7}{3}{in} & \cmd{\stockdbill} & \cmd{\pagedbill} \\
+\Lopt{statementpaper}\index{paper!size!statement}\index{stock!size!statement} 
+   & \abybm{8.5}{5.5}{in} & \cmd{\stockstatement} & \cmd{\pagestatement} \\
+\Lopt{executivepaper}\index{paper!size!executive}\index{stock!size!executive} 
+   & \abybm{10.5}{7.25}{in} & \cmd{\stockexecutive} & \cmd{\pageexecutive} \\
+\Lopt{letterpaper}\index{paper!size!letterpaper}\index{stock!size!letterpaper} 
+   & \abybm{11}{8.5}{in} & \cmd{\stockletter} & \cmd{\pageletter} \\
+\Lopt{oldpaper}\index{paper!size!old}\index{stock!size!old} 
+   & \abybm{12}{9}{in} & \cmd{\stockold} & \cmd{\pageold} \\
+\Lopt{legalpaper}\index{paper!size!legal}\index{stock!size!legal} 
+   & \abybm{14}{8.5}{in} & \cmd{\stocklegal} & \cmd{\pagelegal} \\
+\Lopt{ledgerpaper}\index{paper!size!ledger}\index{stock!size!ledger} 
+   & \abybm{17}{11}{in} & \cmd{\stockledger} & \cmd{\pageledger} \\
+\Lopt{broadsheetpaper}\index{paper!size!broadsheet}\index{stock!size!broadsheet} 
+   & \abybm{22}{17}{in} & \cmd{\stockbroadsheet} & \cmd{\pagebroadsheet} \\
+\bottomrule
+\end{tabular}
+\glossary(dbillpaperco)%
+  {\Popt{dbillpaper}}%
+  {Class option for dollar bill stock paper size.}%
+\glossary(statementpaperco)%
+  {\Popt{statementpaper}}%
+  {Class option for statement stock paper size.}%
+\glossary(executivepaperco)%
+  {\Popt{executivepaper}}%
+  {Class option for executive-paper stock paper size.}%
+\glossary(letterpaperco)%
+  {\Popt{letterpaper}}%
+  {Class option for letterpaper stock paper size.}%
+\glossary(oldpaperco)%
+  {\Popt{oldpaper}}%
+  {Class option for old stock paper size.}%
+\glossary(legalpaperco)%
+  {\Popt{legalpaper}}%
+  {Class option for legal-paper stock paper size.}%
+\glossary(ledgerpaperco)%
+  {\Popt{ledgerpaper}}%
+  {Class option for ledger stock paper size.}%
+\glossary(broadsheetpaperco)%
+  {\Popt{broadsheetpaper}}%
+  {Class option for broadsheet stock paper size.}%
+\end{table}
 
-\item[\Lopt{a3paper}]\index{paper!size!A3} for a stock size of $420 \times 297$ millimeters
-\item[\Lopt{a4paper}]\index{paper!size!A4} for a stock size of $297 \times 210$ millimeters
-\item[\Lopt{a5paper}]\index{paper!size!A5} for a stock size of $210 \times 148$ millimeters
-\item[\Lopt{a6paper}]\index{paper!size!A6} for a stock size of $148 \times 105$ millimeters
-\item[\Lopt{b3paper}]\index{paper!size!B3} for a stock size of $500 \times 353$ millimeters
-\item[\Lopt{b4paper}]\index{paper!size!B4} for a stock size of $353 \times 250$ millimeters
-\item[\Lopt{b5paper}]\index{paper!size!B5} for a stock size of $250 \times 176$ millimeters
-\item[\Lopt{b6paper}]\index{paper!size!B6} for a stock size of $176 \times 125$ millimeters
-\item[\Lopt{letterpaper}]\index{paper!size!letterpaper} for a stock size of $11 \times 8.5$ inches
-\item[\Lopt{legalpaper}]\index{paper!size!legal} for a stock size of $14 \times 8.5$ inches
-\item[\Lopt{executivepaper}]\index{paper!size!executive} for a stock size of $10.5 \times 7.25$ inches
-\item[\Lopt{ebook}] for a stock size of $6 \times 9$ inches, principally
+
+\begin{table}
+\centering
+\caption{Class stock British paper size options, and commands}\label{tab:sizeoptsbrit}
+\begin{tabular}{llll} \toprule
+Option & Size & stock size command & page size command \\ \midrule
+\Lopt{pottvopaper}\index{paper!size!pott octavo}\index{stock!size!pott octavo} 
+   & \abybm{6.25}{4}{in} & \cmd{\stockpottvo} & \cmd{\pagepottvo} \\
+\Lopt{foolscapvopaper}\index{paper!size!foolscap octavo}\index{stock!size!foolscap octavo} 
+   & \abybm{6.75}{4.25}{in} & \cmd{\stockfoolscapvo} & \cmd{\pagefoolscapvo} \\
+\Lopt{crownvopaper}\index{paper!size!crown octavo}\index{stock!size!crown octavo} 
+   & \abybm{7.5}{5}{in} & \cmd{\stockcrownvo} & \cmd{\pagecrownvo} \\
+\Lopt{postvopaper}\index{paper!size!post octavo}\index{stock!size!post octavo} 
+   & \abybm{8}{5}{in} & \cmd{\stockpostvo} & \cmd{\pagepostvo} \\
+\Lopt{largecrownvopaper}\index{paper!size!large crown octavo}\index{stock!size!large crown octavo} 
+   & \abybm{8}{5.25}{in} & \cmd{\stocklargecrownvo} & \cmd{\pagelargecrown
+vo} \\
+\Lopt{largepostvopaper}\index{paper!size!large post octavo}\index{stock!size!large post octavo} 
+   & \abybm{8.25}{5.25}{in} & \cmd{\stocklargepostvo} & \cmd{\pagelargepostvo} \\
+\Lopt{smalldemyvopaper}\index{paper!size!small demy octavo}\index{stock!size!small demy octavo} 
+   & \abybm{8.5}{5.675}{in} & \cmd{\stocksmalldemyvo} & \cmd{\pagesmalldemyvo} \\
+\Lopt{demyvopaper}\index{paper!size!demy octavo}\index{stock!size!demy octavo} 
+   & \abybm{8.75}{5.675}{in} & \cmd{\stockdemyvo} & \cmd{\pagedemyvo} \\
+\Lopt{mediumvopaper}\index{paper!size!medium octavo}\index{stock!size!medium octavo} 
+   & \abybm{9}{5.75}{in} & \cmd{\stockmediumvo} & \cmd{\pagemediumvo} \\
+\Lopt{smallroyalvopaper}\index{paper!size!small royal octavo}\index{stock!size!small royal octavo} 
+   & \abybm{9.25}{6.175}{in} & \cmd{\stocksmallroyalvo} & \cmd{\pagesmallroyalvo} \\
+\Lopt{royalvopaper}\index{paper!size!royal octavo}\index{stock!size!royal octavo} 
+   & \abybm{10}{6.25}{in} & \cmd{\stockroyalvo} & \cmd{\pageroyalvo} \\
+\Lopt{superroyalvopaper}\index{paper!size!super royal octavo}\index{stock!size!super royal octavo} 
+   & \abybm{10.25}{6.75}{in} & \cmd{\stocksuperroyalvo} & \cmd{\pagesuperroyalvo} \\
+\Lopt{imperialvopaper}\index{paper!size!imperial octavo}\index{stock!size!imperial octavo} 
+   & \abybm{11}{7.5}{in} & \cmd{\stockimperialvo} & \cmd{\pageimperialvo} \\
+\bottomrule
+\end{tabular}
+\glossary(pottvopaperco)%
+  {\Popt{pottvopaper}}%
+  {Class option for pott octavo stock paper size.}%
+\glossary(foolscapvopaperco)%
+  {\Popt{foolscapvopaper}}%
+  {Class option for foolscap octavo stock paper size.}%
+\glossary(crownvopaperco)%
+  {\Popt{crownvopaper}}%
+  {Class option for crown octavo stock paper size.}%
+\glossary(postvopaperco)%
+  {\Popt{postvopaper}}%
+  {Class option for post octavo stock paper size.}%
+\glossary(largecrownvopaperco)%
+  {\Popt{largecrownvopaper}}%
+  {Class option for large crown octavo stock paper size.}%
+\glossary(largepostvopaperco)%
+  {\Popt{largepostvopaper}}%
+  {Class option for large post octavo stock paper size.}%
+\glossary(smalldemyvopaperco)%
+  {\Popt{smalldemyvopaper}}%
+  {Class option for small demy octavo stock paper size.}%
+\glossary(demyvopaperco)%
+  {\Popt{demyvopaper}}%
+  {Class option for demy octavo stock paper size.}%
+\glossary(mediumvopaperco)%
+  {\Popt{mediumvopaper}}%
+  {Class option for medium octavo stock paper size.}%
+\glossary(smallroyalvopaperco)%
+  {\Popt{smallroyalvopaper}}%
+  {Class option for small royal octavo stock paper size.}%
+\glossary(royalvopaperco)%
+  {\Popt{royalvopaper}}%
+  {Class option for royal octavo stock paper size.}%
+\glossary(superroyalvopaperco)%
+  {\Popt{superroyalvopaper}}%
+  {Class option for super royal octavo stock paper size.}%
+\glossary(imperialvopaperco)%
+  {\Popt{imperialvopaper}}%
+  {Class option for imperial octavo stock paper size.}%
+\end{table}
+
+
+There are two options that don't really fit into the tables.
+
+\begin{itemize}
+\item[\Lopt{ebook}]\index{stock!size!ebook}  
+     for a stock size of \abybm{6}{9}{inches}, principally
                     for `electronic books' intended to be displayed
                     on a computer monitor
+\glossary(ebookco)%
+  {\Popt{ebook}}%
+  {Class option for elecronic book stock size.}
 \item[\Lopt{landscape}] to interchange the height and width of the stock.
-
+\glossary(landscapeco)%
+  {\Popt{landscape}}%
+  {Class option to interchange height and width of stock paper size.}
 \end{itemize}
 
-    These options, except for \Lopt{landscape}, are mutually exclusive.
-The default stock\index{stock} paper\index{paper!size} size is \Lopt{letterpaper}\index{paper!size!letterpaper}.
+    All the options, except for \Lopt{landscape}, are mutually exclusive.
+The default stock\indextwo{stock}{default} paper\indextwo{paper}{size} size is 
+\Lopt{letterpaper}\index{paper!size!letterpaper}\index{stock!size!letterpaper}.
+
+   If you want to use a stock size that is not listed there are methods for doing this,
+which will be described later.
 
 \section{Type size options}
 
-    The class offers a wider range of type sizes than usual. These are:
+    The type size option sets the default font size throughout the document. The class 
+offers a wider range of type sizes\index{type size} than usual. These are:\index{class options!type size}
 \begin{itemize}
-
-\item[\Lopt{9pt}] for 9pt type
-\item[\Lopt{10pt}] for 10pt type
-\item[\Lopt{11pt}] for 11pt type
-\item[\Lopt{12pt}] for 12t type
-\item[\Lopt{14pt}] for 14pt type
-\item[\Lopt{17pt}] for 17pt type
-
+\item[\Lopt{9pt}] for 9pt as the normal type size
+\glossary(9ptco)%
+  {\Popt{9pt}}%
+  {Class option for a 9pt body font.}
+\item[\Lopt{10pt}] for 10pt as the normal type size
+\glossary(10ptco)%
+  {\Popt{10pt}}%
+  {Class option for a 10pt body font.}
+\item[\Lopt{11pt}] for 11pt as the normal type size
+\glossary(11ptco)%
+  {\Popt{11pt}}%
+  {Class option for a 11pt body font.}
+\item[\Lopt{12pt}] for 12t as the normal type size
+\glossary(12ptco)%
+  {\Popt{12pt}}%
+  {Class option for a 12pt body font.}
+\item[\Lopt{14pt}] for 14pt as the normal type size
+\glossary(14ptco)%
+  {\Popt{14pt}}%
+  {Class option for a 14pt body font.}
+\item[\Lopt{17pt}] for 17pt as the normal type size
+\glossary(17ptco)%
+  {\Popt{17pt}}%
+  {Class option for a 17pt body font.}
+\item[\Lopt{20pt}] for 20pt as the normal type size
+\glossary(20ptco)%
+  {\Popt{20pt}}%
+  {Class option for a 20pt body font.}
+\item[\Lopt{25pt}] for 25pt as the normal type size
+\glossary(25ptco)%
+  {\Popt{25pt}}%
+  {Class option for a 25pt body font.}
+\item[\Lopt{30pt}] for 30pt as the normal type size
+\glossary(30ptco)%
+  {\Popt{30pt}}%
+  {Class option for a 30pt body font.}
+\item[\Lopt{36pt}] for 36pt as the normal type size
+\glossary(36ptco)%
+  {\Popt{36pt}}%
+  {Class option for a 36pt body font.}
+\item[\Lopt{48pt}] for 48pt as the normal type size
+\glossary(48ptco)%
+  {\Popt{48pt}}%
+  {Class option for a 48pt body font.}
+\item[\Lopt{60pt}] for 60pt as the normal type size
+\glossary(60ptco)%
+  {\Popt{60pt}}%
+  {Class option for a 60pt body font.}
+\item[\Lopt{*pt}] for an author-defined size as the normal type size
+\glossary(*ptco)%
+  {\Popt{*pt}}%
+  {Class option for an author-defined size for the body font.}
+\item[\Lopt{extrafontsizes}] Using scalable fonts that can exceed 25pt.
+\glossary(extrafontsizes)%
+  {\Popt{extrafontsizes}}%
+  {Class option for using scalable fonts that can exceed 25pt.}
 \end{itemize}
 
-    These options are mutually exclusive.
-The default type size is \Lopt{10pt}.
+    These options, except for \Lopt{extrafontsizes}, are mutually exclusive.
+The default type size\indextwo{default}{type size} is \Lopt{10pt}.
+
+    Options greater than \Lopt{17pt} or \Lopt{20pt} are of little use unless
+you are using scalable fonts --- the regular Computer 
+Modern\index{Computer Modern} bitmap fonts only go up
+to 25pt. The option \Lopt{extrafontsizes} indicates that you will be using
+scalable fonts that can exceed 25pt. By default this option makes 
+Latin Modern in the \texttt{T1} encoding as the default font (normally
+Computer Modern in the \texttt{OT1} encoding is the default).
+
+\subsection{Extended font sizes}
+
+    By default, if you use the \Lopt{extrafontsizes} option the default
+font for the document is Latin Modern in the \texttt{T1} font encoding.
+This is like putting 
+\begin{lcode}
+\usepackage{lmodern}\usepackage[T1]{fontenc}
+\end{lcode}
+in the documents's premable (but with the \Lopt{extrafontsizes} option
+you need not do this). 
+
+\begin{syntax}
+\verb?\newcommand*{\memfontfamily}?\marg{fontfamily} \\
+\verb?\newcommand*{\memfontenc}?\marg{fontencoding} \\
+\verb?\newcommand*{\memfontpack}?\marg{package} \\
+\end{syntax}
+\glossary(memfontfamily)%
+  {\cs{memfontfamily}}%
+  {Font family for the \Popt{extrafontsizes} class option (default \texttt{lmr})}
+\glossary(memfontenc)%
+  {\cs{memfontenc}}%
+  {Font encoding for the \Popt{extrafontsizes} class option (default \texttt{T1})}
+\glossary(memfontpack)%
+  {\cs{memfontpack}}%
+  {Font package for the \Popt{extrafontsizes} class option (default \texttt{lmodern})}
+Internally the class uses \cmd{\memfontfamily} and \cmd{\memfontenc} as 
+specifying
+the new font and encoding, and uses \cmd{\memfontpack} as the name of the
+package to be used to implement the font. The internal definitions are:
+\begin{lcode}
+\providecommand*{\memfontfamily}{lmr}
+\providecommand*{\memfontenc}{T1}
+\providecommand*{\memfontpack}{lmodern}
+\end{lcode}
+which result in the \texttt{lmr} font (Latin Modern) in the \texttt{T1} 
+encoding as the default font, which is implemented by the \Lpack{lmodern}
+package. If you want a different default, say New Century Schoolbook 
+(which comes in the \texttt{T1} encoding), then 
+\begin{lcode}
+\newcommand*{\memfontfamily}{pnc}
+\newcommand*{\memfontpack}{newcent}
+\documentclass[...]{memoir}
+\end{lcode}
+will do the trick, where the \cs{newcommand*}s are put \emph{before} the 
+\cs{documentclass} declaration (they will then override the \cs{provide...}
+definitions within the class code).
+
+    If you use the \Lopt{*pt} option then you have to supply a \file{clo}
+file containing all the size and space specifications for your chosen font 
+size, and also tell \Mname\ the name of the file. \emph{Before} the 
+\cmd{\documentclass} command define two macros, \cmd{\anyptfilebase} and
+\cmd{\anyptsize} like: \\
+\verb?\newcommand*{\anyptfilebase}?\marg{chars}
+\verb?\newcommand*{\anyptsize}?\marg{num} \\
+\glossary(anyptsize)%
+  {\cs{anyptsize}}%
+  {Second part (the pointsize) of the name the \texttt{clo} file for the
+   \Popt{*pt} class option (default \texttt{10}).}
+\glossary(anyptfilebase)%
+  {\cs{anyptfilebase}}%
+  {First part of the name of the \texttt{clo} file  for the 
+   \Popt{*pt} class option (default \texttt{mem}).}
+  
+When it comes time to get the font size and spacing information \Mname\
+will try and input a file called \verb?\anypfilebase\anyptsize.clo? which
+you should have made available; the \cmd{\anyptsize} \meta{num} must be an
+integer.\footnote{If it is not an integer then \tx\ could get confused
+as to the name of the file --- it normally expects there to be only one
+period (.) in the name of a file.} Internally, the class specifies
+\begin{lcode}
+\providecommand*{\anyptfilebase}{mem}
+\providecommand*{\anyptsize}{10}
+\end{lcode}
+which names the default as \file{mem10.clo}, which is for a 10pt font. 
+If, for example, you have an 18pt font you want to use, then
+\begin{lcode}
+\newcommand*{\anyptfilebase}{myfont}
+\newcommand*{\anyptsize}{18}
+\documentclass[...*pt...]{memoir}
+\end{lcode}
+will cause \ltx\  to try and input the \texttt{myfont18.clo} file that
+you should have provided. Use one
+of the supplied \file{clo} files, such as \file{mem10.clo} or \file{mem60.clo}
+as an example of what must be specified in your \file{clo} file.
 
 \section{Printing options}
 
-    This group of options includes:
+    This group of options\index{class options!printing} includes:
 
 \begin{itemize}
-
 \item[\Lopt{twoside}] for when the document will be published with printing
-                        on both sides of the paper\index{paper}.
+                        on both sides of the paper.
+\glossary(twosideco)%
+  {\Popt{twoside}}%
+  {Class option for text on both sides of the paper.}
 \item[\Lopt{oneside}] for when the document will be published with only
                         one side of each sheet being printed on.
+\glossary(onesideco)%
+  {\Popt{oneside}}%
+  {Class option for text on only one side of the paper.}
 
                         The \Lopt{twoside} and \Lopt{oneside} options
                         are mutually exclusive.
 
 \item[\Lopt{onecolumn}] only one column\index{column!single} of text on a page.
+\glossary(onecolumnco)%
+  {\Popt{onecolumn}}%
+  {Class option for a single column.}
 \item[\Lopt{twocolumn}] two equal width columns\index{column!double} of text on a page.
+\glossary(twocolumnco)%
+  {\Popt{twocolumn}}%
+  {Class option for two columns.}
 
                         The \Lopt{onecolumn} and \Lopt{twocolumn} options
                         are mutually exclusive.
 
 \item[\Lopt{openright}] each chapter\index{chapter} will start on a recto page.
+\glossary(openrightco)%
+  {\Popt{openright}}%
+  {Class option for chapters to start on recto pages.}
 \item[\Lopt{openleft}] each chapter\index{chapter} will start on a verso page.
+\glossary(openleftco)%
+  {\Popt{openleft}}%
+  {Class option for chapters to start on verso pages.}
 \item[\Lopt{openany}] a chapter\index{chapter} may start on either a recto or verso page.
+\glossary(openanyco)%
+  {\Popt{openany}}%
+  {Class option for chapters to start on a recto or a verso page.}
 
                         The \Lopt{openright}, \Lopt{openleft} and 
                         \Lopt{openany} options
                         are mutually exclusive.
 
 \item[\Lopt{final}] for camera-ready copy of your labours.
+\glossary(finalco)%
+  {\Popt{final}}%
+  {Class option for final document.}
 \item[\Lopt{draft}] this marks overfull lines with black bars and enables
                       some change marking to be shown. There may be other 
                       effects as well, particularly if some packages are used.
+\glossary(draftco)%
+  {\Popt{draft}}%
+  {Class option for draft document.}
 \item[\Lopt{ms}] this tries to make the document look as though it was 
                    prepared on a typewriter. Some publishers prefer to receive
                    poor looking submissions.
+\glossary(msco)%
+  {\Popt{ms}}%
+  {Class option for `typewritten manuscript'.}
 
                    The \Lopt{final}, \Lopt{draft} and \Lopt{ms} options
                    are mutually exclusive.
 
-\item[\Lopt{showtrims}] this option prints marks at the corners of the
-                   the sheet so that you can see where the stock\index{stock} must be
-                   trimmed to produce the final page size.
+\item[\Lopt{showtrims}] this option prints marks at the corners of the 
+                   sheet so that you can see where the stock\index{stock} 
+                   must be trimmed to produce the final page size.
+\glossary(showtrimsco)%
+  {\Popt{showtrims}}%
+  {Class option for printing trimming marks.}
 
 \end{itemize}
 
-    The defaults among the printing options are \Lopt{twoside}, 
-\Lopt{onecolumn},
-\Lopt{openright}, and \Lopt{final}.
+    The defaults among the printing options\index{default!printing options} 
+are \Lopt{twoside}, \Lopt{onecolumn}, \Lopt{openright}, and \Lopt{final}.
 
 \section{Other options}
 
     The remaining options are:
 \begin{itemize}
 
-\item[\Lopt{leqno}] equations will be numbered at the left (the default is
+\item[\Lopt{leqno}]\index{class options!math} 
+     equations will be numbered at the left (the default is
      to number them at the right).
-
-\item[\Lopt{fleqn}] displayed math environments will be indented an amount
-                      \cmd{\mathindent} from the left margin\index{margin} (the default is to
-                      center the environments).
-
-\item[\Lopt{openbib}] each part of a bibliography\index{bibliography} entry will start on a
+\glossary(leqnoco)%
+  {\Popt{leqno}}%
+  {Class option for numbering equations at the left.}
+
+\item[\Lopt{fleqn}]\index{class options!math} 
+     displayed math environments will be indented an amount
+     \cmd{\mathindent} from the left margin\index{margin} (the default is to
+     center the environments).
+\glossary(fleqnco)%
+  {\Popt{fleqn}}%
+  {Class option for fixed indentation of displayed math.}
+
+\item[\Lopt{openbib}]\index{class options!bibliography} 
+     each part of a bibliography\index{bibliography} entry will start on a
                         new line, with second and succeding lines indented
                         by \cmd{\bibindent} (the default is for an entry
                         to run continuously with no indentations).
+\glossary(openbibco)%
+  {\Popt{openbib}}%
+  {Class option for indenting continuation lines in a bibliography.}
 
-\item[\Lopt{article}] typesetting simulates the \Lclass{article} class,
+\item[\Lopt{article}]\index{class options!article} 
+  typesetting simulates the \Lclass{article} class,
   but the \cmd{\chapter} command is not disabled.
   Chapters\index{chapter} do not start a new page and chapter headings\index{heading!chapter} are typeset
   like a section heading\index{heading!sections}. The numbering of 
   figures\index{figure}, etc., is continuous
   and not per chapter. However, a \cmd{\part} command still puts
   its heading\index{heading!part} on a page by itself.
+\glossary(articleco)%
+  {\Popt{article}}%
+  {Class option for simulating the \Pclass{article} class.}
 
-\item[\Lopt{oldfontcommands}] makes the old, deprecated LaTeX version~2.09
+\item[\Lopt{oldfontcommands}]\index{class options!fonts} 
+  makes the old, deprecated LaTeX version~2.09
   font commands available. Warning messages will be produced whenever
   an old font command is encountered.
+\glossary(oldfontcommandsco)%
+  {\Popt{oldfontcommands}}%
+  {Class option for permitting obsolete, deprecated font commands.}
 
 \end{itemize}
 
@@ -3707,7 +6142,7 @@ The default type size is \Lopt{10pt}.
 \end{lcode}
    The source file for this manual starts
 \begin{lcode}
-\documentclass[letterpaper,10pt]{memoir}
+\documentclass[letterpaper,10pt,extrafontsizes]{memoir}
 \end{lcode}
 which is overkill as both \Lopt{letterpaper} and \Lopt{10pt} are among
 the default options.
@@ -3721,6 +6156,12 @@ and define you own macros if you feel so inclined.
 \begin{syntax}
 \cmd{\flushbottom} \cmd{\raggedbottom} \\
 \end{syntax}
+\glossary(flushbottom)%
+  {\cs{flushbottom}}%
+  {Declaration for last line on a page to be at a constant height.}
+\glossary(raggedbottom)%
+  {\cs{raggedbottom}}%
+  {Declaration allowing the last line on a page to be at a variable height.}
 When the \Lopt{twoside} or \Lopt{twocolumn} option is selected then
 typesetting is done with \cmd{\flushbottom}, otherwise it is done
 with \cmd{\raggedbottom}.
@@ -3732,16 +6173,18 @@ keep a constant height for the typeblock\index{typeblock}; pages may run short.
 on each page is a constant height, except when a page break is deliberately
 introduced when the page might run short. In order to maintain a constant
 height it may stretch or shrink some vertical spaces 
-(e.g., between paragraphs\index{paragraph}, around headings\index{heading} or around floats\index{float} or other inserts).
+(e.g., between paragraphs\index{paragraph}, around headings\index{heading} or 
+ around floats\index{float} or other inserts like displayed maths).
 This may have a deleterious affect on the color\index{page color} 
-of some pages. Serendipitously this has happened on \pref{chap:lpage} where
-there is additional space between the paragraphs\index{paragraph} (caused by the next sectional
-division having to be put at the top of the next page). You may wish to
-compare that page with the following one to see the difference in the 
-colors. 
+of some pages. 
+% Serendipitously this has happened on \pref{chap:lpage} where
+% there is additional space between the paragraphs\index{paragraph} (caused by the next sectional
+% division having to be put at the top of the next page). You may wish to
+% compare that page with the following one to see the difference in the 
+% colors. 
 
-    I could have made the page run short by inserting \cmd{\raggedbottom}
-at an appropriate place, followed later by a \cmd{\flushbottom}.
+%    I could have made the page run short by inserting \cmd{\raggedbottom}
+% at an appropriate place, followed later by a \cmd{\flushbottom}.
 
     If you get too many strung out pages with \cmd{\flushbottom} you may
 want to put \cmd{\raggedbottom} in the preamble\index{preamble}.
@@ -3750,22 +6193,28 @@ want to put \cmd{\raggedbottom} in the preamble\index{preamble}.
 \Lopt{12pt} and \Lopt{oneside} options.
 
 
-
-\chapter{Laying out the page} \label{chap:layingpage}
-
+\clearpage
 \pagestyle{ruled}
+\chapter{Laying out the page} \label{chap:layingpage}
 
-    This chapter is typeset with the \pstyle{ruled} pagestyle.
 
+Up until this chapter the \pstyle{headings} pagestyle\index{pagestyle}
+has been used; pagestyles are described in \Sref{sec:pagestyles}.
+This, and later chapters, are typeset with the \pstyle{ruled} pagestyle.
 
 \section{Introduction}
 
-    The class provides a default page layout, in which the page size is the
-same as the stock\index{stock} size and the typeblock\index{typeblock} is roughly in the middle of
-the page.
+    The class provides a default page 
+layout\index{page layout}\indextwo{page layout}{default}, 
+in which the page size is the
+same as the stock\index{stock} size and the typeblock\index{typeblock} is 
+roughly in the middle of the page.
     This chapter describes the commands provided by the class to help you
 produce your own page layout if the default is inappropriate.
 
+    If you are happy with the default layout you may skip the rest of this
+chapter.
+
     The pages of a book carry the text which is intended to educate, entertain
 and/or amuse the reader. The page must be designed to serve the purposes of
 the author and to ease the reader's task in assimilating the author's ideas.
@@ -3774,9 +6223,12 @@ reader is constantly noticing the page layout, even unconsciously, it distracts
 from the purpose of the book. It is not the job of the designer to 
 shout, or even to murmur, `look at my work'.
 
-    There are three main parts to a page: the page itself, the typeblock\index{typeblock}, and 
-the margins\index{margin} separating the typeblock\index{typeblock} from the edges of the page. Of slightly
-lesser importance are the headers\index{header} and footers\index{footer}, and possibly marginal\index{marginalia} notes.
+    There are three main parts to a page: the page itself, the 
+typeblock\index{typeblock}, and 
+the margins\index{margin} separating the typeblock\index{typeblock} from 
+the edges of the page. Of slightly lesser importance are the running 
+headers\index{header} and footers\index{footer}, 
+and possibly marginal\index{marginalia} notes.
 The art of page design is obtaining a harmonious balance or rhythm between
 all these.
 
@@ -3786,134 +6238,185 @@ package~\cite{GEOMETRY}.
 
 \section{Stock material}
 
-   Printing is the act of laying symbols onto a piece of stock\index{stock} material.
+   Printing is the act of laying symbols onto a piece of stock\index{stock} 
+material.
 Some print on T shirts by a process called silk screening, where the shapes of
 the symbols are made in a screen and then fluid is squeezed through the screen
 onto the stock material --- in this case the fabric of the T shirt. Whether or
 not this is of general interest it is not the sort of printing or stock
-material that is usually used in book production. Books, except for the very
+material that is normally used in book production. Books, except for the very
 particular, are printed on paper\index{paper}. 
 
-    In the desktop publishing world the stock\index{stock}
-paper\index{paper!size} is usually one from a range of standard sizes. In the USA it is typically
-letterpaper\index{paper!size!letterpaper} (11 by 8.5 inches) and in the rest of the world A4\index{paper!size!A4} paper 
+    In the desktop publishing world the stock\indextwo{stock}{paper}
+paper\indextwo{stock}{size} is usually one from a range of standard sizes. 
+In the USA it is typically
+letterpaper\index{letterpaper}\index{stock!size!letterpaper} 
+(11 by 8.5 inches) and in the 
+rest of the world A4\index{A4 paper}\index{stock!size!A4} paper 
 (297 by 210 mm), with one page per piece of stock\index{stock}. In commercial 
-printing the stock\index{stock} material is much larger with several pages being 
-printed on each stock\index{stock} piece; the stock\index{stock} is then folded, cut and trimmed to form
-the final pages for binding. For our purposes we only consider desktop
-publishing.
+printing the stock\index{stock!commercial printing} material is 
+much larger with several 
+pages being printed on each stock\index{stock} piece; 
+the stock\index{stock} is then folded, cut and trimmed to form
+the final pages for binding. The class assumes that desktop publishing is 
+the norm.
 
 
 \section{The page}
  
-    We only consider one page per piece of stock\index{stock}. 
-
+    The class assumes that there will be only a single page on a side of
+each piece of stock\index{stock}; two sides means that there can be two
+pages, one on the front and the other on the back. 
 
 \begin{figure}
 \centering
 \drawpage
-\caption{LaTeX page layout parameters for a recto page} \label{fig:anoddpage}
+\caption{\ltx\ page layout parameters for a recto page} \label{fig:anoddpage}
 \end{figure}
 
-
-    The parameters used by LaTeX itself to define the page layout are 
-illustrated in \fref{fig:anoddpage}. LaTeX does not actually care about the
+    The parameters\index{page layout!LaTeX parameters?\ltx\ parameters} 
+used by \ltx\ itself to define the page layout are 
+illustrated in \fref{fig:anoddpage}. \ltx\ does not actually care about the
 physical size of a page --- it assumes that, with respect to the top lefthand
-corner, the sheet of paper\index{paper} to be printed is infinitely wide and infinitely
-long. If you happen to have a typeblock\index{typeblock} that is too wide or too long for
-the sheet, LaTeX will merrily position text outside the physical boundaries.
-
-    The LaTeX parameters are often not particularly convenient if, say, the top
-of the text must be a certain distance below the top of the page and the 
-\foredge{} margin\index{margin} must be twice the spine margin\index{margin}. It is obviously possible
+corner, the sheet of paper\index{sheet} to be printed is infinitely wide 
+and infinitely long. If you happen to have a typeblock\index{typeblock} 
+that is too wide or too long for the sheet, \ltx\ will merrily position 
+text outside the physical boundaries.
+
+    The \ltx\ parameters are often not particularly convenient if, say, 
+the top of the text must be a certain distance below the top of the page 
+and the \foredge{} margin\index{margin!foredge?\foredge} must be twice 
+the spine margin\index{margin!spine}. It is obviously possible
 to calculate the necessary values for the parameters, but it is
 not a pleasurable task.
 
     The class provides various means of specifying the page layout, which are
 hopefully more convenient to use than the standard ones. Various
-adjustable parameters are used that define the stock\index{stock} size, page size, and so 
-on. These differ in some respects from the parameters in the standard classes.
-Figure~\ref{fig:oddstock} shows the stock\index{stock} for a recto page, with a page layout,
-illustrating the main layout parameters. These may be changed individually
-by \cmd{\setlength} or by using the commands described below.
+adjustable parameters\index{page layout!class parameters} are used that 
+define the stock\indextwo{stock}{size} size, page\indextwo{page}{size} size, and so 
+on. These differ in some respects from the parameters in the standard classes,
+although the parameters for marginal notes are the same in both cases.
+Figure~\ref{fig:oddstock} shows the main class layout parameters for a
+recto page.
+These may be changed individually by \cmd{\setlength} or by using the 
+commands described below. Figure~\ref{fig:evenstock} illustrates the
+same parameters on a verso page.
+
 
 \begin{figure}
 \centering
-\drawmarginparsfalse
+\oddpagelayoutfalse
 \drawstock
-\caption{The main \textsf{memoir} class page layout parameters for a recto page} \label{fig:oddstock}
+\caption{The \textsf{memoir} class page layout parameters for a verso page} \label{fig:evenstock}
 \end{figure}
 
+\begin{figure}
+\centering
+%%%\drawmarginparsfalse
+\drawstock
+\caption{The \textsf{memoir} class page layout parameters for a recto page} \label{fig:oddstock}
+\end{figure}
 
-    In the code for the standard classes it says:
-\begin{quotation}
-`The variables \cmd{\paperwidth} and \cmd{\paperheight} should reflect
-the physical paper\index{paper!size} size after trimming. For desk printer output this is
-usually the real paper\index{paper!size} size since there is no post-processing. Classes for
-real book production will probably add other paper\index{paper!size} sizes and additionally
-the production of crop marks for trimming.'
-\end{quotation}
-
-    This class has introduced the additional lengths \cmd{\stockwidth}
-and \cmd{\stockheight} to denote the physical paper\index{paper!size} size \emph{before}
-trimming.
 
 
-    The first step in designing the page layout is to decide on the page size 
-and then pick an appropriate stock\index{stock} size. Selecting a standard stock\index{stock} size will
+    The first step in designing the page layout\index{page layout!design} 
+is to decide on the page size\indextwo{page}{size} and then pick an 
+appropriate stock\indextwo{stock}{size} size. Selecting a standard 
+stock\indextwo{stock}{size} size will
 be cheaper than having to order specially sized stock\index{stock} material. 
 
 \begin{syntax}
 \cmd{\setstocksize}\marg{height}\marg{width} \\
-\lnc{\stockheight} \lnc{\stockwidth} \\
 \end{syntax}
-    The class options provide for some common stock\index{stock} sizes. If you have some
-other size that you want to use the 
+\glossary(setstocksize)%
+  {\cs{setstocksize}\marg{height}\marg{width}}%
+  {Set the stock paper size to be \meta{height} by \meta{width}.}
+\glossary(stockheight)%
+  {\ls{stockheight}}%
+  {Height of the stock paper.}
+\glossary(stockwidth)%
+  {\ls{stockwidth}}%
+  {Width of the stock paper.}
+    The class options\index{stock paper size option} 
+provide for some common stock\indextwo{stock}{size} sizes. 
+If you have some other size that you want to use, the 
 command \cmd{\setstocksize} can be used to
-specify that the stock\index{stock} size is \meta{height} by \meta{width}. For example
-the following specifies a stock\index{stock} of 9 by 4 inches:
+specify that the stock\index{stock!specifying size} size is 
+\meta{height} \index{stock!height} by \meta{width}\index{stock!width}. 
+For example the following specifies a stock\index{stock!size} of 9 by 4 inches:
 \begin{lcode}
 \setstocksize{9in}{4in}
 \end{lcode}
 
-The size of the page must be
-no larger than the stock\index{stock} but may be smaller which means that after printing
-the stock\index{stock} must be trimmed down to the size of the page.
+The size of the page\indextwo{page}{size} must be no larger than the 
+stock\indextwo{stock}{size} but 
+may be smaller which means that after printing
+the stock\index{stock!trimmed} must be trimmed down to the size of the page.
 The page may 
 be positioned anywhere within the bounds of the stock\index{stock}.
 
-    Page layout should be conceived in terms of a spread\index{spread}; when 
-you open a book in the middle what you see is a spread --- a verso page on the
-left and a recto page on the right with the spine between them. Most books when
-closed are taller than they are wide; this makes them easier to hold when open
+    Page layout should be conceived in terms of a double spread\index{spread};
+when you open a book in the middle what you see is a double spread --- 
+a verso page on the left and a recto page on the right with the spine 
+between them. Most books when closed are taller\index{proportion!book} 
+than they are wide; this makes them easier to hold when open
 for reading. A squarish page when opened out into a wide spread 
 makes for discomfort unless the book is supported on a table.
 
 \begin{syntax}
 \cmd{\settrimmedsize}\marg{height}\marg{width}\marg{ratio} \\
-\lnc{\paperheight} \lnc{\paperwidth} \\
 \end{syntax}
-The command \cmd{\settrimmedsize}
-can be used to specify 
-the height and width of the page (after any trimming). Initially the page
-size is made the same as the stock\index{stock} size, as set by the paper\index{paper!size} size option.
-The \meta{ratio} argument is 
+\glossary(settrimmedsize)%
+  {\cs{settrimmedsize}\marg{height}\marg{width}\marg{ratio}}%
+  {Sets the size of the trimmed stock paper.}
+\glossary(paperheight)%
+  {\ls{paperheight}}%
+  {The height of the trimmed stock paper.}
+\glossary(paperwidth)%
+  {\ls{paperwidth}}%
+  {The width of the trimmed stock paper.}
+Initially the page size\indextwo{page}{size} is made the same as the 
+stock\indextwo{stock}{size} size, as set by the 
+paper\index{stock paper size option} size option.
+The command \cmd{\settrimmedsize}\index{page!specifying size} 
+can be used to specify the height\index{page!height} and width\index{page!width} 
+of the page (after any trimming). The \meta{ratio} argument is 
 the amount by which the \meta{height} or the \meta{width} must be multiplied 
 by to give the
 width or the height. Only two out of the three possible arguments must be 
-given values with the other (unvalued) argument given as |*| 
+given values with the other (unvalued) argument given as \verb?*? 
 (an asterisk). The lengths \lnc{\paperheight} and \lnc{\paperwidth} are 
 calculated according to the given arguments. That is, the command enables
 the \lnc{\paperheight} 
 and \lnc{\paperwidth} to be specified directly or as one being in a given
-ratio to the other.
+ratio to the other. The potential combinations of arguments and the 
+corresponding results are listed in \tref{tab:rectsize}.
 
-    If you have used \cmd{\setstocksize} to redefine the stock\index{stock}, then to get
-the same page size, do:
+
+\begin{table}
+\centering
+\caption{Arguments and results for \cs{settrimmedsize} and \cs{settypeblocksize} } \label{tab:rectsize}
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{height} & \meta{width} & \meta{ratio} & Result \\ \midrule
+ H   & W   & r   & ambiguous \\
+ H   & W   & {*} & $H$, $W$  \\
+ H   & {*} & r   & $W = rH$  \\
+ H   & {*} & {*} & ambiguous \\
+{*}  & W   & r   & $H = rW$  \\
+{*}  & W   & {*} & ambiguous \\
+{*}  & {*} & r   & ambiguous \\
+{*}  & {*} & {*} & ambiguous \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+    If you have used \cmd{\setstocksize} to redefine the stock\index{stock}, 
+then to get the same page size, do:
 \begin{lcode}
 \settrimmedsize{\stockheight}{\stockwidth}{*}
 \end{lcode}
-or for the page to be 90\% of the size of the stock\index{stock}:
+or for the page dimensions to be 90\% of the stock\index{stock} dimensions:
 \begin{lcode}
 \settrimmedsize{0.9\stockheight}{0.9\stockwidth}{*}
 \end{lcode}
@@ -3930,39 +6433,51 @@ can see that the sheets are folded so that they are continuous at the spine,
 where they are sewn together into the binding. The top of the pages should be
 smooth so that when the book is upright on a bookshelf dust has a harder 
 job seeping between the pages than if the top was all raggedy. Thus, if
-the stock\index{stock} is trimmed it will be trimmed at the top. It will also have been
+the stock\index{stock!trimmed} is trimmed it will be trimmed at the top. 
+It will also have been
 cut at the \foredge s of the pages and at the bottom, otherwise the book
 would be unopenable and unreadable.
 
 \begin{syntax}
-\cmd{\settrims}\marg{top}\marg{edge} \\
-\lnc{\trimtop} \lnc{\trimedge} \\
+\cmd{\settrims}\marg{top}\marg{foredge} \\
 \end{syntax}
+\glossary(settrims)%
+  {\cs{settrims}\marg{top}\marg{foredge}}%
+  {Sets the amount to be trimmed from the top and \foredge{} of the stock paper.}
+\glossary(trimtop)%
+  {\ls{trimtop}}%
+  {Amount to be trimmed from the top of the stock paper.}
+\glossary(trimedge)%
+  {\ls{trimedge}}%
+  {Amount to be trimmed from the \foredge{} of the stock paper.}
 The command \cmd{\settrims} can be used to specify 
-the amount intended to 
-be trimmed from the top (\meta{top}) and \foredge{} (\meta{edge}) of the stock\index{stock} 
-material to produce the top and fore edge of a recto page. 
+the amount intended to be removed from the top 
+(\meta{top}) and \foredge{} (\meta{foredge}) of the 
+stock\index{stock!specifying trimming} 
+material to produce the top and \foredge{} of a recto page. 
 Note that the combination of \cmd{\settrims} and \cmd{\settrimmedsize}
-locate the page with respect to the stock\index{stock}.
+locate the page\index{page} with respect to the stock\index{stock}.
 By default the top and edge trims are zero, which means that if any trimming
-is required it will be at the spine and bottom edges of the stock\index{stock}.
+is required it will be at the spine and bottom edges of the stock
+unless \cmd{\settrims} is used to alter this.
 
-    You can either do any trim calculation for youself or let LaTeX do it for
-you. For example, with an 8in by 5in page on 10in by 7in stock\index{stock}
+    You can either do any trim calculation for youself or let \ltx\ do it for
+you. For example, with an 8in by 5in page on 10in by 7in stock
 \begin{lcode}
 \settrims{2in}{2in}
 \end{lcode}
-specifies trimming 2in from the top and \foredge{} of the stock\index{stock}, 
-giving the desired page size. Taking a design where, say, the page is 90\% of the
-stock\index{stock} size it's easy to get LaTeX to do the calculation:
+specifies trimming 2in from the top and \foredge{} of the stock
+giving the desired page size. Taking a design where, say, the page 
+is 90\% of the stock size it's easy to get \ltx\ to do the calculation:
 \begin{lcode}
 \setlength{\trimtop}{\stockheight}    % \trimtop = \stockheight
-\addtolengh{\trimtop}{-\paperheight}  % \trimtop = \stockheight - \paperheight
-\setlength{\trimedge}{\stockwidth}
-\addtolength{\trimedge}{-\paperwidth}
+\addtolengh{\trimtop}{-\paperheight}  %          - \paperheight
+\setlength{\trimedge}{\stockwidth}    % \trimedge = \stockwidth
+\addtolength{\trimedge}{-\paperwidth} %           - \paperwidth
 \end{lcode}
-which will set all the trimming to be at the top and \foredge. If you wanted, say,
-equal trims at the top and bottom you could go on as
+which will set all the trimming to be at the top and \foredge. 
+If you wanted, say, equal trims at the top and bottom you could go 
+on and specify
 \begin{lcode}
 \settrims{0.5\trimtop}{\trimedge}
 \end{lcode}
@@ -3970,23 +6485,71 @@ equal trims at the top and bottom you could go on as
 
 \section{The typeblock} \label{sec:typeblock2}
 
-    Like the page, the typeblock\index{typeblock} is normally rectangular with the height 
-greater than the width.
+    Like the page, the typeblock\index{proportion!typeblock} is normally 
+rectangular with the height greater than the width.
 
-
-Table~\ref{tab:cmrlengths} gives the lowercase alphabet lengths for a range
-of Computer Modern Roman font sizes; this may be used in conjunction
+Table~\ref{tab:cmrlengths} gives the lowercase 
+alphabet\index{alphabet length} lengths for 
+some typefaces over a range font sizes; this may be used in conjunction
 with \tref{tab:copyfitting} on \pref{tab:copyfitting} when deciding
-on an appropriate textwidth. 
+on an appropriate textwidth\index{textwidth}. I have grouped the 
+listed typefaces into roman, sans-serif, and monospaced, and they are 
+all available in a standard \ltx\ system. The 
+Computer Modern\index{Computer Modern Roman}\index{Computer Modern},
+Concrete Roman\index{Concrete Roman},
+Computer Sans\index{Computer Modern Sans},
+and Typewriter\index{Computer Modern Typewriter}
+typefaces\index{typeface} were all designed by Donald Knuth 
+using\index{font!Metafont} 
+\metafont, specifically for use with \tx. The other font families are
+\pscript{} outline fonts and can be used in many document publishing systems.
+These particular fonts are available for use in \ltx\ via the packages
+in the \Ppack{psnfss}\index{psnfss?\Ppack{psnfss}}
+bundle. Be aware that the Knuthian\index{font!Knuthian} fonts were designed to form a 
+font family --- 
+that is, they were designed to work together and complement each other --- 
+while the listed \pscript{}
+fonts\index{font!PostScript} were designed by different people at different 
+times and for different purposes. Bringhurst~\cite[p. 96]{BRINGHURST99}
+memorably says `Baskerville\index{Baskerville}, 
+Helvetica\index{Helvetica}, 
+Palatino\index{Palatino} and 
+Times Roman\index{Times Roman}, 
+for example --- which are four of the most widely available 
+typefaces --- are four faces with nothing to offer one another except
+public disagreement'.
+
+
+    The monospaced\index{font!monospaced}\index{monospaced font} fonts, 
+Courier\index{Courier} and Typewriter\index{Typewriter}
+have no place in high quality typesetting except when typesetting computer
+code or the like, or when trying to fake text written on a real typewriter.
+Ignoring these, a quick glance at the \tablerefname{} shows that 
+Bookman\index{Bookman} is a broad font while 
+Times\index{Times} is narrow as befits its original 
+design intent for typesetting narrow columns in newspapers. 
+Computer Modern\index{Computer Modern}
+tends towards the narrow end of the range.
+
+
 \begin{syntax}
 \lnc{\xlvchars} \lnc{\lxvchars} \\
 \end{syntax}
-Based on this table, the two lengths 
+\glossary(xlvchars)%
+  {\ls{xlvchars}}%
+  {Approximate length of 45 characters.}
+\glossary(lxvchars)%
+  {\ls{lxvchars}}%
+  {Approximate length of 65 characters.}
+Based on \tref{tab:cmrlengths}, the two lengths 
 \lnc{\xlvchars} and 
-\lnc{\lxvchars} are approximately the lengths of a line of text with
-45 or 65 characters, respectively, for the type size selected for the document.
+\lnc{\lxvchars} are initially set to approximately the lengths of a 
+line of text with
+45\index{measure!45 characters} or 
+65\index{measure!65 characters} characters, respectively, for  
+Computer Modern Roman in the type size selected for the document.
 
-    If you are using a different font you can use something like the 
+    If you are using a different font or size you can use something like the 
 following to calculate and print out the length for you.
 \begin{lcode}
 \newlength{\mylen}                % a length
@@ -3994,13 +6557,64 @@ following to calculate and print out the length for you.
 \begingroup                       % keep font change local
 % font specification e.g., \Large\sffamily
 \settowidth{\mylen}{\alphabet}
-The length of this alphabet is \the\mylen.  % print in document
-\typeout{The length of the Large sans alphabet is \the\mylen} % in log file
-\endgroup       % end the grouping
+The length of this alphabet is \the\mylen. % print in document
+\typeout{The length of the Large sans alphabet 
+         is \the\mylen}                    % put in log file
+\endgroup                         % end the grouping
+\end{lcode}
+The \cmd{\typeout} macro prints its argument to the terminal and the
+log file. There is, however, an easier method.
+
+\begin{syntax}
+\cmd{\setxlvchars}\oarg{fontspec} \\
+\cmd{\setlxvchars}\oarg{fontspec} \\
+\end{syntax}
+\glossary(setxlvchars)%
+  {\cs{setxlvchars}\oarg{fontspec}}%
+  {Sets \cs{xlvchars} to the length of 45 characters in the \meta{fontspec} 
+   font (default \cs{normalfont}).}
+\glossary(setlxvchars)%
+  {\cs{setlxvchars}\oarg{fontspec}}%
+  {Sets cs{lxvchars} to the length of 65 characters in the \meta{fontspec} 
+   font (default \cs{normalfont}).}
+The macros \cmd{\setxlvchars} and \cmd{\setlxvchars}, which were suggested
+by Morten H{\o}gholm\index{H{\o}gholm, Morten}, 
+set the lengths \lnc{\xlvchars} and \lnc{\lxvchars}
+respecively for the font \meta{fontspec}. The default for \meta{fontspec}
+is \cmd{\normalfont}. For example, the values of \lnc{\lxvchars} and
+\lnc{\xlvchars} after calling:
+\begin{lcode}
+\setlxvchars \setxlvchars[\small\sffamily]
 \end{lcode}
-The \cmd{\typeout} macro will print the result to the terminal and the
-log file.
+\begingroup
+are: \setlxvchars\setxlvchars[\small\sffamily]
+\lnc{\lxvchars} = \the\lxvchars, and \lnc{\xlvchars} = \the\xlvchars.
+\endgroup
+
+    Morten H{\o}gholm\footnote{Private communication} also commented:
+\begin{quotation}
+    \ldots I was defining some environments that had to have \lnc{\parindent}
+as their indentation. For some reason I just wrote \verb?1.5em? instead
+of \lnc{\parindent} because I `knew' that was the value. What I had 
+overlooked was that I had loaded the \Lpack{mathpazo} package~\cite{MATHPAZO},
+thus, among other things,  altering \lnc{\parindent}. Conclusion: the
+environment would use 1.5em = 18.0pt, whereas the \lnc{\parindent}
+was only 17.607pt.
+
+    This, and other related situations can be avoided if one places
+\begin{center}
+\cmd{\RequirePackage}\marg{font-package}\cmd{\normalfont}
+\end{center}
+\emph{before} \cmd{\documentclass}.
+\end{quotation}
+Note that, in general, it is inadviseable to put any 
+commands\index{packages before class} before
+\cmd{\documentclass}.
+
 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{comment}
 \begin{table}
 \centering
 \caption{Length of CMR lowercase alphabets}\label{tab:cmrlengths}
@@ -4013,83 +6627,93 @@ log file.
 8 pt & 108 \\
 9 pt & 118 \\
 10 pt & 128 \\
-11 pt & 139 \\
+11 pt & 140 \\
 12 pt & 150 \\
-14 pt & 175 \\
-17 pt & 207 \\
-20 pt & 245 \\
-25 pt & 290 \\ 
+14 pt & 184 \\
+17 pt & 202 \\
+20 pt & 265 \\
+25 pt & 317 \\ 
 \hline
 \end{tabular}
 \end{table}
+\end{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{comment}
+\begin{table}
+\centering
+\caption{Lowercase alphabet lengths in picas}\label{tab:cmrlengths}
+%\begin{tabular}{lrrrrrrrr} \hline
+\begin{tabular}{lrrrrrrrr} \toprule
+                                            &  8pt &  9pt & 10pt & 11pt & 12pt & 14pt & 17pt & 20pt \\ \midrule
+\fontfamily{pbk}\selectfont Bookman         &  9.4 & 10.6 & 11.8 & 12.9 & 14.2 & 17.0 & 20.4 & 24.5 \\
+\fontfamily{bch}\selectfont Charter         &  8.5 &  9.6 & 10.6 & 11.6 & 12.7 & 15.3 & 18.4 & 22.0 \\
+\fontfamily{cmr}\selectfont Computer Modern &  9.0 &  9.8 & 10.6 & 11.6 & 12.4 & 15.0 & 16.8 & 20.2 \\
+\fontfamily{ccr}\selectfont Concrete Roman  &  9.1 &  9.9 & 10.7 & 11.7 & 12.8 & 15.4 & 18.5 & 22.2 \\
+\fontfamily{pnc}\selectfont New Century     &  9.0 & 10.2 & 11.3 & 12.4 & 13.5 & 16.2 & 19.5 & 23.4 \\ 	
+\fontfamily{ppl}\selectfont Palatino        &  8.9 & 10.0 & 11.1 & 12.2 & 13.3 & 16.0 & 19.2 & 23.0 \\ 	
+\fontfamily{ptm}\selectfont Times           &  8.0 &  9.0 & 10.0 & 10.9 & 11.9 & 14.3 & 17.2 & 20.6 \\
+%%% \fontfamily{put}\selectfont Utopia          &  8.9 & 10.0 & 11.2 & 12.2 & 13.4 & 16.1 & 19.3 & 23.1 \\
+\fontfamily{pag}\selectfont Avantgard       &  9.4 & 10.6 & 11.8 & 12.9 & 14.1 & 16.9 & 20.3 & 24.4 \\
+\fontfamily{cmss}\selectfont Computer Sans  &  8.5 &  9.2 & 10.0 & 10.9 & 11.7 & 14.0 & 16.1 & 19.4 \\
+\fontfamily{phv}\selectfont Helvetica       &  8.5 &  9.5 & 10.6 & 11.6 & 12.7 & 15.3 & 18.3 & 22.0 \\
+\fontfamily{pcr}\selectfont Courier         & 10.4 & 11.7 & 13.0 & 14.2 & 15.6 & 18.7 & 22.5 & 27.0 \\
+\fontfamily{cmtt}\selectfont Typewriter     &  9.2 & 10.2 & 11.4 & 12.4 & 13.4 & 16.0 & 19.3 & 23.1 \\
+\bottomrule
+\end{tabular}
+\end{table}
+\end{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
- Morten H{\o}gholm has done some curve fitting to the data in 
- \tref{tab:copyfitting}.
-He found that the expressions
-\begin{displaymath}
-L_{65} = 2.042\alpha + 33.41 \mbox{pt}
-\end{displaymath}
-and
-\begin{displaymath}
-L_{45} = 1.415\alpha + 23.03 \mbox{pt}
-\end{displaymath}
-fitted aspects of the data, where $\alpha$ is the length of the
-alphabet and $L_{i}$ is the desired linewidth when the line should
-contain $i$ characters. He suggested the following macros.
-\begin{syntax}
-\cmd{\setlxvchars}\oarg{fontspec} \\
-\cmd{\setxlvchars}\oarg{fontspec} \\
-\end{syntax}
-The macros \cmd{\setlxvchars} and \cmd{\setxlvchars} set the lengths 
-\lnc{\lxvchars} and \lnc{\xlvchars} respectively for the font \meta{fontspec}.
-The default for \meta{fontspec} is \cmd{\normalfont}.
-
-    For example, the values of \lnc{\lxvchars} and \lnc{\xlvchars} after
-calling \setlxvchars \setxlvchars[\small\sffamily] 
-\begin{lcode}
-\setlxvchars \setxlvchars[\small\sffamily] 
-\end{lcode}
-are: \verb?\lxvchars? = \the\lxvchars, and \verb?\xlvchars? = \the\xlvchars.
-
-    Continuing on this theme, Morten also wrote:
-\begin{quotation}
-\ldots I was defining some environments that had to have \lnc{\parindent}
-as their indentation. For some reason I just wrote \texttt{1.5em} instead
-of \lnc{\parindent} because I knew that was the value. What I had 
-overlooked was that I had loaded the \Lpack{mathpazo} 
-package~\cite{MATHPAZO}, thus
-altering various \cmd{\fontdimen}s. Conclusion: the environment would
-insert \mbox{1.5 em = 18.0 pt}, whereas the \lnc{\parindent} was only
-\mbox{17.6207 pt}.
-
-    This, and other related situations can be avoided if one places
-\begin{center}
-\cmd{\RequirePackage}\marg{font-package}\cmd{\normalfont}
-\end{center}
-before \cmd{\documentclass}, but I have to this day never seen this suggested.
-I would believe that most document classes have settings that depend on
-\emph{current} font settings, which they should do for such things as
-\lnc{\parindent}. However the decision to let Computer Modern be the 
-default font in LaTeX causes these dimensions to be set to erroneous 
-values\ldots
-\end{quotation}
-
-
-
-
+\begin{table}
+\centering
+\caption{Lowercase alphabet lengths in points}\label{tab:cmrlengths}
+\begin{tabular}{lrrrrrrrr} \toprule
+                                            & 8pt & 9pt & 10pt & 11pt & 12pt & 14pt & 17pt & 20pt \\ \midrule
+\fontfamily{pbk}\selectfont Bookman         & 113 & 127 & 142 & 155 & 170 & 204 & 245 & 294 \\
+\fontfamily{bch}\selectfont Charter         & 102 & 115 & 127 & 139 & 152 & 184 & 221 & 264 \\
+\fontfamily{cmr}\selectfont Computer Modern & 108 & 118 & 127 & 139 & 149 & 180 & 202 & 242 \\
+\fontfamily{ccr}\selectfont Concrete Roman  & 109 & 119 & 128 & 140 & 154 & 185 & 222 & 266 \\
+\fontfamily{pnc}\selectfont New Century     & 108 & 122 & 136 & 149 & 162 & 194 & 234 & 281 \\ 	
+\fontfamily{ppl}\selectfont Palatino        & 107 & 120 & 133 & 146 & 160 & 192 & 230 & 276 \\ 	
+\fontfamily{ptm}\selectfont Times           &  96 & 108 & 120 & 131 & 143 & 172 & 206 & 247 \\
+\fontfamily{put}\selectfont Utopia          & 107 & 120 & 107 & 146 & 146 & 193 & 232 & 277 \\
+\fontfamily{pag}\selectfont Avantgard       & 113 & 127 & 142 & 155 & 169 & 193 & 243 & 293 \\
+\fontfamily{cmss}\selectfont Computer Sans  & 102 & 110 & 120 & 131 & 140 & 168 & 193 & 233 \\
+\fontfamily{phv}\selectfont Helvetica       & 102 & 114 & 127 & 139 & 152 & 184 & 220 & 264 \\
+\fontfamily{pcr}\selectfont Courier         & 125 & 140 & 156 & 170 & 187 & 224 & 270 & 324 \\
+\fontfamily{cmtt}\selectfont Typewriter     & 110 & 122 & 137 & 149 & 161 & 192 & 232 & 277 \\
+\bottomrule
+\index{Bookman}\index{Charter}\index{Computer Modern}\index{Concrete Roman}%
+\index{New Century}\index{Palatino}\index{Times}\index{Utopia}%
+\index{Avantgard}\index{Computer Sans}\index{Helvetica}\index{Courier}%
+\index{Typewriter}%
+\end{tabular}
+\end{table}
 
-    The height of the typeblock\index{typeblock} should be equivalent to an integral number
-of lines.
+    The height of the typeblock\index{typeblock!height} should be 
+equivalent to an integral number of lines.
 
 \begin{syntax}
 \cmd{\settypeblocksize}\marg{height}\marg{width}\marg{ratio} \\
-\lnc{\textheight} \lnc{\textwidth} \\
 \end{syntax}
-The command 
-\cmd{\settypeblocksize} is the same as
+\glossary(settypeblocksize)%
+  {\cs{settypeblocksize}\marg{height}\marg{width}\marg{ratio}}%
+  {Sets the size of the typeblock.}
+\glossary(textheight)%
+  {\ls{textheight}}%
+  {The height of the typeblock.}
+\glossary(textwidth)%
+  {\ls{textwidth}}%
+  {The width of the typeblock.}
+The command \cmd{\settypeblocksize}\index{typeblock!specifying size} 
+is similar to
 \cmd{\settrimmedsize} except that it sets the \lnc{\textheight} and 
-\lnc{\textwidth} for the typeblock\index{typeblock}. For instance, here are three ways of specifying
+\lnc{\textwidth} for the typeblock\index{typeblock!height}\index{typeblock!width}. 
+The potential combinations of arguments and the 
+corresponding results are listed in \tref{tab:rectsize} on \pref{tab:rectsize}.
+For instance, here are three ways of specifying
 a 6in by 3in typeblock\index{typeblock}:
 \begin{lcode}
 \settypeblocksize{6in}{3in}{*}
@@ -4097,59 +6721,75 @@ a 6in by 3in typeblock\index{typeblock}:
 \settypeblocksize{*}{3in}{2}
 \end{lcode}
 
-    The typeblock\index{typeblock} has to be located on the page. There is a relationship
-between the page, typeblock\index{typeblock} and margins\index{margin}. The sum of the spine margin\index{margin},
-the \foredge{} margin\index{margin} 
-and the width of the typeblock\index{typeblock} must equal the width
-of the page. Similarly the sum of the upper margin\index{margin}, the lower margin\index{margin} and the
-height of the typeblock\index{typeblock} must equal the height of the page. The process
-of locating the typeblock\index{typeblock} with respect to the page can be viewed
-either as positioning the typeblock\index{typeblock} with respect to the edges of the page
-or as setting the margins\index{margin} between the page and the typeblock\index{typeblock}.
+    The typeblock\index{typeblock} has to be located on the page. There is 
+a relationship between the page, typeblock\index{typeblock} and 
+margins\index{margin}. The sum of the spine, or inner, 
+margin\index{margin!spine}\index{margin!inner}, 
+the \foredge, or outer, margin\index{margin!foredge?\foredge}\index{margin!outer} 
+and the width of the 
+typeblock\index{typeblock!width} must equal the width\index{page!width} 
+of the page. 
+Similarly the sum of the upper margin\index{margin!upper}, 
+the lower margin\index{margin!lower} and the height of the 
+typeblock\index{typeblock!height} 
+must equal the height\index{page!height} of the page. 
+The process of locating the 
+typeblock\index{typeblock} with respect to the page can be viewed
+either as positioning the typeblock\index{typeblock} with respect to the edges 
+of the page or as setting the margins\index{margin} between the page and the 
+typeblock\index{typeblock}.
 
     Remembering that the page layout should be defined in terms of the
-appearance as a spread, the spine margin\index{margin} is normally half the \foredge{}
-margin\index{margin}, so that the white space is equally distributed around the
-sides of the text. 
+appearance as a spread\index{spread}, the spine margin\index{margin!spine} 
+is normally half the \foredge{} margin\index{margin!foredge?\foredge}, 
+so that the white space is equally distributed around the sides of the text. 
 
-    There is usually more latitude in choosing the proportions\index{proportion} of the upper and
-lower margins\index{margin}, though usually the upper margin\index{margin} is less than the lower margin\index{margin}
-so the typeblock\index{typeblock} is not vertically centered.
+    There is more latitude in choosing the 
+proportions\index{proportion!margin} 
+of the upper and lower margins, though usually the upper 
+margin\index{margin!upper} is less than the lower margin\index{margin!lower}
+so the typeblock\index{typeblock!location} is not vertically centered.
 
     Two methods are provided for setting the horizontal dimensions on a page.
-One where the width of the typeblock\index{typeblock} is fixed and the margins\index{margin}
-are adjustable, and the other where the size of the margins\index{margin} determines the
-width of the typeblock\index{typeblock}.
+One is where the width the width of the typeblock\index{typeblock!width} 
+is fixed and the margins\index{margin} are adjustable. 
+The other method is where the size of the margins\index{margin} determines 
+the width of the typeblock\index{typeblock!width}.
 
 \begin{syntax}
 \cmd{\setlrmargins}\marg{spine}\marg{edge}\marg{ratio} \\
-\lnc{\spinemargin} \lnc{\foremargin} \\
 \end{syntax}
-The command \cmd{\setlrmargins}
-can be used to specify
+\glossary(setlrmargins)%
+  {\cs{setlrmargins}\marg{spine}\marg{edge}\marg{ratio}}%
+  {Sets the spine and \foredge{} margins for the current typeblock width.}
+The command \cmd{\setlrmargins}\index{margin!specify width} can be used to specify
 the side margins\footnote{Only the spine margin is noted in
-\fref{fig:oddstock}; the \foredge{} margin\index{margin} is at the opposite side of the 
-typeblock.} with the width of the page and the typeblock being fixed.
+\fref{fig:oddstock} and~\ref{fig:evenstock}; 
+the \foredge\ margin\index{margin!foredge?\foredge} is at the 
+opposite side of the typeblock.} 
+with the width of the page and the typeblock being fixed.
  
-Either zero or one argument values are required, with any
-unvalued argument being denoted by an asterisk. There are several cases to 
+Not more than one one argument value is required, with any
+unvalued arguments being denoted by an asterisk. There are several cases to 
 consider and these are tabulated in \tref{tab:lrmargins}.
 
-    In the Table, $S$ is the calculated spine margin\index{margin}, $E$ is the calculated
-\foredge{} margin\index{margin}, and $P_{w}$ and $B_{w}$ are respectively the page and typeblock\index{typeblock} 
-widths. 
-The \cmd{\setlrmargins} command maintains the relationship
+    In the \tablerefname, $S$ is the calculated spine 
+margin\index{margin!spine}, 
+$E$ is the calculated \foredge{} margin\index{margin!foredge?\foredge}, 
+and $P_{w}$ and $B_{w}$ are respectively the page\index{page!width} and 
+typeblock\index{typeblock!width} 
+widths. The \cmd{\setlrmargins}\index{margin!specifying size} command maintains the relationship
 \begin{displaymath}
 S + E = K_{w}  = \textrm{constant} \mbox{\space} (= P_{w} - B_{w}).
 \end{displaymath}
 
 
 \begin{table}
-\DeleteShortVerb{\|}
 \centering
 \caption{Arguments and results for \cs{setlrmargins} } \label{tab:lrmargins}
-\begin{tabular}{ccc|l} \hline
-\meta{spine} & \meta{edge} & \meta{ratio} & Result \\ \hline
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{spine} & \meta{edge} & \meta{ratio} & Result \\ \midrule
  S   & E & r & ambiguous \\
  S   & E & * & ambiguous \\
  S   & * & r & ambiguous \\
@@ -4158,45 +6798,54 @@ S + E = K_{w}  = \textrm{constant} \mbox{\space} (= P_{w} - B_{w}).
 {*}  & E & * & $S = K_{w} - E$ \\
 {*}  & * & r & $E + S = K_{w}$, $E = rS$ \\
 {*}  & * & * & $E + S = K_{w}$, $E = S$ \\
-\hline
+\bottomrule
 \end{tabular}
-\MakeShortVerb{\|}
 \end{table}
 
-The cases marked ambiguous in the Table are where the particular combination
+The cases marked ambiguous in the \tablerefname{} are where the particular combination
 of argument values may make it impossible to guarantee the relationship.
 
-    Assuming that we have a 3in wide typeblock\index{typeblock} on a 5in wide page and we want
-the spine margin\index{margin} to be 0.8in and the \foredge{} margin\index{margin} to be 1.2in (i.e., the
-\foredge{} margin\index{margin} is half as big again as the spine margin\index{margin}) this can be
-accomplished in three ways (with the \cmd{\pagewidth} and \lnc{\textwidth} being
-previously specified and fixed):
+    Assuming that we have a 3in wide typeblock\index{typeblock!width} on a 5in 
+wide page and we want the spine margin\index{margin!spine} to be 0.8in and 
+the \foredge{} margin\index{margin!foredge?\foredge} to be 1.2in 
+(i.e., the \foredge{} margin is half as big again as the spine margin) 
+this can be accomplished in three ways (with the \cmd{\pagewidth} and 
+\lnc{\textwidth} being previously specified and fixed):
 \begin{lcode}
-\setlrmargins{0.8in}{*}{*}   % specify spine margin
-\setlrmargins{*}{1.2in}{*}   % specify foredge margin
-\setlrmargins{*}{*}{1.5}     % specify foredge/spine ratio
+% specify spine margin
+    \setlrmargins{0.8in}{*}{*}   
+% specify fore-edge margin
+    \setlrmargins{*}{1.2in}{*}   
+% specify fore-edge/spine ratio
+    \setlrmargins{*}{*}{1.5}     
 \end{lcode}
 
 \begin{syntax}
 \cmd{\setlrmarginsandblock}\marg{spine}\marg{edge}\marg{ratio}\\
 \end{syntax}
-The command \cmd{\setlrmarginsandblock}
-can be used to specify the spine and \foredge{} margins\index{margin}, where the page width 
-is fixed and the width of the typeblock\index{typeblock} depends on the margins\index{margin}. Results
+\glossary(setlrmarginsandblock)%
+  {\cs{setlrmarginsandblock}\marg{spine}\marg{edge}\marg{ratio}}%
+  {Sets the spine and \foredge{} margins, modifying the typeblock width to match.}
+The command \cmd{\setlrmarginsandblock}\index{margin!specifying size}
+can be used to specify the spine\index{margin!spine} and 
+\foredge\ margins\index{margin!foredge?\foredge}, 
+where the page width\index{page!width} is fixed and the width of the 
+typeblock\index{typeblock!width} 
+depends on the margins\index{margin}. Results
 for this command are given in \tref{tab:lrblock}. The same notation is used,
-but in this case \cmd{\setlrmarginsandblock} maintains the
-relationship 
+but in this case \cmd{\setlrmarginsandblock} maintains the relationship 
 \begin{displaymath}
 S + B_{w} + E = \textrm{constant} \mbox{\space} (= P_{w}).
 \end{displaymath}
-The width of the typeblock\index{typeblock} is calculated from $B_{w} = P_{w} - S - E$.
+The width of the typeblock\index{typeblock} is calculated 
+from $B_{w} = P_{w} - S - E$.
 
 \begin{table}
-\DeleteShortVerb{\|}
 \centering
 \caption{Arguments and results for \cs{setlrmarginsandblock} } \label{tab:lrblock}
-\begin{tabular}{ccc|l} \hline
-\meta{spine} & \meta{edge} & \meta{ratio} & Result \\ \hline
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{spine} & \meta{edge} & \meta{ratio} & Result \\ \midrule
  S   & E & r & $S$, $E$ \\
  S   & E & * & $S$, $E$ \\
  S   & * & r & $E = rS$ \\
@@ -4205,29 +6854,40 @@ The width of the typeblock\index{typeblock} is calculated from $B_{w} = P_{w} -
 {*}  & E & * & $S = E$ \\
 {*}  & * & r & ambiguous \\
 {*}  & * & * & ambiguous \\
-\hline
+\bottomrule
 \end{tabular}
-\MakeShortVerb{\|}
 \end{table}
 
-    Assuming that we want a 3in wide typeblock\index{typeblock} on a 5in wide page and we want
-the spine margin\index{margin} to be 0.8in and the \foredge{} margin\index{margin} to be 1.2in (i.e., the
-\foredge{} margin\index{margin} is half as big again as the spine margin\index{margin}) this can be
-accomplished in the following ways (with the \lnc{\textwidth} being calculated
-from the previously specified \cmd{\pagewidth} and the specified margins\index{margin}):
-\begin{lcode}
-\setlrmarginsandblock{0.8in}{1.2in}{*}   % specify both margins
-\setlrmarginsandblock{0.8in}{*}{1.5}     % specify spine & foredge/spine ratio
-\setlrmarginsandblock{*}{1.2in}{0.667}   % specify foredge & spine/foredge ratio
-\end{lcode}
-If we wanted the margins to be both 1in instead then any of the following 
+    Assuming that we want a 3in wide typeblock\index{typeblock!width} on a 
+5in wide page\index{page!width} and we want the spine 
+margin\index{margin!spine} to be 0.8in and the \foredge{} 
+margin\index{margin!foredge?\foredge} to be 1.2in 
+(i.e., the \foredge\ margin is half as big again as the spine margin) 
+this can be accomplished in the following ways (with the \lnc{\textwidth} 
+being calculated from the previously specified \cmd{\pagewidth} and the 
+specified margins):
+\begin{lcode}
+% specify both margins
+    \setlrmarginsandblock{0.8in}{1.2in}{*}   
+% specify spine & fore-edge/spine ratio
+    \setlrmarginsandblock{0.8in}{*}{1.5}     
+% specify fore-edge & spine/fore-edge ratio
+    \setlrmarginsandblock{*}{1.2in}{0.667}   
+\end{lcode}
+If we wanted the margins\index{margin!specifying size} to be both 1in 
+instead then any of the following 
 will do it:
 \begin{lcode}
-\setlrmarginsandblock{1in}{1in}{*} % specify both margins
-\setlrmarginsandblock{1in}{*}{1}   % specify spine & foredge/spine ratio
-\setlrmarginsandblock{1in}{*}{*}   % specify spine (foredge = spine)
-\setlrmarginsandblock{*}{1in}{1}   % specify foredge & spine/foredge ratio
-\setlrmarginsandblock{*}{1in}{*}   % specify foredge (spine = foredge)
+% specify both margins
+    \setlrmarginsandblock{1in}{1in}{*} 
+% specify spine & fore-edge/spine ratio
+    \setlrmarginsandblock{1in}{*}{1}   
+% specify spine (fore-edge = spine)
+    \setlrmarginsandblock{1in}{*}{*}   
+% specify fore-edge & spine/fore-edge ratio
+    \setlrmarginsandblock{*}{1in}{1}   
+% specify fore-edge (spine = fore-edge)
+    \setlrmarginsandblock{*}{1in}{*}   
 \end{lcode}
 
     That completes the methods for specifying the horizontal spacings. There 
@@ -4236,17 +6896,25 @@ described below.
 
 \begin{syntax}
 \cmd{\setulmargins}\marg{upper}\marg{lower}\marg{ratio} \\
-\lnc{\uppermargin} \lnc{\lowermargin} \\
 \end{syntax}
-The command \cmd{\setulmargins} can be used to specify
+\glossary(setulmargins)%
+  {\cs{setulmargins}\marg{upper}\marg{lower}\marg{ratio}}%
+  {Sets the upper and lower margins with the current typeblock height.}
+The command \cmd{\setulmargins} can be used to 
+specify\index{margin!specifying size}
 the upper and lower margins\footnote{Only the upper margin is noted in
-\fref{fig:oddstock}; the lower margin\index{margin} is the distance between the bottom
-of the typeblock\index{typeblock} and the bottom of the page.} where the heights of the page
-and the typeblock\index{typeblock} are fixed. This is similar to \cmd{\setlrmargins}. Using
-a slightly different notation this time, with $U$ being the upper margin\index{margin},
-$L$ being the lower margin\index{margin}, and $P_{h}$ and $B_{h}$ being the 
-\emph{height} of the page
-and typeblock\index{typeblock}, respectively, the results are shown in \tref{tab:ulmargins}.
+\fref{fig:oddstock} and~\ref{fig:evenstock}; 
+the lower margin\index{margin!lower} is the distance between the bottom
+of the typeblock\index{typeblock} and the bottom of the page.} 
+where the heights of the page\index{page!height} and the 
+typeblock\index{typeblock!height} are 
+fixed. This is similar to \cmd{\setlrmargins}. Using a slightly 
+different notation this time, with $U$ being the upper 
+margin\index{margin!upper}, $L$ being the lower margin\index{margin!lower}, 
+and $P_{h}$ and $B_{h}$ being the 
+\emph{height} of the page\index{page!height} and 
+typeblock\index{typeblock!height}, respectively, 
+the results are shown in \tref{tab:ulmargins}.
 The \cmd{\setlrmargins} command maintains the relationship
 \begin{displaymath}
 U + L = K_{h}  = \textrm{constant} \mbox{\space} (= P_{h} - B_{h}).
@@ -4254,11 +6922,11 @@ U + L = K_{h}  = \textrm{constant} \mbox{\space} (= P_{h} - B_{h}).
 
 
 \begin{table}
-\DeleteShortVerb{\|}
 \centering
 \caption{Arguments and results for \cs{setulmargins} } \label{tab:ulmargins}
-\begin{tabular}{ccc|l} \hline
-\meta{upper} & \meta{lower} & \meta{ratio} & Result \\ \hline
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{upper} & \meta{lower} & \meta{ratio} & Result \\ \midrule
  U   & L & r & ambiguous \\
  U   & L & * & ambiguous \\
  U   & * & r & ambiguous \\
@@ -4267,31 +6935,37 @@ U + L = K_{h}  = \textrm{constant} \mbox{\space} (= P_{h} - B_{h}).
 {*}  & L & * & $U = K_{h} - L$ \\
 {*}  & * & r & $L + U = K_{h}$, $L = rU$ \\
 {*}  & * & * & $L + U = K_{h}$, $L = U$ \\
-\hline
+\bottomrule
 \end{tabular}
-\MakeShortVerb{\|}
 \end{table}
 
 \begin{syntax}
 \cmd{\setulmarginsandblock}\marg{upper}\marg{lower}\marg{ratio} \\
 \end{syntax}
+\glossary(setulmarginsandblock)%
+  {\cs{setulmarginsandblock}\marg{upper}\marg{lower}\marg{ratio}}%
+  {Sets the upper and lower margins, modifying the typeblock height to match.}
 The command \cmd{\setulmarginsandblock}
-can be used to specify the upper and lower margins\index{margin}, where the page height 
-is fixed and the height of the typeblock\index{typeblock} depends on the margins\index{margin}. Results
+can be used to specify\index{margin!specifying size} 
+the upper\index{margin!upper} and lower margins\index{margin!lower}, 
+where the page height\index{page!height}
+is fixed and the height of the typeblock\index{typeblock!height} 
+depends on the margins. Results
 for this command are given in \tref{tab:ulblock}. The same notation is used,
 but in this case \cmd{\setulmarginsandblock} maintains the
 relationship 
 \begin{displaymath}
 U + B_{h} + L = \textrm{constant} \mbox{\space} (P_{h}).
 \end{displaymath}
-The height of the typeblock\index{typeblock} is calculated from $B_{h} = P_{h} - U - L$.
+The height of the typeblock\index{typeblock!specifying size} 
+is calculated from $B_{h} = P_{h} - U - L$.
 
 \begin{table}
-\DeleteShortVerb{\|}
 \centering
 \caption{Arguments and results for \cs{setulmarginsandblock} } \label{tab:ulblock}
-\begin{tabular}{ccc|l} \hline
-\meta{upper} & \meta{lower} & \meta{ratio} & Result \\ \hline
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{upper} & \meta{lower} & \meta{ratio} & Result \\ \midrule
  U   & L & r & $U$, $L$ \\
  U   & L & * & $U$, $L$ \\
  U   & * & r & $L = rU$ \\
@@ -4300,77 +6974,112 @@ The height of the typeblock\index{typeblock} is calculated from $B_{h} = P_{h} -
 {*}  & L & * & $U = L$ \\
 {*}  & * & r & ambiguous \\
 {*}  & * & * & ambiguous \\
-\hline
+\bottomrule
 \end{tabular}
-\MakeShortVerb{\|}
 \end{table}
 
 \begin{syntax}
 \cmd{\setcolsepandrule}\marg{colsep}\marg{thickness} \\
-\lnc{\columnsep} \lnc{\columseprule} \\
 \end{syntax}
-    For twocolumn\index{column!double} text the width of the gutter between the columns must be
-specified. LaTeX also lets you draw a vertical rule in the middle of the 
+\glossary(setcolsepandrule)%
+  {\cs{setcolsepandrule}\marg{colsep}\marg{thickness}}%
+  {Sets the width of the gutter and the thickness of the rule in the gutter.}
+\glossary(columnsep)%
+  {\ls{columnsep}}%
+  {Width of the gutter between columns.}
+\glossary(columnseprule)%
+  {\ls{columnseprule}}%
+ {Thickness of the rule in the gutter.}
+    For twocolumn\index{column!double} text the width of 
+the gutter\index{gutter}
+between the columns must be specified. \ltx\ also lets you draw a 
+vertical rule in the middle of the 
 gutter. The macro \cmd{\setcolsepandrule} 
-sets the gutter width, \lnc{\columnsep}, to \meta{colsep} 
-and \lnc{\columnseprule}, the thickness of the rule, 
+sets the gutter width\index{gutter!width}, \lnc{\columnsep}, to \meta{colsep} 
+and the thickness of the rule, \lnc{\columnseprule}, 
 to \meta{thickness}. A \meta{thickness} of 0pt means that the rule will be
-invisible. Visible rules usually have a thickness of about 0.4pt.
-The total width of the twocolumns\index{column!double} of text and the gutter equals the width of
-the typeblock\index{typeblock}.
+invisible. Visible rules usually have a thickness\index{rule!thickness} 
+of about 0.4pt. The total width of the twocolumns\index{column!double} 
+of text and the gutter equals the width of the typeblock\index{typeblock}.
 
-    This completes the main elements of the page --- the page size, the size
-of the typeblock\index{typeblock} and the margins\index{margin} surrounding the typeblock\index{typeblock}. 
+    This completes the methods for specifying the layout of the
+main elements of the page --- the page\index{page!specifying size} 
+size, the size of the typeblock\index{typeblock!specifying size} and the 
+margins\index{margin!specifying size} 
+surrounding the typeblock\index{typeblock!location}. 
 
 \section{Headers, footers and marginal notes}
 \index{header|(}\index{footer|(}
 
     A page may have two additional items, and usually has at least one of 
-these. They are the running header and running footer. If the page has a folio\index{folio} then it is located either in the 
-header or in the footer. The word `in' is used rather lightly here as the folio\index{folio}
+these. They are the running header and running footer. If the page has a 
+folio\index{folio} then it is located either in the header or in the footer. 
+The word `in' is used rather lightly here as the folio\index{folio}
 may not be actually \emph{in} the header or footer but is always located 
-at some constant relative position. A common position for the folio\index{folio} is towards
-the \foredge{} of the page, either in the header of the footer. This makes it 
-easy to spot when thumbing through the book. It may be placed at the center of
-the footer, but unless you want to really annoy the reader do not place it near
+at some constant relative position. A common position for the 
+folio\index{folio} is towards the \foredge\index{foredge?\foredge}\index{margin!outer} of the 
+page, either in the header or the footer. This makes it easy to spot when 
+thumbing through the book. It may be placed at the center of the footer, 
+but unless you want to really annoy the reader do not place it near
 the spine.
 
     Often a page header contains the current chapter title, with perhaps a 
 section title on the opposite header, as aids to the reader in navigating 
-around the book. Some books
-put the book title into one of the headers, usually the verso one, but I see 
+around the book. Some books put the book title into one of the headers, 
+usually the verso one, but I see 
 little point in that as presumably the reader knows which particular book he
 is reading, and the space would be better used providing more useful signposts.
 
+\index{header!specifying size|(}
+
 \begin{syntax}
 \cmd{\setheadfoot}\marg{headheight}\marg{footskip} \\
-\lnc{\headheight} \lnc{\footskip} \\
 \end{syntax}
-The command \cmd{\setheadfoot} sets the
+\glossary(setheadfoot)%
+  {\cs{setheadfoot}\marg{headheight}\marg{footskip}}%
+  {Sets the headheight and footskip.}
+\glossary(headheight)%
+  {\ls{headheight}}%
+  {Height available for a header.}
+\glossary(footskip)%
+  {\ls{footskip}}%
+  {Distance between the bottom of the typeblock and the bottom of a footer.}
+The \cmd{\setheadfoot} macro sets the
 \lnc{\headheight} parameter to the value \meta{headheight} and the
-\lnc{\footskip} parameter to \meta{footskip}.
+\lnc{\footskip} parameter to \meta{footskip}. It is usual to set the
+\lnc{\headheight} to at least the value of the \lnc{\baselineskip} of
+the normal body font.
+
 
 \begin{syntax}
 \cmd{\setheaderspaces}\marg{headdrop}\marg{headsep}\marg{ratio} \\
-\lnc{\headdrop} \lnc{\headsep} \\
 \end{syntax}
+\glossary(setheaderspaces)%
+  {\cs{setheaderspaces}\marg{headdrop}\marg{headsep}\marg{ratio}}%
+  {Sets the spacing above and below a header.}
+\glossary(headsep)%
+  {\ls{headsep}}%
+  {Distance between the bottom of a header and the top of the typeblock.}
+\glossary(headdrop)%
+  {\ls{headdrop}}%
+  {Distance between the top of the trimmed page and the top of a header.}
 The command \cmd{\setheaderspaces} is similar to \cmd{\setulmargins}.
-Using the notation $U$ for the upper margin\index{margin} (as before), $H_{h}$ for the
+Using the notation $U$ for the upper margin\index{margin!upper} (as before), $H_{h}$ for the
 \lnc{\headheight}, $H_{s}$ for the \lnc{\headsep} and $D$ for the
 \lnc{\headdrop}, where the \lnc{\headdrop} is the distance between the top
 of the trimmed page and the top of the header\footnote{The head drop is not
-shown in \fref{fig:oddstock}.}, then the macro \cmd{\setheaderspaces}
-maintains the relationship
+shown in \fref{fig:oddstock} or~\ref{fig:evenstock}.}, 
+then the macro \cmd{\setheaderspaces} maintains the relationship
 \begin{displaymath}
 D + H_{s} = C_{h}  = \textrm{constant} \mbox{\space} (= U - H_{h}).
 \end{displaymath}
 
 \begin{table}
-\DeleteShortVerb{\|}
 \centering
 \caption{Arguments and results for \cs{setheaderspaces} } \label{tab:headspaces}
-\begin{tabular}{ccc|l} \hline
-\meta{headdrop} & \meta{headsep} & \meta{ratio} & Result \\ \hline
+%\begin{tabular}{ccc|l} \hline
+\begin{tabular}{cccl} \toprule
+\meta{headdrop} & \meta{headsep} & \meta{ratio} & Result \\ \midrule
  D   & $H_{s}$ & r & ambiguous \\
  D   & $H_{s}$ & * & ambiguous \\
  D   & *       & r & ambiguous \\
@@ -4379,9 +7088,8 @@ D + H_{s} = C_{h}  = \textrm{constant} \mbox{\space} (= U - H_{h}).
 {*}  & $H_{s}$ & * & $D = C_{h} - H_{s}$ \\
 {*}  & *       & r & $H_{s} + D = C_{h}$, $H_{s} = rD$ \\
 {*}  & *       & * & $H_{s} + D = C_{h}$, $H_{s} = D$ \\
-\hline
+\bottomrule
 \end{tabular}
-\MakeShortVerb{\|}
 \end{table}
 
 The macro \cmd{\setheaderspaces} is for specifying the spacing above and below
@@ -4389,6 +7097,7 @@ the page header.
 The possible arguments and results are shown in \tref{tab:headspaces}. Typically,
 the \lnc{\headsep} is of more interest than the \lnc{\headdrop}.
 
+\index{header!specifying size|)}
 \index{footer|)}\index{header|)}
 
 \index{marginalia|(}
@@ -4399,22 +7108,27 @@ page, and also illustrates that some parameters control different
 positions on the stock\index{stock}.
 
 
-\begin{figure}
-\centering
-\oddpagelayoutfalse
-\drawstock
-\caption{The \textsf{memoir} class page layout parameters for a verso page} \label{fig:evenstock}
-\end{figure}
-
-
 
 \begin{syntax}
 \cmd{\setmarginnotes}\marg{separation}\marg{width}\marg{push} \\
-\lnc{\marginparsep} \lnc{\marginparwidth} \lnc{\marginparpush} \\
 \end{syntax}
+\glossary(setmarginnotes)%
+  {\cs{setmarginnotes}\marg{separation}\marg{width}\marg{push}}%
+  {Sets the length parameters for marginal notes.}
+\glossary(marginparsep)%
+  {\ls{marginparsep}}%
+  {Horizontal distance between the edge of the typeblock and a marginal note.}
+\glossary(marginparwidth)%
+  {\ls{marginparwidth}}%
+  {Maximum width of marginal note.}
+\glossary(marginparpush)%
+  {\ls{marginparpush}}%
+  {Minimum vertical distance between marginal notes.}
+
 The command \cmd{\setmarginnotes}
 sets the parameters for marginal notes. The distance \lnc{\marginparsep} 
-between the typeblock\index{typeblock} and any note is set to \meta{separation}, the 
+between the typeblock\index{typeblock} and any note is set 
+to \meta{separation}, the 
 maximum width for a note, \lnc{\marginparwidth}, is set to \meta{width}
 and the minimum vertical distance between notes, \lnc{\marginparpush},
 is set to \meta{push}.
@@ -4423,72 +7137,89 @@ is set to \meta{push}.
 
 \section{Putting it together}
 
-    The page layout parameters just discussed are not always the same
-as those that are expected by LaTeX, or by LaTeX packages. The parameters
-that LaTeX expects are shown in \fref{fig:anoddpage}. You can either use
-the class commands for changing the page layout or change the LaTeX parameters
+    The page layout parameters\index{page layout!class parameters} 
+just discussed are not always the same
+as those that are expected by \ltx, or by \ltx\ packages. The parameters
+that \ltx\ expects are shown in \fref{fig:anoddpage}. You can either use
+the class commands for changing the page layout or change the \ltx\ 
+parameters\index{page layout!LaTeX parameters?\ltx\ parameters}
 directly using either \cmd{\setlength} or \cmd{\addtolength} applied to the
 parameter(s) to be modified. If you choose the latter route, those class 
-parameters which differ from the standard LaTeX parameters will \emph{not} be
+parameters which differ from the standard \ltx\ parameters will \emph{not} be
 modified. 
 
-    The general process of setting up your own page layout is along these
-lines:
+    The general process of setting up your own page layout\index{page layout} 
+is along these lines:
 \begin{itemize}
-\item Decide on the required finished page size, and pick a stock\index{stock} size that
-      is at least as large as the page.
-\item Use \cmd{\setstocksize} to set the values of \lnc{\stockheight}
+\item Decide on the required finished page\indextwo{page}{size} size, 
+      and pick a stock\indextwo{stock}{size} size that is at least as 
+      large as the page.
+\item Use \cmd{\setstocksize}\index{stock!specifying size} to set the 
+      values of \lnc{\stockheight}
       and \lnc{\stockwidth}, followed by \cmd{\settrimmedsize} to specify
-      the values of \lnc{\paperheight} and \lnc{\paperwidth}.
-\item Decide on the location of the page with respect to the stock\index{stock}. If the
-      page and stock\index{stock} sizes are the same, then call |\settrims{0pt}{0pt}|.
+      the values\ of \lnc{\paperheight} and \lnc{\paperwidth}.
+\item Decide on the location of the page\index{page!location} with respect 
+      to the stock\index{stock}. If the page and stock\index{stock} sizes 
+      are the same, then call \verb?\settrims{0pt}{0pt}?.
       If they are not the same size then decide on the appropriate 
       values for \lnc{\trimtop} and \lnc{\trimedge} to position the page on
-      the stock\index{stock}, and then set these through \cmd{\settrims}.
-\item Decide on the size of the typeblock\index{typeblock} and use \cmd{\settypeblocksize}
+      the stock\index{stock}, and then set\index{trim!specifying} these 
+      through \cmd{\settrims}.
+\item Decide on the size of the typeblock\indextwo{typeblock}{size} and 
+      use \cmd{\settypeblocksize}\index{typeblock!specifying size}
       to specify the values of \lnc{\textheight} and \lnc{\textwidth}.
-\item Pick the value for the spine margin\index{margin}, and use \cmd{\setlrmargins}
+\item Pick the value for the spine margin\index{margin!spine}, and use 
+     \cmd{\setlrmargins}\index{margin!specifying size}
       to set the values for the \lnc{\spinemargin} and \lnc{\foremargin}.
 
       An alternative sequence is to use \cmd{\setlrmarginsandblock} to
-      set the \lnc{\textwidth} for a particular choice of side margins\index{margin}.
+      set the \lnc{\textwidth} for a particular choice of side 
+      margins\index{margin}.
 
-\item Pick the value for the upper margin\index{margin} and use \cmd{\setulmargins}
-      to set the values for the \lnc{\uppermargin} and \cmd{\lowermargin}.
+\item Pick the value for the upper margin\index{margin!upper} and 
+      use \cmd{\setulmargins} to set the values\index{margin!specifying size} 
+      for the \lnc{\uppermargin} and \cmd{\lowermargin}.
 
       An alternative sequence is to use \cmd{\setulmarginsandblock} to
       set the \lnc{\textheight} for a particular choice of upper and
       lower margins\index{margin}.
 
+      The typeblock is now located\index{typeblock!location} on the page.
+
 \item Pick the values for the \lnc{\headheight} and \lnc{\footskip}
-      and use \cmd{\setheadfoot} to specify these.
+      and use \cmd{\setheadfoot}\index{header!specifying size} 
+      to specify these.
 
 \item Pick your value for \cmd{\headskip} and use \cmd{\setheaderspaces}
-      to set this and \lnc{\headdrop}.
+      to set this and \lnc{\headmargin}.
 
-\item If you are going to have any marginal\index{marginalia} notes, use \cmd{\setmarginnotes}
+\item If you are going to have any marginal\index{marginalia} notes, 
+      use \cmd{\setmarginnotes}
       to specify the values for \lnc{\marginparsep}, \lnc{\marginparwidth}
       and \lnc{\marginparpush}.
 
 \end{itemize}
 
     You can plan and specify your layout in any order that is 
-convenient to you. Each of the page layout commands are independent; also if
+convenient to you. Each of the page layout commands is independent of the 
+others; also if
 a value is set at one point, say the \lnc{\textwidth}, and is then
 later changed in some way, only the last of the settings is used as the actual
 value.
 
 
-    Comparing \figurerefname s~\ref{fig:oddstock} and~\ref{fig:anoddpage} you can see
-the different layout parameters provided by the class and used by standard
-LaTeX. For convenience, and because the figures do not show all
+    Comparing \figurerefname s~\ref{fig:oddstock} and~\ref{fig:anoddpage} 
+you can see the different layout\index{page layout!parameters} parameters 
+provided by the class and used by standard
+\ltx. For convenience, and because the figures do not show all
 the parameters, the two sets of parameters are listed in \tref{tab:stockpage}.
 
 \begin{table}
 \centering
-\caption{The class and LaTeX page layout parameters}\label{tab:stockpage}
-\begin{tabular}{ll} \hline
-Class & LaTeX \\ \hline
+\caption{The class and \ltx\ page layout parameters}\label{tab:stockpage}
+%\begin{tabular}{ll} \hline
+\begin{tabular}{ll} \toprule
+Class & \ltx\ \\ \midrule
 \lnc{\stockheight}    &  \\
 \lnc{\trimtop}        &  \\
 \lnc{\trimedge}       &  \\
@@ -4504,27 +7235,142 @@ Class & LaTeX \\ \hline
                       & \lnc{\oddsidemargin}  \\
                       & \lnc{\evensidemargin}  \\
 \lnc{\uppermargin}    &  \\
-\lnc{\headdrop}       &  \\
+\lnc{\headmargin}     &  \\
                       & \lnc{\topmargin}  \\
 \lnc{\headheight}     & \lnc{\headheight}  \\
 \lnc{\headsep}        & \lnc{\headsep}  \\
 \lnc{\footskip}       & \lnc{\footskip}  \\
-\lnc{\lowermargin}    &  \\
 \lnc{\marginparsep}   & \lnc{\marginparsep}  \\
 \lnc{\marginparwidth} & \lnc{\marginparwidth}  \\
 \lnc{\marginparpush}  & \lnc{\marginparpush}  \\
-\hline
+\bottomrule
 \end{tabular}
 \end{table}
 
-\begin{syntax}
-\cmd{\checkandfixthelayout} \\
-\end{syntax}
-    The macro \cmd{\checkandfixthelayout} takes all the class layout parameters, 
-checks
-that they have `sensible' values (e.g., the \lnc{\textwidth} is not negative),
-and then calculates the values for all those LaTeX layout parameters that 
-differ from the class parameters. If you have used the class macros to change
+    Unless you are satisfied with the default page layout, after specifying 
+the layout that you want you have to call the \cmd{\checkandfixthelayout}
+command to finally implement your specification.
+
+\begin{syntax}
+\cmd{\checkandfixthelayout}\oarg{algorithm} \\
+\cmd{\checkthelayout}\oarg{algorithm} \\
+\cmd{\fixthelayout} \\
+\lnc{\baselineskip} \lnc{\topskip} \\
+\end{syntax}
+\glossary(checkandfixthelayout)%
+  {\cs{checkandfixthelayout}\oarg{algorithm}}%
+  {Command to check and implement the page layout specifications, adjusting
+   the \cs{textheight} using \meta{algorithm} 
+   (classic, fixed, lines, or nearest, the default being classic) 
+   for the calculation.}%
+\glossary(checkthelayout)%
+  {\cs{checkthelayout}\oarg{algorithm}}%
+  {Command to check the page layout specifications, adjusting
+   the \cs{textheight} using \meta{algorithm} 
+   (classic, fixed, lines, or nearest, the default being classic) 
+   for the calculation.}%
+\glossary(topskip)%
+  {\ls{topskip}}%
+  {The height of the first line of text on a page. This is usually
+   less than the \cs{baselineskip}.}
+\glossary(baselineskip)%
+  {\ls{baselineskip}}%
+  {The normal vertical distance between the baselines of adjacent lines 
+   of text (depends on the size of the font).}
+
+    The \cmd{\checkandfixthelayout} macro uses 
+\cmd{\checkthelayout} to
+check the page layout specification you have given, and then calls
+\cmd{\fixthelayout} to finally implement it.
+
+The \cmd{\checkthelayout} macro checks the class layout 
+parameters\index{page layout!check parameters} to see whether  
+they have `sensible' values (e.g., the \lnc{\textwidth} is not negative)
+and, depending on the \meta{algorithm} argument, it may modify the 
+\lnc{\textheight}. It does not actually implement the layout.
+
+   When using \cmd{\flushbottom} \ltx\ expects that the \lnc{\textheight} 
+is such that an integral number of text lines in the body font will fit
+exactly into the height. If not, then it issues `underfull vbox' messages.
+More precisely, if  $b$ is the \lnc{\baselineskip} and $t$ is the 
+\lnc{\topskip}, $N$ is an integer (the number of lines in the typeblock), 
+and $T$ is the
+\lnc{\textheight} then to avoid underfull vboxes the following relationship
+must hold
+\begin{equation}
+T = (N-1)b + t \label{eq:heightlines}
+\end{equation}
+By default \cmd{\checkthelayout} ensures that the final \lnc{\textheight} 
+meets this criterion. The optional \meta{algorithm} argument lets you control
+just how it does this. In the following $H$ is your requested value for
+the \lnc{\textheight} and the other symbols are as before, with $T$ as
+the adjusted value, and using integer arithmetic.\footnote{In this context 
+`integer arithmetic' means that the result of a division will be rounded down.
+For example $99/10$ in `real arithmetic' results in $9.9$, whereas with
+integer arithmetic the result is 9, not 10.}
+The permissable values for \meta{algorithm} are:
+\begin{itemize}
+\item[\texttt{fixed}] The \lnc{\textheight} is not altered. 
+\begin{equation} T = H \end{equation}
+If you use this option you may find that underfull vboxes are reported
+for \cmd{\flushbottom} pages.
+\item[\texttt{classic}] This is the default and is the one used by the standard
+classes. 
+\begin{equation} T = b \lfloor H/b \rfloor + t \end{equation}
+The relationship (\ref{eq:heightlines}) is maintained.
+\item[\texttt{lines}] This is similar to \texttt{classic}, but results in a 
+smaller final value.
+\begin{equation} T = b \lfloor (H-b)/b \rfloor + t \end{equation}
+The relationship (\ref{eq:heightlines}) is maintained.
+\item[\texttt{nearest}] The calculated value is the nearest to the given value
+while still maintaining the relationship (\ref{eq:heightlines}).
+\begin{equation} T = b \lfloor (H - t + b/2)/b \rfloor + t \end{equation}
+\end{itemize}
+
+\begin{table}
+\centering
+\caption{Results from sample \cs{textheight} adjustments} \label{tab:textht}
+\begin{tabular}{ccccc} \toprule
+  & \multicolumn{4}{c}{Algorithm} \\ \cmidrule{2-5}
+  &  fixed & classic & lines & nearest \\ 
+Requested height & \multicolumn{4}{c}{adjusted height in pts, (lines) } \\ 
+\midrule
+10.0\cs{baselineskip} & 120.0pt, (10) & 130pt, (11) & 118pt, (10) & 118pt, (10) \\ 
+10.2\cs{baselineskip} & 122.4pt, (10) & 130pt, (11) & 118pt, (10) & 118pt, (10) \\ 
+10.4\cs{baselineskip} & 124.8pt, (10) & 130pt, (11) & 118pt, (10) & 130pt, (11) \\ 
+10.6\cs{baselineskip} & 127.2pt, (10) & 130pt, (11) & 118pt, (10) & 130pt, (11) \\ 
+10.8\cs{baselineskip} & 129.6pt, (10) & 130pt, (11) & 118pt, (10) & 130pt, (11) \\ 
+11.0\cs{baselineskip} & 132.0pt, (11) & 142pt, (12) & 130pt, (11) & 130pt, (11) \\ 
+\bottomrule
+\end{tabular}
+\end{table}
+
+    Table~\ref{tab:textht} shows the results from the various \lnc{\textheight}
+adjustment calculations\footnote{For comparison the optimum heights from 
+equation \ref{eq:heightlines} for 10, 11 and 12 lines are respectively
+118pt, 130pt and 142pt.} where the \lnc{\baselineskip} is 12pt and 
+the \lnc{\topskip} is 10pt, which are the normal values for a Computer 
+Modern 10pt font.
+In all cases the \texttt{fixed} algorithm resulted in 
+underfull vboxes. If you know the number of lines that you want, say 42,
+then requesting
+\begin{lcode}
+%% setting equivalent to \setlength{\textheight}{42\baselineskip}
+\checkandfixthelayout[lines]
+\end{lcode}
+will result in the most appropriate \lnc{\textheight}.
+
+    If you use the \Lpack{calc} package you can use constructs like 
+the following in a page layout specification:
+\begin{lcode}
+\setlength{\textheight}{41\baselineskip + \topskip}
+\settypeblocksize{41\baselineskip + \topskip}{33pc}{*}
+\end{lcode}
+
+    The \cmd{\fixthelayout} macro finally implements the layout 
+and calculates the values for all the standard \ltx\ layout 
+parameters\index{page layout!LaTeX parameters?\ltx\ parameters}.
+If you have used the class macros to change
 the layout in any way, you must call \cmd{\checkandfixthelayout} after you have
 made all the necessary changes. As an aid, the final layout parameter values
 are displayed on the terminal and written out to the log file.
@@ -4533,102 +7379,174 @@ are displayed on the terminal and written out to the log file.
 \cmd{\typeoutlayout} \\
 \cmd{\typeoutstandardlayout} \\
 \end{syntax}
-The command \cmd{\typeoutlayout} may be used at any point in the document
-to display the current class layout parameter values on the terminal and 
-to write
-them to the log file. The \cmd{\typeoutstandardlayout} does the same thing,
-except that it outputs the values of the standard parameters.
+\glossary(typeoutlayout)%
+  {\cs{typeoutlayout}}%
+  {Outputs the current values of the class layout parameters to the 
+   terminal and log file.}
+\glossary(typeoutstandardlayout)%
+  {\cs{typeoutstandardlayout}}%
+  {Outputs the current values of the standard \ltx\ layout parameters 
+   to the terminal and log file.}
+ \cmd{\typeoutlayout} writes the current class layout
+parameter\index{page layout!class parameters} values to the terminal 
+and the log file. It is called by \cmd{\checkandfixthelayout} but you can 
+use it yourself at any time.
+The macro \cmd{\typeoutstandardlayout} writes the
+standard layout parameter\index{page layout!LaTeX parameters?\ltx\ parameters}
+ values to the terminal and log file so that you can
+compare the two sets of parameter values.
+
+\section{Side margins}
+
+    In \Lopt{twoside} printing the spine margin is normally the same on
+both recto and verso pages and, unless the spine and \foredge{} margins are the
+same, the typeblock is shifted side to side when printing the recto and 
+verso pages. Additionaly you can have different headers and footers for the
+recto and verso pages. However, in \Lopt{oneside} printing the typeblock 
+is not moved and the headers and footers are the same for both odd and 
+even pages.
+
+    Some documents are designed to have, say, a very wide righthand margin
+in which to put illustrations; this leads to needing the spine margin on
+verso pages to be much larger than the spine margin on recto pages. This
+can be done with the \Lopt{oneside} option. However, different headers
+and footers are required for the recto and verso pages, which can only be
+done with the \Lopt{twoside} option. The way to get the desired effects
+is like this (\Lopt{twoside} is the default class option):
+\begin{lcode}
+\documentclass{memoir}
+%%% set up the recto page layout
+\checkandfixthelayout%     or perhaps \checkandfixthelayout[lines]
+\setlength{\evensidemargin}{\oddsidemargin}% after \checkandfix...
+...
+\end{lcode}
 
-    When pdfLaTeX is used to generate a PDF version of a \Lclass{memoir}
+\section{Printing and viewing}
+  
+    When \pdfltx\ is used to generate a \pixpdf\ version of a \Pclass{memoir}
 document some special setup must be done.
-
 \begin{syntax}
 \cmd{\fixpdflayout} \\
 \end{syntax}
-The macro \cmd{\fixpdflayout} is automatically called after 
-the preamble when pdfLaTeX is used to generate PDF. 
-The default definition is effectively:
+\glossary(fixpdflayout)%
+  {\cs{fixpdflayout}}%
+  {Sets up page size information for \pdfltx.}
+The macro \cmd{\fixpdflayout}\index{page layout!PDF} is automatically called after the preamble when
+\pdfltx{} is used to generate \pixpdf. The default definition is effectively:
 \begin{lcode}
-\newcommand{\fixpdflayout}{\ifpdf\ifnum\pdfoutput>0\relax
+\newcommand*{\fixpdflayout}{\ifpdf\ifnum\pdfoutput>0\relax
   \pdfpageheight=\the\stockheight
   \pdfpagewidth=\the\stockwidth
-  \ifdim\pdfvorigin=0pt\pdfvorigin=1in\fi
+  \ifdim\pdforigin=0pt\pdforigin=1in\fi
   \ifdim\pdfhorigin=0pt\pdfhorigin=1in\fi
   \fi\fi}
 \end{lcode}
-The first settings (\verb?\pdfpage...?) ensure that pdfLaTeX knows the 
-size of the physical sheet for printing. The \verb?\...origin? settings
-set the pdf origin per the TeX origin, provided that their values are 0pt.
-If you have set the origin values yourself, either in a pdfLaTeX 
-configuration file or earlier in the preamble, the \cmd{\fixpdflayout} macro 
-will not alter them (if you need an origin value to be 0, then set it to
-0sp, which is visually indistinguishable from 0pt).
+The first settings (\verb?\pdfpage...?) ensure that \pdfltx{} knows
+the size of the physical sheet\indextwo{stock}{size} for printing. 
+The \verb?\...origin? settings
+set the \pdf{} origin per the \tx\ origin, provided that their values are
+0pt. If you have set the origin values yourself, either in a \pdfltx{} 
+configuration\index{configuration file} file or earlier in the preamble, 
+the \cmd{\fixpdflayout}
+macro will not alter them (if you need an origin value to be 0 then
+set it to 1sp, which is visually indistinguishable from 0pt).
 
 \begin{syntax}
 \cmd{\fixdvipslayout} \\
 \end{syntax}
-The macro \cmd{\fixdvipslayout} is automatically called after the preamble
-when PDF output is not being produced. It provides the dvips processor
-with information about the stock size which a viewer or printer may use.
-
-    With a landscape document and using the processing route
-\texttt{latex -> dvips} the resulting \file{.ps} PostScript file may appear
-upside-down when viewed with, say, \texttt{ghostview}. If this happens
+\glossary(fixdvipslayout)%
+  {\cs{fixdvipslayout}}%
+  {Sets up page size information for dvi processors.}
+
+The macro \cmd{\fixdvipslayout}\index{page layout!dvips} is automatically 
+called after the preamble 
+when \pixpdf{} output is not being produced. It provides the \Lprog{dvips} 
+processor
+with information about the stock\indextwo{stock}{size} size, 
+which a viewer or printer may use.
+
+    With a \Lopt{landscape} document and using the processing route
+\verb?latex -> dvips? the resulting \file{ps} \pscript{} file may appear 
+upside-down when viewed with, say, \Lprog{ghostview} 
+(also known as \Lprog{gsview32}). If this happens
 try putting the following in your preamble:
 \begin{lcode}
 \addtodef{\fixdvipslayout}{}{%
   \special{!TeXDict begin /landplus90{true}store end }}
 \end{lcode}
-If required, additional code can be added to \cmd{\fixdvipslayout}
-by repeated applications of \cmd{\addtodef}.
-Some other potential specials for PostScript printing may be (at least
-for an HP 5SiMx LaserJet duplex printer):
+If required, additional code can be added to \cmd{\fixdvipslayout} by repeated
+applications of \cmd{\addtodef}. Some other potential specials for \pscript{}
+printing may be\footnote{At least for an HP 5SiMx LaserJet duplex printer.}
 \begin{lcode}
-\special{!TeXDict begin <</Duplex true>> setpagedevice end} % duplex
-\special{!TeXDict begin <</Tumble true>> setpagedevice end} % short side binding\end{lcode}
+% specify duplex printing 
+\special{!TeXDict begin <</Duplex true>> setpagedevice end} 
+% specify short side binding
+\special{!TeXDict begin <</Tumble true>> setpagedevice end} 
+\end{lcode}
+
+
+\section{Example} \label{sec:pexamp}
 
-\subsection{Example} \label{sec:pexamp}
+    Suppose you want a page that will fit on both A4\index{paper!size!A4} 
+and US letterpaper\index{paper!size!letterpaper} stock\index{stock},
+wanting to do the least amount of trimming. The layout requirements
+are as follows.
 
-    Suppose you want a page that will fit on both A4\index{paper!size!A4} and US letterpaper\index{paper!size!letterpaper} stock\index{stock},
-wanting to do the least amount of trimming. The width of the typeblock\index{typeblock} should
+    The width of the 
+typeblock\index{typeblock} should
 be such that there are the optimum number of characters per line, and the 
-ratio of the height to the width of the typeblock\index{typeblock} should equal the golden
+ratio of the height to the width of the typeblock\index{typeblock} should 
+equal the golden
 section. The text has to start 50pt below the top of the page.
 We will use the default \lnc{\headheight} and \lnc{\footskip}.
-The ratio of the \foredge{} margin\index{margin} to the spine margin\index{margin} should equal the
+The ratio of the outer margin\index{margin!outer} to the inner
+margin\index{margin!inner} should equal the
 golden section\index{golden section}, 
 as should the space above and below the header\index{header}. There is
-no interest at all in marginal\index{marginalia} notes, so we can ignore any settings for these.
+no interest at all in marginal\index{marginalia} notes, so we can 
+ignore any settings for these.
 
-    We can either do the maths ourselves or get LaTeX to do it for us. Let's
-use LaTeX. First we will work out the size of the largest sheet that can be
-cut from A4\index{paper!size!A4} and letterpaper\index{paper!size!letterpaper}, whose sizes are $297 \times 210$mm and 
-$11 \times 8.5$in; A4 is taller and narrower than letterpaper. 
+    We can either do the maths ourselves or get \ltx\ to do it for us. Let's
+use \ltx. First we will work out the size of the largest sheet that can be
+cut from A4\index{paper!size!A4} and 
+letterpaper\index{paper!size!letterpaper}, 
+whose sizes are \abybm{297}{210}{mm} and 
+\abybm{11}{8.5}{in}; A4 is taller and narrower than letterpaper. 
 \begin{lcode}
 \settrimmedsize{11in}{210mm}{*}
 \end{lcode}
-The stocksize is defined by the class option, but we have to work out the
-trims to reduce the stock\index{stock} to the page. To make life easier, we will only trim
-the \foredge{} and the bottom of the stock\index{stock}, so the \lnc{\trimtop} is zero.
+The stocksize is defined by the class option, which could be either
+\Lopt{letterpaper} or \Lopt{a4paper}, but we have to work out the
+trims to reduce the stock\index{stock} to the page. To make life easier, 
+we will only trim
+the \foredge{} and the bottom of the stock\index{stock}, so the 
+\lnc{\trimtop} is zero.
 The \lnc{\trimtop} and \lnc{\trimedge} are easily specified by 
 \begin{lcode}
 \setlength{\trimtop}{0pt} 
 \setlength{\trimedge}{\stockwidth}
 \addtolength{\trimedge}{-\paperwidth}
 \end{lcode}
+Or if you are using the \Lpack{calc} package, perhaps:
+\begin{lcode}
+\settrims{0pt}{\stockwidth - \paperwidth}
+\end{lcode}
 Specification of the size of the typeblock\index{typeblock} is also easy 
 \begin{lcode}
 \settypeblocksize{*}{\lxvchars}{1.618}
 \end{lcode}
-and now the upper and lower margins\index{margin} are specified by
+and now the upper and lower margins\index{margin!upper}\index{margin!lower} 
+are specified by
 \begin{lcode}
 \setulmargins{50pt}{*}{*}
 \end{lcode}
-The spine and \foredge{} margins\index{margin} are specified just by the value of the golden section\index{golden section}, via 
+The spine and \foredge\ margins\index{margin!spine}\index{margin!foredge?\foredge} 
+are specified just by the value of the golden section\index{golden section}, 
+via 
 \begin{lcode}
 \setlrmargins{*}{*}{1.618}
 \end{lcode}
-The only remaining calculation to be done is the \lnc{\headdrop} and 
+The only remaining calculation to be done is the \lnc{\headmargin} and 
 \lnc{\headsep}. Again this just involves using a ratio
 \begin{lcode}
 \setheaderspaces{*}{*}{1.618}
@@ -4638,9 +7556,11 @@ To finish off we have to make sure that the layout is changed
 \checkandfixthelayout
 \end{lcode}
 
+
 \subsection{The page layout of this manual}
 
 \begin{figure}
+\setlayoutscale{0.49}
 \currentstock
 \oddpagelayouttrue
 \twocolumnlayoutfalse
@@ -4673,9 +7593,8 @@ lists the parameter values resulting from the code above, to the nearest point.
 I initially used the layout defined in \S\ref{sec:pexamp}, which I thought
 looked reasonable, but then I decided to use the one above in order
 to save paper\index{paper} when anyone printed out the manual. The wider
-typeblock\index{typeblock} also makes it easier for TeX when dealing with lines that include
-unhyphenatable text, like the LaTeX code.
-
+typeblock\index{typeblock} also makes it easier for TeX when dealing with 
+lines that include unhyphenatable text, like the LaTeX code.
 
     Andreas Mathias, via Rolf Niepraschk,\footnote{Email 
 from \url{niepraschk@ptb.de} on 2002/02/05.}
@@ -4697,113 +7616,1256 @@ on A4 paper.
 \checkandfixthelayout
 \end{lcode}
 
-\chapter{Titles and abstracts}
+    However, the layout that I have provided will print on both letterpaper
+and A4 sized stock even if it might look better if it was designed for always
+being printed on one or the other.
 
-\section{Introduction}
+\section{Predefined layouts}
 
-   The typeset format of the \cmd{\maketitle} command is virtually fixed
-within the LaTeX standard classes. This class
-provides a set of formatting commands that can be used to modify
-the appearance of the title\index{title} information; that is, the contents of
-the \cmd{\title}, \cmd{\author} and \cmd{\date} commands. 
-It also keeps the values
-of these commands so that they may be printed again later in the
-document.
-   The class also inhibits the normal automatic cancellation of titling
-commands after \cmd{\maketitle}. This means that you can have multiple
-instances of the same, or perhaps different, titles in one document;
-for example on a half title page\index{half title page} and the
-full title page\index{title page}.
-Hooks are provided so that additional titling elements can be defined
-and printed by \cmd{\maketitle}.
-  The \cmd{\thanks} command is enhanced to provide various configurations
-for both the marker symbol and the layout of the thanks\index{thanks} notes.
+    The class, like the standard classes, will automatically produce 
+working layouts for \Lopt{letterpaper}
+and \Lopt{a4paper} size options. They might be a bit problematic, though,
+when the page is much smaller, particularly with respect to the space 
+alloted for marginal notes. You perhaps will find the \Lpack{layouts}
+package~\cite{LAYOUTS} useful for checking the page layout.
 
-Questions about how to have a one-column\index{column!single} abstract\index{abstract} in a 
-two-column\index{column!double} paper
-seem to pop up fairly regularly on the
-\texttt{comp.text.tex} newsgroup. While an answer based on responses
-on \texttt{ctt} is provided in the FAQ,
-the class provides a more author-friendly means
-of accomplishing this. Further, additional controls are provided
-for the typesetting of the \Ie{abstract} environment in general.
+   Some non-default layouts are provided via the commands \cmd{\medievalpage},
+\cmd{\isopage} and \cmd{\semiisopage}; these set the size and position of the
+typeblock with respect to the page. After using any of these commands you
+\emph{must} call \cmd{\checkandfixthelayout} (and after having made any other
+changes to match the new layout).
 
-\section{Titles}
+\begin{figure}[p]
+\begin{leftfullpage}
+\centering
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.62}{0.18}{1.13}{1.5}{0}
+\end{minipage}
+\caption{Default layout for letterpaper} \label{fig:pagefirstlay}
 
-\subsection{Styling the titling}
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.19}{0.11}{1.5}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.25}{0.08}{1.5}{2}{0}
+\end{minipage}
+\caption{Letterpaper layout: Left \cs{medievalpage}, Right \cs{medievalpage}\texttt{[12]}}
 
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.315}{0.11}{1.29}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.3}{0.08}{1.4}{2}{0}
+\end{minipage}
+\caption{Letterpaper layout: Left \cs{isopage}, Right \cs{isopage}\texttt{[12]}}
+
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.46}{0.11}{1}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.3}{1.4}{0.08}{1}{2}{0}
+\end{minipage}
+\caption{Letterpaper layout: Left \cs{semiisopage}, Right \cs{semiisopage}\texttt{[12]}}
+\end{leftfullpage}
+\end{figure}
+\begin{figure}[p]
+\begin{fullpage}
+\centering
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.75}{0.17}{1.22}{1.5}{0}
+\end{minipage}
+\caption{Default layout for a4paper}
+
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.38}{0.11}{1.5}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.39}{0.08}{1.5}{2}{0}
+\end{minipage}
+\caption{A4paper layout: Left \cs{medievalpage}, Right \cs{medievalpage}\texttt{[12]}}
+
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.41}{0.11}{1.42}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.41}{0.08}{1.4}{2}{0}
+\end{minipage} 
+\caption{A4paper layout: Left \cs{isopage}, Right \cs{isopage}\texttt{[12]}}
+
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.62}{0.11}{1}{2}{0}
+\end{minipage}
+\hfill
+\begin{minipage}[b]{\pwlayi}
+\drawaspread{\pwlayii}{1.41}{1.55}{0.08}{1}{2}{0}
+\end{minipage}
+\caption{A4paper layout: Left \cs{semiisopage}, Right \cs{semiisopage}\texttt{[12]}} \label{fig:pagelastlay}
+\end{fullpage}
+\end{figure}
 
-\index{title!styling|(}
 
-   This part of the class is a reimplementation of the \Lpack{titling}
-package~\cite{TITLING}.
 
-The class provides a configurable \cmd{\maketitle} command.
-The \cmd{\maketitle} command as defined by the class 
-is essentially
-\begin{lcode}
-\newcommand{\maketitle}{%
-   \vspace*{\droptitle}
-   \maketitlehooka
-   {\pretitle \title \posttitle}
-   \maketitlehookb
-   {\preauthor \author \postauthor}
-   \maketitlehookc
-   {\predate \date \postdate}
-   \maketitlehookd
-   \thispagestyle{title}
-}
-\end{lcode}
-where the \pstyle{title} pagestyle is initially the same as the
-\pstyle{plain} pagestyle.
-The various macros used within \cmd{\maketitle} are described below.
 
 
 \begin{syntax}
-\cmd{\pretitle}\marg{text} \cmd{\posttitle}\marg{text} \\
-\cmd{\preauthor}\marg{text} \cmd{\postauthor}\marg{text} \\
-\cmd{\predate}\marg{text} \cmd{\postdate}\marg{text} \\
-\end{syntax}
-These six commands each have a single argument, \meta{text},
-which controls the typesetting of the 
-standard elements of the document's \cmd{\maketitle}
-command. The \cmd{\title} is effectively processed between the 
-\cmd{\pretitle} and \cmd{\posttitle} commands; that is, like:
-\begin{lcode}
-{\pretitle \title \posttitle}
+\cmd{\medievalpage}\oarg{spine} \\
+\end{syntax}
+\glossary(medievalpage)%
+  {\cs{medievalpage}\oarg{spine}}%
+  {Generates a page layout according to the principles of early printers.}
+The \cmd{\medievalpage} command generates the position and size of the 
+typeblock according to the principles of medieval scribes and the early 
+printers, as discovered and described by Jan Tschichold~\cite{TSCHICHOLD91};
+some details about this were given earlier in \Sref{sec:gutenbergpage}. 
+The basic principle is that the 
+spine, top, \foredge\ and bottom margins 
+around the typeblock are in the ratio 2:3:4:6. Typically the spine margin
+was 1/9 the width of the page, which is what \cmd{\medievalpage} assumes
+by default. This can be changed with the optional \meta{spine} argument. For
+example, to get narrower margins with the spine being 1/12 the page width:
+\begin{lcode}
+\medievalpage[12]
+\end{lcode}
+Note that \meta{spine} must be an integer.
+
+\begin{syntax}
+\cmd{\isopage}\oarg{spine} \\
+\cmd{\semiisopage}\oarg{spine} \\
+\end{syntax}
+\glossary(isopage)%
+  {\cs{isopage}\oarg{spine}}%
+  {Generates a page layout especially suited to ISO proportioned paper.}
+\glossary(semiisopage)%
+  {\cs{semiisopage}\oarg{spine}}%
+  {Generates a page layout especially suited to ISO proportioned paper but with
+   smaller margins than \cs{isopage}.}
+Robert Bringhurst~\cite{BRINGHURST99} presented a page layout that was
+especially suitable for ISO proportioned paper, although it can be applied to
+any page proportion. The \cmd{\isopage} command implements this design. The
+spine margin is normally 1/9 the page width and the top margin is 1/9 the
+page height, and the \foredge\ and bottom margins are respectively twice the
+spine and top margins. 
+
+   The \cmd{\semiisopage} layout is similar where the spine margin by default 
+is 1/9 the page width, but the top margin is the same as the spine margin.
+Again the \foredge\ and bottom margins are respectively twice the
+spine and top margins. 
+
+The size of the spine (and top) margins can be changed by using the optional
+\meta{spine} argument, which must be an integer. To set the spine margin to
+be, for example, 1/8 of the page width:
+\begin{lcode}
+\semiisopage[8]% or \isopage[8]
+\end{lcode}
+The same factor applies to both the spine and top margins in the case
+of \cmd{\isopage}.
+
+    Spreads showing a variety of these layouts are in \fref{fig:pagefirstlay} 
+through \ref{fig:pagelastlay}. These were produced with the aid of the
+\Lpack{layouts} package.
+
+\begin{syntax}
+\cmd{\setpagebl}\marg{height}\marg{width}\marg{ratio} \\
+\cmd{\setpageml}\marg{height}\marg{width}\marg{ratio} \\
+\cmd{\setpagetl}\marg{height}\marg{width}\marg{ratio} \\
+\end{syntax}
+\glossary(setpagebl)%
+  {\cs{setpagebl}\marg{height}\marg{width}\marg{ratio}}%
+  {Specifies a page of the given dimensions positioned at the bottom left
+   of the stock; see \cs{settrimmedsize}.}
+\glossary(setpagebl)%
+  {\cs{setpageml}\marg{height}\marg{width}\marg{ratio}}%
+  {Specifies a page of the given dimensions positioned at the middle left
+   of the stock; see \cs{settrimmedsize}.}
+\glossary(setpagebl)%
+  {\cs{setpagetl}\marg{height}\marg{width}\marg{ratio}}%
+  {Specifies a page of the given dimensions positioned at the top left
+   of the stock; see \cs{settrimmedsize}.}
+When your page is smaller than the stock it has to be positioned on
+the stock by specifying the trims to give the desired size and location.
+The macro \cmd{\setpagebl}, which takes the same arguments as 
+\cmd{\settrimmedsize} (see \tref{tab:rectsize} on \pref{tab:rectsize}),
+calculates the trims so that the page is located at the bottom left of
+the stock. Similarly \cmd{\setpageml} and \cmd{\setpagetl} will locate
+the page at the middle left and the top left, respectively, of the stock.
+For instance, if you are using letterpaper stock but want the final trimmed
+page size to be A5, then this will put page area at the bottom left of the
+stock.
+\begin{lcode}
+\pagebv % sets page height and width for A5 paper
+\setpagebl{\pageheight}{\pagewidth}{*}
+...
+\checkandfixthelayout
 \end{lcode}
-and similarly for the \cmd{\author} and \cmd{\date} commands. The 
-commands are initialised to mimic the normal result of \cmd{\maketitle}
-typesetting in the \Lclass{report} class.
-That is, the default definitions of the commands are:
+The macros position the page at the left of the stock because usually trimming
+of the stock is limited to the top, right, and bottom, the left being the 
+spine when the pages are finally assembled. To reposition the page to
+the center of the stock the following will halve the top and edge
+trims.
 \begin{lcode}
-\pretitle{\begin{center}\LARGE}
-\posttitle{\par\end{center}\vskip 0.5em}
-\preauthor{\begin{center}
-           \large \lineskip 0.5em%
-           \begin{tabular}[t]{c}}
-\postauthor{\end{tabular}\par\end{center}}
-\predate{\begin{center}\large}
-\postdate{\par\end{center}}
+\settrims{0.5\trimtop}{0.5\trimedge}
+...
+\checkandfixthelayout
 \end{lcode}
 
-They can be changed to obtain different effects. For example to get
-a right justified sans-serif title and a left justifed small caps
-date:
-\begin{lcode}
-\pretitle{\begin{flushright}\LARGE\sffamily}
-\posttitle{\par\end{flushright}\vskip 0.5em}
-\predate{\begin{flushleft}\large\scshape}
-\postdate{\par\end{flushleft}}
-\end{lcode}
+Remember that after you have finished defining the layout you want you
+have to call \cmd{\checkandfixthelayout} for all the changes to take
+effect.
 
-\begin{syntax}
-\lnc{\droptitle} \\
-\end{syntax}
- The \cmd{\maketitle} command puts the title at a particular height on the 
-page. 
- You can change the vertical position of the title via the length
-\lnc{\droptitle}. Giving this a positive value will lower the title and a
+
+
+
+
+\chapter{Text and fonts}
+
+    Presumably you will be creating a document that contains at least some
+text. This chapter talks a little about the kinds of fonts that you might
+use and how text appears on a page.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\section{Fonts} \label{sec:fonts}
+
+    \alltx{} comes with a standard set of fonts, designed by Donald Knuth,
+and known as the Computer Modern\index{font!Computer Modern} font family. 
+The Knuthian
+fonts\index{font!metafont?\metafont} were created via the \metafont{} 
+program~\cite{METAFONT,CM}\index{metafont?\metafont}
+and are in the form of bitmaps\index{bitmap}
+(i.e., each character is represented as a bunch of tiny dots). Fonts of
+this kind are called \emph{bitmap fonts}\indextwo{bitmap}{font}.
+ There is also a wide range of \metafont{} fonts, created by many others, 
+available in addition to the standard set.  More modern
+digital fonts, such as \pscript\index{font!PostScript} or 
+TrueType\index{font!TrueType} fonts are represented in terms
+of the curves outlining the character, and it is the job of the printing
+machine to fill in the outlines (with a bunch of tiny dots). Fonts of
+this type are called \emph{outline fonts}\indextwo{outline}{font}.
+
+\metafont\ fonts
+are designed for a particular display resolution and cannot reasonably 
+be scaled to match an arbitrary display device, whereas outline fonts can be 
+scaled before they are physically displayed.
+
+    There is an excessive number of \pscript{} and TrueType fonts available 
+and these can all, with a little bit of work, be used with \ltx. How to do
+that is outside the scope of this work; Alan Hoenig has written an excellent
+book on the subject~\cite{HOENIG98}. There is less detailed, but free, 
+information available via \pixctan, for example Philipp Lehman's 
+\textit{Font Installation Guide}~\cite{FONTINST}; even if you are not 
+interested in
+installing \pscript{} fonts this is well worth looking at just as an
+example of the kind of elegant document that can be achieved with \ltx.
+If you choose one of the popular
+\pscript{} fonts, such as those built into \pscript{} printers, you may 
+well find that the work has been done for you and it's just a question
+of using the appropriate package. 
+
+    In \ltx\ there are three characteristics that apply to a font. These are:
+(a)~the shape\index{font characteristic!shape}, 
+(b)~the series\index{font characteristic!series} 
+(or weight),%\index{font characteristic!weight|see{series}}, 
+and (c)~the family\index{font characteristic!family}. 
+Table \ref{tab:fontcat} illustrates these and lists the relevant 
+commands\index{font commands} to access the different font categories.
+
+\begin{table}
+\centering
+\caption{Font categorisation and commands} \label{tab:fontcat}
+\begin{tabular}{ll} \toprule
+\multicolumn{2}{c}{Shape}\index{font characteristic!shape} \\ \addlinespace
+\textup{Upright shape}     & \cmd{\textup}\verb?{Upright shape}? \\
+\textit{Italic shape}      & \cmd{\textit}\verb?{Italic shape}? \\
+\textsl{Slanted shape}     & \cmd{\textsl}\verb?{Slanted shape}? \\
+\textsc{Small Caps shape}  & \cmd{\textsc}\verb?{Small Caps shape}? \\ \addlinespace
+\multicolumn{2}{c}{Series or weight}\index{font characteristic!series} \\ \addlinespace
+\textmd{Medium series}     & \cmd{\textmd}\verb?{Medium series}? \\
+\textbf{Bold series}       & \cmd{\textbf}\verb?{Bold series}? \\ \addlinespace
+\multicolumn{2}{c}{Family}\index{font characteristic!family} \\ \addlinespace
+\textrm{Roman family}      & \cmd{\textrm}\verb?{Roman family}? \\ 
+\textsf{Sans serif family} & \cmd{\textsf}\verb?{Sans serif family}? \\ 
+\texttt{Typewriter family} & \cmd{\texttt}\verb?{Typewriter family}? \\ 
+\bottomrule
+\end{tabular}
+\glossary(textup)%
+  {\cs{textup}\marg{text}}%
+  {Typeset \meta{text} with an upright font.}
+\glossary(textit)%
+  {\cs{textit}\marg{text}}%
+  {Typeset \meta{text} with an italic font.}
+\glossary(textsl)%
+  {\cs{textsl}\marg{text}}%
+  {Typeset \meta{text} with a slanted (oblique) font.}
+\glossary(textsc)%
+  {\cs{textsc}\marg{text}}%
+  {Typeset \meta{text} with a small caps font.}
+\glossary(textmd)%
+  {\cs{textmd}\marg{text}}%
+  {Typeset \meta{text} with a medium font.}
+\glossary(textbf)%
+  {\cs{textbf}\marg{text}}%
+  {Typeset \meta{text} with a bold font.}
+\glossary(textrm)%
+  {\cs{textrm}\marg{text}}%
+  {Typeset \meta{text} with a Roman font.}
+\glossary(textsf)%
+  {\cs{textsf}\marg{text}}%
+  {Typeset \meta{text} with a Sans serif font.}
+\glossary(texttt)%
+  {\cs{texttt}\marg{text}}%
+  {Typeset \meta{text} with a Typewriter (monospaced) font.}
+\end{table}
+
+    The normal body font\index{body font} --- the font used for the bulk 
+of the text ---
+is an upright, medium, roman font of a size specified by the font size
+option for the \cmd{\documentclass}.
+\begin{syntax}
+\cmd{\normalfont} \\
+\end{syntax}
+\glossary(normalfont)%
+  {\cs{normalfont}}%
+  {Declaration setting the font to the normal body font (upright, Roman,
+and medium weight).} 
+The declaration \cmd{\normalfont} sets the font to be the normal body font.
+
+    There is a set of font declarations\index{font declarations}, as shown in \tref{tab:fontdecl},
+that correspond to the commands listed in \tref{tab:fontcat}. The commands
+are most useful when changing the font for a word or two, while the 
+declarations are more convenient when you want to typeset longer passages
+in a different font.
+
+\begin{table}
+\centering
+\caption{Font declarations} \label{tab:fontdecl}
+\begin{tabular}{ll} \toprule
+\multicolumn{2}{c}{Shape}\index{font characteristic!shape} \\ \addlinespace
+\textup{Upright shape}     & \verb?{?\cmd{\upshape} \verb?Upright shape}? \\
+\textit{Italic shape}      & \verb?{?\cmd{\itshape} \verb?Italic shape}? \\
+\textsl{Slanted shape}     & \verb?{?\cmd{\slshape} \verb?Slanted shape}? \\
+\textsc{Small Caps shape}  & \verb?{?\cmd{\scshape} \verb?Small Caps shape}? \\ \addlinespace
+\multicolumn{2}{c}{Series or weight}\index{font characteristic!series} \\ \addlinespace
+\textmd{Medium series}     & \verb?{?\cmd{\mdseries} \verb?Medium series}? \\
+\textbf{Bold series}       & \verb?{?\cmd{\bfseries} \verb?Bold series}? \\ \addlinespace
+\multicolumn{2}{c}{Family}\index{font characteristic!family} \\ \addlinespace
+\textrm{Roman family}      & \verb?{?\cmd{\rmfamily} \verb?Roman family}? \\ 
+\textsf{Sans serif family} & \verb?{?\cmd{\sffamily} \verb?Sans serif family}? \\ 
+\texttt{Typewriter family} & \verb?{?\cmd{\ttfamily} \verb?Typewriter family}? \\ 
+\bottomrule
+\end{tabular}
+\glossary(upshape)%
+  {\cs{upshape}}%
+  {Declaration for using an upright font.}
+\glossary(itshape)%
+  {\cs{itshape}}%
+  {Declaration for using an italic font.}
+\glossary(slshape)%
+  {\cs{slshape}}%
+  {Declaration for using a slanted font.}
+\glossary(scshape)%
+  {\cs{scshape}}%
+  {Declaration for using a small caps font.}
+\glossary(mdseries)%
+  {\cs{mdseries}}%
+  {Declaration for using a medium font.}
+\glossary(bfseries)%
+  {\cs{bfseries}}%
+  {Declaration for using a bold font.}
+\glossary(rmfamily)%
+  {\cs{rmfamily}}%
+  {Declaration for using a Roman font.}
+\glossary(sffamily)%
+  {\cs{sffamily}}%
+  {Declaration for using a Sans serif font.}
+\glossary(ttfamily)%
+  {\cs{ttfamily}}%
+  {Declaration for using a Typewriter (monospaced) font.}
+\end{table}
+
+    Do not go wild seeing how many different kinds of font you can cram into
+your work as in example~\ref{egbadmf}.
+
+\begin{egsource}{egbadmf}
+Mixing \textbf{different series, \textsf{families}} and
+\textsl{\texttt{shapes,}} \textsc{especially in one sentence,} 
+is usually \emph{highly inadvisable!}
+\end{egsource}
+\index{mixing fonts}
+\begin{egresult}[Badly mixed fonts]{egbadmf}
+Mixing \textbf{different series, \textsf{families}} and
+\textsl{\texttt{shapes,}} \textsc{especially in one sentence,} 
+is usually \emph{highly inadvisable!}
+\end{egresult}
+
+    On the other hand there are occasions when several fonts may be used
+for a reasonable effect, as in example~\ref{eg16}.
+\begin{egsource}{eg16}
+\begin{center}
+\textsc{Des Dames du Temps Jardis}
+\end{center}%
+\settowidth{\versewidth}{Or yet in a year where they are}
+\begin{verse}[\versewidth] \begin{itshape}
+Prince, n'enquerez de sepmaine \\*
+Ou elles sont, ne de cest an, \\*
+Qu'a ce reffrain ne vous remaine: \\*
+Mais ou sont les neiges d'antan?
+\end{itshape}
+
+Prince, do not ask in a week \\*
+Or yet in a year where they are, \\*
+I could only give you this refrain: \\*
+But where are the snows of yesteryear?
+\end{verse}
+\begin{flushright}
+{\bfseries Fran\c{c}ois Villon} [1431--1463?]
+\end{flushright}
+\end{egsource}
+
+\begin{egresult}[Sometimes mixed fonts work]{eg16}
+\begin{center}
+\textsc{Des Dames du Temps Jardis}
+\end{center}%
+\settowidth{\versewidth}{Or yet in a year where they are}
+\begin{verse}[\versewidth] \begin{itshape}
+Prince, n'enquerez de sepmaine \\* \index[lines]{Prince, n'enquerez de sepmaine}
+Ou elles sont, ne de cest an, \\*
+Qu'a ce reffrain ne vous remaine: \\*
+Mais ou sont les neiges d'antan?
+\end{itshape}
+
+Prince, do not ask in a week \\* \index[lines]{Prince, do not ask in a week}
+Or yet in a year where they are, \\*
+I could only give you this refrain: \\*
+But where are the snows of yesteryear?
+\end{verse}
+\begin{flushright}
+{\bfseries Fran\c{c}ois Villon} [1431--1463?]
+\end{flushright}
+\end{egresult}
+
+\begin{syntax}
+\cmd{\emph}\marg{text} \\
+\end{syntax}
+\glossary(emph)%
+  {\cs{emph}\marg{text}}%
+  {Use a change in font to emphasise \meta{text}.}
+The \cmd{\emph}\index{emphasis} command is a font changing command that 
+does not fit
+into the above scheme of things. What it does is to typeset its \meta{text}
+argument using a different font than the surrounding text. By default,
+\cmd{\emph} switches between an upright shape and an italic shape. The
+commands can be nested to produce effects like those in the next example.
+
+\begin{egsource}{eg:emph}
+The \verb?\emph? command is used to produce some text that 
+should be \emph{emphasised for some reason and can be
+\emph{infrequently interspersed} with some further emphasis} 
+just like in this sentence.
+\end{egsource}
+ 
+\begin{egresult}[Emphasis upon emphasis]{eg:emph}
+The \cmd{\emph} command is used to produce some text that 
+should be \emph{emphasised for some reason and can be
+\emph{infrequently interspersed} with some further emphasis} 
+just like in this sentence.
+\end{egresult}
+
+
+\begin{syntax}
+\cmd{\eminnershape}\marg{shape} \\
+\end{syntax}
+\glossary(eminnershape)%
+  {\cs{eminnershape}\marg{shape}}%
+  {Font shape for emphasized text within emphasized text.}%
+If the \cmd{\emph} commmand is used within italic text then the
+newly emphasized text will be typeset using the 
+\cmd{\eminnershape} font shape. The default definition is:
+\begin{lcode}
+\newcommand*{\eminnershape}{\upshape}
+\end{lcode}
+which you can change if you wish.
+
+
+
+\section{Font sizes}
+
+    The Computer Modern \metafont{} fonts come in a fixed number of 
+sizes\index{font size}, with
+each size being subtly different in shape so that they blend harmoniously.
+Traditionally, characters were designed for each size to be cut, and
+Computer Modern follows the traditional type design. For example, the smaller
+the size the more likely that the characters will have a relatively larger
+width.
+Outline fonts\indextwo{outline}{font} can be scaled to any size, 
+but as the scaling is typically 
+linear, different sizes do not visually match quite as well.
+
+    Computer Modern fonts come in twelve sizes which, rounded to a point,
+are: 5, 6, 7, 8, 9, 10, 11, 12, 14, 17, 20 and 25pt.
+   In \ltx\ the size for a particular font is specifed by a macro name like
+\cs{scriptsize} and not by points; for example \cs{scriptsize}, not 
+7pt.\footnote{It is possible to use points but that is outside the scope
+of this manual.} 
+The actual size of, say, \cs{scriptsize} characters, is not fixed but depends
+on the type size option given for the document. 
+
+\begin{table}
+\centering
+\caption{Standard font size declarations} \label{tab:fontsize}
+\begin{tabular}{llcll} \toprule
+\cmd{\tiny} & {\tiny tiny} & & \cmd{\scriptsize} & {\scriptsize scriptsize} \\[5pt]
+\cmd{\footnotesize} & {\footnotesize footnotesize} & & \cmd{\small} & {\small small} \\[5pt]
+\cmd{\normalsize} & {\normalsize normalsize} & & \cmd{\large} & {\large large} \\[5pt]
+\cmd{\Large} & {\Large Large} & & \cmd{\LARGE} & {\LARGE LARGE} \\[5pt]
+\cmd{\huge} & {\huge huge} & & \cmd{\Huge} & {\Huge Huge} \\[5pt]
+\bottomrule
+\end{tabular}
+\end{table}
+
+ Standard
+\ltx\ provides ten
+declarations, illustrated in \tref{tab:fontsize}, for setting the type size, 
+which means that two of the sizes are
+not easily accessible. Which two depend on the class and the 
+selected point size option. However, for normal typesetting four different
+sizes should cover the majority of needs, so there is plenty of scope with
+a mere ten to choose from.
+
+\begin{table}
+\centering
+\caption{Standard font sizes} \label{tab:standardclassfontsize}
+\begin{tabular}{lrrr} \toprule
+Class option        & 10pt & 11pt & 12pt \\ \midrule
+\cmd{\tiny}         &  5pt &  6pt &  6pt \\
+\cmd{\scriptsize}   &  7pt &  8pt &  8pt \\
+\cmd{\footnotesize} &  8pt &  9pt & 10pt \\
+\cmd{\small}        &  9pt & 10pt & 11pt \\
+\cmd{\normalsize}   & 10pt & 11pt & 12pt \\ 
+\cmd{\large}        & 12pt & 12pt & 14pt \\
+\cmd{\Large}        & 14pt & 14pt & 17pt \\
+\cmd{\LARGE}        & 17pt & 17pt & 20pt \\
+\cmd{\huge}         & 20pt & 20pt & 25pt \\
+\cmd{\Huge}         & 25pt & 25pt & 25pt \\ 
+\bottomrule
+\end{tabular}
+\end{table}
+
+    The \cmd{\normalsize} is the size that is set as the class 
+option\index{class option} and is the size used for the body\index{body font} 
+text. The \cmd{\footnotesize} is the size normally
+used for typesetting footnotes\index{footnote}. The standard classes 
+use the other sizes, usually the larger ones, for typesetting certain 
+aspects of a document, for example sectional headings. 
+
+With respect to the standard classes, the \Mname\ class 
+provides a wider range of the document class type size options and
+adds two extra font size names, namely \cmd{\miniscule}
+and \cmd{\HUGE}, one at each end of the range.
+
+    The \Mname\ class font size names are given in \tref{tab:fsizenames} 
+together with the name set in the specified size for this manual's normal
+font. The corresponding actual sizes are given in \tref{tab:fsizepoints}.
+
+\begin{table}
+\centering 
+\caption{The \Mname\ class font size declarations} \label{tab:fsizenames}
+\begin{tabular}{llll} \toprule
+\cmd{\miniscule} & {\miniscule miniscule} & \cmd{\tiny} & {\tiny tiny} \\
+\cmd{\scriptsize} & {\scriptsize scriptsize} & \cmd{\footnotesize} & {\footnotesize footnotesize} \\
+\cmd{\small} & {\small small} & \cmd{\normalsize} & {\normalsize normalsize} \\
+\cmd{\large} & {\large large} & \cmd{\Large} & {\Large\strut Large} \\ 
+\cmd{\LARGE} & {\LARGE LARGE} & \cmd{\huge} & {\huge\strut huge} \\ 
+\cmd{\Huge} & {\Huge Huge}    & \cmd{\HUGE} & {\HUGE\strut HUGE} \\ \bottomrule
+\end{tabular}
+\end{table}
+
+\begin{table}
+\begin{adjustwidth}{-1in}{-1in}
+\centering
+\caption{The \Mname\ class font sizes} \label{tab:fsizepoints}
+\begin{tabular}{lrrrrrrrrrrrr}\toprule
+Class option & \Lopt{9pt} & \Lopt{10pt} & \Lopt{11pt} & \Lopt{12pt} & \Lopt{14pt} & \Lopt{17pt} & \Lopt{20pt} & \Lopt{25pt} & \Lopt{30pt} & \Lopt{36pt} & \Lopt{48pt} & \Lopt{60pt} \\ \midrule
+\cmd{\miniscule}    &  4pt &  5pt &  6pt &  7pt &  8pt &  9pt & 
+                      10pt & 11pt & 12pt & 14pt & 17pt & 20pt \\
+\cmd{\tiny}         &  5pt &  6pt &  7pt &  8pt &  9pt & 10pt &
+                      11pt & 12pt & 14pt & 17pt & 20pt & 25pt \\
+\cmd{\scriptsize}   &  6pt &  7pt &  8pt &  9pt & 10pt & 11pt &
+                      12pt & 14pt & 17pt & 20pt & 25pt & 30pt \\
+\cmd{\footnotesize} &  7pt &  8pt &  9pt & 10pt & 11pt & 12pt &
+                      14pt & 17pt & 20pt & 25pt & 30pt & 36pt \\
+\cmd{\small}        &  8pt &  9pt & 10pt & 11pt & 12pt & 14pt &
+                      17pt & 20pt & 25pt & 30pt & 36pt & 48pt \\
+\cmd{\normalsize}   & 9pt & 10pt & 11pt & 12pt & 14pt & 17pt &
+                      20pt & 25pt & 30pt & 36pt & 48pt & 60pt \\
+\cmd{\large}        & 10pt & 11pt & 12pt & 14pt & 17pt & 20pt &
+                      25pt & 30pt & 36pt & 48pt & 60pt & 72pt \\
+\cmd{\Large}        & 11pt & 12pt & 14pt & 17pt & 20pt & 25pt &
+                      30pt & 36pt & 48pt & 60pt & 72pt & 84pt \\
+\cmd{\LARGE}        & 12pt & 14pt & 17pt & 20pt & 25pt & 30pt &
+                      36pt & 48pt & 60pt & 72pt & 84pt & 96pt \\
+\cmd{\huge}         & 14pt & 17pt & 20pt & 25pt & 30pt & 36pt &
+                      48pt & 60pt & 72pt & 84pt & 96pt & 108pt \\
+\cmd{\Huge}         & 17pt & 20pt & 25pt & 30pt & 36pt & 48pt &
+                      60pt & 72pt & 84pt & 96pt & 108pt & 120pt \\
+\cmd{\HUGE}         & 20pt & 25pt & 30pt & 36pt & 48pt & 60pt & 
+                      72pt & 84pt & 96pt & 108pt & 120pt & 132pt \\ \bottomrule
+\end{tabular}
+\end{adjustwidth}
+\end{table}
+
+    Whereas the standard font sizes range from 5pt to 25pt, \Mname\  
+provides for fonts ranging from 4pt to 132pt. That is: \par
+{\fontsize{4}{5}\selectfont from the 4pt size (the 9pt \cs{miniscule} size)} \par
+{\fontsize{9}{10}\selectfont through the 9pt normal size\raggedright\par}% \par
+{\fontsize{60}{72}\selectfont through the 60pt normal size\raggedright\par}% \par
+{\fontsize{132}{160}\selectfont \raggedright to the 132pt size (the 60pt
+\cs{HUGE} size).\raggedright\par}
+
+
+This extended range, though,
+is only accessible if you are using outline\indextwo{outline}{font} fonts.
+If you are using bitmap fonts\indextwo{bitmap}{font} then, for example,
+the \cmd{\HUGE} font will be automatically limited to 25pt, and the minimum
+size of a \cmd{\miniscule} font is 5pt.
+
+
+\section{Spaces}
+
+\subsection{Paragraphs}
+
+    In traditional typography the first line of a paragraph, unless it comes
+immediately after a chapter or section heading, is indented. Also, there
+is no extra space between paragraphs. Font designers go to great pains
+to ensure that they look good when set with the normal leading. Sometimes,
+such as when trying to meet a University's requirements for the layout
+of your thesis, you may be forced to ignore the experience of centuries.
+
+\index{space!inter-paragraph|(}
+   If you like the idea of eliminating paragraph indentation and using extra
+inter-paragraph space to indicate where paragraphs start and end, consider how
+confused your reader will be if the last paragraph on the page ends with a full
+line; how will the reader know that a new paragraph starts at the top of
+the following page?
+
+\begin{syntax}
+\cs{par} \\
+\lnc{\parskip} \\
+\cmd{\abnormalparskip}\marg{length} \\
+\cmd{\nonzeroparskip} \\
+\cmd{\traditionalparskip} \\
+\end{syntax}
+\glossary(par)%
+  {\cs{par}}%
+  {Ends a paragraph.}
+\glossary(parksip)%
+  {\cs{parskip}}%
+  {Space between paragraphs.}
+\glossary(abnormalparskip)%
+  {\cs{abnormalparskip}\marg{length}}%
+  {Sets the inter-paragraph spacing to \meta{length}.}
+\glossary(nonzeroparskip)%
+  {\cs{nonzeroparskip}}%
+  {Sets the inter-paragraph spacing to a `perhaps not too unreasonable' non-zero value.}
+\glossary(traditionalparskip)%
+  {\cs{traditionalparskip}}%
+  {Sets the interparagraph spacing to its traditional value.}
+In the input text the end of a paragraph is indicated either by leaving
+a blank line, or by the \cs{par} command. 
+The length \lnc{\parskip} is the inter-paragraph spacing, and is normally 0pt.
+You can change this by saying, for example:
+\begin{lcode}
+\setlength{\parskip}{2\baselineskip}
+\end{lcode}
+but you are likely to find that many things have changed that you
+did not expect, because \ltx\ uses the \cs{par} command in many
+places that are not obvious.
+
+If, in any event, you wish to do a disservice to your readers you can use 
+\cmd{\abnormalparskip} to set the inter-paragraph spacing to
+a value of your own choosing. Using the \cmd{\nonzeroparskip} will set
+the spacing to  what might be a reasonable non-zero value.\footnote{Except
+that all values except zero are unreasonable.} 
+Both these macros try and eliminate the worst of the side effects that occur
+if you just simply change \lnc{\parskip} directly.
+
+Following the \cmd{\traditionalparskip} declaration all will be returned 
+to their traditional values. 
+
+    I based the code for these functions upon the NTG classes~\cite{NTG}
+which indicated some of the pitfalls in increasing the spacing. The difficulty
+is that \cs{par}, and hence \lnc{\parskip}, occurs in many places, some
+unexpected and others deeply buried in the overall code.
+
+\index{space!inter-paragraph|)}
+
+\index{space!at start of paragraph|see{paragraph indentation}}
+
+\begin{syntax}
+\lnc{\parindent} \\
+\end{syntax}
+\glossary(parindent)%
+  {\cs{parindent}}
+  {Indentation at the start of the first line of a paragraph.}
+\index{paragraph indentation}
+The length \lnc{\parindent} is the indentation at the start of a paragraph's
+first line. This is usually of the order of 1 to 1\slashfrac{1}{2} em.
+To make the first line of a paragraph flushleft set this to zero:
+\begin{lcode}
+\setlength{\parindent}{0pt}
+\end{lcode}
+
+\subsection{Double spacing}
+
+\index{double spacing|(}
+
+    Some of those that have control over the visual appearance of academic
+theses like them to be `double spaced'. This, of course, will make the thesis
+harder to read\footnote{I certainly found them so when I was having to read
+them before examining the candidates for their degrees. The writers of the
+regulations, which were invariably single spaced, seemed immune to any
+suggestions.} but perhaps that is the purpose, or maybe they have stock
+(shares) in papermills and lumber companies, as the theses were usually 
+required to be printed single sided as well.
+
+\begin{syntax}
+\lnc{\baselineskip} \lnc{\onelineskip} \\
+\end{syntax}
+The length \lnc{\baselineskip} is the space, or 
+leading\index{leading}, between the baselines of adjacent text lines, 
+and is constant
+throughout a paragraph. The value  may change
+depending on the size of the current font. More precisely, the 
+\cmd{\baselineskip} depends on the font being used at the \emph{end} of 
+the paragraph. The class also provides the length \lnc{\onelineskip}
+which is the default leading for the normal body font. As far as the class
+is concerned this is a constant value; that is, unlike \lnc{\baselineskip},
+it never alters \lnc{\onelineskip}. You can use (fractions) of 
+\lnc{\onelineskip} to specify vertical spaces in terms of normal text 
+lines.
+
+    The following is heavily based on the \Lpack{setspace} 
+package~\cite{SETSPACE}, but
+the names have been changed to avoid any clashes. Like the nonzero 
+\lnc{\parskip}, the \lnc{\baselineskip} rears its head in many places, and 
+it is hard for a package to get at the internals of the overlying class
+and kernel code. This is not to say that all is well with trying to deal
+with it at the class level.
+
+\begin{syntax}
+\cmd{\OnehalfSpacing} \cmd{\DoubleSpacing} \\
+\end{syntax}
+\glossary(OnehalfSpacing)%
+  {\cs{OnehalfSpacing}}%
+  {Declaration increasing the baseline to create the illusion of double spacing.}
+\glossary(DoubleSpacing)%
+  {\cs{DoubleSpacing}}%
+  {Declaration doubling the baselineskip.}
+
+The declaration \cmd{\OnehalfSpacing} increases the spacing between lines
+so that they appear to be double spaced (especially to the thesis layout
+arbiters), while the declaration
+\cmd{\DoubleSpacing} really doubles the spacing between lines which really
+looks bad; but if you have to use it, it is there. The spacing in footnotes
+and floats (e.g., captions) is unaltered, which is usually required once
+the controllers see what a blanket double spacing brings.
+
+\begin{syntax}
+\cmd{\SingleSpacing} \cmd{\SetSingleSpace}\marg{factor} \\
+\end{syntax}
+\glossary(SingleSpacing)%
+  {\cs{SingleSpacing}}%
+  {Declaration restoring normal single spacing (or that set by \cs{SetSingleSpace}).}
+\glossary(SetSingleSpace)%
+  {\cs{SetSingleSpace}\marg{factor}}%
+  {Change the baselineskip by \meta{factor}.}
+The \cmd{\SetSingleSpace} command is meant to be used to
+adjust \emph{slightly} the normal spacing betwen lines, perhaps because
+the font being used looks too crampled or loose. The effect is that the 
+normal \lnc{\baselineskip} spacing will be multiplied by \meta{factor}, which
+should be close to 1.0
+The declaration \cmd{\SingleSpacing} returns everthing to normal, or at
+least the setting from \cmd{\SetSingleSpace} if it has been used.
+
+\begin{syntax}
+\senv{SingleSpace} ...\eenv{SingleSpace} \\
+\senv{Spacing}\marg{factor} ... \eenv{Spacing} \\
+\senv{OnehalfSpace} ... \eenv{OnehalfSpace} \\
+\senv{DoubleSpace} ... \eenv{DoubleSpace} \\
+\end{syntax}
+\glossary(SingleSpace)%
+  {\senv{SingleSpace}}%
+  {Environment form of \cs{SingleSpacing}}
+\glossary(Spacing)%
+  {\senv{SingleSpace}\marg{factor}}%
+  {Environment form of \cs{SetSingleSpace}}
+\glossary(OnehalfSpace)%
+  {\senv{OnehalfSpace}}%
+  {Environment form of \cs{OnehalfSpacing}}
+\glossary(DoubleSpace)%
+  {\senv{DoubleSpace}}%
+  {Environment form of \cs{DoubleSpacing}}
+
+These are the environments corresponding to the declarations presented
+earlier, for when you want to change the spacing locally.
+
+\begin{syntax}
+\cmd{\setDisplayskipStretch}\marg{fraction} \\
+\cmd{\memdskipstretch} \\
+\cmd{\noDisplayskipStretch} \\
+\cmd{\memdskips} \\
+\end{syntax}
+\glossary(setDisplayskipStretch)%
+  {\cs{setDisplayskipStretch}\marg{factor}}%
+  {Increase the display skips by gmeta{factor}.}%
+\glossary(noDisplayskipStretch)%
+  {\cs{noDisplayskipStretch}}%
+  {No increased display skips.}%
+\glossary(memdskipstretch)%
+  {\cs{memdskipstretch}}%
+  {The current factor for increasing display skips.}%
+\glossary(memdskips)%
+  {\cs{memdskips}}%
+  {Adjusts the display skips according to \cs{memdskipstretch}.}%
+
+
+If you have increased the interlinear space in the text you may wish, or be
+required, to increase it around displays (of maths). 
+The declaration \cmd{\setDisplayskipStretch} will increase the before 
+and after displayskips by \meta{fraction}, which must be at least 0.0. 
+More precisely, it defines \cmd{\memdskipstretch} to be \meta{fraction}.
+The \cmd{\noDisplayskipStretch} declaration
+sets the skips back to their normal values. It is equivalent to
+\begin{lcode}
+\setDisplayskipStretch{0.0}
+\end{lcode}
+The skips are changed within the macro \cmd{\memdskips} which, in turn, is
+called by \cmd{\everydisplay}. If you find odd spacing around displays then
+redefine \cmd{\memdskips} to do nothing. Its orginal specification is:
+\begin{lcode}
+\newcommand*{\memdskips}{%
+  \advance\abovedisplayskip \memdskipstretch\abovedisplayskip
+  \advance\belowdisplayskip \memdskipstretch\belowdisplayskip
+  \advance\abovedisplayshortskip \memdskipstretch\abovedisplayshortskip
+  \advance\belowdisplayshortskip \memdskipstretch\belowdisplayshortskip}
+\end{lcode}
+
+    If you need to use a \Ie{minipage} as a stand-alone item in a widely 
+spaced text then you
+may need to use the \Ie{vminipage} environment instead to get the before and
+after spacing correct.
+
+
+\section{Overfull lines}
+
+\index{overfull lines|(}
+\index{space!interword|(}
+
+
+    \tx\ tries very hard to keep text lines justified while keeping the 
+interword spacing as constant as possible, but sometimes fails and complains
+about an overfull hbox.
+
+\begin{syntax}
+\cmd{\fussy} \cmd{\sloppy} \\
+\senv{sloppypar} ... \eenv{sloppypar} \\
+\cmd{\midsloppy} \\
+\senv{midsloppypar} ... \eenv{midsloppypar} \\
+\end{syntax}
+\glossary(fussy)%
+  {\cs{fussy}}%
+  {Declaration for \tx\ to minimise interword space variations in justified text lines.}
+\glossary(sloppy)%
+  {\cs{sloppy}}%
+  {Declaration for \tx\ to allow large interword space variations in justified 
+   text lines.}%
+\glossary(sloppypar)%
+  {\senv{sloppypar}}%
+  {Typeset contents of the enclosed paragraph(s) using \cs{sloppy}.}%
+\glossary(midsloppy)%
+  {\cs{midsloppy}}%
+  {Declaration for \tx\ to allow moderate interword space variations in justified 
+   text lines.}%
+\glossary(midsloppypar)%
+  {\senv{midsloppypar}}%
+  {Typeset contents of the enclosed paragraph(s) using \cs{midsloppy}.}%
+
+    The default mode for \ltx\ typesetting is \cmd{\fussy} where 
+the (variation of) interword spacing in justified text is kept to a 
+minimum. Following the \cmd{\sloppy}
+declaration there may be a much looser setting of justified text. 
+The \Ie{sloppypar} environment is equivalent to:
+\begin{lcode}
+{\par \sloppy ... \par}
+\end{lcode}
+
+    Additionally the class provides the \cmd{\midsloppy} declaration (and the
+\Ie{midsloppypar} environment) which allows a setting somewhere between 
+\cmd{\fussy} and \cmd{\sloppy}. Using \cmd{\midsloppy} you will get fewer 
+overfull lines compared with \cmd{\fussy} and fewer obvious large 
+interword spaces than with \cmd{\sloppy}.
+I have used \cmd{\midsloppy} for this manual; it hasn't prevented 
+overfull lines or noticeably different interword spaces, but has markedly 
+reduced them compared with \cmd{\fussy} and \cmd{\sloppy} respectively.
+
+\index{overfull lines|)}
+\index{space!interword|)}
+
+\section{Sloppybottom}
+
+\indextwo{widow}{line}\indextwo{orphan}{line}
+    \tx\ does its best to avoid widow and orphan lines --- a widow is where 
+the last line of a paragraph ends up at the top of a page, and an 
+orphan\footnote{Knuth uses the term `club' instead of the normal typographers'
+terminology.} 
+is when the first line of a paragraph is at the bottom of a page.
+
+    The following is the generally suggested method of eliminating widows 
+and orphans, but it may well result in some odd looking pages, especially
+if \cmd{\raggedbottom} is not used.
+\begin{lcode}
+\clubpenalty=10000
+\widowpenalty=10000
+\raggedbottom
+\end{lcode}
+
+\begin{syntax}
+\cmd{\enlargethispage}\marg{length} \\
+\end{syntax}
+\glossary(enlargethispage)%
+  {\cs{enlargethispage}\marg{length}}%
+  {Increase (or decrease) the text height of the current page by \meta{length}.}
+    You can use \cmd{\enlargethispage} to add or subtract to the text height
+on a particular page to move a line forwards or backwards between two pages.
+
+
+ Here is one person's view on the matter:
+\begin{quote}
+\ldots in experimenting with raggedbottom, widowpenalty, and clubpenalty,
+I think that I have not found a solution that strikes me as particularly
+desirable. I think what I would really like is that widows (i.e., left-over
+single lines that begin on the following page) are resolved not by pushing
+one extra line from the same paragraph also onto the next page, but by
+stretching the textheight to allow this one extra at the bottom of the
+same page. \\
+\hfill /iaw (from CTT, \textit{widow handling?}, May 2006)
+\end{quote}
+
+As so often happens, Donald Arseneau\index{Arseneau, Donald} 
+came up with a solution.
+
+\begin{syntax}
+\cmd{\sloppybottom} \\
+\end{syntax}
+\glossary(sloppybottom)%
+  {\cs{sloppybottom}}%
+  {Declaration for \tx\ to allow an extra line at the bottom of a page.
+   The \cs{topskip} must have been increased beforehand.}%
+The declaration \cmd{\sloppybottom} lets \tx\ put an extra line at
+the bottom of a page to avoid a widow on the following page. 
+
+    The \lnc{\topskip} must have been increased beforehand for this to
+work (a 60\% increase is reasonable) and this will push the text
+lower on the page. Run \cmd{\checkandfixthelayout} after the change (which
+may reduce the number of lines per page). For example, in the preamble:
+\begin{lcode}
+\setlength{\topskip}{1.6\topskip}
+\checkandfixthelayout
+\sloppybottom
+\end{lcode}
+
+\indextwo{widow}{line}\indextwo{orphan}{line}
+    The late Michael Downes\index{Downes, Michael} provided the following 
+(from CTT \textit{widow/orphan control package (for 2e)?}, 1998/08/31):
+\begin{quote}
+    For what it's worth here are the penalty values that I use when I don't
+[want] to \emph{absolutely} prohibit widow/orphan break, but come
+about as close as \tx\ permits otherwise. This is copied straight out
+of some code that I had lying around. I guess I could wrap it into
+package from and post it to CTAN. \\
+\hfill Michael Downes
+\end{quote}
+
+\begin{lcode}
+% set \clubpenalty, etc. to distinctive values for use
+% in tracing page breaks. These values are chosen so that
+% no single penalty will absolutely prohibit a page break, but 
+% certain combinations of two or more will.
+\clubpenalt=9996
+\widowpenalty=9999
+\brokenpenalty=4991
+% Reiterate the default value of \redisplaypenalty, for
+% completeness.
+% Set postdisplaypenalty to a fairly high value to discourage a
+% page break between a display and a widow line at the end of a
+% paragraph.
+\predisplaypenalty=10000
+\postdisplaypenalty=1549
+% And then \displaywidowpenalty should be at least as high as
+% \postdisplaypenalty, otherwise in a situation where two displays
+% are separated by two lines, TeX will prefer to break between the
+% two lines, rather than before the first line.
+\displaywidowpenalty=1602
+\end{lcode}
+
+\indextwo{widow}{line}\indextwo{orphan}{line}
+    As you can see, perfect automatic widow/orphan control is problematic 
+though typographers are typically more concerned about widows than orphans ---
+a single line of a paragraph somehow looks worse at the top of a page than
+at the bottom. If all else fails, the solution is either to live with the 
+odd line or to reword the text.
+
+
+
+
+\chapter{Titles}
+
+   The standard classes provide little in the way of help in setting
+the title page(s) for your work, as the \cmd{\maketitle} command
+is principally aimed at generating a title for an article in a technical
+journal; it provides little for titles for works like theses, reports or
+books. For these I recommend that you design your own title page 
+layout\footnote{If you are producing a thesis you are probably told 
+just how it must look.}
+using the regular \ltx\ commands to lay it out, and ignore \cmd{\maketitle}.
+
+    Quoting from Ruari McLean~\cite[p. 148]{MCLEAN80} in reference to the 
+title page he says:
+\begin{quotation}
+    The title-page states, in words, the actual title (and sub-title, if 
+there is one) of the book and the name of the author and publisher, and
+sometimes also the number of illustrations, but it should do more than that.
+From the designer's point of view, it is the most important page in the
+book: it sets the style. It is the page which opens communication with the
+reader\ldots
+
+    If illustrations play a large part in the book, the title-page opening 
+should, or may, express this visually. If any form of decoration is used 
+inside the book, e.g., for chapter openings, one would expect this to be
+repeated or echoed on the title-page.
+
+    Whatever the style of the book, the title-page should give a foretaste
+of it. If the book consists of plain text, the title-page should at least 
+be in harmony with it. The title itself should not exceed the width of the
+type area, and will normally be narrower\ldots
+\end{quotation}
+
+Figures~\ref{fig:titleTH} and~\ref{fig:titleDB}, for example, 
+show title pages created using normal \ltx, without bothering 
+with \cmd{\maketitle}.
+
+   The typeset format of the \cmd{\maketitle} command is virtually fixed
+within the \ltx\ standard classes. This class
+provides a set of formatting commands that can be used to modify
+the appearance of the title\index{title} information; that is, the contents of
+the \cmd{\title}, \cmd{\author} and \cmd{\date} commands. 
+It also keeps the values
+of these commands so that they may be printed again later in the
+document.
+   The class also inhibits the normal automatic cancellation of titling
+commands after \cmd{\maketitle}. This means that you can have multiple
+instances of the same, or perhaps different, titles in one document;
+for example on a half title page\index{half-title page} and the
+full title page\index{title page}.
+Hooks are provided so that additional titling elements can be defined
+and printed by \cmd{\maketitle}.
+  The \cmd{\thanks} command is enhanced to provide various configurations
+for both the marker symbol and the layout of the thanks\index{thanks} notes.
+
+\section{Styling the titling}
+
+
+\index{title!styling|(}
+
+   The facilities provided for typesetting titles are limited, essentially
+catering for the kind of titles of articles published in technical journals.
+They can also be used as a quick and dirty method for typesetting titles
+on reports, but for serious work, such as a title page for a book or thesis,
+each title page\index{title page} should be handcrafted. 
+For instance, a student of mine, Donald Sanderson\index{Sanderson, Donald}
+used \ltx\ to typeset his doctoral thesis, and \fref{fig:titleDS} shows 
+the title page style mandated by Rensselear Polytechnic Institute as of 1994.
+Many other examples of title pages, together with the code to create them,
+are in~\cite{TITLEPAGES}.
+
+\begin{figure}
+\centering
+\begin{showtitle}
+\titleDS
+\end{showtitle}
+\caption{Example of a mandated title page style for a docotoral thesis}\label{fig:titleDS}
+\end{figure}
+
+\begin{figure}%\setlength{\unitlength}{1pt}
+\centering
+%\begin{showtitle}
+{\titleRB}
+%\end{showtitle}
+\caption{Example of a Victorian title page}\label{fig:titleRB}
+\end{figure}
+
+    Another handcrafted title page\index{title page} from~\cite{TITLEPAGES} is 
+shown in \fref{fig:titleRB}. This one is based on an old booklet I found 
+that was 
+published towards the end of the 19th century and exhibits the love of 
+Victorian printers in displaying a variety of types; the rules are
+an integral part of the title page. For the purposes of this manual I 
+have used New Century\index{New Century Schoolbook} Schoolbook, which 
+is part of the regular
+\ltx\ distribution, rather than my original choice of 
+Century Old Style\index{Century Old Style}
+which is one of the commercial FontSite\index{FontSite} fonts licensed from 
+the 
+SoftMaker/ATF library, supported for \ltx\ through 
+Christopher\index{League, Christopher}
+League's estimable work~\cite{TEXFONTSITE}.
+
+
+
+In contrast the following code produces the standard \cmd{\maketitle} layout.
+
+\begin{egsource}{eg:maketitle}
+\title{MEANDERINGS}
+\author{T. H. E. River \and
+        A. Wanderer\thanks{Supported by a grant from the 
+        R. Ambler's Fund}\\
+        Dun Roamin Institute, NY}
+\date{1 April 1993\thanks{First drafted on 29 February 1992}}
+...
+\maketitle
+\end{egsource}
+
+\begin{egresult}[Example \cs{maketitle} title]{eg:maketitle}
+%\begin{figure}
+%\centering
+%\caption{Example \cs{maketitle} title} \label{fig:maketitle}
+%\rule{\textwidth}{0.4pt}
+%
+%\vspace*{2ex}
+\begin{center}
+\vspace{0.5\onelineskip}
+\begin{minipage}{0.75\textwidth}
+\begin{center}
+{\Large MEANDERINGS} \\
+\vspace*{2ex}
+T. H. E. River and A. Wanderer\textsuperscript{*} \\
+Dun Roamin Institute, NY \\
+\vspace*{2ex}
+1 April 1993\textsuperscript{\dag}
+\begin{displaymath}
+\vdots
+\end{displaymath}
+\end{center}
+\begin{footnotesize}
+\rule{0.3\textwidth}{0.4pt} \\
+\noindent
+\textsuperscript{*} Supported by a grant from the R. Ambler's Fund \\
+\textsuperscript{\dag} First drafted on 29 February 1992
+\end{footnotesize}
+\end{minipage}
+\vspace{0.75\onelineskip}
+\end{center}
+
+%\rule{\textwidth}{0.4pt}
+%\end{figure}
+\end{egresult}
+
+   This part of the class is a reimplementation of the \Lpack{titling}
+package~\cite{TITLING}.
+
+The class provides a configurable \cmd{\maketitle} command.
+The \cmd{\maketitle} command as defined by the class 
+is essentially
+\begin{lcode}
+\newcommand{\maketitle}{%
+   \vspace*{\droptitle}
+   \maketitlehooka
+   {\pretitle \title \posttitle}
+   \maketitlehookb
+   {\preauthor \author \postauthor}
+   \maketitlehookc
+   {\predate \date \postdate}
+   \maketitlehookd
+   \thispagestyle{title}
+}
+\end{lcode}
+where the \pstyle{title} pagestyle is initially the same as the
+\pstyle{plain} pagestyle.
+The various macros used within \cmd{\maketitle} are described below.
+
+
+\begin{syntax}
+\cmd{\pretitle}\marg{text} \cmd{\posttitle}\marg{text} \\
+\cmd{\preauthor}\marg{text} \cmd{\postauthor}\marg{text} \\
+\cmd{\predate}\marg{text} \cmd{\postdate}\marg{text} \\
+\end{syntax}
+\glossary(pretitle)%
+  {\cs{pretitle}\marg{text}}%
+  {Command processed before the \cs{title} in \cs{maketitle}.} 
+\glossary(posttitle)%
+  {\cs{postitle}\marg{text}}%
+  {Command processed after the \cs{title} in \cs{maketitle}.} 
+\glossary(preauthor)%
+  {\cs{preauthor}\marg{text}}%
+  {Command processed before the \cs{author} in \cs{maketitle}.} 
+\glossary(postauthor)%
+  {\cs{postauthor}\marg{text}}%
+  {Command processed after the \cs{author} in \cs{maketitle}.} 
+\glossary(predate)%
+  {\cs{predate}\marg{text}}%
+  {Command processed before the \cs{date} in \cs{maketitle}.} 
+\glossary(postate)%
+  {\cs{postdate}\marg{text}}%
+  {Command processed after the \cs{date} in \cs{maketitle}.} 
+These six commands each have a single argument, \meta{text},
+which controls the typesetting of the 
+standard elements of the document's \cmd{\maketitle}
+command. The \cmd{\title} is effectively processed between the 
+\cmd{\pretitle} and \cmd{\posttitle} commands; that is, like:
+\begin{lcode}
+{\pretitle \title \posttitle}
+\end{lcode}
+and similarly for the \cmd{\author} and \cmd{\date} commands. The 
+commands are initialised to mimic the normal result of \cmd{\maketitle}
+typesetting in the \Lclass{report} class.
+That is, the default definitions of the commands are:
+\begin{lcode}
+\pretitle{\begin{center}\LARGE}
+\posttitle{\par\end{center}\vskip 0.5em}
+\preauthor{\begin{center}
+           \large \lineskip 0.5em%
+           \begin{tabular}[t]{c}}
+\postauthor{\end{tabular}\par\end{center}}
+\predate{\begin{center}\large}
+\postdate{\par\end{center}}
+\end{lcode}
+
+They can be changed to obtain different effects. For example to get
+a right justified sans-serif title and a left justifed small caps
+date:
+\begin{lcode}
+\pretitle{\begin{flushright}\LARGE\sffamily}
+\posttitle{\par\end{flushright}\vskip 0.5em}
+\predate{\begin{flushleft}\large\scshape}
+\postdate{\par\end{flushleft}}
+\end{lcode}
+
+\begin{syntax}
+\lnc{\droptitle} \\
+\end{syntax}
+\glossary(droptitle)%
+  {\cs{droptitle}}%
+  {Length controlling the position of \cs{maketitle} on the page (default 0pt).}
+ The \cmd{\maketitle} command puts the title at a particular height on the 
+page. 
+ You can change the vertical position of the title via the length
+\lnc{\droptitle}. Giving this a positive value will lower the title and a
 negative value will raise it. The default definition is: 
 \begin{lcode}
 \setlength{\droptitle}{0pt}
@@ -4813,6 +8875,18 @@ negative value will raise it. The default definition is:
 \cmd{\maketitlehooka} \cmd{\maketitlehookb} \\
 \cmd{\maketitlehookc} \cmd{\maketitlehookd} \\
 \end{syntax}
+\glossary(maketitlehooka)%
+  {\cs{maketitlehooka}}%
+  {Hook into \cs{maketitle} applied before the \cs{title}.}
+\glossary(maketitlehookb)%
+  {\cs{maketitlehookb}}%
+  {Hook into \cs{maketitle} applied between the \cs{title} and \cs{author}.}
+\glossary(maketitlehookc)%
+  {\cs{maketitlehookc}}%
+  {Hook into \cs{maketitle} applied between the \cs{author} and \cs{date}.}
+\glossary(maketitlehookd)%
+  {\cs{maketitlehookd}}%
+  {Hook into \cs{maketitle} applied after the \cs{date}.}
  These four hook commands are provided so that additional elements may
 be added to \cmd{\maketitle}. These are initially defined to do nothing
 but can be renewed. For example, some publications
@@ -4843,6 +8917,9 @@ in the argument to the new \cmd{\published} command.
 \begin{syntax}
 \senv{titlingpage} text \eenv{titlingpage} \\
 \end{syntax}
+\glossary(titlingpage)%
+  {\senv{titlingpage}}%
+  {Environment for a title page, but I don't recommend using it.}
    When one of the standard classes is used with the \Lopt{titlepage}
 option, \cmd{\maketitle} puts the title elements on an unnumbered page
 and then starts a new page numbered page 1. 
@@ -4874,6 +8951,16 @@ with a \pstyle{plain} pagestyle:
 \maketitle
 \begin{abstract}...\end{abstract}
 \end{titlingpage}
+\end{lcode}
+
+    However, I suggest that you ignore the \Ie{titlingpage} environment
+and just use regular \ltx\ typesetting without any special environment.
+That is like:
+\begin{lcode}
+\pagestyle{empty}
+%%% Title, author, publisher, etc.,  here
+\cleardoublepage
+...
 \end{lcode}
 
    By default, titling information is centered with respect to the
@@ -4904,6 +8991,25 @@ example:
 \cmd{\author}\marg{text} \cmd{\theauthor} \\
 \cmd{\date}\marg{text} \cmd{\thedate} \\
 \end{syntax}
+\glossary(title)
+  {\cs{title}\marg{text}}%
+  {Used by \cs{maketitle} to typeset \meta{text} as the document  title.}
+\glossary(thetitle)
+  {\cs{thetitle}}%
+  {Copy of \meta{text} from \cs{title}.}
+\glossary(author)
+  {\cs{author}\marg{text}}%
+  {Used by \cs{maketitle} to typeset \meta{text} as the document author.}
+\glossary(theauthor)
+  {\cs{theauthor}}%
+  {Copy of \meta{text} from \cs{author}.}
+\glossary(date)
+  {\cs{date}\marg{text}}%
+  {Used by \cs{maketitle} to typeset \meta{text} as the document date.}
+\glossary(thedate)
+  {\cs{thedate}}%
+  {Copy of \meta{text} from \cs{date}.}
+
    In the usual document classes, the contents (\meta{text}) of
 the \cmd{\title}, \cmd{\author} and \cmd{\date}
 macros used for \cmd{\maketitle} are unavailable once \cmd{\maketitle} 
@@ -4916,13 +9022,19 @@ if desired.
 \begin{syntax}
 \cmd{\and} \cmd{\andnext} \\
 \end{syntax}
+\glossary(and)%
+  {\cs{and}}%
+  {Use within the argument to \cs{author} to separate author's names.}
+\glossary(andnext)%
+  {\cs{andnext}}%
+  {Use within the argument to \cs{author} to insert a newline..}
    The macro \cmd{\and} is used within the argument to the
 \cmd{\author} command to add some extra space between the author's names.
 The class \cmd{\andnext} macro inserts a newline instead of a space.
 Within the \cmd{\theauthor} macro both \cmd{\and} and \cmd{\andnext}
 are replaced by a comma.
 
-   The class does not follow the the standard classes' habit
+   The class does not follow the standard classes' habit
 of automatically killing the titling
 commands after \cmd{\maketitle} has been issued. You can have multiple
 \cmd{\title}, \cmd{\author}, \cmd{\date} and \cmd{\maketitle} 
@@ -4947,6 +9059,16 @@ the main body of the report. This can be accomplished like this:
 \cmd{\killtitle} \cmd{\keepthetitle} \\
 \cmd{\emptythanks} \\
 \end{syntax}
+\glossary(killtitle)%
+  {\cs{killtitle}}%
+  {Makes all aspects of \cs{maketitle} unavailable.}
+\glossary(keepthetitle)%
+  {\cs{keepthetitle}}%
+  {Makes most aspects of \cs{maketitle} unavailable but keeps \cs{thetitle},
+  \cs{theauthor} and \cs{thedate}.}
+\glossary(emptythanks)%
+  {\cs{emptythanks}}%
+  {Discards any text from previous uses of \cs{thanks}.}
     The \cmd{\killtitle} macro makes all aspects of titling, including
 \cmd{\thetitle} etc.,
 unavailable from the point that it is issued (using this command will save
@@ -4968,7 +9090,7 @@ put \cmd{\emptythanks} before each \cmd{\maketitle} after the first.
 \index{title!styling|)}
 
 
-\subsection{Styling the thanks} \label{sec:thanks}
+\section{Styling the thanks} \label{sec:thanks}
 
 \index{thanks}
 \index{thanks!styling|(}
@@ -4979,7 +9101,13 @@ put \cmd{\emptythanks} before each \cmd{\maketitle} after the first.
 \cmd{\thanksmarkseries}\marg{format} \\
 \cmd{\symbolthanksmark} \\
 \end{syntax}
- Any |\thanks{}| are marked with symbols in the 
+\glossary(thanksmarkseries)%
+  {\cs{thanksmarkseries}\marg{format}}%
+  {Thanks marks will be printed using \meta{format} series of symbols.}
+\glossary(symbolthanksmark)%
+  {\cs{symbolthanksmark}}
+  {Set the thanks marks to be printed using the footnote series of symbols.}
+ Any \cmd{\thanks} are marked with symbols in the 
 titling and footnotes\index{footnote}.
 The command \cmd{\thanksmarkseries} 
 can be used to change the marking style. The \meta{format} argument
@@ -4993,11 +9121,15 @@ do:
 Just for convenience the \cmd{\symbolthanksmark} command sets the series
 to be footnote\index{footnote} symbols.
 Using this class the potential names for \meta{format} are:
-|arabic|, |roman|, |Roman|, |alph|, |Alph|, and |fnsymbol|. 
+\texttt{arabic}, \texttt{roman}, \texttt{Roman}, \texttt{alph}, 
+\texttt{Alph}, and \texttt{fnsymbol}. 
 
 \begin{syntax}
 \cmd{\continuousmarks} \\
 \end{syntax}
+\glossary(continuousmarks)%
+  {\cs{continuousmarks}}%
+  {Specifies that the thanks/footnote marker is not zeroed after titling.}
 The \cmd{\thanks} command uses the \Icn{footnote} counter, 
 and normally the counter
 is zeroed after the titling so that the footnote marks\index{footnote!mark} start from 1.
@@ -5008,6 +9140,10 @@ This might be required if numerals are used as the thanks markers.
 \begin{syntax}
 \cmd{\thanksheadextra}\marg{pre}\marg{post} \\
 \end{syntax}
+\glossary(thanksheadextra)%
+  {\cs{thanksheadextra}\marg{pre}\marg{post}}%
+  {Inserts \meta{pre} and \meta{post} before and after thanks markers
+   in the titling code.}
 The \cmd{\thanksheadextra} command will insert
 \meta{pre} and \meta{post} before and after the thanks markers in the
 titling block. By default \meta{pre} and \meta{post} are empty.
@@ -5020,6 +9156,9 @@ For example, to put parentheses round the titling markers do:
 \begin{syntax}
 \cmd{\thanksmark}\marg{n} \\
 \end{syntax}
+\glossary(thanksmark)%
+  {\cs{thanksmark}\marg{n}}%
+  {Prints a thanks mark identical to the n'th (previously) printed mark.}
 It is sometimes desireable to have the same thanks text be applied to,
 say, four out of six authors, these being the first 3 and the last one.
 The command \cmd{\thanksmark}\marg{n} is similar to 
@@ -5055,12 +9194,15 @@ the authors Alpha and Omega will have the same mark:
 \begin{syntax}
 \cmd{\thanksmarkstyle}\marg{defn} \\
 \end{syntax}
+\glossary(thanksmarkstyle)%
+  {\cs{thanksmarkstyle}\marg{defn}}%
+  {Sets the style for the thanks marks at the foot.}
 By default the thanks mark at the foot is typeset as a superscript. In
 the class this is specifed via
 \begin{lcode}
 \thanksmarkstyle{\textsuperscript{#1}}
 \end{lcode}
-where |#1| will be replaced by the thanks mark symbol. You can change
+where \verb?#1? will be replaced by the thanks mark symbol. You can change
 the mark styling
 if you wish. For example, to put parentheses round the
 mark and typeset it at normal size on the baseline:
@@ -5072,6 +9214,9 @@ mark and typeset it at normal size on the baseline:
 \begin{syntax}
 \lnc{\thanksmarkwidth} \\
 \end{syntax}
+\glossary(thanksmarkwidth)%
+  {\cs{thanksmarkwidth}}%
+  {Width of box for the thanks marks at the foot.}
  The thanks mark in the footnote\index{footnote} is typeset right justified in a box
 of width \lnc{\thanksmarkwidth}. The first line of the thanks text starts
 after this box. The initialisation is 
@@ -5083,6 +9228,9 @@ giving the default position.
 \begin{syntax}
 \lnc{\thanksmarksep} \\
 \end{syntax}
+\glossary(thanksmarksep)%
+  {\cs{thanksmarksep}}%
+  {Indentation of second and subsequent thanks text lines at the foot.}
 The value of the length
  \lnc{\thanksmarksep} controls the indentation the
 second and subsequent lines of the thanks text, with respect to
@@ -5101,6 +9249,9 @@ setting is the initialised value, giving the default appearance.
 \begin{syntax}
 \cmd{\thanksfootmark} \\
 \end{syntax}
+\glossary(thanksfootmark)%
+  {\cs{thanksfootmark}}%
+  {Typesets a thanks mark at the foot.}
     A thanks mark in the footnote\index{footnote} region is typeset by \cmd{\thanksfootmark}.
 The code for this is roughly:
 \begin{lcode}
@@ -5119,7 +9270,7 @@ of the macros it uses.
 \begin{syntax}
 \cmd{\thanksscript}\marg{text} \\
 \end{syntax}
-Note that the thanks mark, together with the |\...pre| and |\...post|
+Note that the thanks mark, together with the \verb?\...pre? and \verb?\...post?
 commands form the \meta{text} argument to the \cmd{\thanksscript} command. 
 This is initially defined as: 
 \begin{lcode}
@@ -5146,34 +9297,34 @@ will give a bold baseline mark followed by a dot.
    Using combinations of these macros you can easily define
 different layouts for the thanks footnotes\index{footnote}. Here are some
 sample, but to shorten them I have ignored any
-|\renewcommand|s and |\setlength|s, leaving these to be implied
+\cs{renewcommand}s and \cs{setlength}s, leaving these to be implied
 as necessary.
 \begin{itemize}
-\item Setting |\thanksfootextra{}{\hfill}| left justifies the mark
+\item Setting \verb?\thanksfootextra{}{\hfill}? left justifies the mark
     in its box:
    \begin{itemize}
-   \item |\thanksscript{\llap{#1\space}}|, |\thanksmarkwidth{0em}| and \\
-         |\thanksmargin{0em}| puts the baseline mark in the margin\index{margin}
+   \item \verb?\thanksscript{\llap{#1\space}}}, \verb?\thanksmarkwidth{0em}? and \\
+         \verb?\thanksmargin{0em}? puts the baseline mark in the margin\index{margin}
          and the text left justified.
-   \item Using |\thanksscript{#1}|, |\thanksmarkwidth{1em}| and \\
-         |\thanksmargin{-\thanksmarkwidth}| makes the baseline mark 
+   \item Using \verb?\thanksscript{#1}?, \verb?\thanksmarkwidth{1em}? and \\
+         \verb?\thanksmargin{-\thanksmarkwidth}? makes the baseline mark 
          and text left adjusted.
-   \item |\thanksscript{#1}|, |\thanksmarkwidth{1em}| and
-         |\thanksmargin{0em}| puts the baseline mark left adjusted
+   \item \verb?\thanksscript{#1}?, \verb?\thanksmarkwidth{1em}? and
+         \verb?\thanksmargin{0em}? puts the baseline mark left adjusted
          and the text indented and aligned, like this marked
          sentence is typeset.
    \end{itemize}
 
-\item Setting |\thanksfootextra{ }| and |\thanksscript{#1}| 
+\item Setting \verb?\thanksfootextra{ }? and \verb?\thanksscript{#1}? 
       right justifies the baseline mark and a space in the mark box:
    \begin{itemize}
    \item The normal style is
-         defined by |\thanksmarkwidth{1.8em}| and \\
-         |\thanksmargin{-\thanksmarkwidth}| which put the mark 
+         defined by \verb?\thanksmarkwidth{1.8em}? and \\
+         \verb?\thanksmargin{-\thanksmarkwidth}? which put the mark 
          indented and the text left adjusted, like a normal indented
          paragraph\index{paragraph!indentation}.
-   \item |\thanksmarkwidth{1.8em}| and
-         |\thanksmargin{0em}| put the mark indented 
+   \item \verb?\thanksmarkwidth{1.8em}? and
+         \verb?\thanksmargin{0em}? put the mark indented 
          and the text indented and aligned.
    \end{itemize}
 
@@ -5187,6 +9338,12 @@ as necessary.
 \cmd{\makethanksmark} \\
 \cmd{\makethanksmarkhook} \\
 \end{syntax}
+\glossary(makethanksmark)%
+  {\cs{makethanksmark}}%
+  {Typesets the thanks marker and text at the foot.}
+\glossary(makethanksmarkhook)
+  {\cs{makethanksmarkhook}}
+  {Code hook into \cs{makethanksmark}.}
 The macro \cmd{\makethanksmark} typesets both the thanks marker (via
 \cmd{\thanksfootmark}) and the thanks text. You probably will not need
 to change its default definition. Just in case, though, 
@@ -5203,11 +9360,12 @@ example, if you wanted a slightly bigger baseline skip you could do:
 \begin{lcode}
 \renewcommand{\makethanksmarkhook}{\fontsize{8}{11}\selectfont}
 \end{lcode}
-where the numbers |8| and |11| specify the point size of the font 
+where the numbers \texttt{8} and \texttt{11} specify the point size of the font 
 and the baseline skip
 respectively. In this example 8pt is the normal \cmd{\footnotesize} in
 a 10pt document, and 11pt is the baselineskip for \cmd{\footnotesize}
-text in an 11pt document (the baseline skip is 9.5pt in a 10pt document); 
+text in an 11pt document (the normal baseline skip for \cmd{\footnotesize}
+in a 10pt document is 9.5pt);
 adjust these numbers to suit.
 
 \begin{syntax}
@@ -5215,6 +9373,16 @@ adjust these numbers to suit.
 \cmd{\usethanksrule} \\
 \cmd{\cancelthanksrule} \\
 \end{syntax}
+\glossary(thanksrule)%
+  {\cs{thanksrule}}%
+  {The rule to be typeset before the thanks in the foot.}
+\glossary(usethanksrule)%
+  {\cs{usethanksrule}}%
+  {Specifies that the \cs{thanksrule} is to be typeset in the 
+   \texttt{titlingpage} environment.}
+\glossary(cancelthanksrule)%
+  {\cs{cancelthanksrule}}%
+  {Specifies that the \cs{footnoterule} is to be used from now on.}
 By default, there is no rule above \cmd{\thanks}
 text that appears in a \Ie{titlingpage} environment.
 If you want a rule in that environment, put \cmd{\usethanksrule} 
@@ -5223,7 +9391,7 @@ to the current definition of \cmd{\thanksrule}.
 \cmd{\thanksrule} is initialised to be a copy of \cmd{\footnoterule} as it 
 is defined at the
 end of the preamble\index{preamble}. The definition of \cmd{\thanksrule} can be changed
-after |\begin{document}|. If the definition of \cmd{\thanksrule} is modified
+after \verb?\begin{document}?. If the definition of \cmd{\thanksrule} is modified
 and a \cmd{\usethanksrule} command has been issued, then the redefined
 rule may also be used for footnotes\index{footnote}. Issuing the command 
 \cmd{\cancelthanksrule} will cause the normal \cmd{\footnoterule} definition
@@ -5241,27 +9409,53 @@ and thanks notes are meant to be different.
 
 \index{thanks!styling|)}
 
-\section{Abstracts}
+\chapter{Abstracts}
+
+
+    Abstracts\index{abstract} do not normally appear in books but 
+they are often an essential
+part of an article in a technical journal. Reports may or may not
+include an abstract, but if so it will often be called a `Summary'.
+There may be an even shorter abstract as well, often called an 
+`Ececutive Summary', for those who feel that details are irrelevant.
+
+    In the standard classes appearance of the \Ie{abstract} environment
+is fixed. The class provides a set of controls adjusting the appearance of
+an \Ie{abstract} environment.
+
+    Questions about how to have a 
+one-column\index{column!single} abstract\index{abstract} in a 
+two-column\index{column!double} paper
+seem to pop up fairly regularly on the
+\texttt{comp.text.tex} newsgroup. While an answer based on responses
+on \texttt{ctt} is provided in the FAQ,
+the class provides a more author-friendly means
+of accomplishing this. 
+
+\section{Styling}
 
-\index{abstract|(}
+\index{abstract!styling|(}
 
     Much of this part of the class is a reimplementation of the 
 \Lpack{abstract} package~\cite{ABSTRACT}.
 
    The typeset format of an \Ie{abstract} in a \Lclass{report} or 
-\Lclass{article} class\footnote{The \texttt{abstract} environment is not 
-available for the \Lclass{book} class.} document depends on the class
-options. The formats are:
+\Lclass{article} class document depends on the class
+options.\footnote{The \texttt{abstract} environment is not 
+available for the \Lclass{book} class.} The formats are:
 \begin{itemize}
-\item \Lopt{titlepage} class option: The abstract heading\index{heading!abstract} (i.e., value of 
+\item \Lopt{titlepage} class option: The abstract 
+    heading\indextwo{heading}{abstract} (i.e., value of 
    \cmd{\abstractname}) is typeset centered in a bold font; the text is set in
    the normal font and to the normal width.
-\item \Lopt{twocolumn} class option: The abstract heading\index{heading!abstract} is typeset like
+\item \Lopt{twocolumn} class option: The abstract 
+   heading\indextwo{heading}{abstract} is typeset like
    an unnumbered section; the text is set in the normal font and to the
    normal width (of a single column\index{column!single}). 
-\item Default (neither of the above class options): The abstract heading\index{heading!abstract}
+\item Default (neither of the above class options): The abstract 
+   heading\indextwo{heading}{abstract}
    is typeset centered in a small bold font; the text is set in a small
-   font and indented like the |quotation| environment.
+   font and indented like the \Ie{quotation} environment.
 \end{itemize}
 
    This class provides an \Ie{abstract} environment and
@@ -5270,60 +9464,32 @@ handles to modify the typesetting of an \Ie{abstract}.
 \begin{syntax}
 \senv{abstract} text \eenv{abstract} \\
 \end{syntax}
+\glossary(abstract)%
+  {\senv{abstract}}%
+  {Environment for typesetting an abstract.}
 There is nothing special about using the \Ie{abstract} environment. 
 Formatting is controlled by the macros described below.
 
-   The usual advice~\cite{FAQ} about creating a one-column\index{column!double} 
-\Ie{abstract} in a 
-\Lopt{twocolumn} document is to write code like this:
-\begin{lcode}
-\documentclass[twocolumn...]{...}
-...
-\twocolumn[
-   \begin{@twocolumnfalse}
-     \maketitle               need full-width title
-     \begin{abstract}
-        abstract text...
-     \end{abstract}
-   \end{@twocolumnfalse}
-]
-... hand make footnotes for any \thanks commands
-...
-\end{lcode}
-
-\begin{syntax}
-\senv{onecolabstract} text \eenv{onecolabstract} \\
-\cmd{\saythanks} \\
-\end{syntax}
-The class provides a \Ie{onecolabstract} environment that you can use
-for a one column\index{column!single} abstract in a \Lopt{twocolumn} document, and it is used
-like this:
-\begin{lcode}
-\documentclass[twocolumn...]{memoir}
-...
-\twocolumn[
-   \maketitle               need full-width title
-   \begin{onecolabstract}
-     abstract text...
-   \end{onecolabstract}
-]
-\saythanks  typesets any \thanks commands
-...
-\end{lcode}
-The command \cmd{\saythanks} ensures that any \cmd{\thanks} texts are 
-printed out as normal.
-
-    If you want, you can use the \Ie{onecolabstract} environment in place
-of the \Ie{abstract} environment --- it doesn't have to be within the 
-optional argument of the \cmd{\twocolumn} command. In fact, 
-\Ie{onecolabstract} internally uses \Ie{abstract} for the typesetting.
-
 \begin{syntax}
 \cmd{\abstractcol} \\
 \cmd{\abstractintoc} \\
 \cmd{\abstractnum} \\
 \cmd{\abstractrunin} \\
 \end{syntax}
+\glossary(abstractcol)%
+  {\cs{abstractcol}}%
+  {Declares that an abstract in a \Popt{twocolumn} document should be
+   typeset like an unnumbered chapter.}
+\glossary(abstractintoc)%
+  {\cs{abstractintoc}}%
+  {Specifies that the abstact's title is to be added to the ToC.} 
+\glossary(abstractnum)%
+  {\cs{abstractnum}}%
+  {Specifies that an abstract is to be typeset like a numbered chapter.}
+\glossary(abstractrunin)%
+  {\cs{abstractrunin}}%
+  {Specifies that the title of an abstract should be set as a run-in heading.}
+
     The normal format for an abstract is with a centered, bold title
 and the text in a small font, inset from the margins\index{margin}.
 
@@ -5334,19 +9500,29 @@ The \cmd{\abstractintoc} specifies that the abstract title should
 be added to the \toc. The declaration \cmd{\abstractnum} specifies that the 
 abstract should be typeset like a numbered chapter and 
 \cmd{\abstractrunin} specifies that
-the title of the abstract should look like a runin heading; these two
+the title of the abstract should look like a run-in heading; these two
 declarations are mutually exclusive. Note that the \cmd{\abstractnum}
 declaration has no effect if the abstract is in the \cmd{\frontmatter}.
 
 \begin{syntax}
+\cmd{\abstractname} \\
 \cmd{\abstractnamefont} \\
 \cmd{\abstracttextfont} \\
 \end{syntax}
-   These two commands can be redefined to change the fonts used for 
-typesetting the heading (defined via \cmd{\abstractname}) of the 
-\Ie{abstract} 
-environment and the font for typesetting the text of the abstract,
-respectively. The default definitions are 
+\glossary(abstractname)%
+  {\cs{abstractname}}%
+  {An abstract's title.}
+\glossary(abstractnamefont)%
+  {\cs{abstractnamefont}}%
+  {Font for typesetting and abstract's title (\cs{abstractname}).}
+\glossary(abstracttextfont)%
+  {\cs{abstracttextfont}}%
+  {Font for typesetting the body text of an abstract.}
+\cmd{\abstractname} (default `\abstractname') is used as the title for
+the \Ie{abstract} environment and is set using the \cmd{\abstractnamefont}.
+The body of the abstract is typeset using the \cmd{\abstracttextfont}.
+These two commands can be redefined to change the fonts if you wish.
+The default definitions are 
 \begin{lcode}
 \newcommand{\abstractnamefont}{\normalfont\small\bfseries}
 \newcommand{\abstracttextfont}{\normalfont\small}
@@ -5356,17 +9532,34 @@ respectively. The default definitions are
 \lnc{\absleftindent} \lnc{\absrightindent} \\
 \lnc{\absparindent} \lnc{\absparsep} \\
 \end{syntax}
-   This version of \Ie{abstract} uses a list environment for typesetting
+\glossary(absleftindent)%
+  {\cs{absleftindent}}%
+  {Indentation of the left of the \Pe{abstract} text.}
+\glossary(absrightindent)%
+  {\cs{absrightindent}}%
+  {Indentation of the right of the \Pe{abstract} text.}
+\glossary(absparindent)%
+  {\cs{absparindent}}%
+  {Paragraph indent in the \Pe{abstract} environment.}
+\glossary(absparsep)%
+  {\cs{absparsep}}%
+  {Paragraph separation in the \Pe{abstract} environment.}
+   This version of \Ie{abstract} uses a \Ie{list} environment for typesetting
 the text. These four lengths can be changed (via \cmd{\setlength}
  or \cmd{\addtolength}) to adjust
 the left and right margins\index{margin}, the paragraph indentation\index{paragraph!indentation}, and the vertical skip
 between paragraphs in this environment. 
 The default values depend on whether or not the \Lopt{twocolumn}
-class option is used.
+class option is used. The general layout parameters for lists are illustrated
+in \fref{fig:listlay}.
 
 \begin{syntax}
 \cmd{\abslabeldelim}\marg{text} \\
 \end{syntax}
+\glossary(abslabeldelim)%
+  {\cs{abslabeldelim}\marg{text}}%
+  {\meta{text} is typeset immediately after \cs{abstractname} in a run-in
+   heading.}
 If the \cmd{\abstractrunin} declaration has been given, 
 the heading is typeset as a run-in heading. That is, it is the 
 first piece of text on the first line of the abstract text.
@@ -5381,6 +9574,10 @@ a colon and some extra space you could specify
 \begin{syntax}
 \cmd{\absnamepos} \\
 \end{syntax}
+\glossary(absnamepos)%
+  {\cs{absnamepos}}%
+  {Position of a non run-in title for an \Pe{abstract} (\texttt{flushleft}, 
+   \texttt{center}, or \texttt{flushright}).}
    If the \cmd{\abstractrunin} declaration is not used then the heading 
 is typeset in its own environment, specified by 
 \cmd{\absnamepos}. The default definition is
@@ -5395,6 +9592,9 @@ other appropriate environment which is supported by a used package\index{package
 \begin{syntax}
 \lnc{\abstitleskip} \\
 \end{syntax}
+\glossary(abstitleskip)%
+  {\cs{abstitleskip}}
+  {Space around the title of an \Pe{abstract}.}
    With the \cmd{\abstractrunin} declaration a horizontal space of length 
 \lnc{\abstitleskip} is typeset
 before the heading. For example, if \lnc{\absparindent} is non-zero, then:
@@ -5409,93 +9609,195 @@ space (either positive
 or negative) that is inserted between the abstract name and the text of
 the abstract.
 
-\index{abstract|)}
+\index{abstract!styling|)}
+
+\section{One column abstracts}
+
+\index{abstract!one column|(}
+
+   The usual advice~\cite{FAQ} about creating a 
+one-column\index{column!double} 
+\Ie{abstract} in a 
+\Lopt{twocolumn} document is to write code like this:
+\begin{lcode}
+\documentclass[twocolumn...]{...}
+...
+\twocolumn[
+   \begin{@twocolumnfalse}
+     \maketitle               need full-width title
+     \begin{abstract}
+        abstract text...
+     \end{abstract}
+   \end{@twocolumnfalse}
+]
+... hand make footnotes for any \thanks commands
+...
+\end{lcode}
+
+\begin{syntax}
+\senv{onecolabstract} text \eenv{onecolabstract} \\
+\cmd{\saythanks} \\
+\end{syntax}
+\glossary(onecolabstract)%
+  {\senv{onecolabstract}}%
+  {Environment for typesetting a one column abstract in a two column document.}
+\glossary(saythanks)%
+  {\cs{saythanks}}%
+  {Following a \Pe{onecolabstract} it ensures that \cs{thanks} are printed.}
+The class provides a \Ie{onecolabstract} environment that you can use
+for a one column\index{column!single} abstract in a \Lopt{twocolumn} document, 
+and it is used like this:
+\begin{lcode}
+\documentclass[twocolumn...]{memoir}
+...
+\twocolumn[
+   \maketitle               need full-width title
+   \begin{onecolabstract}
+     abstract text...
+   \end{onecolabstract}
+]
+\saythanks % typesets any \thanks commands
+...
+\end{lcode}
+The command \cmd{\saythanks} ensures that any \cmd{\thanks} texts from
+an earlier \cmd{\maketitle} are printed out as normal.
+
+    If you want, you can use the \Ie{onecolabstract} environment in place
+of the \Ie{abstract} environment --- it doesn't have to be within the 
+optional argument of the \cmd{\twocolumn} command. In fact, 
+\Ie{onecolabstract} internally uses \Ie{abstract} for the typesetting.
+
+
+\index{abstract!one column|)}
 
 
 
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%   chapter style
+%\renewcommand{\printchaptername}{}
+%\renewcommand{\chapternamenum}{}
+%\renewcommand{\chapnumfont}{\normalfont\huge\sffamily}
+%\renewcommand{\chaptitlefont}{\chapnumfont}
+%\renewcommand{\afterchapternum}{\space}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\renewcommand{\printchaptername}{}
-\renewcommand{\chapternamenum}{}
-\renewcommand{\chapnumfont}{\normalfont\huge\sffamily}
-\renewcommand{\chaptitlefont}{\chapnumfont}
-\renewcommand{\afterchapternum}{\space}
-\setsecheadstyle{\Large\sffamily\raggedright}
-\setsubsecheadstyle{\large\sffamily\raggedright}
-\setsubsubsecheadstyle{\normalsize\sffamily\raggedright}
+%  section styles
+%\setsecheadstyle{\Large\sffamily\raggedright}
+%\setsubsecheadstyle{\large\sffamily\raggedright}
+%\setsubsubsecheadstyle{\normalsize\sffamily\raggedright}
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+\chapterstyle{pedersen}
 
 \chapter{Document divisions}
 
-    The chapter is typeset using the sectional headings\index{heading} styles specified
-at the end of the chapter.
+    For this chapter the \cstyle{pedersen} chapterstyle has been 
+used in order to demonstrate how it appears.
 
 
-\section{Introduction}
-
     In this chapter I first discuss the various kinds of divisions
 within a book and the commands for typesetting these.
 
 After that I describe the class methods for modifying the appearance
-of the chapter and other sectional headings\index{heading}.
+of the chapter and other sectional titles (subheads)\index{subhead}.
     The facilities described here provide roughly the same as you would
 get if you used the \Lpack{titlesec}~\cite{TITLESEC} and 
 \Lpack{sectsty}~\cite{SECTSTY} packages together; the commands are different,
 though.
 
-\section{Book divisions}
+\section{Logical divisions}
 
     As described earlier there are three main logical divisions to a book;
-the front, main and back matter. There are three LaTeX 
+the \pixfrontmatter, \pixmainmatter\ and \pixbackmatter. There are three \ltx\
 commands that correspond to these, namely \cmd{\frontmatter},
 \cmd{\mainmatter} and \cmd{\backmatter}.
 
 \begin{syntax}
 \cmd{\frontmatter} \cmd{\frontmatter*} \\
 \end{syntax}
-The \cmd{\frontmatter} declaration sets the folios\index{folio} to be printed in lowercase
-roman numerals, starts the page numbering from~i, and prohibits any numbering
-of sectional divisions. Caption\index{caption}, equations, etc., will be numbered 
-continuously.  The starred version of the command,
+\glossary(frontmatter)%
+  {\cs{frontmatter}}%
+  {Sets folios to be printed in lowercase roman and prohibits sectional
+   number.}
+\glossary(frontmatter*)%
+  {\cs{frontmatter*}}%
+  {Same as \cs{frontmatter} except that folios are unaltered.}
+The \cmd{\frontmatter} declaration sets the folios\index{folio} to be 
+printed in lowercase roman numerals, starts the page numbering from~i, 
+and prohibits any numbering
+of sectional divisions. Caption\index{caption}, equations, etc., will be 
+numbered continuously.  The starred version of the command,
 \cmd{\frontmatter*}, is similar to the unstarred version except that it
-makes no changes to the page numbering or the print style for the folios\index{folio}.
+makes no changes to the page numbering or the print style for the 
+folios\index{folio}. Even though \cmd{\chapter} and other divisions will not
+be numbered their titles will be added to the ToC.
+
+    If it is to be used at all, the \cmd{\frontmatter} declaration should
+come before any text is set, otherwise the pagination scheme will be
+in disarray (in books pagination starts on the first page).
 
 \begin{syntax}
 \cmd{\mainmatter} \cmd{\mainmatter*} \\
 \end{syntax}
-The \cmd{\mainmatter} declaration, which is the default at the start of a document,
-sets the folios\index{folio} to be printed in arabic numerals, starts the page numbering 
-from~1, and sections and above will be numbered. Float\index{float} captions\index{caption}, equations,
-etc.,  will be numbered per chapter\index{chapter}. The starred version of the command,
+\glossary(mainmatter)%
+  {\cs{mainmatter}}%
+  {Sets folio numbers to arabic, starting with 1. Floats, etc., will be
+   numbered per chapter and sectional divisions will be numbered.}
+\glossary(mainmatter*)%
+  {\cs{mainmatter*}}%
+  {Same as \cs{mainmatter} except that folios are unaltered.}
+The \cmd{\mainmatter} declaration, which is the default at the start of a 
+document, sets the folios\index{folio} to be printed in arabic numerals, starts 
+the page numbering from~1, and sections and above will be numbered. 
+Float\index{float} captions\index{caption}, equations, etc., will be numbered 
+per chapter\index{chapter}. The starred version of the command,
 \cmd{\mainmatter*}, is similar to the unstarred version except that it
-makes no changes to the page numbering or the print style for the folios\index{folio}.
+makes no changes to the page numbering or the print style for the 
+folios\index{folio}.
 
 
 \begin{syntax}
 \cmd{\backmatter} \\
 \end{syntax}
-The \cmd{\backmatter} declaration makes no change to the pagination or folios\index{folio}
-but does prohibit sectional division numbering, and captions\index{caption}, etc., will
-be numbered continuously.
+\glossary(backmatter)%
+  {\cs{backmatter}}%
+  {Prohibits sectional numbering and floats, etc., will be numbered continuously.}
+The \cmd{\backmatter} declaration makes no change to the pagination or 
+folios\index{folio} but does prohibit sectional division numbering, and 
+captions\index{caption}, etc., will be numbered continuously.
 
 
 \section{Sectional divisions}
 
-    The \theclass{} class lets you divide a document up into seven levels
-of named divisions. They range from part\index{part} through chapter\index{chapter} and down to 
+    The \theclass{} class lets you divide a document up into eight levels
+of named divisions. They range from book\index{book}, part\index{part} 
+through chapter\index{chapter} and down to 
 sub-paragraph. A particular sectional division is specified by one of
-the commands \cmd{\part}, \cmd{\chapter}, \cmd{\section}, \cmd{\subsection},
+the commands \cmd{\book}, \cmd{\part}, \cmd{\chapter}, \cmd{\section}, 
+\cmd{\subsection},
 which is probably as deep as you want to go. If you really need finer
 divisions, they are
  \cmd{\subsubsection}, \cmd{\paragraph} and lastly \cmd{\subparagraph}.
-All the sectional commands, except for chapters,
- have the same form, so rather than describing 
-each one in turn I will use \cmd{\section} to stand for any one of them.
+The sectional commands, except for \cmd{\book} and \cmd{\part},
+have the same form, so rather than describing 
+each one in turn I will use \cmd{\section} as model for all but the
+two exceptions.
 
 \begin{syntax}
 \cmd{\section}\oarg{toc-title}\oarg{head-title}\marg{title}\\
 \cmd{\section*}\marg{title}\\
 \end{syntax} 
+\glossary(section)%
+  {\cs{section}\oarg{toc-title}\oarg{head-title}\marg{title}}%
+  {Typesets a section subhead \meta{title}, adding \meta{title} to the ToC and 
+   possibly the running headers. If given \meta{toc-title}
+   is used instead of \meta{title} for the ToC and running header. If given
+   \meta{head-title} is used for a running header.}
+\glossary(section*)%
+  {\cs{section}\marg{title}}%
+  {Typesets an unnumbered section subhead \meta{title}. There are no ToC or
+   running header entries.}
+
 There are two forms of the command; 
 the starred version is simpler, so I'll describe its 
 effects first --- it just typesets \meta{title} in the document in the format
@@ -5516,23 +9818,55 @@ Table of Contents (\toc) and a running header\index{header}, as follows:
 A \cmd{\section} command restarts the numbering of any \cmd{\subsection}s
 from one.
 For most of the divisions the \meta{title} is put on the page where the command
-was issued. The \cmd{\part} and \cmd{\chapter} commands behave a little 
-differently.
-
-The \cmd{\part}\meta{title} command puts the part name (default |Part|),
- number and
-\meta{title} on a page by itself. The
-numbering of parts\index{part!number} has no effect on the numbering of chapters\index{chapter!number}.
-
-    Later I'll give a list of LaTeX's default names, like |Part|.
+was issued. The \cmd{\book}, \cmd{\part} and \cmd{\chapter} commands behave 
+a little differently.
+
+    The \cmd{\book} and \cmd{\part} commands are simpler and both behave 
+in the same way.
+\begin{syntax}
+\cmd{\book}\marg{title} \\
+\cmd{\part}\marg{title} \\
+\end{syntax}
+\glossary(book)%
+  {\cs{book}\marg{title}}%
+  {Typesets a numbered book \meta{title} on a page by itself, adding
+   \meta{title} to the ToC.}
+\glossary(part)%
+  {\cs{part}\marg{title}}%
+  {Typesets a numbered part \meta{title} on a page by itself, adding
+   \meta{title} to the ToC.}
+The \cmd{\book}\marg{title} command puts the book name (default 
+\texttt{\bookname}), number and \meta{title} on a page by itself. The
+numbering of books\index{book!number} has no effect on the numbering of 
+\cmd{\part}s\index{part!number} or \cmd{\chapter}s\index{chapter!number}.
+Similarly the \cmd{\part}\marg{title} command puts the part name 
+(default \texttt{Part}), number and \meta{title} on a page by itself. 
+The numbering of parts\index{part!number} has no effect on the numbering of 
+\cmd{\chapter}s\index{chapter!number}.
+
+    Later I'll give a list of LaTeX's default names, like \texttt{Part}.
 
 \begin{syntax}
 \cmd{\chapter}\oarg{toc-title}\oarg{head-title}\marg{title} \\
 \cmd{\chapter*}\oarg{head-title}\marg{title} \\
 \end{syntax}
+\glossary(chapter)%
+  {\cs{chapter}\oarg{toc-title}\oarg{head-title}\marg{title}}
+  {Starts a new page and puts the chapter number and \meta{title} 
+   at the top of the page, adding \meta{title} to the ToC and possibly
+   the running headers. If given \meta{toc-title}
+   is used instead of \meta{title} for the ToC and running header. If given
+   \meta{head-title} is used for a running header.
+   It restarts numbering of any subsidiary elements
+   such as \cs{section} of floats.}
+\glossary(chapter*)%
+  {\cs{chapter*}\oarg{head-title}\marg{title}}
+  {Starts a new page and puts an unnumbered chapter \meta{title} 
+   at the top of the page. If given \meta{head-title} is used for a 
+   running header.}
 
 The \cmd{\chapter} command starts a new page and puts
-the chapter name (default |Chapter|), number and \meta{title}
+the chapter name (default \texttt{Chapter}), number and \meta{title}
 at the top of the page. It restarts the numbering of any \cmd{\section}s 
 from one. If no optional arguments are specified, \meta{title}
 is used as the \toc{} entry and for any page headings. If one optional
@@ -5545,7 +9879,7 @@ The \cmd{\chapter*} command starts a new page and puts
 changes no numbers and by default changes no page headings.
 If the optional \meta{head-title} argument is given, this is used
 for page headings. Use of the optional argument has the side-effect
-that the \Icn{secnumdepth} counter is set to |maxsecnumdepth| (see below
+that the \Icn{secnumdepth} counter is set to \Icn{maxsecnumdepth} (see below
 for an explanation of these).
 
     When the \Lopt{article} option is in effect, however, things are slightly
@@ -5557,7 +9891,8 @@ just turns on sectional numbering and starts arabic page numbering; the
 other commands created via \cmd{\newlistof}, 
 \emph{always}\footnote{This is a consequence of the internal
 timing of macro calls.}
-call |\thispagestyle{chapter}|. If you are using the \Lopt{article} option you
+call \verb?thispagestyle{chapter}?. If you are using the 
+\Lopt{article} option you
 will probably want to ensure that the \pstyle{chapter} pagestyle is the
 same as you normally use for the document.
 
@@ -5568,159 +9903,83 @@ have to use \cmd{\newline} instead of the more usual \cmd{\\}. For instance
 \section{A broken\newline title}
 \end{lcode}
 
-    In the standard classes a \cmd{\section} or other divisional heading
+    In the standard classes a \cmd{\section} or other 
+subhead\index{subhead!near bottom of page}\index{subhead!moved}
 that is too close to the bottom of a page is moved to the top of the
 following page. If this happens and \cmd{\flushbottom} is in effect, the
 contents of the short page are stretched to make the last line flush with
 the bottom of the typeblock.
 \begin{syntax}
-\cmd{\raggedbottomsectiontrue} \\
-\cmd{\raggedbottomsectionfalse} \\
+\cmd{\raggedbottomsection} \\
+\cmd{\normalbottomsection} \\
 \lnc{\bottomsectionskip} \\
 \end{syntax}
-The \cmd{\raggedbottomsectiontrue} declaration will typeset any pages that 
-are short because of a moved divisional header as though \cmd{\raggedbottom}
+\glossary(raggedbottomsection)%
+  {\cs{raggedbottomsection}}%
+  {Pages will be typeset short because of a moved subhead as if
+   \cs{raggedbottom} was in effect.}
+\glossary(normalbottomsection)%
+  {\cs{normalbottomsection}}%
+  {Cancels any previous \cs{raggedbottomsection}.}
+\glossary(bottomsectionskip)%
+  {\cs{bottomsectionskip}}%
+  {Amount of stretch on a \cs{raggedbottomsection} short page.}
+The \cmd{\raggedbottomsection} declaration will typeset any pages that 
+are short because of a moved subhead as though \cmd{\raggedbottom}
 was in effect for the short page; other pages are not affected. The
 length \lnc{\bottomsectionskip} controls the amount of stretch on the short
 page. Setting it to zero allows the last line to be flush with the bottom
 of the typeblock. The default setting of 10mm appears to remove any stretch.
 
-The declaration \cmd{\raggedbottomsectionfalse}, which is the default,
-cancels any previous \cmd{\raggedbottomsectiontrue} declaration.
-
-
-    
-\begin{syntax}
-\cmd{\plainbreak}\marg{num} \cmd{\plainbreak*}\marg{num}  \\
-\cmd{\fancybreak}\marg{text} \cmd{\fancybreak*}\marg{text}   \\
-\end{syntax} 
-    The \cmd{\plainbreak} is an anonymous division. It puts \meta{num}
-blank lines into the typescript and the first line of the following
-paragraph is not indented\index{paragraph!indentation}. Another anonymous division is
-\cmd{\fancybreak} which puts \meta{text} centered into the typescript and the
-initial line of the following paragraph is not indented\index{paragraph!indentation}. For
-example:
-\begin{lcode}
-\fancybreak{{*}\\{* * *}\\{*}}
-\end{lcode}
-typesets a little diamond made of asterisks.
-
-    The starred versions of the commands indent the first line of the
-following paragraph\index{paragraph!indentation}.
-
-\begin{syntax}
-\cmd{\plainfancybreak}\marg{space}\marg{num}\marg{text} \\
-\cmd{\plainfancybreak*}\marg{space}\marg{num}\marg{text} \\
-\end{syntax}
-If a plain break comes at the top or bottom of a page then it is very 
-difficult for a reader to discern that there is a break at all.
-If there is text on the page and enough space left to put some text
-after a break the \cmd{\plainfancybreak} command will use a \cmd{\plainbreak}
-with \meta{num} lines, 
-otherwise (the break would come at the top or bottom of the page) it
-will use a \cmd{\fancybreak} with \meta{text}. The \meta{space} argument is a
-length specifying the space needed for the \meta{num} blank lines and some
-number of text lines for after the plain break. The starred version of
-the command uses the starred versions of the \cmd{\plainbreak} and
-\cmd{\fancybreak} commands.
-
-    Unfortunately there is an interaction between the requested, plain,
-and fancy break spaces.
-    Let $P$ be the space (in lines) required for the plain break, 
-$F$ the space (in lines)
-required for the fancy break, and $S$ the \meta{space} space (in lines). 
-From some experiments it appears that the condition for the plain break 
-to avoid the top and bottom of the page is that $S - P > 1$. 
-Also, the condition for the fancy break to avoid being put in the middle 
-of a page (i.e., not at the top or bottom) is that  $S - F < 3$.
-For example, if the plain and fancy breaks take the same vertical space
-then $S = P +2$ is the only value that matches the conditions. In general, 
-if $F = P + n$ then the condition is $1 < S-P < 3+n$, which means that 
-for the \cmd{\plainfancybreak} command the
-fancy break must always take at least as much space as the plain break.
-
-
-\fancybreak{\pfbreakdisplay}
-
-    The \cmd{\plainfancybreak} macro inserts a plain break in the middle of
-a page or if the break would come at the bottom or top of a page it
-inserts a fancy break instead.
-
-\begin{syntax}
-\cmd{\pfbreak} \cmd{\pfbreak*} \\
-\lnc{\pfbreakskip} \\
-\cmd{\pfbreakdisplay}\marg{text} \\
-\end{syntax}
-The \cmd{\pfbreak} macro is an alternate for \cmd{\plainfancybreak} that may
-be more convenient to use. The gap for the plain break is given by the
-length \lnc{\pfbreakskip} which is initialised to produce two blank lines.
-The fancy break, which takes the same vertical space, is given by the
-\meta{text} argument of \cmd{\pfbreakdisplay}. The default definition
-typesets three asterisks, as shown a few lines before this.
-
-%%\renewcommand{\pfbreakdisplay}{\huge \ding{167}\quad\ding{167}\quad\ding{167}}
-\renewcommand{\pfbreakdisplay}{%
-  $\clubsuit$\quad$\diamondsuit$\quad$\clubsuit$}
-\fancybreak{\pfbreakdisplay}
-
-    You can change the definition of \cmd{\pfbreakdisplay} for a different
-style if you wish. The
-fancy break just before this was produced via:
-\begin{lcode}
-\renewcommand{\pfbreakdisplay}{%
-  $\clubsuit$\quad\$\diamondsuit$\quad$\clubsuit$}
-\fancybreak{\pfbreakdisplay}
-\end{lcode}
-I used \cmd{\fancybreak} as I'm not sure where the break will come on the
-page and the simple \cmd{\pfbreak} macro might just have produced a couple
-of blank lines instead of the fancy display.
-
-  The paragraph following \cmd{\pfbreak} is not indented. If you want
-it indented use the \cmd{\pfbreak*} starred version.
+The declaration \cmd{\normalbottomsection}, which is the default,
+cancels any previous \cmd{\raggedbottomsection} declaration.
 
+\subsection{Appendices} \label{sec:appendices}
 
-\begin{syntax}
-\cmd{\tableofcontents} \cmd{\tableofcontents*} \\
-\cmd{\listoffigures} \cmd{\listoffigures*} \\
-\cmd{\listoftables} \cmd{\listoftables*} \\
-\end{syntax}
-In the standard classes the command \cmd{\tableofcontents} typesets a 
-Table of Contents (\toc) at the point in the document where it is issued. 
-In the \theclass{} class it also adds \emph{its}
-title to the \toc. There is a starred version, \cmd{\tableofcontents*}, 
-which does not enter itself into the \toc. So, in this class 
-\cmd{\tableofcontents*} is equivalent to the standard classes'
-\cmd{\tableofcontents}. The class also provides the \cmd{\listoffigures}
-and \cmd{\listoftables} commands which typeset a List of 
-Figures (\lof) and
-a List of Tables (\lot), also entering their titles into the \toc. The 
-starred versions of these make no \toc{} entry.
-
-    You can use \cmd{\tableofcontents}, \cmd{\listoffigures}, etc., more
-than once in a \Lclass{memoir} class document.
+Appendices\index{appendix} normally come after the main text and are 
+often considered to be part
+of the \cmd{\mainmatter} as they are normally numbered (the \cmd{\backmatter}
+declaration turns off all sectional numbering).
 
 \begin{syntax}
 \cmd{\appendix} \\
 \cmd{\appendixname} \\
 \end{syntax}
-In the standard classes the \cmd{\appendix} command changes the numbering of
-chapters\index{chapter!number} to an alphabetic form and changes the names of chapters from 
-\cmd{\chaptername} (default |Chapter|)
-to the value of \cmd{\appendixname} (default |Appendix|)\index{appendix}. 
+\glossary(appendix)%
+  {\cs{appendix}}%
+  {Sets chapter numbering to alphabetic and sets the chapter name to 
+   \cs{appendixname}.}
+\glossary(appendixname)%
+  {\cs{appendixname}}%
+  {Name given to chapters in appendices (default Appendix).}
+The \cmd{\appendix} declaration changes the numbering of
+chapters\index{chapter!number} to an alphabetic form and also changes 
+the names of chapters from \cmd{\chaptername} (default \texttt{Chapter})
+to the value of \cmd{\appendixname} (default \texttt{Appendix})\index{appendix}. 
 Thus, the first and any subsequent \cmd{\chapter}s after 
 the \cmd{\appendix} command
 will be `Appendix A \ldots', `Appendix B \ldots', and so on. 
-This class provides the same command plus some other ways of dealing with
-appendices\index{appendix}.
+That is as far as the standard classes go but this class provides more ways
+of dealing with appendices\index{appendix}.
 
 \begin{syntax}
 \cmd{\appendixpage}\\
 \cmd{\appendixpage*}\\
 \cmd{\appendixpagename}\\
 \end{syntax}
-The \cmd{\appendixpage} command generates a part-like page (but no |Part|
+\glossary(appendixpage)
+  {\cs{appendixpage}}%
+  {Creates an unnumbered anonymous  part-like page with the title \cs{appendixpagename} and adds it to the ToC.}
+\glossary(appendixpage*)
+  {\cs{appendixpage*}}%
+  {Like \cs{appendixpage} but makes no ToC entry.}
+\glossary(appendixpagename)
+  {\cs{appendixpagename}}%
+  {Title used for an \cs{appendixpage} (default \texttt{Appendices}.}
+The \cmd{\appendixpage} command generates a part-like page (but no name 
 or number) with the title given by the value of \cmd{\appendixpagename} 
-(default |Appendices|)\index{appendix}. It also makes an entry in the \toc{} using 
+(default \texttt{Appendices})\index{appendix}. It also makes an entry in 
+the \toc{} using 
 \cmd{\addappheadtotoc} (see below). The starred version generates the 
 appendix\index{appendix} page but makes no \toc{} entry.
 
@@ -5728,58 +9987,79 @@ appendix\index{appendix} page but makes no \toc{} entry.
 \cmd{\addappheadtotoc}\\
 \cmd{\appendixtocname}\\
 \end{syntax}
+\glossary(addappheadtotoc)%
+  {\cs{addappheadtotoc}}%
+  {Adds ToC entry with the title \cs{appendixtocname}.}
+\glossary(appendixtocname)%
+  {\cs{appendixtocname}}%
+  {Title of ToC entry added by \cs{addappheadtotoc} (default \texttt{Appendices}.}
 The command \cmd{\addappheadtotoc} adds an entry to the \toc. The title is
-given by the value of \cmd{\appendixtocname} (default |Appendices|)\index{appendix}.
+given by the value of \cmd{\appendixtocname} (default \texttt{Appendices})\index{appendix}.
 
 \begin{syntax}
 \senv{appendices} text \eenv{appendices}\\
 \end{syntax}
-The \Ie{appendices} environment acts like the \cmd{\appendix}\index{appendix} command in that it
-resets the numbering and naming of chapters\index{chapter}. However, at the end of the
-environment, chapters are restored to their original condition and any
-chapter numbers continue in sequence as though the \Ie{appendices} environment
-had never been there.
+\glossary(appendices)%
+  {\senv{appendices}}%
+  {An environment form of \cs{appendix}; chapters are restored to their condition
+   (including numbering) after the environment ends.}
+The \Ie{appendices} environment acts like the \cmd{\appendix}\index{appendix} 
+command in that it resets the numbering and naming of chapters\index{chapter}. 
+However, at the end of the environment, chapters are restored to their original 
+condition and any chapter numbers continue in sequence as though the 
+\Ie{appendices} environment had never been there.
 
 \begin{syntax}
 \senv{subappendices} text \eenv{subappendices} \\
-\cmd{\namesubappendixtrue} \cmd{\namesubappendixfalse} \\
-\end{syntax}
-The \Ie{subappendices} environment can be used to put appendices\index{appendix} at the end
+\cmd{\namesubappendices} \cmd{\anonsubappendices} \\
+\end{syntax}
+\glossary(subappendices)%
+  {\senv{subappendices}}%
+  {Like the \Pe{appendices} environment but used at the end of a chapter
+   for per-chapter sub-appendices.}
+\glossary(namesubappendices)%
+  {\cs{namesubappendices}}%
+  {Precede sub-appendix numbers with the name \cs{appendixname}.}
+\glossary(anonsubappendices)%
+  {\cs{anonsubappendices}}%
+  {Do not precede the sub-appendix number with any name (the default).}
+The \Ie{subappendices}\index{appendix!subappendix} environment can be used to put appendices\index{appendix} at the end
 of a chapter\index{chapter}. Within the environment \cmd{\section} starts a 
 new sub-appendix\index{appendix}. You may put \cmd{\addappheadtotoc} at the start
 of the environment if you want a heading entry in the \toc.
-If you put the declaration \cmd{\namesubappendixtrue}
+If you put the declaration \cmd{\namesubappendices}
 \emph{before} the \Ie{subappendices} environment, the sub-appendix number
 in the body of the document will be preceded by the value of 
-\cmd{\appendixname}. The \cmd{\namesubappendixfalse} declaration may be 
-used to switch off this behaviour.
-
+\cmd{\appendixname}. The \cmd{\anonsubappendices} declaration, which is the 
+default, may be used to switch off this behaviour.
 
 
 
 \section{Numbering} \label{sec:secnumbers}
 
-    Each type of sectional division has an associated \emph{level} as
-shown in \tref{tab:seclevels}.
+    Each type of sectional division\index{division!sectional} has an 
+associated \emph{level}\index{sectional division!level number} as shown 
+in \tref{tab:seclevels}.
 Divisions are numbered if the value of the \Icn{secnumdepth} counter
 is equal to or greater than their level. For example, with
 \begin{lcode}
 \setcounter{secnumdepth}{2}
 \end{lcode}
-then subsections up to parts\index{part!number} will be numbered.
+then subsections up to book\index{book!number} will be numbered.
 
 \begin{table}
 \centering
 \caption{Division levels} \label{tab:seclevels}
-\begin{tabular}{lr} \hline
-Division       & Level \\ \hline
+\begin{tabular}{lr} \toprule
+Division       & Level \\ \midrule
+\cmd{\book}           & -2 \\
 \cmd{\part}           & -1 \\
 \cmd{\chapter}        & 0 \\
 \cmd{\section}        & 1 \\
 \cmd{\subsection}     & 2 \\
 \cmd{\subsubsection}  & 3 \\
 \cmd{\paragraph}      & 4 \\
-\cmd{\subparagraph}   & 5 \\ \hline
+\cmd{\subparagraph}   & 5 \\ \bottomrule
 \end{tabular}
 \end{table}
 
@@ -5787,6 +10067,12 @@ Division       & Level \\ \hline
 \cmd{\setsecnumdepth}\marg{secname} \\
 \cmd{\maxsecnumdepth}\marg{secname} \\
 \end{syntax}
+\glossary(setsecnumdepth)%
+  {\cs{setsecnumdepth}\marg{secname}}%
+  {Sets division numbering level to \meta{secname}.}
+\glossary(maxscnumdepth)%
+  {\cs{maxsecnumdepth}\marg{secname}}%
+  {Sets division numbering level in the \cs{mainmatter} to \meta{secname}.}
 Instead of having to remember the levels if you want to change what
 gets numbered you can use the \cmd{\setsecnumdepth} command. It
 sets \Icn{secnumdepth} so that divisions \meta{secname} and above
@@ -5796,77 +10082,170 @@ and above numbered:
 \begin{lcode}
 \setsecnumdepth{subsection}
 \end{lcode}
+You can also use \texttt{all} or \texttt{none} for \meta{secname} which
+will either turn on numbering for all levels, or turn off numbering
+alltogether.
 
-    The command \cmd{\maxsecnumdepth} sets the maximum value for
-\Icn{secnumdepth} that can be used in the document. You can use
-\cmd{\setsecnumdepth} anywhere you want in the document to (temporarily)
-change the numbering level.
+When used in the preamble\index{preamble} \cmd{\setsecnumdepth} also
+calls \cmd{\maxsecnumdepth}, which is the numbering level used once
+\cmd{\mainmatter} is called. You can use \cmd{\setsecnumdepth} anywhere
+in the \cmd{\mainmatter} to (temporarily) change the numbering level.
 
     By default, the class sets:
 \begin{lcode}
-\maxsecnumdepth{section}
 \setsecnumdepth{section}
+\maxsecnumdepth{section}
 \end{lcode}
+The \cmd{\frontmatter} commands sets the numbering level to \texttt{none}.
 The commands \cmd{\mainmatter} and \cmd{\mainmatter*} set the
-\Icn{secnumdepth} to the value specified by \cmd{\maxsecnumdepth}.
+numbering level to the value specified by \cmd{\maxsecnumdepth}.
 
     The number setting commands come from the \Lpack{tocvsec2}
 package~\cite{TOCVSEC2}.
 
+\section{Book and part headings}
 
-
-
-
-\section{Part headings}
-
+\index{heading!book|(}
 \index{heading!part|(}
 
-    Part titles \emph{always} start on a new page with the \pstyle{part}
-pagestyle.
+    Book and part headings \emph{always} start on a new page with the 
+\pstyle{book} and \pstyle{part} pagestyles, respectively. The typical
+book and part heading consists of the name (e.g., `Book' or `Part') 
+followed by a number represented as an uppercase Roman numeral. There is 
+a vertical space after which the title is printed. Finally a new page is
+started.
 
+    Several aspects of the typesetting of the \cmd{\book} and \cmd{\part} 
+title are configurable. Ignoring details, such as the optional argument,
+the code for printing \cmd{\part} headings looks like this:
+\begin{lcode}
+\newcommand{\part}[1]{%    % THIS IS A VERY SIMPLIFIED VERSION
+  \cleardoublepage         % start a new recto page                    
+  \thispagestyle{part}     % set the page style
+  \beforepartskip          % space before Name and Number
+  \printpartname\partnamenum\printpartnum
+  \midpartskip             % space after Name and Number
+  \printparttitle{#1}      % print the title
+  \afterpartskip}          % a `space' after the title
+\end{lcode}
+The code for \cmd{\book} headings is similar.
+
+    The general layout for \cmd{\book}, \cmd{\part} and \cmd{\chapter} headings
+is similar and you may wish to refer to \fref{lay:chap} which, although
+it shows the vertical layout for a \cmd{chapter} head, is also applicable
+to \cmd{\book} and \cmd{\part} heads with appropriate changes in the
+names of the commands.
 
-    Several aspects of the typesetting of the \cmd{\part} title are 
-configurable.
 
 \begin{syntax}
+\cmd{\beforebookskip} \cmd{\afterbookskip} \\
 \cmd{\beforepartskip} \cmd{\afterpartskip} \\
 \end{syntax}
-These two commands effectively control the spacing before and after the part 
-title. Their default definitions are:
-\begin{lcode}
-\newcommand{\beforepartskip}{\null\vfil}
-\newcommand{\afterpartskip}{\vfil\newpage}
+\glossary(beforebookskip)%
+  {\cs{beforebookskip}}%
+  {Spacing above a \cs{book} title.}
+\glossary(afterbookskip)%
+  {\cs{afterbookskip}}%
+  {Spacing below a \cs{book} title.}
+\glossary(beforepartskip)%
+  {\cs{beforepartskip}}%
+  {Spacing above a \cs{part} title.}
+\glossary(afterpartskip)%
+  {\cs{afterbookskip}}%
+  {Spacing below a \cs{part} title.}
+These commands effectively control the spacing before and after the book
+and  part titles. Their default definitions are:
+\begin{lcode}
+\newcommand*{\beforebookskip}{\null\vfil}
+\newcommand*{\afterbookskip}{\vfil\newpage}
+\newcommand*{\beforepartskip}{\null\vfil}
+\newcommand*{\afterpartskip}{\vfil\newpage}
 \end{lcode}
 Together, these vertically center any typesetting on the page, and then start
-a new page. To move the title upwards on the page, for example, you could do:
+a new page. To move the \cs{part} title upwards on the page, for example, 
+you could do:
 \begin{lcode}
-\renewcommand{\beforepartskip}{\null\vskip 0pt plus 0.3fil}
-\renewcommand{\afterpartskip}{\vskip 0pt plus 0.7fil \newpage}
+\renewcommand*{\beforepartskip}{\null\vskip 0pt plus 0.3fil}
+\renewcommand*{\afterpartskip}{\vskip 0pt plus 0.7fil \newpage}
 \end{lcode} 
 
 \begin{syntax}
-\lnc{\midpartskip} \\
+\cmd{\midbookskip} \\
+\cmd{\midpartskip} \\
 \end{syntax}
-The length \lnc{\midpartskip} is the vertical distance between the part 
-number line and the part title. Its default value is 20pt and can be changed
-by \cmd{\setlength} or \cmd{\addtolength}. It is probably better to have
-the spacing in terms of the \lnc{\baselineskip}, which will change depending
-on the font size, instead of a fixed amount.
+\glossary(midbookskip)%
+  {\cs{midbookskip}}%
+  {Spacing between a \cs{book}'s number line and the title.}
+\glossary(midpartskip)%
+  {\cs{midpartskip}}%
+  {Spacing between a \cs{part}'s number line and the title.}
+The macros \cmd{\midbookskip} and \cmd{\midpartskip} are the spacings
+between the number lines and the titles. The default definitions are:
+\begin{lcode}
+\newcommand{\midbookskip}{\par\vspace 2\onelineskip}
+\newcommand{\midpartskip}{\par\vspace 2\onelineskip}
+\end{lcode}
+and they can be changed.
 
 \begin{syntax}
+\cmd{\printbookname} \cmd{\booknamefont} \\
+\cmd{\booknamenum} \\
+\cmd{\printbooknum} \cmd{\booknumfont} \\
 \cmd{\printpartname} \cmd{\partnamefont} \\
 \cmd{\partnamenum} \\
 \cmd{\printpartnum} \cmd{\partnumfont} \\
 \end{syntax}
-The macro \cmd{\printpartname} typesets the part name 
-(the value of \cmd{\partname}) using the font 
-specified by \cmd{\partnamefont}. The default is the \cmd{\bfseries} font in
-the \cmd{\huge} size. Likewise the part number is typeset by \cmd{\printpartnum}
-using the font specified by \cmd{\partnumfont}, which has the same default as
-\cmd{\partnamefont}. The macro 
+\glossary(printbookname)%
+  {\cs{printbookname}}
+  {Prints the book name (\cs{bookname}) using the \cs{booknamefont}.}
+\glossary(booknamefont)%
+  {\cs{booknamefont}}%
+  {Font used by \cs{printbookname} for the book name.}
+\glossary(booknamenum)%
+  {\cs{booknamenum}}%
+  {Called between printing a book name and number.}
+\glossary(printbooknum)%
+  {\cs{printbooknum}}%
+  {Prints a book number using the \cs{booknumfont}.}
+\glossary(booknumfont)%
+  {\cs{booknumfont}}%
+  {Font used by \cs{printbooknum} for the book number.}
+
+\glossary(printpartname)%
+  {\cs{printpartname}}
+  {Prints the part name (\cs{partname}) using the \cs{partnamefont}.}
+\glossary(partnamefont)%
+  {\cs{partnamefont}}%
+  {Font used by \cs{printpartname} for the part name.}
+\glossary(partnamenum)%
+  {\cs{partnamenum}}%
+  {Called between printing a part name and number.}
+\glossary(printpartnum)%
+  {\cs{printpartnum}}%
+  {Prints a part number using the \cs{partnumfont}.}
+\glossary(partnumfont)%
+  {\cs{partnumfont}}%
+  {Font used by \cs{printpartnum} for the part number.}
+The macro \cmd{\printbookname} typesets the book name (the value of 
+\cmd{\bookname}) using the font specified by \cmd{\booknamefont}. 
+The default is the \cmd{\bfseries} font in the \cmd{\huge} size. 
+Likewise the book number is typeset by \cmd{\printbooknum}
+using the font specified by \cmd{\booknumfont}, which has the same default as
+\cmd{\booknamefont}. The macro \cmd{\booknamenum}, which is defined to be 
+a space, is called between printing the book name and the number. All 
+these can be changed to obtain different effects. 
+
+    Similarly, the macro \cmd{\printpartname} typesets the part name 
+(the value of \cmd{\partname}) using the font specified by 
+\cmd{\partnamefont}. The default is the \cmd{\bfseries} font in
+the \cmd{\huge} size. Likewise the part number is typeset by 
+\cmd{\printpartnum} using the font specified by \cmd{\partnumfont}, 
+which has the same default as \cmd{\partnamefont}. The macro 
 \cmd{\partnamenum}, which is defined to be a space, is called between printing
-the part name and the number. All these can be changed to obtain different 
-effects. For example, to have a large sans font with the part name flush left:
+the part name and the number. 
+
+    For example, to set a \cmd{\part} in a large sans font with the part 
+name flush left:
 \begin{lcode}
 \renewcommand{\partnamefont}{\normalfont\huge\sffamily\raggedright}
 \renewcommand{\partnumfont}{\normalfont\huge\sffamily}
@@ -5879,31 +10258,119 @@ or to only print the part number in the default font:
 
 
 \begin{syntax}
+\cmd{\printbooktitle}\marg{title} \cmd{\booktitlefont} \\
 \cmd{\printparttitle}\marg{title} \cmd{\parttitlefont} \\
 \end{syntax}
-The title is typeset by \cmd{\printparttitle} using the font specified 
-by \cmd{\parttitlefont}. 
+\glossary(printbooktitle)%
+  {\cs{printbooktitle}}%
+  {Prints the book title using the \cs{booktitlefont}.}
+\glossary(booktitlefont)%
+  {\cs{booktitlefont}}%
+  {Font used by \cs{printbooktitle} for the title.}
+\glossary(printbooktitle)%
+  {\cs{printbooktitle}}%
+  {Prints the book title using the \cs{booktitlefont}.}
+\glossary(booktitlefont)%
+  {\cs{booktitlefont}}%
+  {Font used by \cs{printbooktitle} for the title.}
+\glossary(printparttitle)%
+  {\cs{printparttitle}}%
+  {Prints the part title using the \cs{parttitlefont}.}
+\glossary(parttitlefont)%
+  {\cs{parttitlefont}}%
+  {Font used by \cs{printparttitle} for the title.}
+A book's title is typeset by \cmd{\printbooktitle} using the font specified 
+by \cmd{\booktitlefont}. 
 By default this is a \cmd{\bfseries} font in the \cmd{\Huge} size. This can
 be changed to have, say, the title set raggedleft in a small caps font by
 \begin{lcode}
-\renewcommmand{\parttitlefont}{\normalfont\Huge\scshape\raggedleft}
+\renewcommmand{\booktitlefont}{\normalfont\Huge\scshape\raggedleft}
 \end{lcode}
 
+    Similarly a part's title is typeset by \cmd{\printparttitle} using 
+the font specified by \cmd{\parttitlefont}. 
+By default this is a \cmd{\bfseries} font in the \cmd{\Huge} size. 
+
     The \cmd{\parttitlefont} font is also used by 
 \cmd{\appendixpage}, or its starred version, when
 typesetting an appendix\index{appendix} page.
 
+\begin{syntax}
+\cmd{\bookpagemark}\marg{title} \\
+\cmd{\partmark}\marg{title} \\
+\end{syntax}
+\glossary(bookpagemark)%
+  {\cs{bookpagemark}\marg{title}}%
+  {For setting any marks with the title from a \cs{book} for a running header.}
+\glossary(partmark)%
+  {\cs{partmark}\marg{title}}%
+  {For setting any marks with the title from a \cs{part} for a running header.}
+The \cmd{\book} code includes \cmd{\bookpagemark}\marg{title} for capturing
+the \meta{title} of the book division if it is going to be used, 
+for example, in page headers. Its definition is simply:
+\begin{lcode}
+\newcommand*{\bookpagemark}[1]{}
+\end{lcode}
+There is the corresponding \cmd{\partmark} for the title of \cmd{\part} 
+divisions.
+
 \index{heading!part|)}
+\index{heading!book|)}
+
+\subsection{Leadpage}
+
+\begin{syntax}
+\cmd{\newleadpage}\oarg{page-style}\marg{cmdname}\marg{title} \\
+\cmd{\newleadpage*}\oarg{page-style}\marg{cmdname}\marg{title} \\
+\cmd{\renewleadpage}\oarg{page-style}\marg{cmdname}\marg{title} \\
+\cmd{\renewleadpage*}\oarg{page-style}\marg{cmdname}\marg{title} \\
+\end{syntax}
+\cmd{\newleadpage} and associates are variants of the \cmd{\newcommand}
+and companions.\footnote{The suggestions for these came from
+Danie Els\index{Els, Danie} and Lars Madsen\index{Madsen, Lars}.}
+The \cmd{\newleadpage} command defines a macro \verb?\cmdname? that when called
+will typeset an Appendixpage-like page (see \Sref{sec:appendices}) with a 
+title \meta{title}
+using the \meta{page-style} as the pagestyle for the page. The default
+is the \pstyle{empty} pagestyle. The macro \cmd{\renewleadpage} redefines
+an existing leadpage command. As an example:
+\begin{lcode}
+\newleadpage{plates}{Picture Gallery}
+\end{lcode}
+creates the new command \cs{plates} which when called generates an unnumbered
+part-like page with the title \textbf{Picture Gallery}.
+
+\begin{syntax}
+\cmd{\leadpagetoclevel} \\
+\end{syntax}
+When \cs{(re)newleadpage} is used the resulting command adds \meta{title}
+to the \toc\ as though it was an unnumbered \cmd{\leadpagetoclevel} entry,
+whose definition is
+\begin{lcode}
+\newcommand*{\leadpagetoclevel}{chapter}
+\end{lcode}
+If you wished them to be entered like a \cmd{\part} header then simply:
+\begin{lcode}
+\renewcommand*{\leadpagetoclevel}{part}
+\end{lcode}
+
+    When the starred versions \cs{(re)newleadpage*} are used the resulting
+command will not add \meta{title} to the \toc.
+
+    The layout of the page matches that for unnumbered \cmd{\part} pages, and 
+internally the resulting commands use \cmd{\partmark} in case you 
+wish to capture the \meta{title} to use in running headers.
 
 \section{Chapter headings}
 
 \index{heading!chapter|(}
 
-    The chapter headings are configurable in much the same way as part 
+    The chapter headings are configurable in much the same way as book or part 
 headings, but in addition there are some built in chapter styles that you may
 wish to try, or define your own.
 
-    Chapters \emph{always} start on a new page with the \pstyle{chapter}
+    Chapters, except when the \Lopt{article} class option is used,
+ \emph{always} start on a new page with the \pstyle{chapter}
 pagestyle. The particular page, recto or verso, that they start on is
 mainly controlled by the class options. If the \Lopt{oneside} option is used
 they start on the next new page, but if the \Lopt{twoside} option is
@@ -5920,12 +10387,48 @@ used the starting page may differ, as follows.
 \begin{syntax}
 \cmd{\openright} \cmd{\openleft} \cmd{\openany} \\
 \end{syntax}
+\glossary(openright)%
+  {\cs{openright}}%
+  {Force chapters to start on a new recto page.}
+\glossary(openleft)%
+  {\cs{openleft}}%
+  {Force chapters to start on a new verso page.}
+\glossary(openany)%
+  {\cs{openany}}%
+  {Allow chapters to start on the next new page.}
 These three declarations have the same effect as the options of the same name.
 They can be used anywhere in the document to change the chapter opening page.
 
+Ignoring many details, like the optional arguments, the code for 
+printing a \cmd{\chapter} heading is similar to that for \cmd{\book} 
+and \cmd{\part} (the \cs{chapterhead} command below is \emph{not}
+part of the class).
+\begin{lcode}
+\newcommand{\chapterhead}[1]{ % THIS IS A SIMPLIFIED VERSION
+  \clearforchapter        % move to correct page
+  \thispagestyle{chapter} % set the page style
+  \insertchapterspace     % Inserts space into LoF and LoT
+  \chapterheadstart       % \beforechapskip space before heading
+  \printchaptername\chapternamenum\printchapternum
+  \afterchapternum        % \midchapskip space between number and title
+  \printchaptertitle{#1}  % title
+  \afterchaptertitle}     % \afterchapskip space after title
+\end{lcode}
+The general layout is shown in \fref{lay:chap}.
+
+\begin{figure}
+\setlayoutscale{1}
+\centering
+\chapterdiagram
+\caption{Class layout parameters for chapter titles} \label{lay:chap}
+\end{figure}
+
 \begin{syntax}
 \cmd{\clearforchapter} \\
 \end{syntax}
+\glossary(clearforchapter)%
+  {\cs{clearforchapter}}%
+  {Selects a chapter's opening page.}
 The actual macro that sets the opening page for a chapter is 
 \cmd{\clearforchapter}. The \cmd{\openright}, \cmd{\openleft} and
 \cmd{\openany} define \cmd{\clearforchapter} to be respectively
@@ -5935,7 +10438,8 @@ obviously change \cmd{\clearforchapter} to do more than just start a
 new page.
 
     Some books have the chapter headings on a verso page, with perhaps
-an illustration\index{illustration} or epigraph\index{epigraph}, and then the text starts on the opposite
+an illustration\index{illustration} or epigraph\index{epigraph}, and 
+then the text starts on the opposite
 recto page. The effect can be achieved like:
 \begin{lcode}
 \openleft                % chapter title on verso page
@@ -5947,80 +10451,117 @@ recto page. The effect can be achieved like:
 Start of the text        % chapter body
 \end{lcode}
 
-\begin{syntax}
-\cmd{\chapterstyle}\marg{style} \\
-\end{syntax}
-The macro \cmd{\chapterstyle} is rather like the \cmd{\pagestyle} command in 
-that it sets the style of any subsequent chapter headings to be \meta{style}.
-
-    The class provides some predefined chapter styles, including the 
-\cstyle{default} style which is the familiar LaTeX \Lclass{book} class chapter
-headings style. To use the chapterstyle \cstyle{fred} just issue the commmand
-|\chapterstyle{fred}|. Different styles can be used in the same document.
-The predefined styles include:
-\begin{itemize}
-\item[\cstyle{default}] The normal LaTeX style.
-\item[\cstyle{section}] The heading is typeset like a section; that is, 
-there is just the number and the title on one line. 
-    See \Cref{chap:topsandtails} on \pref{chap:topsandtails} for an example.
-\item[\cstyle{hangnum}] Like the \pstyle{section} style except that the chapter
-number is put in the margin\index{margin}. 
-    See \Cref{chap:captions} on \pref{chap:captions} for an example.
-\item[\cstyle{companion}] This produces chapter headings like those the the
-\textit{LaTeX Companion} series of books.
-    See \Cref{chap:signposts} on \pref{chap:signposts} for an example.
-\item[\cstyle{article}] The heading is typeset like a \cmd{\section}
-heading in the \Lclass{article} class. This is similar to the 
-\cstyle{section} style but different fonts and spacings are used.
-\item[\cstyle{demo}] Try this one to see what it does. On the other
-   hand you can look at \Cref{chap:verse} on \pref{chap:verse} to see
-   what it looks like.
-\end{itemize}
-
 
 \begin{syntax}
-\lnc{\beforechapskip} \lnc{\afterchapskip} \\
+\cmd{\chapterheadstart} \lnc{\beforechapskip} \\ 
+\cmd{\afterchapternum} \lnc{\midchapskip} \\
+\cmd{\afterchaptertitle} \lnc{\afterchapskip} \\
 \end{syntax}
-These two lengths define the spacing before and after the chapter heading.
-Their default values are 50pt and 40pt, respectively.
+\glossary(chapterheadstart)%
+  {\cs{chapterheadstart}}%
+  {Called at start of printing a chapter header; by default inserts \cs{beforechapskip} space.}
+\glossary(beforechapskip)%
+  {\cs{beforechapskip}}%
+  {Space above chapter name and number.}
+\glossary(afterchapternum)%
+  {\cs{afterchapternum}}%
+  {Called after printing a chapter number; by default inserts \cs{midchapskip} space.}
+\glossary(midchapskip)%
+  {\cs{midchapskip}}%
+  {Space between chapter name and number and the title.}
+\glossary(afterchaptertitle)%
+  {\cs{afterchaptertitle}}%
+  {Called after printing a chapter title; by default inserts \cs{afterchapskip} space.}
+\glossary(afterchapskip)%
+  {\cs{afterchapskip}}%
+  {Space after chapter title.}
 
+The macro \cmd{\chapterheadstart} is called just before printing a chapter
+name and number. By default it inserts \lnc{\beforechapskip} space (default
+50pt).
 
+The macro \cmd{\afterchapternum} is called just after printing a chapter
+number. By default it inserts \lnc{\midchapskip} space (default
+20pt).
 
-\begin{syntax}
-\lnc{\midchapskip} \\
-\end{syntax}
-The length \lnc{\midchapskip} is the vertical distance between the chapter 
-number line and the chapter title. Its default value is 20pt and can be changed
-by \cmd{\setlength} or \cmd{\addtolength}. It is probably better to have
-the spacing in terms of the \lnc{\baselineskip}, which will change depending
-on the font size, instead of a fixed amount.
+The macro \cmd{\afterchaptertitle} is called just after printing a chapter
+title. By default it inserts \lnc{\afterchapskip} space (default
+40pt).
+
+The lengths \lnc{\beforechapskip}, \lnc{\midchapskip} and \lnc{\afterchapskip}
+can all be changed by \cmd{\setlength} or \cmd{\addtolength}.
 
 \begin{syntax}
 \cmd{\printchaptername} \cmd{\chapnamefont} \\
 \cmd{\chapternamenum} \\
 \cmd{\printchapternum} \cmd{\chapnumfont} \\
 \end{syntax}
+\glossary(printchaptername)%
+  {\cs{printchaptername}}%
+  {Prints the chapter name using the \cs{chapnamefont}.}
+\glossary(chapnamefont)%
+  {\cs{chapnamefont}}%
+  {Font used by \cs{printchaptername}.}
+\glossary(chapternamenum)%
+  {\cs{chapternamenum}}%
+  {Inserted between printing the chapter name and number. 
+   It is usually a space.}
+\glossary(printchapternum)%
+  {\cs{printchapternum}}%
+  {Prints the chapter number using the \cs{chapnumfont}.}
+\glossary(chapnumfont)%
+  {\cs{chapnumfont}}%
+  {Font used by \cs{printchapternum}.}
 The macro \cmd{\printchaptername} typesets the chapter name 
-(the value of \cmd{\chaptername}, default |Chapter|) using the font 
+(default \texttt{Chapter} or \texttt{Appendix}) using the font 
 specified by \cmd{\chapnamefont}. The default is the \cmd{\bfseries} font in
 the \cmd{\huge} size. Likewise the chapter number is typeset by 
-\cmd{\printchapternum}
-using the font specified by \cmd{\chapnumfont}, which has the same default as
-\cmd{\chapnamefont}. The macro 
-\cmd{\chapternamenum}, which is defined to be a space, is called between printing
-the chapter name and the number. 
+\cmd{\printchapternum} using the font specified by \cmd{\chapnumfont}, 
+which has the same default as \cmd{\chapnamefont}. The macro 
+\cmd{\chapternamenum}, which is defined to be a space, is called between 
+printing the chapter name and the number. 
 
 \begin{syntax}
 \cmd{\printchaptertitle}\marg{title} \cmd{\chaptitlefont} \\
 \end{syntax}
+\glossary(printchaptertitle)%
+  {\cs{printchaptertitle}\marg{title}}%
+  {Prints the chapter \meta{title} using the \cs{chaptitlefont}.}
+\glossary(chaptitlefont)%
+  {\cs{chaptitlefont}}%
+  {Font used by \cs{printchaptertitle}.}
 The title is typeset by \cmd{\printchaptertitle} using the font specified 
 by \cmd{\chaptitlefont}. 
 By default this is a \cmd{\bfseries} font in the \cmd{\Huge} size. 
 
+\begin{syntax}
+\cmd{\printchapternonum} \\
+\end{syntax}
+\glossary(printchapternonum)%
+  {\cs{printchapternonum}}%
+  {Replaces printing the chapter name and number in unnumbered chapters.}
+If a chapter is unnumbered, perhaps because it is in the \cmd{\frontmatter}
+or because \cmd{\chapter*} is used, then when printing the command
+\cmd{\printchapternonum} is called instead of printing the name and number,
+as illustrated below:
+\begin{lcode}
+\newcommand{\chapterhead}[1]{ % THIS IS A SIMPLIFIED VERSION
+  \clearforchapter        % move to correct page
+  \thispagestyle{chapter} % set the page style
+  \insertchapterspace     % Inserts space into LoF and LoT
+  \chapterheadstart       % \beforechapskip space before heading
+  \printchaptername\chapternamenum\printchapternum
+  \afterchapternum        % \midchapskip space between number and title
+  \printchaptertitle{#1}  % title
+  \afterchaptertitle}     % \afterchapskip space after title
+\end{lcode}
 
 \begin{syntax}
 \cmd{\insertchapterspace} \\
 \end{syntax}
+\glossary(insertchapterspace)%
+  {\cs{insertchapterspace}}%
+  {Called by \cs{chapter} to insert space into LoF and LoT.}
 By default a \cmd{\chapter} inserts a small amount of vertical space
 into the List of Figures and List of Tables. It calls \cmd{\insertchapterspace}
 to do this. The default definition is:
@@ -6031,40 +10572,114 @@ to do this. The default definition is:
 }
 \end{lcode}
 If you would prefer no inserted spaces then 
-|\renewcommand{\insertchapterspace}{}| will do the job. 
+\begin{lcode}
+\renewcommand{\insertchapterspace}{}
+\end{lcode}
+will do the job. 
 Different spacing can be inserted by
 changing the value of the length arguments to \cmd{\addvspace}.
 
+By making suitable changes to the above macros you can make some
+simple modifications to the layout.
+
 \index{heading!chapter|)}
 
 \subsection{Defining a chapter style} \label{sec:chapterstyle}
 
 \index{chapterstyle|(}
 
-    The following illustrates the essential parts of the code for typesetting 
-a numbered chapter heading.
-\begin{lcode}
-\chapterheadstart
-\printchaptername \chapternamenum \printchapternum
-\afterchapternum
-\printchaptertitle{The chapter title}
-\afterchaptertitle
-\end{lcode}
+    The class provides many ways in which you can implement your designs
+for chapter headings.
 
 \begin{syntax}
-\cmd{\printchapternonum} \\
+\cmd{\chapterstyle}\marg{style} \\
 \end{syntax}
+\glossary(chapterstyle)%
+  {\cs{chapterstyle}\marg{style}}%
+  {Sets chapter heading layout to \meta{style}.}
+The macro \cmd{\chapterstyle} is rather like the \cmd{\pagestyle} command in 
+that it sets the style of any subsequent chapter headings to be \meta{style}.
 
-    The essential code for an unnumbered chapter is simpler than 
-when there is a number to be typeset.
+    The class provides some predefined chapter styles, including the 
+\cstyle{default} style which is the familiar LaTeX \Lclass{book} class chapter
+headings style. To use the chapterstyle \cstyle{fred} just issue the command
 \begin{lcode}
-\chapterheadstart
-\pintchapternonum
-\printchaptertitle{The chapter title}
-\afterchaptertitle
+\chapterstyle{fred}
 \end{lcode}
+Different styles can be used in the same document.
+
+The simpler predefined styles include:
+\begin{itemize}
+\item[\cstyle{default}] 
+\glossary(defaultcs)%
+  {\Pcstyle{default}}%
+  {The default \Ppack{book} class chapterstyle.}
+The normal \ltx\ \Lclass{book} class chapter styling; shown in \fref{dcdefault}.
+\begin{demochap}[-3\onelineskip]{default}\end{demochap}
+
+\item[\cstyle{section}] 
+\glossary(sectioncs)%
+  {\Pcstyle{section}}%
+  {Simple chapterstyle looking like a section head.}
+The heading is typeset like a section; that is, 
+there is just the number and the title on one line. This is illustrated
+in \fref{dcsection}. 
+%%    See \Cref{chap:topsandtails} on \pref{chap:topsandtails} for an example.
+\begin{demochap}[2\onelineskip]{section}\end{demochap}
+
+\item[\cstyle{hangnum}] 
+\glossary(hangnumcs)%
+  {\Pcstyle{hangnum}}%
+  {Simple chapterstyle looking like a section head but with the number in the margin.}
+Like the \pstyle{section} style except that the chapter
+number is put in the margin\index{margin!left}, as shown in \fref{dchangnum}. 
+%%    See \Cref{chap:captions} on \pref{chap:captions} for an example.
+\begin{demochap}[2\onelineskip]{hangnum}\end{demochap}
+
+\item[\cstyle{companion}]
+\glossary(companioncs)%
+  {\Pcstyle{companion}}%
+  {Chapterstyle like those in the \textit{LaTeX companion} series.}
+ This produces chapter headings like those of the
+\textit{LaTeX Companion} series of books. An eaxample is in \fref{dccompanion}.
+%%    See \Cref{chap:signposts} on \pref{chap:signposts} for an example.
+\begin{demochap}[2\onelineskip]{companion}\end{demochap}
+
+\item[\cstyle{article}]
+\glossary(articlecs)%
+  {\Pcstyle{article}}%
+  {Chapter style similar to a section head in the \Pclass{article} class but 
+   with different
+   sized fonts.}
+ The heading is typeset like a \cmd{\section}
+heading in the \Lclass{article} class. This is similar to the 
+\cstyle{section} style but different fonts and spacings are used,
+as shown in \fref{dcarticle}.
+\begin{demochap}[-1\onelineskip]{article}\end{demochap}
+
+\item[\cstyle{reparticle}]
+\glossary(reparticlecs)%
+  {\Pcstyle{reparticle}}%
+  {With the \Popt{article} class option it replicates a section head in 
+   the \Pclass{article} class.}
+   When the \Lopt{article} class option is used
+    the default chapter and section styles are close, but not
+    identical, to the corresponding division heads in the \Lclass{article}
+    class. The \cstyle{reparticle} chapterstyle makes \cmd{\chapter}
+    replicate the appearance of \cmd{\section} in the \Lclass{article}
+    class.
+
+%%\item[\cstyle{demo}] Try this one to see what it does. On the other
+%%   hand you can look at \Cref{chap:verse} on \pref{chap:verse} to see
+%%   what it looks like.
+\end{itemize}
 
-The various macros in the above are initially defined as:
+    If you use only the predefined chapterstyles there is no need to
+plough through the rest of this section, except to look at the illustrations
+of the remaining predefined chapterstyles shown a little later.
+
+The various macros shown in the \cs{chapterhead} code above are initially 
+set up as:
 \begin{lcode}
 \newcommmand{\chapterheadstart}{\vspace*{\beforechapskip}}
 \newcommand{\printchaptername}{\chapnamefont \@chapapp}
@@ -6086,15 +10701,48 @@ Chapter styles are defined via the \cmd{\makechapterstyle} command, where
 \meta{style} is the style being defined and \meta{text} is the LaTeX code 
 defining the style.
 
-    As an example, here is the code for defining the \cstyle{section} chapter
-style.
+    To start things off, here is the code for the \cstyle{default} chapter
+style, which mimics the chapter heads in the standard \Lclass{book} and 
+\Lclass{report} classes, as it appears in \file{memoir.cls}.
+\begin{lcode}
+\makechapterstyle{default}{%
+  \def\chapterheadstart{\vspace*{\beforechapskip}
+  \def\printchaptername{\chapnamefont \@chapap}
+  \def\chapternamenum{\space}
+  \def\printchapternum{\chapnumfont \thechapter}
+  \def\afterchapternum{\par\nobreak\vskip \midchapskip}
+  \def\printchapternonum{}
+  \def\printchaptertitle##1{\chaptitlefont ##1}
+  \de\afterchaptertitle{\par\nobreak\vskip \afterchapskip}
+}
+\newcommand{\chapnamefont}{\normalfont\huge\bfseries}
+\newcommand{\chapnumfont}{\normalfont\huge\bfseries}
+\newcommand{\chaptitlefont}{\normalfont\Huge\bfseries}
+\newlength{\beforechapskip}\setlength{\beforechapskip}{50pt}
+\newlength{\midchapskip}\setlength{\midchapskip}{20pt}
+\newlength{\afterchapskip}\setlength{\afterchapskip}{40pt}
+\chapterstyle{default}
+\end{lcode}
+(The mysterious \cmd{\@chapap} is the internal macro that \ltx\ uses
+to store normally the chapter name.\footnote{Remember, if you use
+a macro that has an \texttt{@} in its name it must be in a place
+where \texttt{@} is treated as a letter.} It will normally have 
+different values,
+set automatically, when typesetting a chapter in the main body 
+(e.g., \texttt{Chapter}) or in the appendices\index{appendix} where
+it would usually be set to \texttt{Appendix}, but you can specify
+these names yourself.)
+
+    As an example of setting up a simple chapterstyle, here is the code for 
+defining the \cstyle{section} chapterstyle. In this case it is principally
+a question of eliminating most of the printing and zeroing some spacing.
 \begin{lcode}
 \makechapterstyle{section}{%
-  \renewcommand{\printchaptername}{}
-  \renewcommand{\chapternamenum}{}
-  \renewcommand{\chapnumfont}{\chaptitlefont}
-  \renewcommand{\printchapternum}{\chapnumfont \thechapter\space}
-  \renewcommand{\afterchapternum}{}
+  \renewcommand*{\printchaptername}{}
+  \renewcommand*{\chapternamenum}{}
+  \renewcommand*{\chapnumfont}{\chaptitlefont}
+  \renewcommand*{\printchapternum}{\chapnumfont \thechapter\space}
+  \renewcommand*{\afterchapternum}{}
 }
 \end{lcode}
 In this style, \cmd{\printchaptername} is vacuous, so the normal `Chapter'
@@ -6109,16 +10757,632 @@ chapter title text is typeset. By default this does nothing but you can use
 \cmd{\renewcommand} to change this. For example, if you wished the title
 text for both numbered and unnumbered chapters to be at the same height on
 the page then you could redefine \cmd{\printchapternonum} to insert
-the amount of vertical space taken by any `Chapter N' line.
+the amount of vertical space taken by any `Chapter N' line. For example,
+as \cmd{\printchapternonum} is vaucuous in the \cstyle{default} chapterstyle
+the vertical position of a title depends on whether or not it is numbered.
+
+The \cstyle{hangnum} style, which is like \cstyle{section} except that it
+puts the number in the margin, is defined as follows:
+\begin{lcode}
+\makechapterstyle{hangnum}{%
+  \renewcommand*{\chapnumfont}{\chaptitlefont}
+  % allow for 99 chapters!
+  \settowidth{\chapindent}{\chapnumfont 999}
+  \renewcommand*{\printchaptername}{}
+  \renewcommand*{\chapternamenum}{}
+  \renewcommand*{\chapnumfont}{\chaptitlefont}
+  \renewcommand*{\printchapternum}{%
+    \noindent\llap{\makebox[\chapindent][l]{%
+    \chapnumfont \thechapter}}}
+  \renewcommand*{\afterchapternum}{}
+}
+\end{lcode}
+The chapter number is put at the left of a box wide enough for three digits.
+The box is put into the margin, via \cmd{\llap}, for typesetting. The
+chapter title is then typeset, starting at the left margin.
+
+\begin{syntax}
+\lnc{\chapindent} \\
+\end{syntax}
+\glossary(chapindent)%
+  {\cs{chapindent}}%
+  {A length you can use in a defining chapter style (or anything else).}
+The length \lnc{\chapindent} is provided for use in specifying chapterstyles,
+but you could use it for any other purposes.
+
+    The definition of the \cstyle{companion} chapterstyle is more complicated.
+\begin{lcode}
+\makechapterstyle{companion}{%
+  \renewcommand*{\chapnamefont}{\normalfont\LARGE\scshape}
+  \renewcommand*{\chapnumfont}{\normalfont\Huge}
+  \renewcommand*{\printchaptername}{%
+    \raggedleft\chapnamefont \@chapapp}
+  \setlength{\chapindent}{\marginparsep}
+  \addtolength{\chapindent}{\marginparwidth}
+  \renewcommand{\printchaptertitle}[1]{%
+    \begin{adjustwidth}{}{-\chapindent}
+      \raggedleft \chaptitlefont ##1\par\nobreak
+    \end{adjustwidth}}
+}
+\end{lcode}
+As shown in \fref{dccompanion} the chapter name is in small caps and set
+flushright. The title is also set flushright aligned with the outermost 
+part of the marginal notes. This is achieved by use of the \Ie{adjuswidth}
+environment\footnote{See \S\ref{sec:adjustwidth}.} to make \ltx\ think
+that the typeblock is locally wider than it actually is.
+
+\subsection{Further chapterstyles}
+
+
+    The class provides more chapterstyles, which are listed here. 
+Some are mine and others are from postings to \ctt\ by \Pclass{memoir}
+users. I have modified some of the posted ones to cater for things like 
+appendices, multiline titles, and unnumbered chapters which were not 
+considered in the originals. The code
+for some of them is given later to help you see how they are done.
+Separately, Lars Madsen\index{Madsen, Lars} has collected a wide variety of 
+styles~\cite{CHAPSTYLES} and shows how they were created.
+
+    If you want to try several chapterstyles in one document, request the
+\cstyle{default} style before each of the others to ensure that a previous 
+style's changes are not passed on to a following one.
+
+\begin{itemize}
+
+\item[\cstyle{bianchi}] 
+\glossary(bianchics)%
+  {\Pcstyle{bianchi}}%
+  {A two line, centered chapterstyle with rules above and below.}
+  This style was created by 
+  Stefano\index{Bianchi, Stefano} Bianchi\footnote{\ctt,
+  \textit{New chapter style: chapter vs chapter*}, 2003/12/09} and is a two 
+  line centered arrangement with rules above and below the large bold 
+  sanserif title line. 
+  The chapter number line is in a smaller italic font. An example
+is in \fref{dcbianchi}.
+
+%\begin{demochap}[2\onelineskip]{bianchi}\end{demochap}
+\begin{demochap}[-2\onelineskip]{bianchi}\end{demochap}
+
+\item[\cstyle{bringhurst}] The \cstyle{bringhurst} chapterstyle described
+  in the manual and illustrated in \fref{dcbringhurst}.
+\glossary(bringhurstcs)%
+  {\Pcstyle{bringhurst}}%
+  {A raggedright, unnumbered, small caps chapterstyle with a textwidth
+   rule below.}
+
+\begin{demochap}{bringhurst}\end{demochap}
+
+
+\item[\cstyle{brotherton}]
+\glossary(brothertoncs)%
+  {\Pcstyle{brotherton}}%
+  {A chapterstyle like the default but with the number spelled out.}%
+ A very simple style designed by 
+William\index{Adams, William} Adams\footnote{\ctt, 
+\textit{An example of a novel?}, 2006/12/09} for the science fiction novel 
+\textit{Star Dragon} by Mike Brotherton. The novel is freely downloadable 
+from Brotherton's web site. The style is the same as the \cstyle{default} 
+except that the number is spelt out in words. It is demonstrated in
+\fref{dcbrotherton}. In the novel the chapters are actually 
+untitled i.e., via \verb?\chapter{}?.
+
+%\begin{demochap}[2\onelineskip]{brotherton}\end{demochap}
+\begin{demochap}[-2\onelineskip]{brotherton}\end{demochap}
+
+
+\item[\cstyle{chappell}] 
+\glossary(chappellcs)%
+  {\Pcstyle{chappell}}%
+  { A centered chapterstyle with a rule between
+   the number line (in a roman font) and the title line in italics.}
+The name and number are centered above a rule and the
+title in italics is below, again centered. It is illustrated in 
+\fref{dcchappell}.
+
+\begin{demochap}{chappell}
+\end{demochap}
+
+\item[\cstyle{crosshead}] 
+\glossary(crossheadcs)%
+  {\Pcstyle{crosshead}}%
+  { A centered chapterstyle in a bold font.}
+The number and title are centered and set with a large bold font.
+It is illustrated in 
+\fref{dccrosshead}.
+
+\begin{demochap}[-2\onelineskip]{crosshead}
+\end{demochap}
+
+
+
+\item[\cstyle{culver}] 
+\glossary(culvercs)%
+  {\Pcstyle{culver}}%
+  {One line, centered, bold chapterstyle using Roman numerals.}
+A chapter style I created for 
+  Christopher\index{Culver, Christopher}
+  Culver\footnote{\ctt, \textit{"Biblical" formatting, how?}, 2004/03/29}
+  based on the format of `ancient' texts.
+ It is one line, centered, bold and with the number printed as Roman numerals,
+as shown in \fref{dcculver}.
+
+\begin{comment}
+\makechapterstyle{culver}{
+  \chapterstyle{default}
+  \chapterstyle{article}
+  \renewcommand*{\thechapter}{\Roman{chapter}}
+  \renewcommand*{\printchapternum}{% center number/title
+    \centering\chapnumfont \thechapter\space\space}%
+  \renewcommand*{\printchapternonum}{\centering}
+  \renewcommand*{\clearforchapter}{}% no new page
+  \aliaspagestyle{chapter}{headings}% no special pagestyle
+}
+\end{comment}
+
+\begin{demochap}[-\onelineskip]{culver}\end{demochap}
+
+    He also wanted sections to just start with the number and the text to 
+immediately follow on the same line. That can be accomplished like this:
+\begin{lcode}
+\renewcommand*{\thesection}{\arabic{section}}
+\renewcommand*{\section}[1]{%
+  \refstepcounter{section}%
+  \par\noindent
+  \textbf{\thesection.}%
+  \space\nolinebreak}
+\end{lcode}
+
+\item[\cstyle{dash}]
+\glossary(dashcs)%
+  {\Pcstyle{dash}}%
+  {Two line, centered, regular font, chapterstyle. The number has a dash on 
+   either side.}
+ A simple two line centered chapterstyle. There is a short
+dash on either side of the number and a slightly larger
+version of the regular font is used for both the number and the title.
+This style is shown in \fref{dcdash}.
+
+%\begin{demochap}[-2\onelineskip]{dash}\end{demochap}
+\begin{demochap}[-4\onelineskip]{dash}\end{demochap}
+
+%\item[\cstyle{default}] This was already in the class but it has been revised
+%     to re-initialize all the settings.
+%\glossary(defaultcs)%
+%  {\Pcstyle{default}}%
+%  {The default \Ppack{book} class chapterstyle.}
+
+\item[\cstyle{demo2}]
+\glossary(demo2cs)%
+  {\Pcstyle{demo2}}%
+  {A two line chapterstyle with a large sanserif title; the number is above, 
+   centered and written (e.g., Six instead of 6) in a bold font. 
+   There are rules above and below the title.}
+   A two line chapterstyle with a large sanserif title; the number is above, 
+   centered and written (e.g., Six instead of 6) in a bold font. 
+   There are rules above and below the title. An example is shown in 
+  \fref{dcdemo2}.
+
+
+%\begin{demochap}[-2\onelineskip]{demo2}\end{demochap}
+\begin{demochap}[-\onelineskip]{demo2}\end{demochap}
+
+\item[\cstyle{demo3}]
+\glossary(demo3cs)%
+  {\Pcstyle{demo3}}%
+  {A two line chapterstyle with a large sanserif title; the number is above, 
+   centered and written (e.g., Six instead of 6) in an italic font. 
+   There are rules above and below
+   the title line. It is a modified version of the \Pcstyle{demo2} style.}
+   The chapterstyle used in this document. It is a
+  modified version of the \cstyle{demo2} chapterstyle, using an italic
+  rather than bold font for the number.
+
+\item[\cstyle{dowding}] 
+\glossary(dowdingcs)%
+  {\Pcstyle{dowding}}%
+  { A centered two line chapterstyle in an italic font and the number
+   is spelled out.}
+A centered style where the name and number are set in a bold font, with the 
+number spelled out. The title is below in a large italic font. The style
+is based on the design used in Dowding's \textit{Finer Points}~\cite{DOWDING96}.
+It is illustrated in 
+\fref{dcdowding}.
+
+\begin{demochap}[-2\onelineskip]{dowding}
+\end{demochap}
+
+
+\item[\cstyle{ell}] 
+\glossary(ellcs)%
+  {\Pcstyle{ell}}%
+  {A raggedleft large sanserif chapterstyle with the number in the margin. An
+   `L' shaped rule separates the number and title lines.}
+  A raggedleft sanserif chapterstyle. 
+  The number line is separated
+  from the title by rules like an `L' on its side and the number is placed
+  in the margin, as shown in \fref{dcell}. 
+I will probably use this in my next book. 
+
+%\begin{demochap}[6\onelineskip]{ell}\end{demochap}
+\begin{demochap}{ell}\end{demochap}
+
+\item[\cstyle{ger}] 
+\glossary(gercs)%
+  {\Pcstyle{ger}}%
+  {A raggedright, large, bold, two line chapterstyle with rules
+   above and below.}
+This style was created by 
+Gerardo\index{Garcia, Gerardo} Garcia\footnote{\ctt,
+  \textit{Fancy Headings, Chapter Headings}, 2002/04/12} and is a two line,
+  raggedleft, large bold style with rules above and below. It is
+  demonstrated in \fref{dcger}.
+
+%\begin{demochap}{ger}\end{demochap}
+\begin{demochap}[-4\onelineskip]{ger}\end{demochap}
+
+\item[\cstyle{komalike}] 
+\glossary(komalikecs)%
+  {\Pcstyle{komalike}}%
+  { A section-like chapterstyle in a sans serif font.}
+A section-like style set with a sans serif type. It is like that in the
+\Lclass{scrbook} class (part of the KOMA bundle). 
+It is illustrated in 
+\fref{dckomalike}.
+
+\begin{demochap}[-2\onelineskip]{komalike}
+\end{demochap}
+
+\item[\cstyle{lyhne}] 
+\glossary(lyhnecs)%
+  {\Pcstyle{lyhne}}%
+  {A raggedleft bold sanserif chapter title set between two rules, with the
+   name and number above. It requires the \Ppack{graphicx} package.}
+  A style created by Anders\index{Lyhne, Anders}
+  Lyhne\footnote{\ctt, \textit{Glossary}, 2006/02/09} and shown in \fref{dclyhne}
+  where the raggedleft
+  sanserif title is between two rules, with the name and number above.
+  I modified the original to cater for unnumbered chapters. It requires
+  the \Lpack{graphicx} package.
+
+%\begin{demochap}[-\onelineskip]{lyhne}\end{demochap}
+\begin{demochap}[-2\onelineskip]{lyhne}\end{demochap}
+
+\item[\cstyle{madsen}] 
+\glossary(madsencs)%
+  {\Pcstyle{madsen}}%
+  {A raggedleft large bold sanserif chapterstyle with the number in the
+   margin and a rule between the number and title lines.
+   It requires the \Ppack{graphicx} package.}
+  This was created by 
+  Lars\index{Madsen, Lars} Madsen\footnote{\ctt,
+  \textit{New chapter style: chapter vs chapter*}, 2003/12/09}
+  and is shown in \fref{dcmadsen}.
+  It is a large sanserif raggedleft style with the number in the margin
+  and a rule between the number and title lines. It requires the
+  \Lpack{graphicx} package.
+
+%\begin{demochap}[2\onelineskip]{madsen}\end{demochap}
+\begin{demochap}[-2\onelineskip]{madsen}\end{demochap}
+
+\item[\cstyle{ntglike}] 
+\glossary(ntglikecs)%
+  {\Pcstyle{ntglike}}%
+  { A smaller version of the standard chapterstyle.}
+A smaller version of the standard chapterstyle; it is like that in the NTG 
+classes (\Lclass{boek} class) developed by the Dutch \tx\ User Group.
+It is illustrated in 
+\fref{dcntglike}.
+
+\begin{demochap}[-3\onelineskip]{ntglike}
+\end{demochap}
+
+
+
+\item[\cstyle{pedersen}] 
+\glossary(pedersencs)%
+  {\Pcstyle{pedersen}}%
+  {A single line chapterstyle in large italics with the number set in the
+  righthand margin. The title and/or number may be colored. The 
+  \Ppack{graphicx} package is required and the \Ppack{color} 
+  (or \Ppack{xcolor}) package if you want to color.}
+  This was created by
+  Troels\index{Pedersen, Troels} Pedersen\footnote{\ctt,
+  \textit{Chapter style}, 2006/01/31} and requires the \Lpack{graphicx}
+  package, and, to get the full effect, the \Lpack{color} package as well.
+  The title is raggedright in large italics while the number is much larger
+  and placed in the righthand margin (I changed the means of placing the 
+  number). The head of this chapter is set with the \cstyle{pedersen} style,
+  because it cannot be adequately demonstrated in an illustration.
+
+%%%%\begin{demochap}{pedersen}\end{demochap}
+
+\item[\cstyle{southall}] 
+\glossary(southallcs)%
+  {\Pcstyle{southall}}%
+  { A raggedright chapterstyle with the number and title on the same line
+   and a rule below.}
+  This style was created by Thomas\index{Dye, Thomas} Dye. It
+  is a simple numbered heading with the title set as a block 
+  paragraph, and with a horizontal rule underneath. It is illustrated
+  in \fref{dcsouthall}.
+
+\begin{demochap}[-\onelineskip]{southall}\end{demochap}
+
+\item[\cstyle{tandh}] 
+\glossary(tandhcs)%
+  {\Pcstyle{tandh}}%
+  {A simple section-like chapterstyle in a bold font.}
+A simple section-like style in a bold font. It is based on the design used in
+the Thames \& Hudson \textit{Manual of Typography}~\cite{MCLEAN80} and 
+is illustrated in 
+\fref{dctandh}.
+
+\begin{demochap}[-1\onelineskip]{tandh}
+\end{demochap}
+
+
+\item[\cstyle{thatcher}] 
+\glossary(thatchercs)%
+  {\Pcstyle{thatcher}}%
+  {A centered small caps chapterstyle with the number line separated from 
+   the title by a short rule.}
+A style created by 
+  Scott\index{Thatcher, Scott} Thatcher\footnote{\ctt,
+  \textit{memoir: chapter headings capitalize math symbols}, 2006/01/18} 
+  which has the chapter name and number centered with the
+  title below, also centered, and all set in small caps. There is a short rule
+  between the number line and the title, as shown in \fref{dcthatcher}. 
+  I have modified the original to
+  cater for multiline titles, unnumbered chapters, and appendices.
+
+\begin{demochap}{thatcher}\end{demochap}
+
+
+\item[\cstyle{veelo}]
+\glossary(veelocs)%
+  {\Pcstyle{veelo}}%
+  {A raggedleft large bold chapterstyle with a large black square 
+   in the margin by the number line. It requires the \Ppack{graphicx} package.}
+   This style created by Bastiaan\index{Veelo, Bastiaan} Veelo 
+  is shown in \fref{dcveelo} and is raggedleft, large, bold and with a
+  black square in the margin by the number line. It requires the 
+  \Lpack{graphicx} package.
+
+%\cleardoublepage
+
+%%\savefigcnt=1
+%\demochapcnt=8
+%\begin{demochap}{veelo}\end{demochap}
+\begin{demochap}[-2\onelineskip]{veelo}\end{demochap}
+
+\item[\cstyle{verville}]
+\glossary(vervillecs)%
+  {\Pcstyle{verville}}%
+  {A single line, large, centered, chapterstyle with rules above and below.}
+ A chapterstyle I created for 
+  Guy\index{Verville, Guy} Verville\footnote{\ctt,
+  \textit{Headers and special formatting of sections}, 2005/01/18}. 
+  It is a single line, large centered style with rules above 
+  and below, as in \fref{dcverville}. Unlike my posted version, 
+  this one properly caters for unnumbered chapters.
+
+\begin{demochap}{verville}\end{demochap}
+
+\item[\cstyle{wilsondob}] 
+\glossary(wilsondobcs)%
+  {\Pcstyle{wilsondob}}%
+  {A one line flushright chapterstyle in a large italic font.}
+A one line flushright (raggedleft) section-like style in a large italic font. 
+It is based on the design used in
+Adrian Wilson's \textit{The Design of Books}~\cite{ADRIANWILSON93} and 
+is illustrated in 
+\fref{dcwilsondob}.
+
+\begin{demochap}[-1\onelineskip]{wilsondob}
+\end{demochap}
+
+\end{itemize}
+
+
+    The code for some of these styles is given below.
+    For details of how the other chapter styles are defined, 
+look at the
+documented class code. This should give you ideas if you want to define
+your own style.
+
+    Note that it is not necessary to define a new chapterstyle if you want
+to change the chapter headings --- you can just change the individual macros
+without putting them into a style.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\subsection{Chappell}
+
+    A style that includes rules is one that I based on the chapter heads
+in~\cite{CHAPPELL99} and which I have called \cstyle{chappell} after the
+first author. The style, which is shown in \fref{dcchappell}, can easily form
+the basis for general heads in non-technical books.
+\begin{lcode}
+\makechapterstyle{chappell}{%
+  \setlength{\beforechapskip}{0pt}
+  \renewcommand*{\chapnamefont}{\large\centering}
+  \renewcommand*{\chapnumfont}{\large}
+  \renewcommand*{\printchapternonum}{%
+    \vphantom{\printchaptername}%
+    \vphantom{\chapnumfont 1}%
+    \afterchapternum
+    \vskip -\onelineskip}
+  \renewcommand*{\chaptitlefont}{\Large\itshape}
+  \renewcommand*{\printchaptertitle}[1]{%
+    \hrule\vskip\onelineskip \centering\chaptitlefont ##1}}
+\end{lcode}
+
+
+The style centers the chapter number, draws a rule across the page under
+it, and below that comes the title, again centered. All the fiddling
+in the \cs{printchapternonum} macro is to try and ensure that the rule
+above the title is at the same height whether or not the chapter is numbered
+(the ToC being an example of an unnumbered heading).
+
+\subsection{Demo, Demo2 and demo3}
+
+    I created a \cstyle{demo} chapterstyle quite a time ago and used it 
+on occasions in earlier editions of this Manual. Here is the original code.
+\begin{lcode}
+\makechapterstyle{demo}{%
+  \renewcommand*{\printchaptername}{\centering}
+  \renewcommand*{\printchapternum}{\chapnumfont \numtoName{\c@chapter}}
+  \renewcommand*{\chaptitlefont}{\normalfont\Huge\sffamily}
+  \renewcommand*{\printchaptertitle}[1]{%
+    \hrule\vskip\onelineskip \raggedleft \chaptitlefont ##1}
+  \renewcommand*{\afterchaptertitle}%
+                {\vskip\onelineskip \hrule\vskip \afterchapskip}
+}% end demo
+\end{lcode}
+
+This has one serious failing and what I now believe is a poor design 
+decision. The failing is that if you have any appendices that use the
+\cstyle{demo} chapterstyle then they are numbered instead of being lettered.
+The poor design is that the position of the title with respect to the top
+of the page is not the same for numbered and unnumbered chapters.
+    The \cstyle{demo2} chapterstyle below fixes both of these at the expense
+of simplicity (at least for me).
+\begin{lcode}
+\makechapterstyle{demo2}{%
+  \renewcommand*{\printchaptername}{\centering}
+  \renewcommand*{\printchapternum}{\chapnumfont 
+     \ifanappendix \thechapter \else \numtoName{\c@chapter}\fi}
+  \renewcommand*{\chaptitlefont}{\normalfont\Huge\sffamily}
+  \renewcommand*{\printchaptertitle}[1]{%
+    \hrule\vskip\onelineskip \raggedleft \chaptitlefont ##1}
+  \renewcommand*{\afterchaptertitle}{%
+    \vskip\onelineskip \hrule\vskip \afterchapskip}
+  \setlength{\beforechapskip}{3\baselineskip}
+  \renewcommand*{\printchapternonum}{%
+    \vphantom{\chapnumfont One}
+    \afterchapternum%
+    \vskip\topskip}
+  \setlength{\beforechapskip}{2\onelineskip}
+}% end{demo2}
+\end{lcode}
+    You may find it instructive to compare the code for the \cstyle{demo} and 
+\cstyle{demo2} chapterstyles.
+
+    Thec \cstyle{demo} chapterstyle is still available in the class for
+backward compatibility reasons, but I strongly advise against anyone using it.
+
+    By chance I inadvertantly typest a chapterstyle that was a mixture
+of the \cstyle{pedersen} and \cstyle{demo2} styles. As a result there is
+now a \cstyle{demo3} chapterstyle as well. The only difference between the
+two styles is in the definition of \cs{chapnumfont} which in \cstyle{demo3}
+is:
+\begin{lcode}
+\renewcommand*{\chapnumfont}{\normalfont\HUGE\itshape}
+\end{lcode}
+
+\subsection{Pedersen}
+
+    I have modified Troels Pedersen's original code to make it a little more
+efficient and flexible. 
+
+\begin{lcode}
+\newcommand*{\colorchapnum}{}
+\newcommand*{\colorchaptitle}{}
+\makechapterstyle{pedersen}{%
+  \setlength{\beforechapskip}{-20pt}
+  \setlength{\afterchapskip}{10pt}
+  \renewcommand*{\chapnamefont}{\normalfont\LARGE\itshape}
+  \renewcommand*{\chapnumfont}{\normalfont\HUGE\itshape\colorchapnum}
+  \renewcommand*{\chaptitlefont}{\normalfont\huge\itshape\colorchaptitle}
+  \renewcommand*{\afterchapternum}{}
+  \renewcommand*{\printchaptername}{}
+  \setlength{\midchapskip}{20mm}
+  \renewcommand*{\chapternamenum}{}
+  \renewcommand*{\printchapternum}{%
+    \sidebar{\raisebox{0pt}[0pt][0pt]{\makebox[0pt][l]{%
+      \resizebox{!}{\midchapskip}{\chapnumfont\thechapter}}}}}
+  \renewcommand*{\printchaptertitle}[1]{\chaptitlefont ##1}
+}
+\end{lcode}
+The chapter number is scaled up from its normal size and set in a 
+sidebar\index{sidebar}.
+
+\begin{syntax}
+\cmd{\colorchapnum} \cmd{\colorchaptitle} \\
+\end{syntax}
+\glossary(colorchapnum)
+  {\cs{colorchapnum}}%
+  {Color for the number in the \Pcstyle{pedersen} chapterstyle.}
+\glossary(colorchaptitle)
+  {\cs{colorchaptitle}}%
+  {Color for the title in the \Pcstyle{pedersen} chapterstyle.}
+  The title is set with \cmd{colorchaptitle} and the number with
+\cmd{colorchapnum}, both of which default to doing nothing. 
+Lars Madsen\index{Madsen, Lars}
+has suggested an attractive red color for these:
+\begin{lcode}
+\usepackage{color}
+\definecolor{ared}{rgb}{.647,.129,.149}
+\renewcommand{\colorchapnum}{\color{ared}}
+\renewcommand{\colorchaptitle}{\color{ared}}
+\chapterstyle{pedersen}
+\end{lcode}
+
+    The uncolored version is used for the chaptersyle for this chapter;
+because of setting the number in a sidebar\index{sidebar} it does not
+display well anywhere other than as a real chapter head.
+
+\subsection{Southall}
+
+    On 2006/01/08 Thomas Dye\index{Dye, Thomas} posted his \cstyle{southall} 
+chapterstyle on \url{comp.text.tex} and kindly gave me permission to 
+include it here. It is based on the headings in a Cambridge Press 
+book\footnote{Which I haven't seen} by Aidan Southall.
+It produces a simple numbered heading with the title set as a block paragraph,
+and with a horizontal rule underneath. His original code called for lining
+figures for the number but I have commented out that bit. I also changed
+the code to eliminate the need for the two new lengths that Thomas used.
+
+\begin{lcode}
+\makechapterstyle{southall}{%
+  \setlength{\afterchapskip}{5\baselineskip}
+  \setlength{\beforechapskip}{36pt}
+  \setlength{\midchapskip}{\textwidth}
+  \addtolength{\midchapskip}{-\beforechapskip}
+  \renewcommand*{\chapterheadstart}{\vspace*{2\baselineskip}}
+  \renewcommand*{\chaptitlefont}{\huge\rmfamily\raggedright}
+  \renewcommand*{\chapnumfont}{\chaptitlefont}
+  \renewcommand*{\printchaptername}{}
+  \renewcommand*{\chapternamenum}{}
+  \renewcommand*{\afterchapternum}{}
+  \renewcommand*{\printchapternum}{%
+    \begin{minipage}[t][\baselineskip][b]{\beforechapskip}
+      {\vspace{0pt}\chapnumfont%%%\figureversion{lining} 
+                   \thechapter}
+    \end{minipage}}
+  \renewcommand*{\printchaptertitle}[1]{%
+    \hfill\begin{minipage}[t]{\midchapskip}
+      {\vspace{0pt}\chaptitlefont ##1\par}\end{minipage}}
+  \renewcommand*{\afterchaptertitle}{%
+    \par\vspace{\baselineskip}%
+    \hrulefill \par\nobreak\noindent \vskip\afterchapskip}}
+\end{lcode}
+
+The resulting style is shown in \fref{dcsouthall}.
+
+
+\subsection{Veelo}
 
     Bastiaan Veelo 
-posted the code for a new chapter style to \pictt{} on 2003/07/22 under the
+posted the code for a new chapter style to \pixctt\ on 2003/07/22 under the
 title \textit{[memoir] [contrib] New chapter style}. His code, which
 I have slightly modified and changed the name to \cstyle{veelo},
 is below. I have also exercised editorial privilege on his comments.
 
 \begin{quote}
- I thought I'd share a new chapter style to be used with the memoir class 
+ I thought I'd share a new chapter style to be used with the memoir class. 
  The style is tailored for documents that are to be trimmed to a smaller 
  width. When the bound document is bent, black tabs will appear on the 
  fore side at the places where new chapters start as a navigational aid.
@@ -6127,103 +11391,171 @@ is below. I have also exercised editorial privilege on his comments.
 Bastiaan.
 \end{quote}
 
+    In the style as I modified it, \lnc{\beforechapskip} is used as the 
+height of the number and \lnc{\midchapskip} is used as the length of the
+black bar.
 \begin{lcode}
-\makeatletter
-\newlength{\numberheight}
-\newlength{\barlength}
-\makechapterstyle{veelo}{%
-   \setlength{\beforechapskip}{40pt}
-   \setlength{\midchapskip}{25pt}
-   \setlength{\afterchapskip}{40pt}
-   \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright}
-   \renewcommand{\chapnumfont}{\normalfont\HUGE}
-   \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
-   \renewcommand{\printchaptername}{%
-     \chapnamefont\MakeUppercase{\@chapapp}}
-   \renewcommand{\chapternamenum}{}
-   \setlength{\numberheight}{18mm}
-   \setlength{\barlength}{\paperwidth}
-   \addtolength{\barlength}{-\textwidth}
-   \addtolength{\barlength}{-\spinemargin}
-   \renewcommand{\printchapternum}{%
-     \makebox[0pt][l]{%
-       \hspace{.8em}%
-       \resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
-       \hspace{.8em}%
-       \rule{\barlength}{\numberheight}
-     }
-   }
-   \makeoddfoot{plain}{}{}{\thepage}
-}
-\makeatother
-\end{lcode}
-
-\makeatletter
 \newlength{\numberheight}
 \newlength{\barlength}
 \makechapterstyle{veelo}{%
-   \setlength{\beforechapskip}{40pt}
-   \setlength{\midchapskip}{25pt}
-   \setlength{\afterchapskip}{40pt}
-   \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright}
-   \renewcommand{\chapnumfont}{\normalfont\HUGE}
-   \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
-   \renewcommand{\printchaptername}{%
-     \chapnamefont\MakeUppercase{\@chapapp}}
-   \renewcommand{\chapternamenum}{}
-   \setlength{\numberheight}{18mm}
-   \setlength{\barlength}{\paperwidth}
-   \addtolength{\barlength}{-\textwidth}
-   \addtolength{\barlength}{-\spinemargin}
-   \renewcommand{\printchapternum}{%
-     \makebox[0pt][l]{%
-       \hspace{.8em}%
-       \resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
-       \hspace{.8em}%
-       \rule{\barlength}{\numberheight}
-     }
-   }
-   \makeoddfoot{plain}{}{}{\thepage}
-}
-\makeatother
-
-    If you implement this you will also need to use the \Lpack{graphicx} 
+  \setlength{\afterchapskip}{40pt}
+  \renewcommand*{\chapterheadstart}{\vspace*{40pt}}
+  \renewcommand*{\afterchapternum}{\par\nobreak\vskip 25pt}
+  \renewcommand*{\chapnamefont}{\normalfont\LARGE\flushright}
+  \renewcommand*{\chapnumfont}{\normalfont\HUGE}
+  \renewcommand*{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
+  \renewcommand*{\printchaptername}{%
+    \chapnamefont\MakeUppercase{\@chapapp}}
+  \renewcommand*{\chapternamenum}{}
+  \setlength{\beforechapskip}{18mm}
+  \setlength{\midchapskip}{\paperwidth}
+  \addtolength{\midchapskip}{-\textwidth}
+  \addtolength{\midchapskip}{-\spinemargin}
+  \renewcommand*{\printchapternum}{%
+    \makebox[0pt][l]{\hspace{.8em}%
+      \resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
+      \hspace{.8em}%
+      \rule{\midchapskip}{\beforechapskip}%
+     }}%
+   \makeoddfoot{plain}{}{}{\thepage}}
+\end{lcode}
+
+
+    If you use this style you will also need to use the \Lpack{graphicx} 
 package~\cite{GRAPHICX} because of the \cmd{\resizebox} macro. 
 The \cstyle{veelo} style works best for chapters that start 
 on recto pages.
 
-    For details of how the other chapter styles are defined, 
-look at the
-documented class code. This should give you ideas if you want to define
-your own style.
-
-    Note that it is not necessary to define a new chapterstyle if you want
-to change the chapter headings --- you can just change the individual macros
-without putting them into a style.
 
 \index{chapterstyle|)}
 
+\subsection{Chapter precis}
+
+\index{chapter!precis|(}
+
+
+   Some old style novels, and even some modern text 
+ books,\footnote{For example, Robert Sedgewick, \textit{Algorithms},
+ Addison-Wesley, 1983.} include a short synopsis of the contents of 
+ the chapter either immediately
+ after the chapter heading\index{heading!chapter} or in the \toc, or in both places.
+
+\begin{syntax}
+\cmd{\chapterprecis}\marg{text} \\
+\end{syntax}
+\glossary(chapterprecis)%
+  {\cs{chapterprecis}\marg{text}}%
+  {Prints \meta{text} and also adds it to the ToC.}
+     The command \cmd{\chapterprecis} prints its argument 
+ both at the
+ point in the document where it is called, and also adds it to the \file{.toc}
+ file. For example:
+ \begin{lcode}
+ ...
+ \chapter{}  first chapter
+ \chapterprecis{Our hero is introduced; family tree; early days.}
+ ...
+ \end{lcode}
+
+    Now for the details.
+
+\begin{syntax}
+\lnc{\prechapterprecisshift} \\
+\end{syntax}
+\glossary(prechapterprecisshift)%
+  {\cs{prechapterprecisshift}}%
+  {Spacing between a chapter head and a chapter precis.}
+The length \lnc{\prechapterprecisshift} controls the vertical spacing before
+a \cmd{\chapterprecis}. If the precis immediately follows a \cmd{\chapter}
+then a different space is required depending on whether or not the
+\Lopt{article} class option is used. The class sets:
+\begin{lcode}
+\ifartopt
+  \setlength{\prechapterprecisshift}{0pt}
+\else
+  \setlength{\prechapterprecisshift}{-2\baselineskip}
+\fi
+\end{lcode}
+
+
+\begin{syntax}
+\cmd{\chapterprecishere}\marg{text} \\
+\cmd{\chapterprecistoc}\marg{text} \\
+\end{syntax}
+\glossary(chapterprecishere)%
+  {\cs{chapterprecishere}\marg{text}}%
+  {Typesets \meta{text} for a chapter precis.}
+\glossary(chapterprecistoc)%
+  {\cs{chapterprecistoc}\marg{text}}%
+  {Adds \meta{text} for a chapter precis to the ToC.}
+ The \cmd{\chapterprecis} command calls these two commands to print the
+ \meta{text} in the document (the \cmd{\chapterprecishere} command) 
+ and to put it into the \toc{} (the \cmd{\chapterprecistoc} command). 
+ These can be used individually if required.
+
+\begin{syntax}
+\cmd{\precisfont} \\
+\cmd{\prechapterprecis} \cmd{\postchapterprecis} \\
+\end{syntax}
+The \cmd{\chapterprecishere} macro is intended for use immediately after 
+a \cmd{\chapter}. The \meta{text} argument is typeset in
+the \cmd{\precisfont} font in a \Ie{quote} environment. The macro's 
+definition is:
+\begin{lcode}
+\newcommand{\chapterprecishere}[1]{%
+  \prechapterprecis #1\postchapterprecis}
+\end{lcode}
+where \cmd{\prechapterprecis}, \cmd{\postchapterprecis} and \cmd{\precisfont}
+are defined as:
+\begin{lcode}
+\newcommand{\prechapterprecis}{%
+  \vspace*{-2\baselineskip}%
+  \begin{quote}\precisfont}
+\newcommand{\postchapterprecis}{\end{quote}}
+\newcommand*{\precisfont}{\normalfont\itshape}
+\end{lcode}
+Any or all of these can be changed if another style of typesetting is required.
+
+
+\begin{syntax}
+\cmd{\precistoctext}\marg{text} \cmd{\precistocfont} \\
+\end{syntax}
+The \cmd{\chapterprecistoc} macro puts the macro \cmd{\precistoctext} into 
+the \ixfile{toc} file. The default definition is
+\begin{lcode}
+\DeclareRobustCommand{\precistoctext}[1]{%
+  {\leftskip \cftchapterindent\relax
+   \advance\leftskip \cftchapternumwidth\relax
+   \rightskip \@tocrmarg\relax
+   \precistocfont #1\par}}
+\end{lcode}
+Effectively, in the \toc{} \cmd{\precistoctext} typesets its argument like 
+a chapter title using the \cmd{\precistocfont} (default \cmd{\itshape}).
+
+\index{chapter!precis|)}
+
+
 \section{Lower level headings}
 
 \index{heading!sections|(}
 
-    The lower level headings --- sections down to subparagraphs --- are also
+    The lower level heads --- sections down to subparagraphs --- are also
 configurable, but there is nothing corresponding to chapter styles.
 
-    There are essentially three things that may be adjusted for a heading:
+    There are essentially three things that may be adjusted for these heads:
 (a) the vertical distance between the baseline of the text above the heading to
-the baseline of the heading title, (b) the indentation of the heading from the
-left hand margin\index{margin}, and (c) the style (font) used for the heading title. 
-Additionally, a heading may be runin to the text or as a display before 
+the baseline of the title text, (b) the indentation of the heading from the
+left hand margin\index{margin!left}, and (c) the style (font) used for the 
+heading title. 
+Additionally, a heading may be run-in to the text or as a display before 
 the following text;
 in the latter case the vertical distance between the heading and the 
 following text may also be adjusted. Figure~\ref{fig:displaysechead} shows the
 parameters controlling a displayed sectional heading and \fref{fig:runsechead}
-shows the parameters for a runin heading.
+shows the parameters for a run-in heading. The default values of the
+parameters for the different heads are in \tref{tab:defdisplaySvals} for
+the display heads and \tref{tab:defruninSvals} for the runin heads.
 
-    In the following I will use |S| to stand for one of |sec|, |subsec|,
-|subsubsec|, |para| or |subpara|, which are in turn shorthand for |section|
-through to |subparagraph|.
 
 \begin{figure}
 \centering
@@ -6239,17 +11571,79 @@ through to |subparagraph|.
 \drawparameterstrue
 \runinheadtrue
 \drawheading{}
-\caption{Runin sectional headings} \label{fig:runsechead}
+\caption{Run-in sectional headings} \label{fig:runsechead}
 \end{figure}
 
+\begin{table}
+\centering
+\caption{Default display sectioning layout parameter values}\label{tab:defdisplaySvals}
+\begin{tabular}{lccc} \toprule
+  & section & subsection & subsubsection \\ \midrule
+beforeskip (-ex) & 3.5+1-.2 & 3.25+1-.2 & 3.25+1-.2 \\
+indent          &    0     &      0    &     0     \\
+afterskip (ex)  & 2.3+.2   & 1.5+.2    & 1.5+.2 \\
+font   & \cs{Large}\cs{bfseries} & \cs{large}\cs{bfseries} & \cs{bfseries} \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+\begin{table}
+\centering
+\caption{Default runin sectioning layout parameter values}\label{tab:defruninSvals}
+\begin{tabular}{lcc} \toprule
+  & paragraph & subparagraph \\ \midrule
+beforeskip (+ex) & 3.25+1-.2 & 3.25+1-.2 \\
+indent          &    0      &  \cs{parindent} \\
+afterskip       & -1em       & -1em       \\
+font            & \cs{bfseries} & \cs{bfseries} \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+
+    In the following I will use \texttt{S} to stand for one of \texttt{sec},
+\texttt{subsec}, \texttt{subsubsec}, \texttt{para} or \texttt{subpara}, 
+which are in turn shorthand for \texttt{section} through to 
+\texttt{subparagraph}, as summarised in \tref{tab:Sshort}.
+
+\begin{table}
+\centering
+\caption{Values for \texttt{S} in section styling macro names.} \label{tab:Sshort}
+\ttfamily
+\begin{tabular}{llllll}\toprule
+S & sec & subsec & subsubsec & para & subpara \\
+  & section & subsection & subsubsection & paragraph & subparagraph \\ 
+\bottomrule
+\end{tabular}
+\end{table}
+
 \begin{syntax}
 \cmd{\setbeforeSskip}\marg{skip} \\
 \end{syntax}
+\glossary(setbeforeSskip)%
+  {\cs{setbeforeSskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for an S head.}
+\glossary(setbeforesecskip)%
+  {\cs{setbeforesecskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for a \cs{section} head.}
+\glossary(setbeforesubsecskip)%
+  {\cs{setbeforesubsecskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for a \cs{subsection} head.}
+\glossary(setbeforesubsubsecskip)%
+  {\cs{setbeforesubsubsecskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for a \cs{subsubsection} head.}
+\glossary(setbeforeparaskip)%
+  {\cs{setbeforeparaskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for a \cs{paragraph} head.}
+\glossary(setbeforesubparaskip)%
+  {\cs{setbeforesubparaskip}\marg{skip}}%
+  {Sets the \cs{beforeskip} for a \cs{subparagraph} head.}
 The absolute value of the \meta{skip} length argument is the space to leave
 above the heading. If the actual value is negative then the first line 
 after the heading will not be indented. The default \meta{skip} depends on the
-particular level of heading, but for a \cmd{\section} (i.e., when |S = sec|)
-it is 
+particular level of heading, but for a \cmd{\section} 
+(i.e., when \verb?S = sec?) it is 
 \begin{lcode}
 -3.5ex plus -1ex minus -.2ex
 \end{lcode}
@@ -6265,21 +11659,57 @@ you could do
 \begin{syntax}
 \cmd{\setSindent}\marg{length} \\
 \end{syntax}
+\glossary(setSindent)
+  {\cs{setSindent}\marg{length}}%
+  {Sets the \cs{indent} for an S head.} 
+\glossary(setsecindent)
+  {\cs{setsecindent}\marg{length}}%
+  {Sets the \cs{indent} for a \cs{section} head.} 
+\glossary(setsubsecindent)
+  {\cs{setsubsecindent}\marg{length}}%
+  {Sets the \cs{indent} for a \cs{subsection} head.} 
+\glossary(setsubsubsecindent)
+  {\cs{setsubsubsecindent}\marg{length}}%
+  {Sets the \cs{indent} for a \cs{subsubsection} head.} 
+\glossary(setparaindent)
+  {\cs{setparaindent}\marg{length}}%
+  {Sets the \cs{indent} for a \cs{paragraph} head.} 
+\glossary(setsubparaindent)
+  {\cs{setsubparaindent}\marg{length}}%
+  {Sets the \cs{indent} for a \cs{subparagraph} head.} 
 The value of the \meta{length} length argument is the indentation of
-the heading (number and title) from the lefthand margin\index{margin}. This is normally
-0pt.
-
-\begin{syntax}
-\cmd{\setSheadstyle}\marg{text} \\
-\end{syntax}
+the heading (number and title) from the lefthand margin\index{margin!left}. 
+This is normally 0pt.
+
+\begin{syntax}
+\cmd{\setSheadstyle}\marg{font} \\
+\end{syntax}
+\glossary(setSheadstyle)%
+  {\cs{setSheadstyle}\marg{font}}%
+  {Sets the style (font) for an S head.}
+\glossary(setsecheadstyle)%
+  {\cs{setsecheadstyle}\marg{font}}%
+  {Sets the style (font) for a section head.}
+\glossary(setsubsecheadstyle)%
+  {\cs{setsubsecheadstyle}\marg{font}}%
+  {Sets the style (font) for a subsection head.}
+\glossary(setsubsubsecheadstyle)%
+  {\cs{setsubsubsecheadstyle}\marg{font}}%
+  {Sets the style (font) for a subsubsection head.}
+\glossary(setparaheadstyle)%
+  {\cs{setparaheadstyle}\marg{font}}%
+  {Sets the style (font) for a paragraph head.}
+\glossary(setsubparaheadstyle)%
+  {\cs{setsubparaheadstyle}\marg{font}}%
+  {Sets the style (font) for a subparagraph head.}
 This macro specifies the style (font) for the sectional number and title. 
-As before, the default value of the \meta{text} argument depends on the
-level of the heading. For a \cmd{\subsection} (i.e., |S=subsec|) it is
-|\large\bfseries\raggedright|, to typeset in the \cmd{\bfseries} font
+As before, the default value of the \meta{font} argument depends on the
+level of the heading. For a \cmd{\subsection} (i.e., \verb?S=subsec?) it is
+\verb?\large\bfseries\raggedright?, to typeset in the \cmd{\bfseries} font
 in the \cmd{\large} size; the title will also be set ragged right (i.e.,
 there will be no hyphenation in a multiline title).
 
-    Note that the very last element in the \meta{text} argument may be a 
+    Note that the very last element in the \meta{font} argument may be a 
 macro that takes one argument (the number and title of the heading). So,
 if for some reason you wanted \cmd{\subsubsection} titles to be all uppercase,
 centered, and in the normal font, you can do
@@ -6299,20 +11729,46 @@ horizontal line under section titles via:
 \begin{syntax}
 \cmd{\setafterSskip}\marg{skip} \\
 \end{syntax}
+\glossary(setafterSskip)%
+  {\cs{setafterSskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for an S head.}
+\glossary(setaftersecskip)%
+  {\cs{setaftersecskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for a section head.}
+\glossary(setaftersubsecskip)%
+  {\cs{setaftersubsecskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for a subsection head.}
+\glossary(setaftersubsubsecskip)%
+  {\cs{setaftersubsubsecskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for a subsubsection head.}
+\glossary(setafterparaskip)%
+  {\cs{setafterparaskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for a paragraph head.}
+\glossary(setaftersubparaskip)%
+  {\cs{setaftersubparaskip}\marg{skip}}%
+  {Sets the \cs{afterskip} for a subparagraph head.}
 If the value of the \meta{skip} length argument is positive it is the space 
 to leave between the display heading and the following text. If it is negative,
-then the heading will be runin and the value is the horizontal space
+then the heading will be run-in and the value is the horizontal space
 between the end of the heading and the following text.
 The default \meta{skip} depends on the
-particular level of heading, but for a \cmd{\section} (i.e., when |S = sec|)
-it is |2.3ex plus .2ex|, 
-and for a \cmd{\subparagraph} (i.e., |S = subpara|), which is a runin heading, it is
-|-1em|.
+particular level of heading, but for a \cmd{\section} (i.e., when 
+\verb?S = sec?) it is \verb?2.3ex plus .2ex?, 
+and for a \cmd{\subparagraph} (i.e., \verb?S = subpara?), which is a run-in 
+heading, it is \verb?-1em?.
+
+
 
 \begin{syntax}
-\cmd{\@hangfrom}\marg{stuff} \\
+\cmd{\@hangfrom}\marg{code} \\
 \cmd{\sethangfrom}\marg{code} \\
 \end{syntax}
+\glossary(hangfromat)%
+  {\cs{@hangfrom}\marg{code}}%
+  {Kernel macro aiding the setting hanging paragraphs.}
+\glossary(sethangfrom)%
+  {\cs{sethangfrom}\marg{code}}%
+  {User macro redefining \cs{@hangfrom} to \meta{code}.}
 Internally all the titling macros use a macro called \cmd{\@hangfrom} which
 by default makes multiline titles look like a hanging paragraph\index{paragraph!hanging}. The
 default definition of \cmd{\@hangfrom} (in file \file{ltsect.dtx}) is
@@ -6322,8 +11778,8 @@ effectively:
   \hangindent \wd\@tempboxa\noindent\box\@tempboxa}
 \end{lcode}
 The argument is put into a box and its width is measured, then a hanging
-paragraph\index{paragraph!hanging} is started with the argument as the first thing and second and
-later lines indented by the argument's width.
+paragraph\index{paragraph!hanging} is started with the argument as the 
+first thing and second and later lines indented by the argument's width.
 
 The \cmd{\sethangfrom} macro redefines \cmd{\@hangfrom} to be \meta{code}.
 For example, to have the titles set as block paragraphs\index{paragraph!block} instead of hanging
@@ -6331,36 +11787,50 @@ paragraphs\index{paragraph!hanging}, simply do:
 \begin{lcode}
 \sethangfrom{\noindent #1}
 \end{lcode}
-Note that you have to use |#1| at the position in the replacement
+Note that you have to use \verb?#1? at the position in the replacement
 code for \cmd{\@hangfrom} where the argument to \cmd{\@hangfrom}
 is to be located.
 
 \begin{syntax}
-\cmd{\@seccntformat}\marg{stuff} \\
+\cmd{\@seccntformat}\marg{code} \\
 \cmd{\setsecnumformat}\marg{code} \\
 \end{syntax}
-Internally all the titling macros use a macro called \cmd{\@seccntformat} 
+\glossary(seccntformatat)%
+  {\cs{@seccntformat}\marg{code}}%
+  {Kernel macro that formats the number in a sectional head.}
+\glossary(setsecnumformat)%
+  {\cs{setsecnumformat}\marg{code}}%
+  {Redefines \cs{@seccntformat} to \meta{code}.}
+Internally all the titling macros use a kernel macro called 
+\cmd{\@seccntformat} 
 which defines the formatting of sectional numbers in a title. Its
 default definition (in file \file{ltsect.dtx}) is effectively:
 \begin{lcode}
 \newcommand{\@seccntformat}[1]{\csname the#1\endcsname\quad}
 \end{lcode}
-which formats the sectional numbers as |\thesec...| with a space afterwards.
+which formats the sectional numbers as \verb?\thesec...? with a space 
+afterwards.
 The command \cmd{\setsecnumformat} redefines \cmd{\@seccntformat} 
 to be \meta{code}.
 For example, to put a colon and space after the number
 \begin{lcode}
 \setsecnumformat{\csname the#1\endcsname:\quad}
 \end{lcode}
-Note that you have to use |#1| where you want the argument 
+Note that you have to use \verb?#1? where you want the argument 
 (sectional number) of \cmd{\@seccntformat} to go.
 
 \begin{syntax}
 \cmd{\hangsecnum} \\
 \cmd{\defaultsecnum} \\
 \end{syntax}
+\glossary(hangsecnum)%
+  {\cs{hangsecnum}}%
+  {Declaration making sectioning numbers hang in the margin.}
+\glossary(defaultsecnum)%
+  {\cs{defaultsecnum}}%
+  {Declaration reversing the effect of \cs{hangsecnum}.}
 The macro \cmd{\hangsecnum} is a declaration that makes sectional numbers hang
-in the margin\index{margin}. The macro \cmd{\defaultsecnum} is a declaration that reverses the
+in the margin\index{margin!left}. The macro \cmd{\defaultsecnum} is a declaration that reverses the
 effect of \cmd{\hangsecnum}, that is, sectional numbers will be typeset in 
 their familiar places.
 
@@ -6369,3783 +11839,4939 @@ their familiar places.
 \cmd{\Shook} \\
 \cmd{\setShook}\marg{text} \\
 \end{syntax}
+\glossary(Shook)%
+  {\cs{Shook}}%
+  {Hook called immediately before typesetting the title of an S head.}
+\glossary(setShook)%
+  {\cs{setShook}\marg{text}}%
+  {Redefines \cs{Shook} to be \meta{text}.}
+\glossary(sechook)%
+  {\cs{sechook}}%
+  {Hook called immediately before typesetting the title of a section head.}
+\glossary(setsechook)%
+  {\cs{setsechook}\marg{text}}%
+  {Redefines \cs{sechook} to be \meta{text}.}
+\glossary(subsechook)%
+  {\cs{subsechook}}%
+  {Hook called immediately before typesetting the title of a subsection head.}
+\glossary(setsubsechook)%
+  {\cs{setsubsechook}\marg{text}}%
+  {Redefines \cs{subsechook} to be \meta{text}.}
+\glossary(subsubsechook)%
+  {\cs{subsubsechook}}%
+  {Hook called immediately before typesetting the title of a subsubsection head.}
+\glossary(setsubsubsechook)%
+  {\cs{setsubsubsechook}\marg{text}}%
+  {Redefines \cs{subsubsechook} to be \meta{text}.}
+\glossary(parahook)%
+  {\cs{parahook}}%
+  {Hook called immediately before typesetting the title of a paragraph head.}
+\glossary(setparahook)%
+  {\cs{setparahook}\marg{text}}%
+  {Redefines \cs{parahook} to be \meta{text}.}
+\glossary(subparahook)%
+  {\cs{subparahook}}%
+  {Hook called immediately before typesetting the title of a subparagraph head.}
+\glossary(setsubparahook)%
+  {\cs{setsubparahook}\marg{text}}%
+  {Redefines \cs{subparahook} to be \meta{text}.}
 The macro \cmd{\Shook} is called immediately before the typesetting of the
 title; its default definition does nothing. The macro \cmd{\setShook} 
 redefines \cmd{\Shook} to be \meta{text}. You can use this hook, for example,
 to insert a \cmd{\sethangfrom} or \cmd{\setsecnumformat} command into the
 definition of a particular section division command.
 
-\index{heading!sections|)}
+Here are some example lower level heads and the code used to produce them.
 
-\section{Heading styles for this chapter}
+\newcommand*{\shortcenter}[1]{%
+  \sethangfrom{\noindent ##1}%
+  \normalfont\boldmath\bfseries
+  \centering
+  \parbox{3in}{\centering #1}\par}
 
-    As a reference, \tref{tab:secfonts} lists the default fonts used
-for the sectional headings. These fonts are all bold but in different
-sizes depending on the division level.
+\begin{egresult}[A variety of subhead styles]{egsubheads}
+\setsubsubsecheadstyle{\bfseries\raggedright}
+\subsubsection*{Bold raggedright}
 
-\begin{table}
-\centering
-\caption{Default fonts for sectional headings}\label{tab:secfonts}
-\begin{tabular}{ll} \hline
-\cmd{\partnamefont}       & |\huge\bfseries| \\
-\cmd{\partnumfont}        & |\huge\bfseries| \\
-\cmd{\parttitlefont}      & |\Huge\bfseries| \\
-\cmd{\chapnamefont}       & |\normalfont\huge\bfseries| \\
-\cmd{\chapnumfont}        & |\normalfont\huge\bfseries| \\
-\cmd{\chaptitlefont}      & |\normalfont\Huge\bfseries| \\
-\cmd{\secheadstyle}       & |\Large\bfseries\raggedright| \\
-\cmd{\subsecheadstyle}    & |\large\bfseries\raggedright| \\
-\cmd{\subsubsecheadstyle} & |\normalsize\bfseries\raggedright| \\
-\cmd{\paraheadstyle}      & |\normalsize\bfseries| \\
-\cmd{\subparaheadstyle}   & |\normalsize\bfseries| \\
-\hline
-\end{tabular}
-\end{table}
+\setsubsubsecheadstyle{\scshape\raggedright}
+\subsubsection*{Small caps raggedright}
 
-\index{heading!chapter|(}
-\index{chapterstyle|(}
+\setsubsubsecheadstyle{\itshape\raggedright}
+\subsubsection*{Italic raggedright}
 
-    The commands described below have been put just before the start
-of this chapter.
+\setsubsubsecheadstyle{\Large\centering}
+\subsubsection*{Large centered}
 
-    For this chapter I have used sans fonts instead of bold fonts. The
-commands to do this are shown below for chapters down to subsubsections.
-\begin{lcode}
-\renewcommand{\chapnumfont}{\normalfont\huge\sffamily}
-\renewcommand{\chaptitlefont}{\chapnumfont}
-\setsecheadstyle{\Large\sffamily\raggedright}
-\setsubsecheadstyle{\large\sffamily\raggedright}
-\setsubsubsecheadstyle{\normalsize\sffamily\raggedright}
-\end{lcode}
+\setsubsubsecheadstyle{\large\centering\MakeUppercase}
+\subsubsection*{large centered uppercase}
 
-    The chapter heading is typeset like a section heading. I redefine
-\cmd{\printchaptername} and \cmd{\chapternamenum} to do nothing, which
-eliminates the printing of the chapter name and also anything
-that may be between the name and the number. Changing \cmd{\afterchapternum}
-to be just \cmd{\space} eliminates the vertical space that is normally
-between the number and the title, and instead puts a normal word space 
-between the number and the title.
-\begin{lcode}
-\renewcommand{\printchaptername}{}
-\renewcommand{\chapternamenum}{}
-\renewcommand{\afterchapternum}{\space}
-\end{lcode}
+\setsubsubsecheadstyle{\bfseries\centering}
+\subsubsection*{Bold centered}
 
-    Before the next chapter starts, I want to revert back to the default
-divisional styles, so the following code is used at the end of
-this chapter.
-\begin{lcode}
-\chapterstyle{default}
-\setsecheadstyle{\Large\bfseries\raggedright}
-\setsubsecheadstyle{\large\bfseries\raggedright}
-\setsubsubsecheadstyle{\normalsize\bfseries\raggedright}
-\end{lcode}
-Calling |\chapterstyle{default}| deals with the chapter heading. The other
-commands change the lower level fonts back to their default values.
+\setsubsubsecheadstyle{\scshape\centering}
+\subsubsection*{Small caps centered}
 
+\setsubsubsecindent{2\parindent}
+\setsubsubsecheadstyle{\scshape\raggedright}
+\subsubsection*{Small caps indented}
 
-\index{chapterstyle|)}
-\index{heading!chapter|)}
+\setsubsubsecindent{0pt}
+\setsubsubsecheadstyle{\itshape\raggedleft}
+\subsubsection*{Italic flushright}
 
-\section{Footnotes and headers}
+\setsubsubsecheadstyle{\shortcenter}
+\subsubsection*{Bold centered but taking up no more than 3 inches
+                if a long title}
+\end{egresult}
 
-\index{footnote!in heading|(}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% back to default settings
+%\setsubsubsecindent{0pt}
+%\setsubsubsecheadstyle{\bfseries\raggedright}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-    With the sectioning commands the text of the required argument
-\meta{title} is used as the text for the section title in the body
-of the document.
 
-    When the optional argument \meta{toc-title} is used in a sectioning
-command it is moving and any fragile commands must be \cmd{\protect}ed,
-while the \meta{title} argument is fixed. The \meta{toc-title} also
-serves double duty:
-\begin{enumerate}
-\item It is used as the text of the title in the \toc;
-\item It is used as the text in page headers\index{header}. 
-\end{enumerate}
+\begin{egsource}{egsubheads}
+\setsubsubsecheadstyle{\bfseries\raggedright}
+    \subsubsection*{Bold raggedright}
+\setsubsubsecheadstyle{\scshape\raggedright}
+    \subsubsection*{Small caps raggedright}
+\setsubsubsecheadstyle{\itshape\raggedright}
+    \subsubsection*{Italic raggedright}
+\setsubsubsecheadstyle{\Large\centering}
+    \subsubsection*{Large centered}
+\setsubsubsecheadstyle{\large\centering\MakeUppercase}
+    \subsubsection*{large centered uppercase}
+\setsubsubsecheadstyle{\bfseries\centering}
+    \subsubsection*{Bold centered}
+\setsubsubsecheadstyle{\scshape\centering}
+    \subsubsection*{Small caps centered}
+\setsubsubsecindent{2\parindent}
+\setsubsubsecheadstyle{\scshape\raggedright}
+    \subsubsection*{Small caps indented}
+\setsubsubsecindent{0pt}
+\setsubsubsecheadstyle{\itshape\raggedleft}
+    \subsubsection*{Italic flushright}
+\newcommand*{\shortcenter}[1]{%
+  \sethangfrom{\noindent ##1}%
+  \normalfont\boldmath\bfseries
+  \centering
+  \parbox{3in}{\centering #1}\par}
+\setsubsubsecheadstyle{\shortcenter}
+\subsubsection*{Bold centered but taking up no more than 3 inches
+                if a long title}
+\end{egsource}
+
+\newcommand{\marginbox}[1]{%
+  \parbox[t][0pt]{6em}{\itshape\raggedleft\mbox{} #1}}
+\newcommand{\marginhead}[1]{%
+  {\llap{\marginbox{#1}\kern0.5em}}}
+\setparaindent{0em}
+\setafterparaskip{0em}
+\setparaheadstyle{\marginhead}
+\setparahook{\setsecnumformat{\csname the##1\endcsname\ }}
+%%%\setsecnumdepth{paragraph}
+\paragraph{Hang the whole heading in the margin}%%%\setsecnumdepth{subsection}
+A less traditional style is to put the whole heading into the margin.
+I have done this here for a \cmd{\paragraph} heading (which is not otherwise
+used in this manual). The code is:
+\begin{lcode}
+\newcommand{\marginbox}[1]{%
+  \parbox[t][0pt]{6em}{\itshape\raggedleft\mbox{} #1}}
+\newcommand{\marginhead}[1]{%
+  {\llap{\marginbox{#1}\kern0.5em}}}
+\setparaindent{0em}
+\setafterparaskip{0em}
+\setparaheadstyle{\marginhead}
+\setparahook{\setsecnumformat{\csname the##1\endcsname\ }}
+\paragraph{Hang the whole heading in the margin}%
+\end{lcode}
+The macro \cmd{\marginbox} puts its argument, raggedleft, into a zero height
+\cmd{\parbox} of width 6em, aligned at the top. 
+The \cmd{\marginhead} macro puts its argument into a 
+\cmd{\marginbox} and puts the \cmd{\marginbox} 0.5em to the left. 
+The \cmd{\paragraph} head style is then set to use \cmd{\marginhead} to 
+typeset the heading. The format for the number is reset via 
+\cmd{\setparahook} and \cmd{\setsecnumformat}.
 
-    If the optional argument is not present, then the \meta{title} is
-moving and serves the triple duty of providing the text for the body and \toc{}
-titles and for page headers\index{header}.
 
-    Some folk feel an urge to add a footnote\index{footnote} to a sectional title, which
-should be resisted. If their flesh is weak, then the optional argument must
-be used and the \cmd{\footnote} attached to the required argument only.
-If the optional argument is not used then the footnote mark\index{footnote!mark} and text is
-likely to be scattered all over the place, on the section page, in the \toc,
-on any page that includes \meta{title} in its header\index{header}. This is 
-unacceptable to any reader. So, a footnoted\index{footnote} title should look like
-this:
-\begin{lcode}
-\chapter[Title text]{Title text\footnote{Do you really have to do this?}}
-\end{lcode}
+\index{heading!sections|)}
 
-\index{footnote!in heading|)}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
-\section{Pagination and folios}
 
-    Every page in a LaTeX document is included in the 
-pagination\index{pagination}. That is,
-there is a number associated with every page and this is the value of
-the \Icn{page} counter. This value can be changed at any time via either
-\cmd{\setcounter} or \cmd{\addtocounter}.
+\section{Fancy anonymous breaks}
 
+    Often, in novels, there is a need to break up the text to indicate that
+there is a major break in the story, but not enough to warrant starting a new
+chapter. I have called these 
+\emph{anonymous divisions}\index{anonymous division}\index{division!anonymous} 
+as there is neither number nor title associated with them. 
+    
 \begin{syntax}
-\cmd{\pagenumbering}\marg{num-style} \\
-\cmd{\pagenumbering*}\marg{num-style} \\
-\end{syntax}
-The macros \cmd{\pagenumbering} and \cmd{\pagenumbering*} cause 
-the folios\index{folio} to be printed using
-\meta{num-style} for the page number, where \meta{num-style} can be one of: 
-\Itt{Alph}, \Itt{alph}, \Itt{arabic}, \Itt{Roman} or 
-\Itt{roman} for uppercase and lowercase letters, arabic numerals, and
-uppercase and lowercase Roman numerals, respectively. As there
-are only 26~letters, \Itt{Alph} or \Itt{alph} can only be
-used for a limited number of pages. Effectively, the macros redefine
-\cmd{\thepage} to be |\num-style{page}|. 
-Additionally, the \cmd{\pagenumbering}
-command resets the \Icn{page} counter to one; the starred version does not 
-change the counter.
-
-    It is usual to reset the page number back to one each time the style
-is changed, but sometimes it may be desireable to have a continuous sequence
-of numbers irrespective of their displayed form, which is where
-\cmd{\pagenumbering*} comes in handy.
+\cmd{\plainbreak}\marg{num} \cmd{\plainbreak*}\marg{num}  \\
+\cmd{\fancybreak}\marg{text} \cmd{\fancybreak*}\marg{text}   \\
+\end{syntax} 
+\glossary(plainbreak)%
+  {\cs{plainbreak}\marg{num}}%
+  {An anonymous division of \meta{num} blank lines and the following
+   paragraph is not indented.}
+\glossary(plainbreak*)%
+  {\cs{plainbreak*}\marg{num}}%
+  {Like \cs{plainbreak} except that the following paragraph is indented.}
+\glossary(fancybreak)%
+  {\cs{fancybreak}\marg{text}}%
+  {An anonymous division with \meta{text} centered and the following
+   paragraph is not indented.}
+\glossary(fancybreak*)%
+  {\cs{fancybreak*}\marg{text}}%
+  {Like \cs{fancybreak} except that the following paragraph is indented.}
 
-\begin{syntax}
-\cmd{\savepagenumber} \\
-\cmd{\restorepagenumber} \\
-\end{syntax}
-The macro \cmd{\savepagenumber} saves the current page number, and the
-macro \cmd{\restorepagenumber} sets the page number to the saved value.
-This pair of commands may be used to apparently interrupt the pagination.
-For example, perhaps some full page illustrations\index{illustration} will be electronically,
-as opposed to physically,
-tipped in\index{tip in} to the document and pagination is not required for these.
-This could be done along the lines of:
-\begin{lcode}
-\clearpage          % get onto next page
-\savepagenumber     % save the page number
-\pagestyle{empty}   % no headers or footers
-%% insert the illustrations
-\clearpage
-\pagestyle{...}
-\restorepagenumber
-...
-\end{lcode}
-If you try this sort of thing, you may have to adjust the restored page 
-number by one.
+    The \cmd{\plainbreak} is an anonymous division. It puts \meta{num}
+blank lines into the typescript and the first line of the following
+paragraph is not indented\index{paragraph!indentation}. Another anonymous 
+division is \cmd{\fancybreak} which puts \meta{text} centered into the 
+typescript and the initial line of the following paragraph is not 
+indented\index{paragraph!indentation}. For
+example:
 \begin{lcode}
-\restorepagenumber
-% perhaps \addtocounter{page}{1} or \addtocounter{page}{-1}
+\fancybreak{{*}\\{* * *}\\{*}}
 \end{lcode}
-Whether or not this will be necessary depends on the timing of the
-|\...pagenumber| commands and TeX's decisions on page breaking.
-
-
+typesets a little diamond made of asterisks.
 
+    The starred versions of the commands indent the first line of the
+following paragraph\index{paragraph!indentation}.
 
+\begin{syntax}
+\cmd{\plainfancybreak}\marg{space}\marg{num}\marg{text} \\
+\cmd{\plainfancybreak*}\marg{space}\marg{num}\marg{text} \\
+\end{syntax}
+\glossary(plainfancybreak)%
+  {\cs{plainfancybreak}\marg{space}\marg{num}\marg{text}}%
+  {An anonymous division that acts like \cs{fancybreak} at the top
+   of the page, or at the bottom if there is less than \meta{space}
+   left on the page, otherwise it acts like \cs{plainbreak}.
+   The following paragraph is not indented.}
+\glossary(plainfancybreak*)%
+  {\cs{plainfancybreak*}\marg{space}\marg{num}\marg{text}}%
+  {Like \cs{plainfancybreak} except that the following paragraph is indented.}
+If a plain break comes at the top or bottom of a page then it is very 
+difficult for a reader to discern that there is a break at all.
+If there is text on the page and enough space left to put some text
+after a break the \cmd{\plainfancybreak} command will use a \cmd{\plainbreak}
+with \meta{num} lines, 
+otherwise (the break would come at the top or bottom of the page) it
+will use a \cmd{\fancybreak} with \meta{text}. The \meta{space} argument is a
+length specifying the space needed for the \meta{num} blank lines and some
+number of text lines for after the plain break. The starred version of
+the command uses the starred versions of the \cmd{\plainbreak} and
+\cmd{\fancybreak} commands.
 
 
+    Unfortunately there is an interaction between the requested, plain,
+and fancy break spaces.
+    Let $P$ be the space (in lines) required for the plain break, 
+$F$ the space (in lines)
+required for the fancy break, and $S$ the \meta{space} argument (in lines). 
+From some experiments it appears that the condition for the plain break 
+to avoid the top and bottom of the page is that $S - P > 1$. 
+Also, the condition for the fancy break to avoid being put in the middle 
+of a page (i.e., not at the top or bottom) is that  $S - F < 3$.
+For example, if the plain and fancy breaks take the same vertical space
+then $S = P +2$ is the only value that matches the conditions. In general, 
+if $F = P + n$ then the condition is $1 < S-P < 3+n$, which means that 
+for the \cmd{\plainfancybreak} command the
+fancy break must always take at least as much space as the plain break.
 
 
+\fancybreak{\pfbreakdisplay}
 
+    The \cmd{\plainfancybreak} macro inserts a plain break in the middle of
+a page or if the break would come at the bottom or top of a page it
+inserts a fancy break instead.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapterstyle{default}
-\setsecheadstyle{\Large\bfseries\raggedright}
-\setsubsecheadstyle{\large\bfseries\raggedright}
-\setsubsubsecheadstyle{\normalsize\bfseries\raggedright}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{syntax}
+\cmd{\pfbreak} \cmd{\pfbreak*} \\
+\lnc{\pfbreakskip} \\
+\cmd{\pfbreakdisplay}\marg{text} \\
+\end{syntax}
+\glossary(pfbreak)
+  {\cs{pfbreak}}%
+  {An alternative for \cs{plainfancybreak} using \cs{pfbreakskip} 
+   and \cs{pfbreakdisplay}.}
+\glossary(pfbreak*)
+  {\cs{pfbreak*}}%
+  {An alternative for \cs{plainfancybreak*} using \cs{pfbreakskip} 
+   and \cs{pfbreakdisplay}.}
+\glossary(pfbreakskip)%
+  {\cs{pfbreakskip}}%
+  {Space for a \cs{pfbreak}'s \cs{plainbreak}.}
+\glossary(pfbreakdisplay)%
+  {\cs{pfbreakdisplay}\marg{text}}%
+  {\meta{text} for a \cs{pfbreak}'s \cs{fancybreak}.}
+  
+The \cmd{\pfbreak} macro is an alternate for \cmd{\plainfancybreak} that may
+be more convenient to use. The gap for the plain break is given by the
+length \lnc{\pfbreakskip} which is initialised to produce two blank lines.
+The fancy break, which takes the same vertical space, is given by the
+\meta{text} argument of \cmd{\pfbreakdisplay}. The default definition:
+\begin{lcode}
+\newcommand*{\pfbtreakdisplay}{*\quad*\quad*}
+\end{lcode}
+typesets three asterisks, as shown a few lines before this.
 
+\index{anonymous division!styling|(}
 
+%%\renewcommand{\pfbreakdisplay}{\huge \ding{167}\quad\ding{167}\quad\ding{167}}
+\renewcommand{\pfbreakdisplay}{%
+ \ensuremath{\clubsuit\quad\diamondsuit\quad\clubsuit}}
+\fancybreak{\pfbreakdisplay}
 
-\chapter{Paragraphs and lists}
+    You can change the definition of \cmd{\pfbreakdisplay} for a different
+style if you wish. The
+fancy break just before this was produced via:
+\begin{lcode}
+\renewcommand{\pfbreakdisplay}{%
+  \ensuremath{\clubsuit\quad\diamondsuit\quad\clubsuit}}
+\fancybreak{\pfbreakdisplay}
+\end{lcode}
+I used \cmd{\fancybreak} as I'm not sure where the break will come on the
+page and the simple \cmd{\pfbreak} macro might just have produced a couple
+of blank lines instead of the fancy display.
 
-%%%%%%%%%%%%%%%%%%%%%
-\tightlists
-%%%%%%%%%%%%%%%%%%%%%
+  The paragraph following \cmd{\pfbreak} is not indented. If you want
+it indented use the \cmd{\pfbreak*} starred version.
 
-    This chapter is typeset with the default sectional 
-headings\index{heading!default}.
+\renewcommand{\pfbreakdisplay}{\ding{167}\quad\ding{167}\quad\ding{167}}
+\fancybreak{\pfbreakdisplay}
 
-\section{Introduction}
+ The fancy break using 
+fleurons\index{fleuron} just before this paragraph was produced by:
+\begin{lcode}
+\renewcommand{\pfbreakdisplay}{%
+  \ding{167}\quad\ding{167}\quad\ding{167}}
+\fancybreak{\pfbreakdisplay}
+\end{lcode}
+where the \cmd{\ding} command is from the \Lpack{pifont} package.
 
-    Within a sectional division the text is typically broken up into
-paragraphs. Sometimes there may be text that is set off from the normal
-paragraphing, like quotations\index{quotation} or lists.
+\makeatletter
+\newcommand{\motif}[1]{\cleaders\hbox{#1}\hfil}
+\newcommand{\chain}[2]{\leavevmode\hbox to #2{\motif{#1}}}
+\newcommand{\diamondpattern}{\m@th$\mkern-.6mu \diamond \mkern-.6mu$}
+\makeatother
 
-\section{Paragraphs}
+\fancybreak{\chain{\diamondpattern}{0.25\textwidth}}
 
-\index{paragraph|(}
+    The fancy break made with fleurons was simple to specify. There are 
+many other symbols that you can
+use in \ltx\ and these can be combined in potentially attractive ways to
+produce a fancy break like the one just above.
 
-    There are basically two parameters that control the appearance of normal
-paragraphs.
+    The following idea was originally suggested by Christina 
+Thiele\cite{ORNAMENTAL}, and can
+be used to string together mathematical symbols. It works following the same
+principles as the dot leaders in the Table of Contents.
 
-\begin{syntax}
-\lnc{\parindent} \lnc{\parskip} \\
-\end{syntax}
- 
-    The length \lnc{\parindent} is the indentation of the first line of a
-paragraph\index{paragraph!indentation} and the length \lnc{\parskip} is the vertical spacing between
-paragraphs, as illustrated in \fref{fig:para}. The value of \lnc{\parskip}
-is usually 0pt, and \lnc{\parindent} is usually defined in terms of ems so
-that the actual indentation depends on the font being used. If \lnc{\parindent}
-is set to a negative length, then the first line of the paragraphs will be 
-`outdented' into the lefthand margin\index{margin}.
+    Define a macro called with the syntax \cs{motif}\marg{shape}, where
+\meta{shape} is a symbol or other shape to be repeated in a chain,
+\begin{lcode}
+\newcommand{\motif}[1]{\cleaders\hbox{#1}\hfil}
+\end{lcode}
+The definition of \cs{motif} is basically taken from \tx, and is part of the
+code for making things like dot leaders. \cmd{\hbox}\marg{stuff} puts
+\meta{stuff} into a horizontal box, and \cmd{\cleaders}\meta{box} fills
+a specified amount of space using whatever number of copies of the 
+\meta{box} as is needed; if there is
+too much space to be filled by a whole number of boxes, the spare space
+is spread around equally. \cmd{\hfil} is stretchy space. The \cs{motif} macro
+essentially says, fill up a space with with copies of \meta{shape}.
 
-\begin{figure}
-\centering
-\drawparameterstrue
-\drawparagraph
-\caption{Paragraphing parameters}\label{fig:para}
-\end{figure}
+    We also need another macro, \cs{chain}\marg{shape}\marg{length}, 
+where \marg{shape}
+is a shape to be repeated as many times as it takes to fill up a distance
+\meta{length}.
+\begin{lcode}
+\newcommand{\chain}[2]{\leavevmode\hbox to #2{\motif{#1}}}
+\end{lcode}
+The \cmd{\leavevmode} makes sure that we are typesetting horizontally, and
+\cmd{\hbox} \verb?to? \verb?<length>{stuff}? puts \meta{stuff} into a horizontal 
+box with the
+fixed length of \meta{length}. Roughly, what \cs{chain} and \cs{motif}
+do together is typeset enough copies of \meta{shape} to make up
+a distance \meta{length}. 
 
-    A block paragraph\index{paragraph!block} is obtained by setting \lnc{\parindent} to 0em; 
-\lnc{\parskip} should be set to some positive value so that there is some
-space between paragraphs to enable them to be identified. Most typographers
-heartily dislike block paragraphs, not only on aesthetical grounds but also
-on practical grounds. Consider what happens if the last line of a block 
-paragraph is full and also is the last line on the page. The following
-block paragraph will start at the top of the next page but there will be
-no identifiable space to indicate an inter-paragraph break.
+    That is what we have been aiming for. All that
+remains is to decide on what shape we might want to use. Here is one
+consisting of diamonds.
+\begin{lcode}
+\makeatletter
+\newcommand{\diamonds}{\m@th$\mkern-.6mu \diamond \mkern-.6mu$}
+\makeatother
+\end{lcode}
+The \cmd{\diamond} symbol can only be used in math mode, hence it
+is surrounded by the shorthand \verb?$...$?. \tx\ usually leaves a little
+space around maths but the \cmd{\m@th} command stops that. \cmd{\mkern}
+adjusts space in math mode, and in this case we are eliminating
+the spaces\footnote{It is usually a matter for experiment to find
+the right values for the kerning.} that would normally be on either 
+side of the diamond symbol.
+The whole effect gives us a diamond symbol with zero space around it.
 
-    It is important to know that LaTeX typesets paragraph by paragraph. 
-For example, the \lnc{\baselineskip} that is used for a paragraph is the value
-that is in effect at the end of the paragraph, and the font size used for a
-paragraph is according to the size declaration (e.g., \cmd{\large} or 
-\cmd{\normalsize} or \cmd{\small}) in effect at the end of the paragraph.
+    The fancy break at the start of this discussion was typeset by
+\begin{lcode}
+% define \motif, \chain, \diamonds and then
+\fancybreak{\chain{\diamonds}{0.25\textwidth}}
+\end{lcode}
+The code is not part of the \Lclass{memoir} class; I defined it just
+as indicated in the body of the book. It would more naturally go
+into the preamble or a package. You might like to try specifying your
+own pattern, say \cs{clubs}, using the \cmd{\club} math symbol but leaving
+some space between them.
 
-\subsection{Hanging paragraphs}
+\index{anonymous division!styling|)}
 
-\index{paragraph!hanging|(}
 
-    A hanging paragraph is one where the length of the first few lines differs
-from the length of the remaining lines. (A normal indented paragraph 
-may be considered 
-to be a special case of a hanging paragraph where `few = one'). 
+\section{Footnotes in division headings}
 
-\begin{syntax}
-\cmd{\hangpara}\marg{indent}\marg{num} \\
-\end{syntax}
+\index{footnote!in heading|(}
 
-\hangpara{3em}{-3}%
- Using \cmd{\hangpara} at the start of a paragraph will cause the paragraph
-to be hung. If the length \meta{indent} is positive the lefthand end of the 
-lines will be indented but if it is negative the righthand ends will be 
-indented by the specified amount.
-    If the number \meta{num}, say N, is is negative the first N lines of
-the paragraph will be indented while if N is positive the N+1 th lines onwards
-will be indented. This paragraph was set with |\hangpara{3em}{-3}|. There 
-should be no space between the \cmd{\hangpara} command and the start of the
-paragraph.
+    With the sectioning commands the text of the required argument
+\meta{title} is used as the text for the section title in the body
+of the document.
 
-\begin{syntax}
-\senv{hangparas}\marg{indent}\marg{num} text \eenv{hangparas} \\
-\end{syntax}
-    The \Ie{hangparas} environment is like the \cmd{\hangpara} command except
-that every paragraph in the environment will be hung.
+    When the optional argument \meta{toc-title} is used in a sectioning
+command it is moving and any fragile\index{fragile command} 
+commands must be \cmd{\protect}ed\index{protect},
+while the \meta{title} argument is fixed. The \meta{toc-title} also
+serves double duty:
+\begin{enumerate}
+\item It is used as the text of the title in the \toc;
+\item It is used as the text in page headers\index{header}. 
+\end{enumerate}
 
-    The code implementing the hanging paragraphs is the same as for
-the \Lpack{hanging} package~\cite{HANGING}. Examples of some uses
-can be found in~\cite{TTC199}.
+    If the optional argument is not present, then the \meta{title} is
+moving and serves the triple duty of providing the text for the body and \toc{}
+titles and for page headers\index{header}.
 
+    Some folk feel an urge to add a footnote\index{footnote} to a sectioning 
+title, which
+should be resisted. If their flesh is weak, then the optional argument must
+be used and the \cmd{\footnote} attached to the required argument only.
+If the optional argument is not used then the footnote mark\index{footnote!mark} and text is
+likely to be scattered all over the place, on the section page, in the \toc,
+on any page that includes \meta{title} in its headers\index{header}. This is 
+unacceptable to any reader. So, a footnoted\index{footnote} title should look like
+this:
+\begin{lcode}
+\chapter[Title]{Title\footnote{Do you really have to do this?}}
+\end{lcode}
 
-    As noted eleswhere the sectioning commands use the internal 
-macro \cmd{\@hangfrom} as part of the formatting of the titles.
+\index{footnote!in heading|)}
 
-\begin{syntax}
-\cmd{\hangfrom}\marg{text} \\
-\end{syntax}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\hangfrom{Simple hung paragraphs }(like this one) can be specified
-using the \cmd{\hangfrom} macro. The macro puts \meta{text} in a box
-and then makes a hanging paragraph of the following material. This
-paragraph commenced with \\
-\verb?\hangfrom{Simple hung paragraphs }(like ...? \\
-and you are now reading the result.
+\section{Predefined heading styles}
 
+   All \ltx\ classes for typesetting books and reports provide a particular
+style for sectional headings. The \Mname\ class is unusual in that it provides
+several sets of heading styles. Each set has different spacing around the
+division heads, and different fonts in different sizes. 
+    As a reference, \tref{tab:secfonts} lists the default fonts used
+for the sectional headings. These fonts are all bold but in different
+sizes depending on the division level.
 
-\index{paragraph!hanging|)}
+\begin{table}
+\centering
+\caption{Default fonts for sectional headings}\label{tab:secfonts}
+\begin{tabular}{lll} \toprule
+\cmd{\booknamefont}       & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\booknumfont}        & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\booktitlefont}      & \verb?\Huge\bfseries? & \Huge\bfseries Huge \\
+\cmd{\partnamefont}       & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\partnumfont}        & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\parttitlefont}      & \verb?\Huge\bfseries? & \Huge\bfseries Huge \\
+\cmd{\chapnamefont}       & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\chapnumfont}        & \verb?\huge\bfseries? & \huge\bfseries huge \\
+\cmd{\chaptitlefont}      & \verb?\Huge\bfseries? & \Huge\bfseries Huge \\
+\cmd{\secheadstyle}       & \verb?\Large\bfseries? & \Large\bfseries Large \\
+\cmd{\subsecheadstyle}    & \verb?\large\bfseries? & \Large\bfseries Large \\
+\cmd{\subsubsecheadstyle} & \verb?\normalsize\bfseries? & \bfseries normal \\
+\cmd{\paraheadstyle}      & \verb?\normalsize\bfseries? & \bfseries normal \\
+\cmd{\subparaheadstyle}   & \verb?\normalsize\bfseries? & \bfseries normal \\
+\bottomrule
+\end{tabular}
+\end{table}
 
-\index{paragraph|)}
+\begin{syntax}
+\cmd{\makeheadstyles}\marg{name}\marg{code} \\
+\cmd{\headstyles}\marg{name} \\
+\end{syntax}
+\glossary(makeheadstyles)%
+  {\cs{makeheadstyles}\marg{name}\marg{code}}%
+  {Create a new set of sectional division headstyles called \meta{name} 
+   defined by \meta{code}.}
+\glossary(headstyles)%
+  {\cs{headstyles}\marg{name}}%
+  {Use the \meta{name} set of headstyles for sectional division heads.}
+The default sectional division head styles provided by \Mname\ form the
+\hstyle{default} headstyles and give the same appearance as the standard
+\Lclass{book} and \Lclass{report} classes. The set is created via the
+\cmd{\makeheadstyles} macro and called for via the \cmd{headstyles} 
+declaration. 
+\begin{lcode}
+\makeheadstyles{default}{%
+  \renewcommand*{\booknamefont}{\normalfont\huge\bfseries}
+  %% and so on down to subparagraph specification
+  \renewcommand*{\subparaheadstyle}{\normalfont\normalsize\bfseries}
+}
+\headstyles{default}
+\end{lcode}
+
+    A somewhat different set of headstyles is used for this manual. When using
+\cmd{\makeheadstyles} you only need to specify things that differ from
+the \hstyle{default}. Within the class the \hstyle{memman} set of headstyles 
+is defined as:
+\begin{lcode}
+\newcommand*{\addperiod}[1]{#1.}
+\makeheadstyles{memman}{%
+% book changes
+  \renewcommand*{\booknamefont}{\normalfont\huge\sffamily}
+  \renewcommand*{\booknumfont}{\normalfont\huge\sffamily}
+  \renewcommand*{\booktitlefont}{\normalfont\Huge\sffamily}
+  \renewcommand*{\midbookskip}{\par\vskip 2\onelineskip}%
+% part changes
+  \renewcommand*{\partnamefont}{\normalfont\huge\sffamily}
+  \renewcommand*{\partnumfont}{\normalfont\huge\sffamily}
+  \renewcommand*{\parttitlefont}{\normalfont\Huge\sffamily}
+  \renewcommand*{\midpartskip}{\par\vskip 2\onelineskip}%
+% chapter
+  \chapterstyle{demo3}
+% section
+  \setbeforesecskip{-1.333\onelineskip 
+                    \@plus -0.5\onelineskip \@minus -.5\onelineskip}%
+  \setaftersecskip{0.667\onelineskip \@plus 0.1\onelineskip}%
+  \setsecheadstyle{\normalfont\scshape\raggedright}%
+% subsection
+  \setbeforesubsecskip{-0.667\onelineskip 
+                       \@plus -0.25\onelineskip \@minus -0.25\onelineskip}%
+  \setaftersubsecskip{0.333\onelineskip \@plus 0.1\onelineskip}%
+  \setsubsecheadstyle{\normalfont\bfseries\raggedright}%
+% subsubsection
+  \setbeforesubsubsecskip{-0.667\onelineskip 
+                          \@plus -0.25\onelineskip \@minus -0.25\onelineskip}%
+  \setaftersubsubsecskip{0.333\onelineskip \@plus 0.1\onelineskip}%
+  \setsubsubsecheadstyle{\normalfont\normalsize\itshape\raggedright}%
+% paragraph
+  \setbeforeparaskip{1.0\onelineskip 
+                     \@plus 0.5\onelineskip \@minus 0.2\onelineskip}%
+  \setafterparaskip{-1em}%
+  \setparaheadstyle{\normalfont\normalsize\itshape\addperiod}%
+% subparagraph
+  \setsubparaindent{\parindent}%
+  \setbeforesubparaskip{1.0\onelineskip 
+                        \@plus 0.5\onelineskip \@minus 0.2\onelineskip}%
+  \setaftersubparaskip{-1em}%
+  \setsubparaheadstyle{\normalfont\normalsize\itshape\addperiod}}
+\end{lcode}
+    You can see the effect throughout this document. This chapter is
+slightly different in that I have used the \cstyle{pederson} chapterstyle
+instead of the \cstyle{demo3} chapterstyle that I have normally used.
+    
+\begin{table}
+\centering
+\caption{Fonts used by different headstyles}\label{tab:headfonts}
+\begin{tabular}{llllllll} \toprule
+Headstyles & & chapter & section & subsec & subsubsec & para & subpara \\ \midrule
+\hstyle{bringhurst} & & CAPS  & \textsc{s. caps} & \textit{Italic} & \textsc{s. caps} & \textit{Italic} & \textit{Italic} \\
+\hstyle{crosshead}  & & \textbf{Bold}   & CAPS & \textbf{Bold} & \textsc{s. caps} & \textit{Italic} & \textsc{s. caps} \\
+\hstyle{default}    & & \textbf{Bold}   & \textbf{Bold} & \textbf{Bold} & \textbf{Bold} & \textbf{Bold} & \textbf{Bold}   \\
+\hstyle{dowding}    & & \textit{Italic} & CAPS & \textsc{s. caps} & \textit{Italic} & \textit{Italic} & \textit{Italic} \\
+\hstyle{komalike}   & & \textsf{Sans} & \textsf{Sans} & \textsf{Sans} & \textsf{Sans} & \textsf{Sans} & \textsf{Sans}   \\
+\hstyle{memman}     & & \textsf{Sans}   & \textsc{s. caps} & \textbf{Bold} & \textit{Italic} & \textit{Italic} & \textit{Italic} \\
+\hstyle{ntglike}    & & \textbf{Bold}  & \textbf{Bold}  & \textbf{Bold}  & \textsl{Slanted} & \textsl{Slanted} & \textsl{Slanted}  \\
+\hstyle{tandh}      & & \textbf{Bold}  & CAPS & \textit{Italic} & \textbf{Bold} & \textit{Italic} & \textit{Italic} \\
+\hstyle{wilsondob}  & & \textit{Italic} & CAPS & \textit{Italic} & \textsc{s. caps } & \textit{Italic} & \textit{Italic} \\ \bottomrule
+\end{tabular}
+\end{table}
 
-\section{Flush and ragged}
 
-    Flushleft\index{flushleft} text has the lefthand end of the lines 
-aligned vertically at the lefthand margin\index{margin} and
-flushright\index{flushright} text has the righthand end of the lines 
-aligned vertically at the righthand margin\index{margin}. The
-opposites of these are raggedleft\index{raggedleft} text where the 
-lefthand ends are not aligned
-and raggedright\index{raggedright} where the righthand end of lines are 
-not aligned. LaTeX normally typesets flushleft and flushright.
+    Several other sets of headstyles are provided as well and the full list
+is below. The different fonts used are given in \tref{tab:headfonts} and
+generally speaking they start off being large for chapter heads but are
+normal size by the time subsubsection heads are reached, or before.
 
-\begin{syntax}
-\senv{flushleft} text \eenv{flushleft} \\
-\senv{flushright} text \eenv{flushright} \\
-\senv{center} text \eenv{center} \\
-\end{syntax}
-    Text in a \Ie{flushleft} environment is typeset flushleft and raggedright,
-while in a \Ie{flushright} environment is typeset raggedleft and flushright.
-In a \Ie{center} environment the text is set raggedleft and raggedright, and each
-line is centered. A small vertical space is put before and after each of these
-environments.
+\begin{itemize}
+\item[\hstyle{bringhurst}] A set based on Bringhurst's \btitle{Elements of
+     Typographic Style}~\cite{BRINGHURST99}. It uses the \cstyle{bringhurst}
+     chapterstyle (\fref{dcbringhurst}).
+\item[\hstyle{crosshead}] This set uses the \cstyle{crosshead} chapterstyle
+     and the lower level division titles are set as crossheads.
+\item[\hstyle{default}] The default set corresponding the the \ltx\
+     \Lclass{book} class.
+\item[\hstyle{dowding}] A set based on Dowding's 
+     \btitle{Finer Points}~\cite{DOWDING96}. It uses the \cstyle{dowding} 
+     chapterstyle (\fref{dcdowding}).
+\item[\hstyle{komalike}] A set based on the kind of headings used in
+     the KOMA \Lclass{scrbook} class, where there are all in a bold sans serif font.
+     It uses the \cstyle{komalike} chapterstyle (\fref{dckomalike}).
+\item[\hstyle{memman}] The set used in this document, including the 
+     \cstyle{demo3} chapterstyle.
+\item[\hstyle{ntglike}] A set based on the kind of headings used in
+     the NTG (Dutch TUG) \Lclass{boek} class. It uses the \cstyle{ntglike}
+     chapterstyle (\fref{dcntglike}) and the headings are quiter than the 
+     default.
+\item[\hstyle{tandh}] A set based the heads used in Thames \& Hudson 
+     \btitle{Manual of Typography}~\cite{MCLEAN80}. It uses the \cstyle{tandh}
+     chapterstyle (\fref{dctandh})
+\item[\hstyle{wilsondob}] A set based on those used in Adrian Wilson's
+     \btitle{Design of Books}~\cite{ADRIANWILSON93}. It uses the \cstyle{wilsondob}
+     chapterstyle (\fref{dcwilsondob}).
 
-\begin{syntax}
-\cmd{\raggedleft} \cmd{\raggedright} \cmd{\centering} \\
-\end{syntax} 
-    The \cmd{\raggedleft} declaration can be used to have text typeset
-raggedleft and flushright, and similary the declaration \cmd{\raggedright}
-causes typesetting to be flushleft and raggedright. The declaration 
-\cmd{\centering} typesets raggedleft and raggedright with each line centered.
-Unlike the environments, no additional space is added. 
+\end{itemize}
 
-\begin{syntax}
-\cmd{\raggedyright}\oarg{space} \\
-\lnc{\ragrparindent} \\
-\end{syntax}
-When using \cmd{\raggedright} in narrow columns the right hand edge tends to
-be too ragged, and paragraphs are not indented. 
-Text set \cmd{\raggedyright} usually fills more of the available
-width and paragraphs are indented by \lnc{\ragrparindent}, which is initially
-set to \lnc{\parindent}. The optional \meta{space} argument, whose default
-is 2em, can be used to adjust the amount of raggedness. As examples:
-\begin{lcode}
-\raggedyright[0pt]   % typeset flushright 
-\raggedyright[1fil]  % same as \raggedright
-\raggedyright[0.5em] % less ragged than \raggedright
-\end{lcode}
 
-    Remember that LaTeX typesets on a per-paragraph basis, so that putting
-the sequence of \cmd{\centering}, \cmd{\raggedleft} declarations in the same
-paragraph\index{paragraph} will cause the entire paragraph to be typeset raggedleft and 
-flushright --- the \cmd{\centering} declaration is not the one in effect 
-at the end of the paragraph.
 
-\section{Quotations}
 
-    LaTeX provides two environments that are typically used for typesetting
-quotations\index{quotation}.
 
-\begin{syntax}
-\senv{quote} text \eenv{quote} \\
-\senv{quotation} text \eenv{quotation} \\
-\end{syntax}
-     In both of these environments the text is set flushleft and flushright
-in a measure that is smaller than the normal textwidth. The only difference
-between the two environments is that paragraphs\index{paragraph!indentation} are not indented in the \Ie{quote}
-environment but normal paragraphing is used in the \Ie{quotation} environment.
+\chapterstyle{demo3}
 
-\section{Changing the textwidth}
 
-    The \Ie{quote} and \Ie{quotation} environments both locally change the textwidth,
-or more precisely, they temporarily increase the left and right margins\index{margin} by 
-equal amounts.
-Generally speaking it is not a good idea to change the textwidth but sometimes
-it may be called for.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Pagination and headers} \label{chap:pagination}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-    The commands and environment described below are similar to those
-in the \Lpack{chngpage} package~\cite{CHNGPAGE}, but do differ in some 
-respects.
+%\section{Introduction}
 
-\begin{syntax}
-\senv{adjustwith}\marg{left}\marg{right} text \eenv{adjustwith} \\
-\senv{adjustwith*}\marg{left}\marg{right} text \eenv{adjustwith*} \\
-\end{syntax}
-The \Ie{adjustwidth} environment temporarily adds the length \meta{left}
-to the lefthand margin\index{margin} and \meta{right} to the righthand margin\index{margin}. That is,
-a positive length value increases the margin\index{margin} and hence reduces the textwidth,
-and a negative value reduces the margin\index{margin} and increases the textwidth. The
-\Ie{quotation} environment is roughly equivalent to
-\begin{lcode}
-\begin{adjustwidth}{2.5em}{2.5em}
-\end{lcode}
+    The focus of this chapter is on marking the pages 
+with signposts so that the reader can more readily navigate through
+the document.
 
-    The starred version of the environment, \Ie{adjustwidth*},
- is only useful if the left and right
-margin\index{margin} adjustments are different. The starred version checks the page number
-and if it is odd then adjusts the left (spine) and right (outer) margins\index{margin} 
-by \meta{left} and \meta{right} respectively; if the page number is even 
-(a verso page) it adjusts the left (outer) and right (spine) margins\index{margin} by
-\meta{right} and \meta{left} respectively.
+\section{Pagination and folios}
+
+    Every page in a \ltx\ document is included in the 
+pagination\index{pagination}. That is,
+there is a number associated with every page and this is the value of
+the \Icn{page} counter. This value\index{pagination!changing} 
+can be changed at any time via either \cmd{\setcounter} or 
+\cmd{\addtocounter}.
+
+\begin{syntax}
+\cmd{\pagenumbering}\marg{rep} \\
+\cmd{\pagenumbering*}\marg{rep} \\
+\end{syntax}
+\glossary(pagenumbering)%
+  {\cs{pagenumbering}\marg{rep}}%
+  {Resets the page number to 1, and causes the folios (page numbers) to be 
+   printed using the \meta{rep}
+   representation (e.g., \texttt{arabic}, \texttt{roman}, \ldots)}
+\glossary(pagenumbering*)%
+  {\cs{pagenumbering*}\marg{rep}}%
+  {Like \cs{pagenumbering} except that the page number is not reset.}
+The macros \cmd{\pagenumbering} and \cmd{\pagenumbering*} cause 
+the folios\index{folio}\index{folio!changing representation} 
+to be printed using the 
+counter representation\index{counter representation}
+\meta{rep} for the page number, where \meta{rep} can be one of: 
+\pixcrep{Alph}, \pixcrep{alph}, \pixcrep{arabic}, \pixcrep{Roman} or 
+\pixcrep{roman} for uppercase and lowercase letters, arabic numerals, and
+uppercase and lowercase Roman numerals, 
+respectively.\index{alphabetic numbering}\index{roman numerals} As there
+are only 26~letters, \pixcrep{Alph} or \pixcrep{alph} can only be
+used for a limited number of pages. Effectively, the macros redefine
+\cmd{\thepage} to be \verb?\rep{page}?. 
+
+    Additionally, the \cmd{\pagenumbering}\index{pagination!changing}
+command resets the \Icn{page} counter to one; the starred version does not 
+change the counter.
+    It is usual to reset the page number back to one each time the style
+is changed, but sometimes it may be desirable to have a continuous sequence
+of numbers irrespective of their displayed form, which is where
+the starred version comes in handy.
 
 \begin{syntax}
-\cmd{\strictpagechecktrue} \cmd{\strictpagecheckfalse} \\
+\cmd{\savepagenumber} \\
+\cmd{\restorepagenumber} \\
 \end{syntax}
-Odd/even page checking may be either strict (\cmd{\strictpagechecktrue})
-or lazy (\cmd{\strictpagecheckfalse}). Lazy checking works most of the time
-but if it fails at any point then the strict checking should be used.
-
-    As an example, if a figure\index{figure} is wider than the textwidth it will stick out
-into the righthand margin\index{margin}. It may be desireable to have any wide figure\index{figure}
-stick out into the \foredge{} margin\index{margin} where there is usually more room than at
-the spine margin\index{margin}. This can be accomplished by
+\glossary(savepagenumber)%
+  {\cs{savepagenumber}}%
+  {Saves the current page number.}
+\glossary(restorepagenumber)%
+  {\cs{restorepagenumber}}%
+  {Sets the page number to that saved by the most recent \cs{savepagenumber}.}
+The macro \cmd{\savepagenumber} saves the current page number, and the
+macro \cmd{\restorepagenumber} sets the page number to the saved value.
+This pair of commands may be used to apparently 
+interrupt\index{pagination!interrupt} the pagination.
+For example, perhaps some full page illustrations\index{illustration} 
+will be electronically tipped in\index{tip in} to the document and 
+pagination is not required for these.
+This could be done along the lines of:
 \begin{lcode}
-\begin{figure}
-\centering
-\strictpagechecktrue
-\begin{adjustwidth*}{0em}{-3em}
-% the illustration
-\caption{...}
-\end{adjustwidth*}
-\end{figure}
+\clearpage          % get onto next page
+\savepagenumber     % save the page number
+\pagestyle{empty}   % no headers or footers
+%% insert the illustrations
+\clearpage
+\pagestyle{...}
+\restorepagenumber
+...
 \end{lcode}
-
-    A real example in this manual is \tref{tab:fpp} on \pref{tab:fpp},
-which is wider than the typeblock\index{typeblock}. In that case I just centered it by
-using \Ie{adjustwidth} to decrease each margin\index{margin} equally. In brief, like
+If you try this sort of thing, you may have to adjust the restored page 
+number by one.
 \begin{lcode}
-\begin{table}
-\begin{adjustwidth}{-1cm}{-1cm}
-\centering
-...
-\end{adjustwidth}
-\end{table}
+\restorepagenumber
+% perhaps \addtocounter{page}{1} or \addtocounter{page}{-1}
 \end{lcode}
+Depending on the timing of the \cs{...pagenumber} commands and \tx's 
+decisions on page breaking, this may or may not be necessary.
 
-    Note that the \Ie{adjustwidth} environment applies to complete paragraphs;
-you can't change the width of part of a paragraph\index{paragraph} 
-except for hanging paragraphs\index{paragraph!hanging} or more esoterically via \cmd{\parshape}. 
-Further, if the adjusted paragraph crosses a
-page boundary the margin\index{margin} changes are constant; a paragraph that is, say, 
-wider at the right on the first page will also be wider at the right as it
-continues onto the following page.
 
-    The \Ie{center} environment horizontally centers its contents
-with respect to the typeblock\index{typeblock}. 
-Sometimes you may wish to horizontally center some text with respect
-to the physical page, for example when typesetting a 
-colophon\index{colophon} which may look odd centered with respect
-to the (unseen) typeblock\index{typeblock}.
 
-    The calculation of the necessary changes to the spine and \foredge{}
-margins\index{margin} are simple. Using the same symbols as earlier in 
-\S\ref{sec:typeblock2} ($P_{w}$ and
-$B_{w}$ are the width of the trimmed page and the typeblock\index{typeblock}, respectively;
-$S$ and $E$ are the spine and \foredge{} margins\index{margin}, respectively) then
-the amount $M$ to be added to the spine margin\index{margin} and subtracted from the
-\foredge{} margin\index{margin} is calculated as:
-\begin{displaymath}
- M = 1/2(P_{w} - B_{w}) - S
-\end{displaymath}
+\section{Page styles} \label{sec:pagestyles}
 
-For example,
-assume that the \lnc{\textwidth} is 5 inches and the \lnc{\spinemargin}
-is 1 inch. On US letterpaper\index{paper!size!letterpaper} (\lnc{\paperwidth} is 8.5 inches) the
-\foredge{} margin\index{margin} is then 2.5 inches, and 0.75 inches\footnote{On A4\index{paper!size!A4}
-paper the result would be different.}  must
-be added to the spine margin\index{margin} and subtracted from the \foredge{} to
-center the typeblock\index{typeblock}. 
-The \Ie{adjustwidth} environment can be used to make the (temporary) change.
-\begin{lcode}
-\begin{adjustwidth*}{0.75in}{-0.75in} ...
-\end{lcode}
+\index{pagestyle!specifying|(}
+
+    The class provides a selection of pagestyles that you can use and if 
+they don't suit, then there are means to define your own.
+
+    These facilities were inspired by the \Lpack{fancyhdr} 
+package~\cite{FANCYHDR}, although the command set is different.
+
+    The standard classes provide for a footer\index{footer} and 
+header\index{header} for odd and even 
+pages. Thus there are four elements to be specified for a pagestyle.
+This class partitions the headers\index{header} and footers\index{footer} 
+into left, center and right
+portions, so that overall there is a total of 12 elements that have 
+to be specified
+for a pagestyle. You may find, though, that one of the built in pagestyles
+meets your needs so you don't have to worry about all these specifications.
 
 \begin{syntax}
-\cmd{\calccentering}\marg{length} \\
+\cmd{\pagestyle}\marg{style} \\
+\cmd{\thispagestyle}\marg{style} \\
 \end{syntax}
- If you don't want to do the above calculations by hand, 
-\cmd{\calccentering} will do it for you. 
-The \meta{length}
-argument must be the name of a pre-existing length command, 
-including the backslash. After calling 
-|\calccentering|, \meta{length} is the amount to be added to the
-spine margin\index{margin} and subtracted from the foredge margin\index{margin} to center the typeblock\index{typeblock}.
-An example usage is
-\begin{lcode}
-\calccentering{\mylength}
-\begin{adjustwidth*}{\mylength}{-\mylength}
-text horizontally centered on the physical page
-\end{adjustwidth*}
-\end{lcode}
+\glossary(pagestyle)%
+  {\cs{pagestyle}\marg{style}}%
+  {Sets the current pagestyle to \meta{style}.}
+\glossary(thispagestyle)%
+  {\cs{thispagestyle}\marg{style}}%
+  {Sets the pagestyle to \meta{style} for the current page only.}
+   \cmd{\pagestyle} sets the current pagestyle to \meta{style}, where
+\meta{style} is a word containing only letters. On a particular
+page \cmd{\thispagestyle} can be used to override the current pagestyle for
+the one page.
 
-   You do not necessarily have to define a new length for the purposes
-of \cmd{\calccentering}. Any existing length will do, such as
-\lnc{\unitlength}, provided it will be otherwise unused between performing
-the calculation and changing the margins\index{margin} (and that you can, if necessary
-reset it to its original value --- the default value for \lnc{\unitlength}
-is 1pt). 
+    Some of the class' commands automatically call \cmd{\thispagestyle}.
+For example:
+\begin{itemize}
+\item the \Ie{titlingpage} environment calls 
+      \begin{lcode}
+\thispagestyle{titlingpagestyle}
+      \end{lcode} 
+\item if \cmd{\cleardoublepage} will result in an empty verso page it calls
+      \begin{lcode}
+\thispagestyle{cleared}
+      \end{lcode}
+      for the empty page.
+\end{itemize}
+For reference, the full list is given in \tref{tab:callthispagestyle}.
+
+    The page styles provided by the class\index{pagestyle!class} are:
+\begin{plainlist}
+\item[\pstyle{empty}] The headers\index{header} and footers\index{footer} are empty.
+\item[\pstyle{plain}] The header\index{header} is empty and the folio\index{folio} (page number)
+     is centered at the bottom of the page.
+\item[\pstyle{headings}] The footer\index{footer} is empty. The header\index{header} contains the
+     the folio\index{folio} at the outer side of the page; on verso
+     pages the chapter name, number and title, in slanted uppercase is
+     set at the spine margin and on recto pages the section number
+     and uppercase title is set by the spine margin.
+\item[\pstyle{myheadings}] Like the \pstyle{headings} style the footer
+     is empty. You have to specify what is to go in the headers\index{header}.
+\item[\pstyle{ruled}] The footer\index{footer} contains the 
+     folio\index{folio} at the outside. The header\index{header}
+     on verso pages contains the chapter number and title in small caps
+     at the outside; on recto pges the section title is typeset at the
+     outside using the normal font. A line is drawn
+     underneath the header\index{header}.
+\item[\pstyle{Ruled}] This is like the \pstyle{ruled} style except that 
+     the headers\index{header} and footers\index{footer} extend into 
+     the \foredge\ margin\index{margin!foredge?\foredge}.
+\item[\pstyle{companion}] This is a copy of the pagestyle in the 
+     \textit{Companion} series (e.g., see~\cite{COMPANION}). It is
+     similar to the \pstyle{Ruled} style in that the header has a rule which
+     extends to the outer edge of the marginal notes. The folios are set 
+     in bold at the outer ends of the header. The chapter title is set in
+     a bold font flushright in the verso headers, and the section number 
+     and title, again in bold, flushleft in the recto headers\index{header}. 
+     There are no footers\index{footer}.
+\item[\pstyle{book}] This is the same as the \pstyle{plain} pagestyle.
+\item[\pstyle{chapter}]  This is the same as the \pstyle{plain} pagestyle.
+\item[\pstyle{cleared}]  This is the same as the \pstyle{empty} pagestyle.
+\item[\pstyle{part}] This is the same as the \pstyle{plain} pagestyle.
+\item[\pstyle{title}]   This is the same as the \pstyle{plain} pagestyle.
+\item[\pstyle{titlingpage}] This is the same as the \pstyle{empty} pagestyle.
+\end{plainlist}
 
-\section{Lists}
+\begin{table}
+\centering
+\caption{The use of \protect\cs{thispagestyle}} \label{tab:callthispagestyle}
+\begin{tabular}{ll} \toprule
+Called from & Style \\ \midrule
+\cmd{\book}    & \pstyle{book} \\
+\cmd{\chapter} & \pstyle{chapter} \\
+\cmd{\cleardoublepage} & \pstyle{cleared} \\
+\cmd{\cleartorecto} & \pstyle{cleared} \\
+\cmd{\cleartoverso} & \pstyle{cleared} \\
+\cmd{\epigraphhead} & \pstyle{epigraph} \\
+\cmd{\listoffigures} & \pstyle{chapter} \\
+\cmd{\listoftables} & \pstyle{chapter} \\
+\cmd{\maketitle} & \pstyle{title} \\\
+\cmd{\part}      & \pstyle{part} \\
+\cmd{\tableofcontents} & \pstyle{chapter} \\
+\Ie{thebibliography} & \pstyle{chapter} \\
+\Ie{theindex} & \pstyle{chapter} \\
+\Ie{titlingpage} & \pstyle{titlingpage} \\
+\end{tabular}
+\end{table}
 
-\index{list|(}
+\begin{syntax}
+\cmd{\uppercaseheads} \cmd{\nouppercaseheads}  \\
+\end{syntax}
+\glossary(uppercaseheads)%
+  {\cs{uppercaseheads}}%
+  {Set the titles in the headings pagestyle in Uppercase.}
+\glossary(nouppercaseheads)%
+  {\cs{nouppercaseheads}}%
+  {Do not uppercase the titles in the headings.}
+    Following the declaration \cmd{\nouppercaseheads} the titles in the
+\pstyle{headings} pagestyle will not be automatically uppercased. The default
+is \cmd{\uppercaseheads} which specifies that the titles are to be
+automatically uppercased.
 
-    Standard LaTeX provides 4 kinds of lists. There is a general \Ie{list}
-environment which you can use to define your own particular kind of list,
-and the \Ie{description}, \Ie{itemize} and \Ie{enumerate} lists (which are internally
-defined in terms of the general \Ie{list} environment).
 
-    This class provides the normal \Ie{description} list but the \Ie{itemize} and
-\Ie{enumerate} lists are extended versions of the normal ones.
+    For the \pstyle{myheadings} pagestyle above, you have to define your own
+titles to go into the header\index{header}. Each sectioning command, 
+say \cs{sec}, 
+calls a macro called \cs{secmark}. A pagestyle usually defines this command
+so that it picks up the title, and perhaps the number, of the \cs{sec}. The
+pagestyle can then use the information for its own purposes. 
 
 \begin{syntax}
-\senv{description} \cmd{\item}\oarg{label} ... \eenv{description} \\
-\cmd{\descriptionlabel}\meta{style} \\
+\cmd{\markboth}\marg{left}\marg{right} \\
+\cmd{\markright}\marg{right} \\
 \end{syntax}
-In a \Ie{description} list the style of the \meta{label} is given by the
-\meta{style} argument of the \cmd{\descriptionlabel} command. The default
-definition is
-\begin{lcode}
-\newcommand*{\descriptionlabel}[1]{\hspace\labelsep
-                                   \normalfont\bfseries #1}
-\end{lcode}
-which gives a bold label. To have, for example, a sans label instead, do
+\glossary(markboth)%
+  {\cs{markboth}\marg{left}\marg{right}}%
+  {Sets values of two markers to \meta{left} and \meta{right} respectively
+   (see \cs{leftmark} and \cs{rightmark}).}
+\glossary(markright)%
+  {\cs{markright}\marg{right}}%
+  {Sets value of one marker to \meta{right} (see \cs{rightmark}).}
+    \cmd{\markboth} sets the values of two \emph{markers}\index{markers}
+to \meta{left} and \meta{right} respectively, at the point in the text 
+where it is called. Similarly, \cmd{\markright} sets the value of a
+marker to \meta{right}.
+
+\begin{syntax}
+\cmd{\leftmark} \cmd{\rightmark} \\
+\end{syntax}
+\glossary(leftmark)%
+  {\cs{leftmark}}%
+  {Contains the value of the \meta{left} argument of the last \cs{markboth}.}
+\glossary(rightmark)%
+  {\cs{rightmark}}%
+  {Contains the value of the \meta{right} argument of the first \cs{markboth}
+   or \cs{markright} on the page; if there is none then the value of the most
+   recent \meta{right} argument.}
+The macro \cmd{\leftmark} contains the value of the \meta{left} argument
+of the \emph{last} \cmd{\markboth} on the page. The macro \cmd{\rightmark}
+contains the value of the \meta{right} argument of the \emph{first}
+\cmd{\markboth} or \cmd{\markright} on the page, or if there is not one it
+contains the value of the most recent \meta{right} argument.
+
+    A pagestyle can define the \cs{secmark} commands in terms of 
+\cmd{\markboth} or \cmd{\markright}, and then use \cmd{\leftmark} and/or
+\cmd{\rightmark} in the headers\index{header} or footers\index{footer}. 
+I'll show examples of how this
+works later, and this is often how the \pstyle{myheadings} style gets 
+implemented.
+
+    All the division commands include a macro that you can define to set
+marks related to that heading. Other commands also include macros that
+you can redefine for setting marks.
+
+\begin{table}
+\centering
+\caption{Mark macros for page headers} \label{tab:markmacros}
+\begin{tabular}{ll} \toprule
+Main macro & default mark definition \\ \midrule
+\cs{book(*)}            & \verb?\newcommand*{\bookpagemark}[1]{}? \\
+\cs{part(*)}            & \verb?\newcommand*{\partmark}[1]{}? \\
+\cs{chapter(*)}         & \verb?\newcommand*{\chaptermark}[1]{}? \\
+\cs{section(*)}         & \verb?\newcommand*{\sectionmark}[1]{}? \\
+\cs{subsection(*)}      & \verb?\newcommand*{\subsectionmark}[1]{}? \\
+\cs{subsubsection(*)}   & \verb?\newcommand*{\subsubsectionmark}[1]{}? \\
+\cs{paragraph(*)}       & \verb?\newcommand*{\paragraphmark}[1]{}? \\
+\cs{subparagraph(*)}    & \verb?\newcommand*{\subparagraphmark}[1]{}? \\
+\cs{tableofcontents(*)} & \verb?\newcommand*{\tocmark}[1]{}? \\
+\cs{listoffigures(*)}   & \verb?\newcommand*{\lofmark}[1]{}? \\
+\cs{listoftables(*)}    & \verb?\newcommand*{\lotmark}[1]{}? \\
+\cs{thebibliography}    & \verb?\newcommand*{\bibmark}{}? \\
+\cs{theindex}           & \verb?\newcommand*{\indexmark}{}? \\
+\cs{theglossary}        & \verb?\newcommand*{\glossarymark}{}? \\
+\cs{PoemTitle}          & \verb?\newcommand*{\poemtitlemark}[1]{}? \\
+\cs{PoemTitle*}         & \verb?\newcommand*{\poemtitlestarmark}[1]{}? \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+The \cs{...mark} commands are listed in \tref{tab:markmacros}. When they are 
+called by the relevant main macro, those that take an argument are called with
+the `title' as the argument's value. For example, the \cmd{\chapter} macro
+calls \cmd{\chaptermark} with the value of the title specified as being 
+for the header.
+
+\section{Making headers and footers}
+
+    As mentioned, the class provides for left, center, and right slots in
+even and odd headers\index{header} and footers\index{footer}. 
+This section describes how you can make 
+your own pagestyle using these 12 slots. The 6 slots for a page 
+are diagrammed in \fref{lay:header}.
+
+\begin{figure}
+\setlayoutscale{1}
+\centering
+\headerfooterdiagram
+\caption{Header and footer slots} \label{lay:header}
+\end{figure}
+
+    The class itself uses the commands from this section. For example,
+the \pstyle{plain} pagestyle is defined as
 \begin{lcode}
-\renewcommand*{\descriptionlabel}[1]{\hspace\labelsep
-                                     \normalfont\sffamily #1}
+\makepagestyle{plain}
+  \makeevenfoot{plain}{}{\thepage}{}
+  \makeoddfoot{plain}{}{\thepage}{}
 \end{lcode}
-
-    The \Ie{itemize} and \Ie{enumerate} environments below are based on
-the \Lpack{enumerate} package~\cite{ENUMERATE}.
+which centers the page number at the bottom of the page. 
+    
 
 \begin{syntax}
-\senv{itemize}\oarg{mark} \cmd{\item} ... \eenv{itemize} \\
-\end{syntax}
-The normal markers for \cmd{\item}s in an \Ie{itemize} list are: 
-\begin{enumerate}
-\item bullet (\textbullet |\textbullet|), 
-\item bold en-dash ({\normalfont\bfseries \textendash} |\bfseries\textendash|),
-\item centered asterisk (\textasteriskcentered |\textasteriskcentered|), and
-\item centered dot (\textperiodcentered |\textperiodcentered|).
-\end{enumerate}
-The optional \meta{mark} argument can be used to specify the marker for the
-list items in a particular list. If for some reason you wanted to use a 
-pilcrow symbol as the item marker for a particular list you could do
+\cmd{\makepagestyle}\marg{style} \\
+\cmd{\aliaspagestyle}\marg{alias}\marg{original} \\
+\cmd{\copypagestyle}\marg{copy}\marg{original}\\
+\end{syntax}
+\glossary(makepagestyle)%
+  {\cs{makepagestyle}\marg{style}}%
+  {Used to define a pagestyle \meta{style}.}
+\glossary(aliaspagestyle)%
+  {\cs{aliaspagestyle}\marg{alias}{original}}%
+  {Defines the \meta{alias} pagestyle to be the same as the \meta{original}
+  pagestyle.}
+\glossary(copypagestyle)%
+  {\cs{copypagestyle}\marg{copy}{original}}%
+  {Creates a new pagestyle called \meta{copy} using the \meta{original}
+   pagestyle specification.}
+
+The command \cmd{\makepagestyle} specifies a pagestyle \meta{style} which
+is initially equivalent to the \pstyle{empty} pagestyle. On the other hand,
+\cmd{\aliaspagestyle} defines the \meta{alias} pagestyle to be the same as
+the \meta{original} pagestyle. As an example of the latter, the class includes
+the code
 \begin{lcode}
-\begin{itemize}[\P]
-\item ...
-...
+\aliaspagestyle{part}{plain}
+\aliaspagestyle{chapter}{plain}
+\aliaspagestyle{cleared}{empty}
 \end{lcode}
+The \cmd{\copypagestyle} command creates a new pagestyle called \meta{copy}
+using the \meta{original} pagestyle specification.
 
+    If an alias and a copy pagestyle are created based on the same 
+\meta{original} and later the \meta{original} is modified, 
+the alias and copy behave differently.
+The appearance of the alias pagestyle will continue to match the
+modified \meta{original} but the copy pagestyle is unaffected by any change
+to the \meta{original}. You cannot modify an alias pagestyle but you can
+modify a copy pagestyle.
 
+\begin{syntax}
+\cmd{\makeevenhead}\marg{style}\marg{left}\marg{center}\marg{right} \\
+\cmd{\makeoddhead}\marg{style}\marg{left}\marg{center}\marg{right} \\
+\cmd{\makeevenfoot}\marg{style}\marg{left}\marg{center}\marg{right} \\
+\cmd{\makeoddfoot}\marg{style}\marg{left}\marg{center}\marg{right} \\
+\end{syntax}
+\glossary(makeevenhead)%
+  {\cs{makeevenhead}\marg{style}\marg{left}\marg{center}\marg{right}}%
+  {Defines the \meta{left}, \meta{center} and \meta{right} parts of the
+   even (verso) page header of the \meta{style} pagetstyle.}
+\glossary(makeoddhead)%
+  {\cs{makeoddhead}\marg{style}\marg{left}\marg{center}\marg{right}}%
+  {Defines the \meta{left}, \meta{center} and \meta{right} parts of the
+   odd (recto) page header of the \meta{style} pagetstyle.}
+\glossary(makeevenfoot)%
+  {\cs{makeevenfoot}\marg{style}\marg{left}\marg{center}\marg{right}}%
+  {Defines the \meta{left}, \meta{center} and \meta{right} parts of the
+   even (verso) page footer of the \meta{style} pagetstyle.}
+\glossary(makeoddfoot)%
+  {\cs{makeoddfoot}\marg{style}\marg{left}\marg{center}\marg{right}}%
+  {Defines the \meta{left}, \meta{center} and \meta{right} parts of the
+   odd (recto) page footer of the \meta{style} pagetstyle.}
+The macro \cmd{\makeevenhead} defines the \meta{left}, \meta{center}, and
+\meta{right} portions of the \meta{style} pagestyle header\index{header} 
+for even numbered (verso) pages. 
+Similarly \cmd{\makeoddhead}, \cmd{\makeevenfoot}, and
+\cmd{\makeoddfoot} define the \meta{left}, \meta{center} and \meta{right}
+portions of the \meta{style} header\index{header} for odd numbered 
+(recto) pages, and the footers\index{footer} for verso and recto pages. 
+These commmands for \meta{style}
+should be used after the corresponding \cmd{\makepagestyle} for \meta{style}.
 
 \begin{syntax}
-\senv{enumerate}\oarg{style} \cmd{\item} ... \eenv{enumerate} \\
+\cmd{\makerunningwidth}\marg{style}\marg{length} \\
+\lnc{\headwidth} \\
 \end{syntax}
-The normal markers for, say, the third item in an \Ie{enumerate} list are: 
-3., c., iii., and C. The optional \meta{style} argument can be used to
-specify the style used to typeset the item counter. An occurrence of
-one of the special characters |A|, |a|, |I|, |i|
-or |1| in \meta{style} specifies that the counter will be typeset using
-uppercase letters (|A|), lowercase letters (|a|), 
-uppercase Roman numerals (|I|),
-lowercase Roman numerals (|i|), or arabic numerals (|1|). These characters
-may be surrounded by any LaTeX commands or characters, but if so the special
-characters must be put inside braces (e.g., |{a}|) if they are to be 
-considered as ordinary characters instead of as special styling characters.
- For example, to have the
-counter typeset as a lowercase Roman numeral followed by a single parenthesis
-\begin{lcode}
-\begin{enumerate}[i)] 
-...
-\end{lcode}
+\glossary(makerunninheadwidth)%
+  {\cs{makerunningheadwidth}\marg{style}\marg{length}}%
+  {Sets the width of the \meta{style} pagestyle headers and footers to \meta{length}.}
+\glossary(headwidth)%
+  {\cs{headwith}}%
+  {A (scratch) length normally used in the definition of headers and footers.}
+The macro \cmd{\makerunningwidth} sets the width of the \meta{style}
+pagestyle headers\index{header} and footers\index{footer} to be \meta{length}.
+The \cmd{\makepagestyle} initialises the width to be the textwidth, 
+so the macro need only be used if some
+other width is desired. The length \lnc{\headwidth} is provided as a
+(scratch) length that may be used for headers\index{header} or 
+footers\index{footer}, or any other purpose.
 
-\index{list!tight|(}
+\begin{syntax}
+\cmd{\makeheadrule}\marg{style}\marg{width}\marg{thickness} \\
+\cmd{\makefootrule}\marg{style}\marg{width}\marg{thickness}\marg{skip} \\
+\end{syntax}
+\glossary(makeheadrule)%
+  {\cs{makeheadrule}\marg{style}\marg{width}\marg{thickness}}%
+  {Specifies the \meta{width} and \meta{thickness} of the rule drawn below the
+   headers of the \meta{style} pagestyle.}
+\glossary(makefootrule)%
+  {\cs{makefootrule}\marg{style}\marg{width}\marg{thickness}\marg{skip}}%
+  {Specifies the \meta{width} and \meta{thickness} of the rule drawn 
+  \meta{skip} (see \cs{footskip}) above the footers of the \meta{style} pagestyle.}
+A header\index{header} may have a rule drawn between it and the top of 
+the typeblock\index{typeblock}, and similarly a rule may be drawn 
+between the bottom of the typeblock\index{typeblock} and the 
+footer\index{footer}. 
+The \cmd{\makeheadrule} macro specifies the the \meta{width}
+and \meta{thickness} of the rule below the \meta{style} pagestyle 
+header\index{header}, and the \cmd{\makefootrule} does the same for 
+the rule above the footer\index{footer}; the
+additional \meta{skip} argument is a distance that specifies the vertical
+positioning of the foot rule (see \cmd{\footruleskip}).
+The \cmd{\makepagestyle} macro initialises the \meta{width} to the 
+\lnc{\textwidth} and the \meta{thickness} to 0pt, so by default no rules
+are visible.
 
 \begin{syntax}
-\cmd{\tightlists} \cmd{\defaultlists} \\
+\lnc{\normalrulethickness} \\
 \end{syntax}
-The normal LaTeX \Ie{description}, \Ie{itemize} and \Ie{enumerate} lists have an open
-look about them when they are typeset as there is significant vertical space
-between the items in the lists. After the declaration \cmd{\tightlists} is
-issued, the extra vertical spacing between the list items is deleted. The open
-list appearance is used after the \cmd{\defaultlists} declaration is issued.
-These declarations, if used, must come \emph{before} the relevant list 
-environment(s).
+\glossary(normalrulethickness)%
+  {\cs{normalrulethickness}}%
+  {The normal thickness of a visible rule (default 0.4pt).}
+\lnc{\normalrulethickness} is the normal\index{rule!thickness} 
+thickness of a visible rule, by 
+default 0.4pt. It can be changed using \cmd{\setlength}, although I suggest 
+that you do not unless perhaps when using at least the \Lopt{14pt} class 
+option. 
 
-    The class initially sets \cmd{\defaultlists}. If you had noticed that
-the lists in this chapter have a different appearance than those in earlier
-chapters (or even if you hadn't noticed) then that is because 
-the declaration \cmd{\tightlists} was put at the start of this chapter.
+\begin{syntax}
+\cmd{\footruleheight} \\
+\cmd{\footruleskip} \\
+\end{syntax}
+\glossary(footruleheight)%
+  {\cs{footruleheight}}%
+  {Macro specifying the height of a normal rule above a footer.}
+\glossary(footruleskip)%
+  {\cs{footruleskip}}%
+  {Macro specifying a distance sufficient to ensure that a rule above a footer
+   will lie in the space between the footer and the typeblock.}
+The macro \cmd{\footruleheight} is the height of a normal
+rule above a footer\index{footer} (default zero). 
+\cmd{\footruleskip} is a distance 
+sufficient to ensure that a foot rule will be placed between the bottom
+of the typeblock\index{typeblock} and the footer\index{footer}. 
+Despite appearing to be lengths, if you really need to change the values 
+use \cmd{\renewcommand}, not \cmd{\setlength}.
 
 \begin{syntax}
-\cmd{\firmlist} \cmd{\tightlist} \\
+\cmd{\makeheadposition}\marg{style}\\
+    \marg{eheadpos}\marg{oheadpos}\marg{efootpos}\marg{ofootpos} \\
 \end{syntax}
-The command \cmd{\firmlist} or \cmd{\tightlist} can be used immediately
-after the start of a list environment to reduce the vertical space within
-that list. The \cmd{\tightlist} removes all the spaces while the
-\cmd{\firmlist} produces a list that still has some space but not as much
-as in an ordinary list.
+\glossary(makeheadposition)%
+  {\cs{makeheadposition}\marg{style}\marg{eheadpos}\marg{oheadpos}\marg{efootpos}\marg{ofootpos}}%
+  {Specifies the horizontal positioning of the even and odd headers and
+   footers respectively for the \meta{style} pagestyle.}
+The \cmd{\makeheadposition} macro specifies the horizontal positioning
+of the even and odd headers\index{header} and footers\index{footer}, 
+respectively, for the \meta{style} pagestyle. 
+Each of the \meta{...pos} arguments may be \texttt{flushleft}, \texttt{center},
+or \texttt{flushright}, with the obvious meanings. An empty, or unrecognised, 
+argument is equivalent to \texttt{center}. This macro is really only of use 
+if the header/footer\index{header}\index{footer} width is not the 
+same as the \lnc{\textwidth}.
 
-\index{list!tight|)}
+\begin{syntax}
+\cmd{\makepsmarks}\marg{style}\marg{code} \\
+\end{syntax}
+\glossary(makepsmark)
+  {\cs{makepsmarks}\marg{style}\marg{code}}%
+  {Hook into the \meta{style} pagestyle, usually used for the \meta{code}
+   setting any marks.}
+The last thing that the \cmd{\pagestyle}\marg{style} does is call the
+\meta{code} argument of the \cmd{\makepsmarks} macro for \meta{style}.
+This is normally used for specifying non-default code 
+(i.e., code not specifiable via any of the previous macros) for the 
+particular pagestyle. The code normally defines the marks, if any, 
+that will be used in
+the headers\index{header} and footers\index{footer}.
 
 
-\begin{figure}
-\centering
-\drawparameterstrue
-\drawlist
-\caption{The layout parameters for general lists}\label{fig:listlay}
-\end{figure}
 
-\index{list!new|(}
-
-\begin{syntax}
-\senv{list}\marg{default-label}\marg{code} items \eenv{list} \\
-\end{syntax}
-LaTeX's list environments are defined in terms of a general \Ie{list}
-environment; some other environments, such as the \Ie{quote}, \Ie{quotation}
-and \Ie{adjustwidth} are also defined in terms of a \Ie{list}.
-Figure~\ref{fig:listlay} shows the parameters controlling the layout
-of the \Ie{list} environment.
-
-    The \Ie{list} environment takes two arguments. The \meta{default-label}
-argument is the code that should be used when the \cmd{\item} macro is
-used without its optional \meta{label} argument. For lists like \Ie{enumerate}
-this is specified but often it is left empty, such as for the \Ie{adjustwidth}
-environment.
-
-    The \meta{code} argument is typically used for setting the particular
-values of the list layout parameters. When defining your own types of lists
-it is advisable to set each of the parameters unless you know that the default
-values are suitable for your purposes. These parameters can all be modified
-with either the \cmd{\setlength} or \cmd{\addtolength} commands.
-
-    As an example, here is the specification for a description-like list
-that uses an italic rather than bold font for the items, and is somewhat
-tighter than the normal \Ie{description} list.
+\subsection{Example pagestyles}
 
+    Perhaps when preparing drafts you want to note on each page
+that it is a draft\index{draft document} document. Assuming that 
+you are using the 
+\pstyle{headings} page style and that the default \pstyle{plain}
+page style is used on chapter openings, then you could define
+the following in the preamble (\piif{ifdraftdoc} is provided by
+the class and is set \ptrue\ when the \Lopt{draft} option is used).
 \begin{lcode}
-%%%%% An italic and tighter description environment
-\newcommand{\itlabel}[1]{\hspace\labelsep\normalfont\itshape #1}
-\newenvironment{itdesc}{%
-  \list{}{%
-    \setlength{\labelsep}{0.5em}
-    \setlength{\itemindent}{0pt}
-    \setlength{\leftmargin}{\parindent} 
-    \setlength{\labelwidth}{\leftmargin}
-    \addtolength{\labelwidth}{-\labelsep}
-    \setlength{\listparindent}{\parindent}
-    \setlength{\parsep}{\parskip}
-    \setlength{\itemsep}{0.5\onelineskip}
-    \let\makelabel\itlabel}}{\endlist}
+\ifdraftdoc
+  \makeevenfoot{plain}{}{\thepage}{\textit{Draft: \today}}
+  \makeoddfoot{plain}{\textit{Draft: \today}}{\thepage}{}
+  \makeevenfoot{headings}{}{}{\textit{Draft: \today}}
+  \makeoddfoot{headings}{\textit{Draft: \today}}{}{}
+\fi
+\end{lcode}
+Now when the \Lopt{draft} option is used the word `Draft:' and the current
+date will be typeset in italics at the bottom of each page by the spine
+margin. If any \pstyle{empty} pages should be marked as well, specify
+similar footers for that style as well.
+
+    Here is part of the standard definition of the \pstyle{headings}
+pagestyle for the \Lclass{book} class which uses many internal \ltx\ commands;
+but note that \Mname\ does not use this.
+\begin{lcode}
+\def\ps@headings{%
+  \let\@oddfoot\@empty\let\@evenfoot\@empty
+  \def\@evenhead{\thepage\hfil\slshape\leftmark}%
+  \def\@oddhead{{\slshape\rightmark}\hfil\thepage}%
+  \def\chaptermark##1{%
+    \markboth{\MakeUppercase{%
+      \ifnum\c@secnumdepth > \m@ne
+        \if@mainmatter
+          \@chapapp\ \thechapter. \ %
+        \fi
+      \fi
+      ##1}}{}}%
+  \def\sectionmark##1{%
+    \markright{\MakeUppercase{%
+      \ifnum\c@secnumdepth > \z@
+        \thesection. \ %
+      \fi
+      ##1}}}}
+\end{lcode}
+You don't need to understand this but in outline the first three lines specify
+the contents of the footers and headers, and the remainder of the code sets 
+the marks that will be used in the headers. The \cmd{\leftmark} is specified to be
+the the word `chapter', 
+followed by the number if it is in the \cmd{\mainmatter} and the \texttt{secnumdepth}
+is such that chapters are numbered, followed by the chapter's title; all this 
+is made to be in upper case (via the \cmd{\MakeUppercase} macro). Similarly
+the other mark, \cmd{\rightmark}, is the section number, if there is one, and
+the section's title, again all in upper case.
+
+    A transliteration of this code into \Mname's original coding style is:
+\begin{lcode}
+\makepagestyle{headings}
+\makeevenhead{headings}{\thepage}{}{\slshape\leftmark}
+\makeoddhead{headings}{\slshape\rightmark}{}{\thepage}
+\makepsmarks{headings}{%
+  \def\chaptermark##1{%
+    \markboth{\MakeUppercase{%
+      \ifnum\c@secnumdepth > \m@ne
+        \if@mainmatter
+          \@chapapp\ \thechapter. \ %
+        \fi
+      \fi
+      ##1}}{}}%
+  \def\sectionmark##1{%
+    \markright{\MakeUppercase{%
+      \ifnum\c@secnumdepth > \z@
+        \thesection. \ %
+      \fi
+      ##1}}}
+  \def\tocmark{\markboth{\MakeUppercase{\contentsname}}{}}
+  \def\lofmark{\markboth{\MakeUppercase{\listfigurename}}{}}
+  \def\lotmark{\markboth{\MakeUppercase{\listtablename}}{}}
+  \def\bibmark{\markboth{\MakeUppercase{\bibname}}{}}
+  \def\indexmark{\markboth{\MakeUppercase{\indexname}}{}}
+  \def\glossarymark{\markboth{\MakeUppercase{\glossaryname}}{}}}
+\end{lcode}
+As you can see, defining the marks for a pagestyle is not necessarily the
+simplest thing in the world. However, courtesy of Lars\index{Madsen, Lars} Madsen,
+help is at hand.
+
+\begin{syntax}
+\cmd{\createplainmark}\marg{type}\marg{marks}\marg{text} \\
+\cmd{\memUChead}\marg{text} \\
+\cmd{\uppercaseheads} \cmd{\nouppercaseheads} \\
+\cmd{\createmark}\marg{sec}\marg{marks}\marg{show}\marg{prefix}\marg{postfix} \\
+\end{syntax}
+\glossary(createplainmark)%
+  {\cs{createplainmark}\marg{type}\marg{marks}\marg{text}}%
+  {Defines the \cs{typemark} macro using \meta{text} as the mark, where
+  \meta{marks} is \texttt{left}, \texttt{both} or \texttt{right}.}
+\glossary(createmark)%
+  {\cs{createmark}\marg{sec}\marg{marks}\marg{show}\marg{prefix}\marg{postix}}%
+  {Defines the \cs{secmark} macro where \meta{show} (\texttt{shownumber} 
+   or \texttt{nonumber}) controls whether the division number will be
+   displayed within \cs{mainmatter}, \meta{marks} is \texttt{left}, 
+   \texttt{both} or \texttt{right}, and \meta{prefix} and \meta{postfix}
+   are affixed before and after the \meta{sec} (division) number.}
+\glossary(memUChead)%
+  {\cs{memUChead}\marg{text}}%
+  {May uppercase \meta{text}, depending on \cs{uppercaseheads} and
+  \cs{nouppercaseheads}.}
+\glossary(uppercaseheads)%
+  {\cs{uppercaseheads}}%
+  {Defines \cs{memUChead} as equivalent to \cs{MakeUppercase}.}
+\glossary(nouppercaseheads)%
+  {\cs{nouppercaseheads}}%
+  {Defines \cs{memUChead} as \cs{relax} (i.e., do nothing).}
+
+
+The macro \cmd{\createplainmark} defines the \verb?\<type>mark?, where 
+\meta{type} is an unnumbered division-like head, such as \texttt{toc},
+\texttt{lof}, \texttt{index}, using \meta{text} as the mark value, and 
+\meta{marks} is \texttt{left}, \texttt{both} or \texttt{right}. For example:
+\begin{lcode}
+\createplainmark{toc}{left}{\contentsname}
+\createplainmark{lot}{right}{\listtablename}
+\createplainmark{bib}{both}{\bibname}
 \end{lcode}
+is equivalent to
+\begin{lcode}
+\def\tocmark{\markboth{\memUChead{\contentsname}}{}}
+\def\lotmark{\markright{\memUChead{\listtablename}}}
+\def\lofmark{\markboth{\memUChead{\bibname}}{\memUChead{\bibname}}}
+\end{lcode}
+
+    Following the declaration \cmd{\uppercaseheads} the \cmd{\memUChead} 
+command is equivalent to \cmd{\MakeUppercase} but after the 
+\cmd{\nouppercaseheads} it is equivalent to \cmd{\relax} (which does nothing).
+The \cmd{\createplainmark} macro wraps \cmd{\memUChead} around the \meta{text}
+argument within the generated \cs{mark(both/right)} macro. By using the
+\cs{(no)uppercaseheads} declarations you can control the uppercasing, or
+otherwise, of the mark texts. The default is \cmd{\uppercaseheads}.
+
+    The macro \cmd{\createmark}\marg{sec}\marg{marks}\marg{show}\marg{prefix}\marg{postix}
+defines the \verb?\<sec>mark? macro where \meta{sec} is a sectional division
+such as \texttt{part}, \texttt{chapter}, \texttt{section}, etc., 
+and \meta{show} (\texttt{shownumber} 
+or \texttt{nonumber}) controls whether the division number will be
+displayed within \cs{mainmatter}. The \meta{marks} argument is \texttt{left}, 
+\texttt{both} or \texttt{right}, and \meta{prefix} and \meta{postfix}
+are affixed before and after the division number. For example:
+\begin{lcode}
+\createmark{section}{left}{nonumber}{}{}
+\createmark{section}{both}{nonumber}{}{}
+\createmark{section}{right}{nonumber}{}{}
+\end{lcode}
+is equivalent to, respectively
+\begin{lcode}
+\def\sectionmark#1{\markboth{#1}{}}
+\def\sectionmark#1{\markboth{#1}{#1}}
+\def\sectionmark#1{\markight{#1}}
+\end{lcode}
+
+
+    Using these macros \Mname's current definition of 
+\verb?\makepsmarks{headings}? is much simpler (it also leads to a 
+slightly different result as the \texttt{toc} etc., marks set both
+the \cmd{\leftmark} and \cmd{\rightmark} instead of just the 
+\cmd{\leftmark}):
+\begin{lcode}
+\makepsmarks{headings}{%
+  \createmark{chapter}{left}{shownumber}{\@chapapp\ }{. \ }
+  \createmark{section}{right}{shownumber}{}{. \ }
+  \createplainmark{toc}{both}{\contentsname}
+  \createplainmark{lof}{both}{\listfigurename}
+  \createplainmark{lot}{both}{\listtablename}
+  \createplainmark{bib}{both}{\bibname}
+  \createplainmark{index}{both}{\indexname}
+  \createplainmark{glossary}{both}{\glossaryname}}
+\end{lcode}
+
+    This next example demonstrates most of the page styling commands.
+In the \textit{\ltx\ Companion} series of 
+books~\cite{COMPANION,GCOMPANION,WCOMPANION} the header\index{header} is wider 
+than the typeblock\index{typeblock}, sticking out into the outer 
+margin\index{margin!outer}, and has a rule underneath it. 
+The page number is in 
+bold and at the outer end of the header\index{header}.
+Chapter titles are in verso headers\index{header} and section titles 
+in recto headers\index{header}, both in bold font and at the inner 
+margin\index{margin!inner}. The footers\index{footer} are empty.
 
-    This gets used like any other list:
+    The first thing to do in implementing this style is to calculate 
+the width of the headers\index{header}, which extend to cover any 
+marginal\index{marginalia} notes.
 \begin{lcode}
-\begin{itdesc}
-\item[label] ....
-\end{itdesc}
+\setlength{\headwidth}{\textwidth}
+  \addtolength{\headwidth}{\marginparsep}
+  \addtolength{\headwidth}{\marginparwidth}
+\end{lcode}
+Now we can set up an empty \pstyle{companion} pagestyle and start to change
+it by specifying the new header\index{header} and footer\index{footer} width:
+\begin{lcode}
+\makepagestyle{companion}
+\makerunningwidth{companion}{\headwidth}
+\end{lcode}
+and specify the width and thickness for the header\index{header} rule, 
+otherwise it will be invisible.
+\begin{lcode}
+\makeheadrule{companion}{\headwidth}{\normalrulethickness}
 \end{lcode}
 
-Here is another kind of list called \Ie{aglossary} that could be used for 
-a glossary or other similar kind of listing.
+    In order to get the header\index{header} to stick out into the \foredge\ 
+margin\index{margin!foredge?\foredge}, verso headers\index{header} 
+have to be flushright 
+(raggedleft) and recto headers\index{header} to be flushleft (raggedright). 
+As the footers\index{footer} are empty, their position is immaterial.
 \begin{lcode}
-% Glossary list
-\newenvironment{aglossary}%
-               {\begin{list}{}% empty label
-                            {\setlength{\topsep}{\baselineskip}
-                             \setlength{\partopsep}{0pt}
-                             \setlength{\itemsep}{0.5\baselineskip}
-                             \setlength{\parsep}{0pt}
-                             \setlength{\leftmargin}{2em}
-                             \setlength{\rightmargin}{0em}
-                             \setlength{\listparindent}{1em}
-                             \setlength{\itemindent}{0em}
-                             \setlength{\labelwidth}{0em}
-                             \setlength{\labelsep}{2em}}}%
-               {\end{list}}
-\newcommand{\gloss}[1]{\item[#1]\mbox{}\\\nopagebreak}
+\makeheadposition{companion}{flushright}{flushleft}{}{}
 \end{lcode}
-In this case it gets used like this
+
+    The current chapter and section titles are obtained from the 
+\cmd{\leftmark} and \cmd{\rightmark} macros which are defined via the
+\cmd{\chaptermark} and \cmd{\sectionmark} macros. Remember that
+\cmd{\leftmark} is the last \meta{left} marker and \cmd{\rightmark}
+is the first \meta{right} marker\index{markers} on the page.
+
+Chapter numbers are not
+put into the header\index{header} but the section number, 
+if there is one, is put into
+the header\index{header}. We have to make sure that
+the correct definitions are used for these as well as for the 
+\toc\footnote{The \toc\ and friends are described in detail 
+in \protect\Cref{chap:toc}.} 
+and other similar elements, and this is where the 
+\cmd{\makepsmarks} macro comes into play. 
 \begin{lcode}
-\begin{aglossary}
-\gloss{TERM 1} definition
-\gloss{TERM 2} ...
-\end{aglossary}
+\makepsmarks{companion}{%
+  \nouppercaseheads
+  \createmark{chapter}{both}{nonumber}{}{}
+  \createmark{section}{right}{shownumber}{}{. \space}
+  \createplainmark{toc}{both}{\contentsname}
+  \createplainmark{lof}{both}{\listfigurename}
+  \createplainmark{lot}{both}{\listtablename}
+  \createplainmark{bib}{both}{\bibname}
+  \createplainmark{index}{both}{\indexname}
+  \createplainmark{glossary}{both}{\glossaryname}
 \end{lcode}
 
-\index{list!new|)}
+    The preliminaries have all been completed, and it just remains to specify
+what goes into each header\index{header} and footer\index{footer} slot 
+(but the footers\index{footer} are empty).
+\begin{lcode}
+\makeevenhead{companion}%
+  {\normalfont\bfseries\thepage}{}{%
+   \normalfont\bfseries\leftmark}
+\makeoddhead{companion}%
+  {\normalfont\bfseries\rightmark}{}{%
+   \normalfont\bfseries\thepage}
+\end{lcode}
+
+    Now issuing the command \verb?\pagestyle{companion}? will produce pages 
+typeset with \pstyle{companion} pagestyle headers\index{header}. This pagestyle
+is part of the class.
+
+    For practical reasons I prefer a page style with headings
+where the chapter title is at least in the center 
+of the page, and for technical works is at the \foredge. I also prefer the
+page number to be near the outside edge. When picking up a book and skimming
+through it, either to get an idea of what is in it or to find something more
+specific, I hold it in one hand at the spine and use the other for flicking
+the pages. The book is half closed while doing this and it's much easier
+to spot things at the \foredge\ than those nearer the spine. 
+The \pstyle{ruled} page style is like this. The general plan is defined as:
+\begin{lcode}
+\makepagestyle{ruled}
+\makeevenfootruled{\thepage}{}{} % page numbers at the outside
+\makeoddfoot{ruled}{}{}{\thepage}
+\makeheadrule{ruled}{\textwidth}{\normalrulethickness}
+\makeevenhead{ruled}{\scshape\leftmark}{}{} % small caps
+\makeoddhead{ruled}{}{}{\rightmark}
+\end{lcode}
+The other part of the specification has to ensure that the \cmd{\chapter}
+and \cmd{\section} commands make the appropriate marks for the headers.
+I wanted the numbers to appear in the headers, but not those for sections. The following
+code sets these up, as well as the marks for the other document elements.
+\begin{lcode}
+\makepsmarks{ruled}{%
+  \nouppercaseheads
+  \createmark{chapter}{left}{shownumber}{}{. \space}
+  \createmark{section}{right}{nonumber}{}{}
+  \createplainmark{toc}{both}{\contentsname}
+  \createplainmark{lof}{both}{\listfigurename}
+  \createplainmark{lot}{both}{\listtablename}
+  \createplainmark{bib}{both}{\bibname}
+  \createplainmark{index}{both}{\indexname}
+  \createplainmark{glossary}{both}{\glossaryname}
+}
+\end{lcode}
 
 \begin{syntax}
-\cmd{\zerotrivseps} \cmd{\restoretrivseps} \cmd{\savetrivseps} \\
+\cmd{\addtopsmarks}\marg{pagestyle}\marg{prepend}\marg{append} \\
 \end{syntax}
-Several environments, such as \Ie{center}, are defined in terms of a
-\Ie{trivlist} (a very simple list form). There is vertical space
-before and after such an environment. If you don't want this, then
-the declaration \cmd{\zerotrivseps} eliminates such spaces. You can think
-of it being defined like:
+\glossary(addtopsmarks)%
+  {\cs{addtopsmarks}\marg{pagestyle}\marg{prepend}\marg{append}}%
+  {Inserts \meta{prepend} and \meta{append} before and after the current
+   definition of \cs{makepsmarks} for \meta{pagestyle}.}
+\cmd{\addtopsmarks}\marg{pagestyle}\marg{prepend}\marg{append} is the last
+of this group of helper macros. It inserts \meta{prepend} and \meta{append} 
+before and after the current definition of \cs{makepsmarks} 
+for \meta{pagestyle}. For instance, if you wanted \cs{subsection} titles to appear
+in the page headers of the \pstyle{companion} pagestyle then this would be a way
+of doing it:
 \begin{lcode}
-\newcommand*{\zerotrivseps}{%
-  \setlength{\topsep}{0pt}%
-  \setlength{\partopsep}{0pt}}
+\addtopsmarks{companion}{}{%
+  \createmark{subsection}{right}{shownumber}{}{. \space}}
 \end{lcode}
-To restore the spacing call the \cmd{\restoretrivseps} declaration. 
-The command \cmd{\savetrivseps} stores the \lnc{\topsep} and
-\lnc{\partopsep} values, and \cmd{\restoretrivseps} sets them to
-whatever values were stored. The class itself calls \cmd{\savetrivseps}
-to keep the default values. 
 
 
+\index{pagestyle!specifying|)}
 
-\index{list|)}
 
 
+\subsection{Index headers}
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapterstyle{section}
-%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Tops and tails} \label{chap:topsandtails}
+\index{pagestyle!index pages|(}
 
-This chapter uses the \cstyle{section} chapterstyle.
+    If you look at the Index\index{index} you will see that the header\index{header} 
+shows the first and last entries on the page.
+A main entry in the index\index{index} looks like:
+\begin{lcode}
+\item \idxmark{entry}, page number(s)
+\end{lcode}
+and in the preamble\index{preamble} to this book \cmd{\idxmark} is defined as
+\begin{lcode}
+\newcommand{\idxmark}[1]{#1\markboth{#1}{#1}}
+\end{lcode}
+This typesets the entry and also uses the entry as markers so that
+the first entry on a page is held in \cmd{\rightmark} and the last
+is in \cmd{\leftmark}.
 
- \section{Introduction}
+    As index\index{index} entries are usually very short, the 
+Index\index{index} is set in two columns\index{column!double}. 
+Unfortunately \ltx's marking mechanism can be very
+fragile on twocolumn\index{column!double} pages, but the standard 
+\Lpack{fixltx2e} package corrects this.
 
-    The following discussions are focussed on the elements at the start
-and end of a document; the Table of Contents at the start and the Index\index{index}
-at the end.
-    The functionality described is equivalent to the combination
-of the \Lpack{tocloft} and \Lpack{tocbibind} 
-packages~\cite{TOCLOFT,TOCBIBIND}
+    The index\index{index} itself is called by\index{indexing}
+\begin{lcode}
+\clearpage
+\pagestyle{index}
+\renewcommand{\preindexhook}{%
+The first page number is usually, but not always, 
+the primary reference to
+the indexed topic.\vskip\onelineskip}
+\printindex
+\end{lcode}
+
+\makepagestyle{index}
+  \makeheadrule{index}{\textwidth}{\normalrulethickness}
+  \makeevenhead{index}{\rightmark}{}{\leftmark}
+  \makeoddhead{index}{\rightmark}{}{\leftmark}
+  \makeevenfoot{index}{\thepage}{}{}
+  \makeoddfoot{index}{}{}{\thepage}
 
- In the standard classes the typographic design of the Table of Contents
- (\toc), the List of Figures (\lof) and List of Tables (\lot) is fixed or,
- more precisely, it is buried within the class definitions.
+    The \pstyle{index} pagestyle, which is the crux of
+this example, is defined here as:
+\begin{lcode}
+\makepagestyle{index}
+  \makeheadrule{index}{\textwidth}{\normalrulethickness}
+  \makeevenhead{index}{\rightmark}{}{\leftmark}
+  \makeoddhead{index}{\rightmark}{}{\leftmark}
+  \makeevenfoot{index}{\thepage}{}{}
+  \makeoddfoot{index}{}{}{\thepage}
+\end{lcode}
+This, as you can hopefully see, puts the first and last index\index{index} 
+entries on the page into the header\index{header} at the left and right, 
+with the folios\index{folio} in the footers\index{footer} at the 
+outer margin\index{margin!outer}.
 
- \section{LaTeX's \prtoc{} methods}
+\index{pagestyle!index pages|)}
 
-    This is a general description of how LaTeX does the processing
- for a Table of Contents (\toc). As the processing for List of Figures 
-(\lof) and
- List of Tables (\lot) is similar I will just
- discuss the \toc.
+\subsection{Float pages}
 
-    First of all, remember that each sectional division has an
-associated level as listed in \tref{tab:seclevels} on 
-\pref{tab:seclevels}. LaTeX will not typeset an entry in the \toc{}
-unless the value of the \Icn{tocdepth} counter is equal to or greater
-than the level of the entry.
+\index{pagestyle!float pages|(}
+\index{float!page|(}
 
 \begin{syntax}
-\cmd{\maxtocdepth}\marg{secname} \\
-\cmd{\settocdepth}\marg{secname} \\
+\piif{ifonlyfloats}\marg{yes}\marg{no} \\
 \end{syntax}
-The \Lclass{memoir} class \cmd{\maxtocdepth} command sets the maximum 
-allowable value
-for the \Icn{tocdepth} counter. If used, the command must appear
-before the \cmd{\tableofcontents} command. By default, the class
-sets |\maxtocdepth{section}|.
+\glossary(ifonlyfloats)%
+  {\cs{ifonlyfloats}\marg{yes}\marg{no}}%
+  {Processes \meta{yes} on a page containing only floats, otherwise process
+  \meta{no}.}
+    There are occasions when it is desirable to have different 
+headers\index{header} on pages that only contain figures\index{figure} 
+or tables\index{table}. If the command \piif{ifonlyfloats}
+is issued on a page that contains no text and only floats then the \meta{yes}
+argument is processed, otherwise on a normal page the \meta{no} argument
+is processed. The command is most useful when defining a pagestyle that 
+should be different on a float-only page\index{page!of floats}.
 
-    The \Lclass{memoir} class command \cmd{\settocdepth} is somewhat
-analagous to the \cmd{\setsecnumdepth} command 
-described in \S\ref{sec:secnumbers}.
-It sets the value of the \Icn{tocdepth} counter and puts it into
-the \toc{} to (temporarily) modify what will appear. 
-The command can only be used after the preamble\index{preamble}
-but may be used before calling the \cmd{\tableofcontents}.
-The \cmd{\settocdepth} and \cmd{\maxtocdepth} macros are from the 
-\Lpack{tocvsec2} package~\cite{TOCVSEC2}.
+    For example, assume that the \pstyle{companion} pagestyle is to be
+generally used, but on float-only pages all that is required is a pagestyle
+similar to \pstyle{plain}. Borrowing some code from the \pstyle{companion}
+specification this can be accomplished like:
+\begin{lcode}
+\makepagestyle{floatcomp}
+% \headwidth has already been defined for the companion style
+\makeheadrule{floatcomp}{\headwidth}%
+  {\ifonlyfloats{0pt}{\normalrulethickness}}
+\makeheadposition{floatcomp}{flushright}{flushleft}{}{}
+\makepsmarks{floatcomp}{\companionpshook}
+\makeevenhead{floatcomp}%
+             {\ifonlyfloats{}{\normalfont\bfseries\thepage}}%
+             {}%
+             {\ifonlyfloats{}{\normalfont\bfseries\leftmark}}
+\makeoddhead{floatcomp}%
+             {\ifonlyfloats{}{\normalfont\bfseries\rightmark}}%
+             {}%
+             {\ifonlyfloats{}{\normalfont\bfseries\thepage}}
+\makeevenfoot{floatcomp}{}{\ifonlyfloats{\thepage}{}}{}
+\makeoddfoot{floatcomp}{}{\ifonlyfloats{\thepage}{}}{}
+\end{lcode}
+The code above for the \pstyle{floatcomp} style should be compared with 
+that for the earlier \pstyle{companion} style.
 
-\begin{syntax}
-\cmd{\addcontentsline}\marg{file}\marg{kind}\marg{text} \\
-\end{syntax}
-    LaTeX generates a \file{.toc} file if the document contains a
- \cmd{\tableofcontents} command. The sectioning 
- commands\footnote{For figures and tables it is the 
-%% \texttt{\bs caption} command
- \cmd{\caption} command
- that populates the \file{.lof} and \file{.lot} files.}
- put entries into the \file{.toc} file by calling the LaTeX
- \cmd{\addcontentsline} 
- command, where \meta{file} is the file extension (e.g., |toc|),
- \meta{kind} is the kind of entry (e.g., |section| or |subsection|),
- and \meta{text} is the (numbered) title text. In the cases where
- there is a number, the \meta{title} argument is given in the
- form |{\numberline{number} title-text}|.
+    The headrule is invisible\index{rule!thickness}\index{rule!invisible} 
+on float pages by giving it zero thickness, 
+otherwise it has the \cmd{\normalrulethickness}. The head position is 
+identical for both pagestyles. However, the headers\index{header} are empty for
+\pstyle{floatcomp} and the footers\index{footer} have centered page numbers 
+on float pages; on ordinary pages the footers\index{footer} are empty 
+while the headers\index{header}
+are the same as the \pstyle{companion} headers\index{header}.
 
-\begin{syntax}
-\cmd{\phantomsection} \\
-\end{syntax}
-\Note{} The \Lpack{hyperref} package~\cite{HYPERREF} appears to dislike 
-authors using 
- \cmd{\addcontentsline}. To get it to work properly with \Lpack{hyperref}
- you normally have to put \cmd{\phantomsection} (a macro defined within
-this class and the \Lpack{hyperref} package) immediately 
- before \cmd{\addcontentsline}.
+    The code includes one `trick'. The macro \cmd{\makepsmarks}\verb?{X}{code}?
+is equivalent to
+\begin{lcode}
+\newcommand{\Xpshook}{code}
+\end{lcode}
+I have used this knowledge in the line:
+\begin{lcode}
+\makepsmarks{floatcomp}{\companionpshook}
+\end{lcode}
+which avoids retyping the code from 
+\verb?\makepsmarks{companion}{...}?,
+and ensures that the code is actually the same for the two pagestyles.
 
 \begin{syntax}
-\cmd{\contentsline}\marg{kind}\marg{text}\marg{page} \\
+\cmd{\mergepagefloatstyle}\marg{style}\marg{textstyle}\marg{floatstyle} \\
 \end{syntax}
-     The \cmd{\addcontentsline} command writes an entry to the given file
- in the form: \\
- \cmd{\contentsline}\marg{kind}\marg{text}\marg{page} \\
- where \meta{page} is the page number.
-     For each \meta{kind}, LaTeX provides a command: \\
- \cmd{\l@kind}\marg{title}\marg{page} \\
-which performs the actual
- typesetting of the \cmd{\contentsline} entry. 
+    If you have two pre-existing pagestyles, one that will be used for
+text pages and the other that can be used for float pages, then the
+\cmd{\mergepagefloatstyle} command provides a simpler means of 
+combining\index{pagestyle!combining}
+them than the above example code for \pstyle{floatcomp}. The argument
+\meta{style} is the name of the pagestyle being defined. The
+argument \meta{textstyle}
+is the name of the pagestyle for text pages and \meta{floatstyle} is the
+name of the pagestyle for float-only pages. Both of these must have been 
+defined before calling \cmd{\mergepagefloatstyle}. So, instead of the long
+winded, and possibly tricky, code I could have simply said:
+\begin{lcode}
+\mergepagefloatstyle{floatcomp}{companion}{plain}
+\end{lcode}
 
 
-\begin{figure}
-\setlayoutscale{0.8}
-\drawtoc
-\caption{Layout of a \prtoc{} (\prlof, \prlot) entry} \label{fig:ltoc}
-\end{figure}
+    One author thought it would be nice to be able to have different 
+page headings according
+to whether the page was a floatpage, or there was a float at the top of 
+the page, or a float at the bottom of a page or there was text at the 
+top and bottom.
+
+    This, I think, is not a common requirement and, further, that to provide 
+this involves changing parts of the LaTeX output routine --- something only
+to be tackled by the bravest of the brave. If it were to be done then were
+best done in a package that could be easily ignored. The following is an
+outline of what might be done; I do not recommend it and if you try this 
+and all your work dissappears then on your own head be it.
+
+\begin{lcode}
+% notefloat.sty
+\newif\iffloatattop
+  \floatattopfalse
+\newif\iffloatatbot
+  \floatatbotfalse
+
+\renewcommand*{\@addtotoporbot}{%
+  \@getfpsbit \tw@
+  \ifodd \@tempcnta
+    \@flsetnum \@topnum
+    \ifnum \@topnum>\z@
+      \@tempswafalse
+      \@flcheckspace \@toproom \@toplist
+      \if@tempswa
+        \@bitor\@currtype{\@midlist\@botlist}%
+        \if@test
+        \else
+          \@flupdates \@topnum \@toproom \@toplist
+          \@inserttrue
+  \global\floatattoptrue
+        \fi
+      \fi
+    \fi
+  \fi
+  \if@insert
+  \else
+    \@addtobot
+  \fi}
+
+\renewcommand*{\@addtobot}{%
+  \@getfpsbit 4\relax
+  \ifodd \@tempcnta
+    \@flsetnum \@botnum
+    \ifnum \@botnum>\z@
+      \@tempswafalse
+      \@flcheckspace \@botroom \@botlist
+      \if@tempswa
+        \global \maxdepth \z@
+        \@flupdates \@botnum \@botroom \@botlist
+        \@inserttrue
+  \global\floatatbottrue
+      \fi
+    \fi
+  \fi}
 
- 
-\begin{syntax}
-\cmd{\@pnumwidth}\marg{length} \\
-\cmd{\@tocrmarg}\marg{length} \\
-\cmd{\@dotsep}\marg{number} \\
-\end{syntax}
- The general layout of a
- typeset entry is illustrated in \fref{fig:ltoc}. There are three
- internal LaTeX commands that are used in the typesetting. The page
- number is typeset flushright in a box of width \cmd{\@pnumwidth}, and the box
- is at the righthand margin\index{margin}. If the page number is too long to fit into
- the box it will stick out into the righthand margin\index{margin}. The title text
- is indented from the righthand margin\index{margin} by an amount given by \cmd{\@tocrmarg}.
- Note that \cmd{\@tocrmarg} should be greater than \cmd{\@pnumwidth}. Some
- entries are typeset with a dotted leader between the end of the title
- title text and the righthand margin\index{margin} indentation. The distance, in
- \emph{math units}\footnote{There are 18mu to 1em.} between the dots
- in the leader is given by the value of \cmd{\@dotsep}. In the standard
- classes the same values are used for the \toc, \lof{} and the \lot.
+\let\p@wold@output\@outputpage
+\renewcommand*{\@outputpage}{%
+  \p@wold@output
+  \global\floatattopfalse
+  \global\floatatbotfalse}
 
-    The standard values for these internal commands are:
- \begin{itemize}
- \item |\@pnumwidth| = 1.55em
- \item |\@tocrmarg| = 2.55em 
- \item |\@dotsep| = 4.5
- \end{itemize}
- The values can be changed by using \cmd{\renewcommand}, in spite of the
- fact that the first two appear to be lengths.
+\endinput
+\end{lcode}
+\cs{floatattop} is probably set \ptrue\ if there is a float at the 
+top of the page and
+\cs{floatatbot} is probably set \ptrue\ if there is a float at the bottom
+of the page.
 
-    Dotted leaders are not available for Part\index{part} and Chapter\index{chapter} \toc{} entries
 
-\begin{syntax}
-\cmd{\numberline}\marg{number} \\
-\end{syntax}
-    Each \cmd{\l@kind} macro is responsible for setting the general 
- \textit{indent} from the lefthand margin\index{margin}, and the \textit{numwidth}.
- The \cmd{\numberline} macro is responsible for typesetting
- the number flushleft in a box of width 
- \textit{numwidth}. If the number is too long for the box then it will
- protrude into the title text. The title text is indented by
- (\textit{indent + numwidth}) from the lefthand margin\index{margin}. That is, the title
- text is typeset in a block of width \\
- (|\linewidth| - \textit{indent} - \textit{numwidth} - |\@tocrmarg|). 
+\index{float!page|)}
+\index{pagestyle!float pages|)}
 
- \begin{table}
- \centering
- \caption[Indents and Numwidths]{Indents and Numwidths (in ems)} \label{tab:indents}
- \begin{tabular}{lcrrrr} \hline
- Entry & Level & \multicolumn{2}{c}{Standard} & \multicolumn{2}{c}{\Lclass{memoir} class} \\
-       &       & indent & numwidth & indent & numwidth \\ \hline
- part          & -1 & 0    & --- & 0    & --- \\
- chapter       & 0  & 0    & 1.5 & 0    & 1.5 \\
- section       & 1  & 1.5  & 2.3 & 1.5  & 2.3 \\
- subsection    & 2  & 3.8  & 3.2 & 3.8  & 3.2 \\
- subsubsection & 3  & 7.0  & 4.1 & 7.0  & 4.1 \\
- paragraph     & 4  & 10.0 & 5.0 & 10.0 & 5.0 \\
- subparagraph  & 5  & 12.0 & 6.0 & 12.0 & 6.0 \\
- figure/table  & (1) & 1.5 & 2.3 & 0    & 1.5 \\ 
- subfigure/table & (2) & ---& ---& 1.5  & 2.3 \\ 
-\hline
- \end{tabular}
- \end{table}
 
- Table~\ref{tab:indents} lists the standard values for the \textit{indent}
- and \textit{numwidth}. There is no explicit \textit{numwidth} for a
- part\index{part}; instead a gap of 1em is put between the number and the title text.
- Note that for a sectioning command the values
- depend on whether or not the document class provides the \cmd{\chapter}
- command. Also, which somewhat surprises me, the table\index{table} and figure\index{figure} entries
- are all indented.
 
-\begin{syntax}
-\cmd{\@dottedtocline}\marg{level}\marg{indent}\marg{numwidth} \\
-\end{syntax}
-    Most of the |\l@kind| commands are defined in terms of the
- \cmd{\@dottedtocline} command. This command takes three arguments: 
-the \meta{level} argument is the level as shown in \tref{tab:indents},
-and \meta{indent} and \meta{numwidth} are the \textit{indent} and 
-\textit{numwidth} as illustrated in \fref{fig:ltoc}.
- For example, one definition of the |\l@section| command is: \\
- |\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}| \\
- If it is necessary to change the default typesetting of the entries,
- then it is usually necessary to change these definitions, but this
-class gives you handles to easily alter things without
- having to know the LaTeX internals.
 
-    You can use the \cmd{\addcontentsline} command to add 
-\cmd{\contentsline} commands to a file. 
 
-\begin{syntax}
-\cmd{\addtocontents}\marg{file}\marg{text} \\
-\end{syntax}
-    LaTeX also provides the \cmd{\addtocontents}
- command that will insert \meta{text} into \meta{file}. You can use
- this for adding extra text and/or macros into the file, for processing
- when the file is typeset by \cmd{\tableofcontents} (or whatever other
- command is used for \meta{file} processing, such as \cmd{\listoftables}
- for a \file{.lot} file).
 
- As \cmd{\addcontentsline} and \cmd{\addtocontents} write their arguments to a
- file, any fragile commands used in their arguments must be \cmd{\protect}ed.
- 
-    You can make certain adjustments to the \toc{} etc., layout by modifying
-some of the above macros. Some examples are:
- \begin{itemize}
- \item If your page numbers stick out into the righthand margin\index{margin}
-  \begin{lcode}
-  \renewcommand{\@pnumwidth}{3em} 
-  \renewcommand{\@tocrmarg}{4em}
-  \end{lcode}
- but using lengths appropriate to your document.
 
- \item To have the (sectional) titles in the \toc, etc., typeset ragged 
-right with no  hyphenation
- \begin{lcode}
- \renewcommand{\@tocrmarg}{2.55em plus1fil}
- \end{lcode}
- where the value |2.55em| can be changed for whatever margin\index{margin} space you want.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
- \item The dots in the leaders can be eliminated by increasing |\@dotsep|
- to a large value:
-  \begin{lcode}
-  \renewcommand{\@dotsep}{10000}
-  \end{lcode}
 
- \item To have dotted leaders in your \toc{} and \lof{} but not in your \lot:
- \begin{lcode}
- ...
- \tableofcontents
- \makeatletter \renewcommand{\@dotsep}{10000} \makeatother
- \listoftables
- \makeatletter \renewcommand{\@dotsep}{4.5} \makeatother
- \listoffigures
- ...
- \end{lcode}
 
- \item To add a horizontal line across the whole width of the \toc{} below 
- an entry for a Part\index{part}:
- \begin{lcode}
- \part{Part title}
- \addtocontents{toc}{\protect\mbox{}\protect\hrulefill\par}
- \end{lcode}
- As  said earlier any fragile commands in \cmd{\addtocontents} and 
-\cmd{\addcontentsline} 
- their arguments must be protected
- by preceding each fragile command with \cmd{\protect}. 
- The result of the example above
- would be the following two lines in the \file{.toc} file (assuming that it
- is the second Part and is on page 34):
- \begin{lcode}
- \contentsline {part}{II\hspace {1em}Part title}{34}
- \mbox {}\hrulefill \par
- \end{lcode}
- If the \cmd{\protect}s were not used, then the second line would 
-instead be:
- \begin{lcode}
- \unhbox \voidb@x \hbox {}\unhbox \voidb@x \leaders \hrule \hfill \kern \z@ \par
- \end{lcode}
+\chapter{Paragraphs and lists}
 
-\item To change the level of entries printed in the \toc{} (for example
-      when normally subsections are listed in the \toc{} but for
-      appendices\index{appendix} only the main title is required)
-  \begin{lcode}
-  \appendix
-  \settocdepth{chapter}
-  \chapter{First appendix}
-  ...
-  \end{lcode}
+%%%%%%%%%%%%%%%%%%%%%
+%\tightlists
+%%%%%%%%%%%%%%%%%%%%%
 
- \end{itemize}
- Remember, if you are modifying any command that includes an |@| sign then this
- must be done in either a \file{.sty} file or if in the document itself
- it must be 
- surrounded by \cmd{\makeatletter} and \cmd{\makeatother}. For example, if you
- want to modify \cmd{\@dotsep} in the preamble\index{preamble} to your document you have
- to do it like this:
- \begin{lcode}
- \makeatletter
- \renewcommand{\@dotsep}{9.0}
- \makeatother
- \end{lcode}
- 
+    Within a sectional division the text is typically broken up into
+paragraphs. Sometimes there may be text that is set off from the normal
+paragraphing, like quotations\index{quotation} or lists.
 
- \section{The class \prtoc{} methods} 
+\section{Paragraphs}
 
-  The class provides various means of changing the look of the \toc, etc.,
-without having to go through some of the above. 
+\index{paragraph|(}
+
+    There are basically two parameters that control the appearance of normal
+paragraphs.
 
 \begin{syntax}
-\cmd{\tableofcontents} \cmd{\tableofcontents*} \\
-\cmd{\listoffigures} \cmd{\listoffigures*} \\
-\cmd{\listoftables} \cmd{\listoftables*} \\
+\lnc{\parindent} \lnc{\parskip} \\
 \end{syntax}
- The \toc, \lof, and \lot{} are printed at the point in the document where
- these commands are called, as per normal LaTeX. However, there are
- two differences between the standard LaTeX behaviour and the behaviour
- with this class. In the standard LaTeX classes
- that have \cmd{\chapter} headings\index{heading}, the \toc, \lof{} and \lot{} each appear on
- a new page. With this class they do not necessarily
- start new pages; if you want them to be on new pages you may have to
- specifically issue an appropriate command beforehand. For example:
- \begin{lcode}
-  ...
- \clearpage
- \tableofcontents
- \clearpage
- \listoftables
- ...
- \end{lcode}
-Also, the unstarred versions of the commands put their headings\index{heading} into the
-\toc, while the starred versions do not.
+\glossary(parskip)%
+  {\cs{parskip}}%
+  {(Extra) vertical space between paragraphs (default 0pt).}
+ 
+    The length \lnc{\parindent} is the indentation of the first line of a
+paragraph\index{paragraph!indentation} and the length \lnc{\parskip} is the vertical spacing between
+paragraphs, as illustrated in \fref{fig:para}. The value of \lnc{\parskip}
+is usually 0pt, and \lnc{\parindent} is usually defined in terms of ems so
+that the actual indentation depends on the font being used. If \lnc{\parindent}
+is set to a negative length, then the first line of the paragraphs will be 
+`outdented'\index{paragraph!outdentation} into the lefthand 
+margin\index{margin!left}.
 
- \subsection{Changing the titles} \label{sec:titles}
+\begin{figure}
+\centering
+\drawparameterstrue
+\drawparagraph
+\caption{Paragraphing parameters}\label{fig:para}
+\end{figure}
 
-    Commands are provided for controlling the appearance of the
-\toc, \lof{} and \lot{} titles. 
+\subsection{Block paragraph}
 
-\begin{syntax}
-\cmd{\contentsname} \cmd{\listfigurename} \cmd{\listtablename} \\
-\end{syntax}
-Following LaTeX custom, the title texts are the values
- of the \cmd{\contentsname}, \cmd{\listfigurename} and \cmd{\listtablename}
- commands.
+    A block paragraph\index{paragraph!block} is obtained by setting 
+\lnc{\parindent} to 0em; 
+\lnc{\parskip} should be set to some positive value so that there is some
+space between paragraphs to enable them to be identified. Most typographers
+heartily dislike block paragraphs, not only on aesthetical grounds but also
+on practical\index{paragraph!block!reasons against} considerations. 
+Consider what happens if the last line of a block 
+paragraph is full and also is the last line on the page. The following
+block paragraph will start at the top of the next page but there will be
+no identifiable space to indicate an inter-paragraph break.
 
- The commands for controlling the typesetting of the \toc, \lof{} and \lot{} titles
-all follow a similar pattern So for convenience (certainly mine, 
-and hopefully yours)
- in the following
- descriptions I will use |Z| to stand for `toc' or `lof' or `lot'. For
- example, |\Zmark| stands for |\tocmark| or |\lofmark| or |\lotmark|.
+    It is important to know that \ltx\ 
+typesets\index{paragraph!typeset as a unit} 
+paragraph by paragraph. 
+For example, the \lnc{\baselineskip} that is used for a paragraph is the value
+that is in effect at the end of the paragraph, and the font size used for a
+paragraph is according to the size declaration (e.g., \cmd{\large} or 
+\cmd{\normalsize} or \cmd{\small}) at the end of the paragraph, 
+and the raggedness or otherwise of the whole paragraph depends on
+the declaration (e.g., \cmd{\centering})  in effect at the end of 
+the paragraph. If a pagebreak occurs in the middle of a paragraph \tx\
+will not reset the part of the paragraph that goes onto the following
+page, even if the textwidths on the two pages are different.
 
-    The code for typesetting the \toc{} title looks like:
-\begin{lcode}
-\tocheadstart
-\printtoctitle{\contentsname}
-\tocmark
-\thispagestyle{chapter}
-\aftertoctitle
-\end{lcode}
-where the macros are described below.
+\subsection{Hanging paragraphs}
 
-\begin{syntax}
-\cmd{\Zheadstart} \\
-\end{syntax}
-This macro is called before the title is actually printed.
-Its default definition is
-\begin{lcode}
-\newcommand{\Zheadstart}{\chapterheadstart}
-\end{lcode}
+\index{paragraph!hanging|(}
+
+    A hanging paragraph is one where the length of the first few lines differs
+from the length of the remaining lines. (A normal indented paragraph 
+may be considered 
+to be a special case of a hanging paragraph where `few = one'). 
 
 \begin{syntax}
-\cmd{\printZtitle}\marg{title} \\
+\cmd{\hangpara}\marg{indent}\marg{num} \\
 \end{syntax}
-The title is typeset via \cmd{\printZtitle}, which defaults to
-using \cmd{\printchaptertitle} for the actual typesetting. 
+\glossary(hangpara)%
+  {\cs{hangpara}\marg{indent}\marg{num}}%
+  {Apply \meta{indent} for \meta{num} lines to the immediately following 
+   paragraph.}
+
+\hangpara{3em}{-3}%
+ Using \cmd{\hangpara} at the start of a paragraph will cause the paragraph
+to be hung. If the length \meta{indent} is positive the lefthand end of the 
+lines will be indented but if it is negative the righthand ends will be 
+indented by the specified amount.
+    If the number \meta{num}, say N, is is negative the first N lines of
+the paragraph will be indented while if N is positive the N+1 th lines onwards
+will be indented. This paragraph was set with \verb?\hangpara{3em}{-3}?. There 
+should be no space between the \cmd{\hangpara} command and the start of the
+paragraph.
 
 \begin{syntax}
-\cmd{\Zmark} \\
+\senv{hangparas}\marg{indent}\marg{num} text \eenv{hangparas} \\
 \end{syntax}
- These macros sets the appearance of the running heads on the \toc, \lof, and
- \lot{} pages. The default definition is equivalent to:
-\begin{lcode}
-\newcommmand{\Zmark}{\@mkboth{\...name}{\...name}}
-\end{lcode}
-where |\...name| is \cmd{\contentsname} or \cmd{\listfigurename} or
-\cmd{\listtablename} as appropriate. You probably don't need to change these, and
-in any case they may well be changed by the particular \cmd{\pagestyle} in
-use.
+\glossary(hangparas)%
+  {\senv{hangparas}\marg{indent}\marg{num}}%
+  {Environment form of \cs{hangpara}, applying it to every paragraph in the
+   environment.}
+    The \Ie{hangparas} environment is like the \cmd{\hangpara} command except
+that every paragraph in the environment will be hung.
+
+    The code implementing the hanging paragraphs is the same as for
+the \Lpack{hanging} package~\cite{HANGING}. Examples of some uses
+can be found in~\cite{TTC199}.
+
+    As noted eleswhere the sectioning commands use the internal 
+macro \cmd{\@hangfrom} as part of the formatting of the titles.
 
 \begin{syntax}
-\cmd{\afterZtitle} \\
+\cmd{\hangfrom}\marg{text} \\
 \end{syntax}
- This macro is called after the title is typeset and by
-default it is defined to be \cmd{\afterchaptertitle}.
+\glossary(hangfrom)%
+  {\cs{hangfrom}\marg{stuff}}%
+  {Hangs a paragraph from \meta{stuff}.}
+The \cmd{\hangfrom} macro is provided as an author's version of the
+internal \cmd{\@hangfrom} macro used, among other things, in typesetting 
+section titles.
 
-    Essentially, the \toc, \lof{} and \lot{} titles use the same format
-as the chapter titles, and will be typeset according to the current
-chapterstyle. You can modify their appearance by either using a
-different chapterstyle for them than for the actual chapters, or
-by changing some of the macros. As examples:
-\begin{itemize}
-\item Doing
-      \begin{lcode}
-      \renewcommand{\printZtitle}[1]{\hfill\Large\itshape #1}
-      \end{lcode}
-      will print the title right justified in a Large italic font.
-\item For a Large bold centered title you can do
-      \begin{lcode}
-      \renewcommand{\printZtitle}[1]{\centering\Large\bfseries #1}
-      \end{lcode}
-\item Writing
-      \begin{lcode}
-      \renewcommand{\afterZtitle}{\thispagestyle{empty}\afterchaptertitle}
-      \end{lcode}
-      will result in the first page of the listing using the \pstyle{empty}
-      pagestyle instead of the default \pstyle{chapter} pagestyle.
-\item Doing
-      \begin{lcode}
-      \renewcommand{\afterZtitle}{%
-        \par\nobreak \mbox{}\hfill{\normalfont Page}\par\nobreak}
-      \end{lcode}
-      will put the word `Page' flushright on the line following
-      the title.
-\end{itemize}
+\hangfrom{Simple hung paragraphs }(like this one) can be specified
+using the \cmd{\hangfrom} macro. The macro puts \meta{text} in a box
+and then makes a hanging paragraph of the following material. This
+paragraph commenced with \\
+\verb?\hangfrom{Simple hung paragraphs }(like ...? \\
+and you are now reading the result.
 
+    The commands for hanging paragraphs do not quite work as might be
+expected when they are used in a list\index{paragraph!hanging!in list} 
+environment, for example inside
+an \Ie{enumerate}. If you wish for a hanging paragraph inside such an
+environment you will have to define your own commands for this. If you
+feel capable of doing so then, with my congratulations, move on to the
+next section. If you are not so confident you could try using the following
+non-guaranteed code, which is based on an idea by Patrik 
+Nyman\index{Nyman, Patrick} which he posted on \ctt{} in January 2004.
+\begin{lcode}
+%\makeatletter
+% A version of \hangpara for use in a list
+%    \listhanging{indent}{num} text text text ...
+\def\listhanging#1#2#3\par{%
+  \@tempdima\textwidth \advance\@tempdima -\leftmargin
+  \parbox{\@tempdima}{\hangpara{#1}{#2}#3}\par}
+% A version of \hangfrom for use in a list
+%    \listhangfrom{stuff} text text text ...
+\def\listhangfrom#1#2\par{%
+  \@tempdima\textwidth \advance\@tempdima -\leftmargin
+  \parbox{\@tempdima}{\@hangfrom{#1}#2}\par}
+%\makeatother
+\end{lcode}
+  
 
+\index{paragraph!hanging|)}
 
+\index{paragraph|)}
 
- \subsection{Typesetting the entries} \label{sec:entries}
+\section{Flush and ragged}
 
- Commands are also provided to enable finer control over the typesetting
- of the different kinds of entries. The parameters defining the default
- layout of the entries are illustrated as part of the \Lpack{layouts}
- package~\cite{LAYOUTS} or in~\cite[page 34]{GOOSSENS94}, and are repeated in
- \fref{fig:ltoc}.
+    Flushleft\index{flushleft} text has the lefthand end of the lines 
+aligned vertically at the lefthand margin\index{margin!left} and
+flushright\index{flushright} text has the righthand end of the lines 
+aligned vertically at the righthand margin\index{margin!right}. The
+opposites of these are raggedleft\index{raggedleft} text where the 
+lefthand ends are not aligned
+and raggedright\index{raggedright} where the righthand end of lines are 
+not aligned. LaTeX normally typesets flushleft and flushright.
 
 \begin{syntax}
- \cmd{\cftdot}\marg{text} \\
+\senv{flushleft} text \eenv{flushleft} \\
+\senv{flushright} text \eenv{flushright} \\
+\senv{center} text \eenv{center} \\
 \end{syntax}
-  In the default \toc{} typsetting only the more minor entries have dotted
- leader lines between the sectioning title and the page number. The
- class provides for general leaders for all entries.
- The `dot' in a leader is given by the value of \cmd{\cftdot}. Its default
- definition is |\newcommand{\cftdot}{.}| which gives the default
- dotted leader. By changing \cmd{\cftdot} you can use symbols other than
- a period in the leader. For example 
- \begin{lcode}
- \renewcommand{\cftdot}{\ensuremath{\ast}}
- \end{lcode}
- will result in a dotted leader using asterisks as the symbol.
+\glossary(flushleft)%
+  {\senv{flushleft}}%
+  {Text to be typeset flushleft and raggedright.}
+\glossary(flushright)%
+  {\senv{flushright}}%
+  {Text to be typeset flushright and raggedleft.}
+\glossary(center)%
+  {\senv{center}}%
+  {Text to be set raggedleft and raggedright, with each line centered.}
+    Text in a \Ie{flushleft} environment is typeset flushleft and raggedright,
+while in a \Ie{flushright} environment is typeset raggedleft and flushright.
+In a \Ie{center} environment the text is set raggedleft and raggedright, 
+and each line is centered. A small vertical space is put before and after 
+each of these environments.
 
 \begin{syntax}
- \cmd{\cftdotsep} \\
- \cmd{\cftnodots} \\
-\end{syntax}
-    Each kind of entry can control the separation between the dots
- in its leader (see below). For consistency though, all dotted leaders
- should use the same spacing. The macro \cmd{\cftdotsep} specifies the
- default spacing. 
- However, if the separation is too large
- then no dots will be actually typeset. The macro \cmd{\cftnodots} is
- a separation value that is `too large'. 
+\cmd{\raggedleft} \cmd{\raggedright} \cmd{\centering} \\
+\end{syntax} 
+\glossary(raggedleft)
+  {\cs{raggedleft}}%
+  {Declaration for text to be set raggedleft and flushright.}
+\glossary(raggedright)
+  {\cs{raggedright}}%
+  {Declaration for text to be set flushleft and raggedright.}
+\glossary(centering)%
+  {\cs{centering}}%
+  {Declaration for text to be set raggedleft and raggedright, 
+   with each line centered.}
+     The \cmd{\raggedleft} declaration can be used to have text typeset
+raggedleft and flushright, and similary the declaration \cmd{\raggedright}
+causes typesetting to be flushleft and raggedright. The declaration 
+\cmd{\centering} typesets raggedleft and raggedright with each line centered.
+Unlike the environments, no additional space is added. 
 
 \begin{syntax}
- \cmd{\setpnumwidth}\marg{length} \\
- \cmd{\setrmarg}\marg{length} \\
+\cmd{\raggedyright}\oarg{space} \\
+\lnc{\ragrparindent} \\
 \end{syntax}
- The page numbers are typeset in a fixed width box. The command
- \cmd{\setpnumwidth} can be used to change the width
- of the box (LaTeX 's internal \cmd{\@pnumwidth}). 
- The title texts will end before reaching the righthand margin\index{margin}.
- \cmd{\setrmarg} can be used to set this distance 
- (LaTeX 's internal \cmd{\@tocrmarg}).
- Note that the length used in \cmd{\setrmarg} should be greater
- than the length set in \cmd{\setpnumwidth}. These values should remain
- constant in any given document.
-
-    This manual requires more space for the page numbers than the default,
-so the following was set in the preamble\index{preamble}:
+\glossary(raggedyright)%
+  {\cs{raggedyright}\oarg{space}}%
+  {Version of \cs{raggedright} with \meta{space} providing control
+   over the amount of raggedness.}
+\glossary(ragrparindent)%
+  {\cs{ragrparindent}}%
+  {The \cs{parindent} for \cs{raggedyright} paragraphs.}
+When using \cmd{\raggedright} in narrow columns the right hand edge tends to
+be too ragged, and paragraphs are not indented. 
+Text set \cmd{\raggedyright} usually fills more of the available
+width and paragraphs are indented by \lnc{\ragrparindent}, which is initially
+set to \lnc{\parindent}. The optional \meta{space} argument, whose default
+is 2em, can be used to adjust the amount of raggedness. As examples:
 \begin{lcode}
-\setpnumwidth{2.55em}
-\setrmarg{3.55em}
+\raggedyright[0pt]   % typeset flushright 
+\raggedyright[1fil]  % same as \raggedright
+\raggedyright[0.5em] % less ragged than \raggedright
 \end{lcode}
 
+    Remember that \ltx\ typesets on a per-paragraph\index{paragraph!typeset as a unit}
+ basis, so that putting
+the sequence of \cmd{\centering}, \cmd{\raggedleft} declarations in the same
+paragraph\index{paragraph} will cause the entire paragraph to be typeset 
+raggedleft and 
+flushright --- the \cmd{\centering} declaration is not the one in effect 
+at the end of the paragraph.
+
+\section{Quotations}
+
+    LaTeX provides two environments that are typically used for typesetting
+quotations\index{quotation}.
 
 \begin{syntax}
-\lnc{\cftparskip} \\
+\senv{quote} text \eenv{quote} \\
+\senv{quotation} text \eenv{quotation} \\
 \end{syntax}
- Normally the \lnc{\parskip} in the \toc, etc., is zero. This may be changed
- by changing the length \lnc{\cftparskip}. Note that the current value
- of \lnc{\cftparskip} is used for the \toc, \lof{} and \lot, but you can change
- the value before calling \cmd{\tableofcontents} or \cmd{\listoffigures} or
- \cmd{\listoftables} if one or other of these should have different values
- (which is not a good idea).
+\glossary(quote)%
+  {\senv{quote}}%
+  {Contents set justified in a narrower measure, with zero \cs{parindent}.}
+\glossary(quotation)%
+  {\senv{quotation}}%
+  {Contents set justified in a narrower measure with normal \cs{parindent}.}
+
+     In both of these environments the text is set flushleft and flushright
+in a measure that is smaller than the normal textwidth. The only difference
+between the two environments is that paragraphs\index{paragraph!indentation} are not indented in the \Ie{quote}
+environment but normal paragraphing is used in the \Ie{quotation} environment.
 
+\section{Changing the textwidth}\label{sec:adjustwidth}
 
-    Again for convenience, in the following I will use |X| to stand for any
-of the following:
- \begin{itemize}
- \item |part| for |\part| titles
- \item |chapter| for |\chapter| titles
- \item |section| for |\section| titles
- \item |subsection| for |\subsection| titles
- \item |subsubsection| for |\subsubsection| titles
- \item |paragraph| for |\paragraph| titles
- \item |subparagraph| for |\subparagraph| titles
- \item |figure| for figure |\caption| titles
- \item |subfigure| for subfigure |\caption| titles
- \item |table| for table |\caption| titles
- \item |subtable| for subtable |\caption| titles
- \end{itemize}
+    The \Ie{quote} and \Ie{quotation} environments both locally change the 
+textwidth, or more precisely, they temporarily increase the left and right 
+margins\index{margin!left}\index{margin!right} by equal amounts. 
+Generally speaking it is not a 
+good idea to change the textwidth but sometimes it may be called for.
 
+    The commands and environment described below are similar to those
+in the \Lpack{chngpage} package~\cite{CHNGPAGE}, but do differ in some 
+respects.
 
 \begin{syntax}
-\cmd{\cftchapterbreak} \\
+\senv{adjustwidth}\marg{left}\marg{right} text \eenv{adjustwidth} \\
+\senv{adjustwidth*}\marg{left}\marg{right} text \eenv{adjustwidth*} \\
 \end{syntax}
-When \cmd{\l@chapter} starts to typeset a \cmd{\chapter} entry in the
-\toc{} the first thing it does is to call the macro \cmd{\cftchapterbreak}.
-This is defined as:
+\glossary(adjustwidth)%
+  {\senv{adjustwidth}\marg{left}\marg{right}}%
+  {Temporarily adds the lengths \marg{left} and \marg{right} to the left
+   and right margins.}
+\glossary(adjustwidth*)%
+  {\senv{adjustwidth*}\marg{left}\marg{right}}%
+  {A sophisticated form of \texttt{adjustwidth}. 
+   Temporarily adds the lengths \marg{left} and \marg{right} to the spine
+   and outer margins on odd (recto) pages, and on even (verso) pages adds
+   them to the outer and spine margins, respectively.}
+The \Ie{adjustwidth} environment temporarily adds the length \meta{left}
+to the lefthand margin\index{margin!left} and \meta{right} to the righthand 
+margin\index{margin!right}. That is, a positive length value increases the 
+margin\index{margin} and hence reduces the textwidth,
+and a negative value reduces the margin\index{margin} and increases the 
+textwidth. The Ie{quotation} environment is roughly equivalent to
 \begin{lcode}
-\newcommand{\cftchapterbreak}{\addpenalty{-\@highpenalty}}
+\begin{adjustwidth}{2.5em}{2.5em}
 \end{lcode}
-which encourages a page break before rather than after the entry. As usual,
-you can change \cmd{\cftchapterbreak} to do other things that you feel might
-be useful.
 
-\begin{syntax}
-\lnc{\cftbeforeXskip} \\
-\end{syntax}
- This length controls the vertical space before an entry. It can be changed
- by using \cmd{\setlength}. 
+    The starred version of the environment, \Ie{adjustwidth*}, is really only
+useful if the left and right margin\index{margin} adjustments are different. 
+The starred version checks the page number and if it is odd then adjusts 
+the left (spine) and right (outer) margins\index{margin} 
+by \meta{left} and \meta{right} respectively; if the page number is even 
+(a verso page) it adjusts the left (outer) and right (spine) 
+margins\index{margin} by \meta{right} and \meta{left} respectively.
 
 \begin{syntax}
-\lnc{\cftXindent} \\
+\cmd{\strictpagecheck} \cmd{\lazypagecheck} \\
 \end{syntax}
- This length controls the indentation of an entry from the left margin\index{margin} 
- (\textit{indent} in \fref{fig:ltoc}). It
- can be changed using \cmd{\setlength}. 
 
-\begin{syntax}
-\lnc{\cftXnumwidth} \\
-\end{syntax}
- This length controls the space allowed for typesetting title numbers 
- (\textit{numwidth} in \fref{fig:ltoc}). It can
- be changed using \cmd{\setlength}. Second and subsequent lines of a multiline
- title will be indented by this amount.
+Odd/even page checking may be either strict (\cmd{\strictpagecheck})
+or lazy (\cmd{\lazypagecheck}). Lazy checking works most of the time
+but if it fails at any point then the strict checking should be used.
 
- The remaining commands are related to the specifics of typesetting
- an entry.
- This is a simplified pseudo-code version for the typesetting of numbered 
- and unnumbered entries.
- \begin{lcode}
- {\cftXfont {\cftXpresnum SNUM\cftXaftersnum\hfil} \cftXaftersnumb TITLE}
-         {\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par
+    As an example, if a figure\index{figure} is wider than the textwidth 
+it will stick out into the righthand margin\index{margin!right}. It may be 
+desireable to have any wide figure\index{figure} stick out into the 
+outer margin\index{margin!outer} where there is usually more room than at
+the spine margin\index{margin!spine}. This can be accomplished by
+\begin{lcode}
+\begin{figure}
+\centering
+\strictpagecheck
+\begin{adjustwidth*}{0em}{-3em}
+% the illustration
+\caption{...}
+\end{adjustwidth*}
+\end{figure}
+\end{lcode}
 
- {\cftXfont TITLE}{\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par
- \end{lcode}
- where |SNUM| is the section number, |TITLE| is the title text and |PAGE| 
- is the page number. In the numbered entry the pseudo-code \\
- |{\cftXpresnum SNUM\cftaftersnum\hfil}| \\
- is typeset within a box of width \lnc{\cftXnumwidth}.
+    A real example in this manual is \tref{tab:fpp} on \pref{tab:fpp},
+which is wider than the typeblock\index{typeblock}. In that case I 
+just centered it by using \Ie{adjustwidth} to decrease each 
+margin\index{margin} equally. In brief, like
+\begin{lcode}
+\begin{table}
+\begin{adjustwidth}{-1cm}{-1cm}
+\centering
+...
+\end{adjustwidth}
+\end{table}
+\end{lcode}
 
-\begin{syntax}
-\cmd{\cftXfont} \\
-\end{syntax}
- This controls the appearance of the title (and its preceding number, 
- if any). It may be changed using \cmd{\renewcommand}.
+    Note that the \Ie{adjustwidth} environment applies to complete paragraphs;
+you can't change the width of part of a paragraph\index{paragraph} 
+except for hanging paragraphs\index{paragraph!hanging} or more esoterically 
+via \cmd{\parshape}. Further, if the adjusted paragraph crosses a
+page boundary the margin\index{margin} changes are constant; a paragraph 
+that is, say, wider at the right on the first page will also be wider at 
+the right as it continues onto the following page.
 
-\begin{syntax}
-\cmd{\cftXpresnum} \cmd{\cftXaftersnum} \cmd{\cftXaftersnumb} \\
-\end{syntax}
- The section number is typeset within a box of width \lnc{\cftXnumwidth}.
- Within the box the macro \cmd{\cftXpresnum} is first called, then the
- number is typeset, and the \cmd{\cftXaftersnum}
- macro is called after the number is typeset. The last command
- within the box is \cmd{\hfil} to make the box contents flushleft.
- After the box is
- typeset the \cmd{\cftXaftersnumb} macro is called before typesetting
- the title text. All three of these can be changed by \cmd{\renewcommand}.
- By default they are defined to do nothing.
+    The \Ie{center} environment horizontally centers its contents
+with respect to the typeblock\index{typeblock}. 
+Sometimes you may wish to horizontally center some text with respect
+to the physical page, for example when typesetting a 
+colophon\index{colophon} which may look odd centered with respect
+to the (unseen) typeblock\index{typeblock}.
+
+    The calculation of the necessary changes to the spine and \foredge{}
+margins\index{margin} is simple. Using the same symbols as earlier in 
+\S\ref{sec:typeblock2} ($P_{w}$ and $B_{w}$ are the width of the trimmed 
+page and the typeblock\index{typeblock}, respectively;
+$S$ and $E$ are the spine and \foredge{} margins\index{margin}, 
+respectively) then the amount $M$ to be added to the spine 
+margin\index{margin} and subtracted from the
+\foredge{} margin\index{margin} is calculated as:
+\begin{displaymath}
+ M = 1/2(P_{w} - B_{w}) - S
+\end{displaymath}
 
+For example, assume that the \lnc{\textwidth} is 5 inches and the 
+\lnc{\spinemargin} is 1 inch. On US letterpaper\index{paper!size!letterpaper} 
+(\lnc{\paperwidth} is 8.5 inches) the \foredge{} margin\index{margin} is 
+then 2.5 inches, and 0.75 inches\footnote{On A4\index{paper!size!A4}
+paper the result would be different.}  must be added to the spine 
+margin\index{margin} and subtracted from the \foredge{} to center the 
+typeblock\index{typeblock}. 
+The \Ie{adjustwidth} environment can be used to make the (temporary) change.
+\begin{lcode}
+\begin{adjustwidth*}{0.75in}{-0.75in} ...
+\end{lcode}
 
 \begin{syntax}
-\cmd{\partnumberline}\marg{num} \\
-\cmd{\chapternumberline}\marg{num} \\
+\cmd{\calccentering}\marg{length} \\
 \end{syntax}
-In the \toc, the macros \cmd{\partnumberline} and \cmd{\chapternumberline}
-are responsible respectively for typesetting the \cmd{\part} and \cmd{\chapter}
-numbers. Internally they use \cmd{\cftXpresnum}, \cmd{\cftXaftersnum}
-and \cmd{\cftaftersnumb} as above. If you do not want, say, 
-the \cmd{\chapter} number to appear you
-can do:
+\glossary(calccentering)%
+  {\cs{calccentering}\marg{length}}%
+  {Sets the \meta{length} command to the value to add/subtract from margins
+   to center text on the physical page.}
+ If you don't want to do the above calculations by hand, 
+\cmd{\calccentering} will do it for you. 
+The \meta{length}
+argument must be the name of a pre-existing length command, 
+including the backslash. After calling 
+\cmd{\calccentering}, \meta{length} is the amount to be added to the
+spine margin\index{margin} and subtracted from the foredge margin\index{margin} to center the typeblock\index{typeblock}.
+An example usage is
 \begin{lcode}
-\renewcommand{\chapternumberline}[1]{}
+\calccentering{\mylength}
+\begin{adjustwidth*}{\mylength}{-\mylength}
+text horizontally centered on the physical page
+\end{adjustwidth*}
 \end{lcode}
 
-\Note{}  Because the \Lpack{hyperref} package~\cite{HYPERREF} 
-does not understand
-the \cmd{\partnumberline} and \cmd{\chapternumberline} commands,
-if you use the \Lpack{hyperref} package you will also have to use
-the \Lpack{memhfixc} package, which comes with memoir.
+   You do not necessarily have to define a new length for the purposes
+of \cmd{\calccentering}. Any existing length will do, such as
+\lnc{\unitlength}, provided it will be otherwise unused between performing
+the calculation and changing the margins\index{margin} (and that you can, 
+if necessary reset it to its original value --- the default value for 
+\lnc{\unitlength} is 1pt). 
+
+\section{Lists}
 
+\index{list|(}
 
+    Standard \ltx\ provides four kinds of lists. There is a general \Ie{list}
+environment which you can use to define your own particular kind of list,
+and the \Ie{description}, \Ie{itemize} and \Ie{enumerate} lists (which are 
+internally defined in terms of the general \Ie{list} 
+environment\footnote{The \Ie{quote} and \Ie{quotation} environments are also
+defined in terms of the general \Ie{list} environment. You may be 
+surprised where it crops up.}).
 
-\begin{syntax}
-\cmd{\cftXleader} \\
-\cmd{\cftXdotsep} \\
-\end{syntax}
- \cmd{\cftXleader} defines the leader between the title and the page number;
- it can be changed by \cmd{\renewcommand}.
- The spacing between any dots in the leader is controlled by \cmd{\cftXdotsep} 
- (\cmd{\@dotsep} in \fref{fig:ltoc}).
- It can be changed by \cmd{\renewcommand} and its value must be either a
- number (e.g., 6.6 or \cmd{\cftdotsep}) or \cmd{\cftnodots} (to disable the dots).
- The spacing
- is in terms of \emph{math units} where there are 18mu to 1em.
+    This class provides the normal \Ie{description} list but the \Ie{itemize} 
+and \Ie{enumerate} lists are extended versions of the normal ones.
 
 \begin{syntax}
-\cmd{\cftXpagefont} \\
-\end{syntax}
- This defines the font to be used for typesetting the page number. It
- can be changed by \cmd{\renewcommand}.
+\senv{description} \cmd{\item}\oarg{label} ... \eenv{description} \\
+\cmd{\descriptionlabel}\meta{label} \\
+\end{syntax}
+\glossary(description)%
+  {\senv{description}}%
+  {A list of descriptions of \cs{item}s.}
+\glossary(item)%
+  {\cs{item}\oarg{label}}%
+  {Intoduces a new element in a list. The effect of \meta{label} depends
+   on the particular list form.}
+\glossary(descriptionlabel)%
+  {\cs{descriptionlabel}\marg{label}}%
+  {Specifies the format of the \meta{label} of an \cs{item} in a 
+   \Pe{description} environment.}
+In a \Ie{description} list an \cs{item}'s \meta{label} is typeset by
+\cmd{descriptionlabel}. The default definition is
+\begin{lcode}
+\newcommand*{\descriptionlabel}[1]{\hspace\labelsep
+                                   \normalfont\bfseries #1}
+\end{lcode}
+which gives a bold label. To have, for example, a sans label instead, do
+\begin{lcode}
+\renewcommand*{\descriptionlabel}[1]{\hspace\labelsep
+                                     \normalfont\sffamily #1}
+\end{lcode}
 
-\begin{syntax}
-\cmd{\cftXafterpnum} \\
-\end{syntax}
- This macro is called after the page number has been typeset. Its default
- is to do nothing. It can be changed by \cmd{\renewcommand}.
+    The \Ie{itemize} and \Ie{enumerate} environments below are based on
+the \Lpack{enumerate} package~\cite{ENUMERATE}.
 
 \begin{syntax}
-\cmd{\cftsetindents}\marg{entry}\marg{indent}\marg{numwidth} \\
+\senv{itemize}\oarg{marker} \cmd{\item} ... \eenv{itemize} \\
 \end{syntax}
- The command 
- \cmd{\cftsetindents} sets the \meta{entry}'s \textit{indent} to the 
-length \meta{indent} and its
- \textit{numwidth} to the length \meta{numwidth}. The \meta{entry} argument
- is the name of one of the standard entries (e.g., |subsection|) or the 
-name of entry that has been defined within the document.
- For example 
+\glossary(itemize)%
+  {\senv{itemize}\oarg{marker}}%
+  {An unordered list of \cs{item}s. If given, the \meta{marker} overrides the
+   default marker for the elements.}
+The normal markers for \cmd{\item}s in an \Ie{itemize} list are: 
+\begin{enumerate}
+\item bullet (\textbullet \cmd{\textbullet}), 
+\item bold en-dash ({\normalfont\bfseries \textendash} \cmd{\bfseries}\cmd{\textendash}),
+\item centered asterisk (\textasteriskcentered \cmd{\textasteriskcentered}), and
+\item centered dot (\textperiodcentered \cmd{\textperiodcentered}).
+\end{enumerate}
+The optional \meta{marker} argument can be used to specify the marker for the
+list items in a particular list. If for some reason you wanted to use a 
+pilcrow\index{pilcrow (\P)} symbol as the item marker for a particular list 
+you could do
 \begin{lcode}
- \cftsetindents{figure}{0em}{1.5em}
+\begin{itemize}[\P]
+\item ...
+...
 \end{lcode}
- will make figure\index{figure} entries left justified.
 
-    This manual requires more space for section numbers in the \toc{} than
-the default (which allows for three digits). Consequently the preamble\index{preamble}
-contains the following:
+
+
+\begin{syntax}
+\senv{enumerate}\oarg{style} \cmd{\item} ... \eenv{enumerate} \\
+\end{syntax}
+\glossary(enumerate)%
+  {\senv{enumerate}\oarg{style}}%
+  {An ordered list of \cs{item}s. If \meta{style} is given it overrides the
+   default scheme for indicating the item order.}
+The normal markers for, say, the third item in an \Ie{enumerate} list are: 
+3., c., iii., and C. The optional \meta{style} argument can be used to
+specify the style used to typeset the item counter. An occurrence of
+one of the special characters \texttt{A}, \texttt{a}, \texttt{I}, \texttt{i}
+or \texttt{1} in \meta{style} specifies that the counter will be typeset using
+uppercase letters (\texttt{A}), lowercase letters (\texttt{a}), 
+uppercase Roman numerals (\texttt{I}), lowercase Roman numerals (\texttt{i}), 
+or arabic numerals (\texttt{1}). These characters
+may be surrounded by any LaTeX commands or characters, but if so the special
+characters must be put inside braces (e.g., \verb?{a}?) if they are to be 
+considered as ordinary characters instead of as special styling characters.
+ For example, to have the
+counter typeset as a lowercase Roman numeral followed by a single parenthesis
 \begin{lcode}
-\cftsetindents{section}{1.5em}{3.0em}
-\cftsetindents{subsection}{4.5em}{3.9em}
-\cftsetindents{subsubsection}{8.4em}{4.8em}
-\cftsetindents{paragraph}{10.7em}{5.7em}
-\cftsetindents{subparagraph}{12.7em}{6.7em}
+\begin{enumerate}[i)] 
+...
 \end{lcode}
-Note that changing the indents at one level implies that any lower level
-indents should be changed as well.
 
+\index{list!tight|(}
 
- Various effects can be achieved by changing the definitions of \cmd{\cftXfont},
- \cmd{\cftXaftersnum}, \cmd{\cftXaftersnumb}, \cmd{\cftXleader} and 
-\cmd{\cftXafterpnum}, 
- either singly or in combination.
- For the sake of some examples, assume that we have the following initial
- definitions
- \begin{lcode}
- \newcommand{\cftXfont}{}
- \newcommand{\cftXaftersnum}{}
- \newcommand{\cftXaftersnumb}{}
- \newcommand{\cftXleader}{\cftdotfill{\cftXdotsep}}
- \newcommand{\cftXdotsep}{\cftdotsep}
- \newcommand{\cftXpagefont}{}
- \newcommand{\cftXafterpnum}{}
- \end{lcode}
- (Note that the same font should be used for the title, leader and page 
- number to provide a coherent appearance).
+\begin{syntax}
+\cmd{\tightlists} \cmd{\defaultlists} \\
+\cmd{\firmlists} \cmd{\firmlists*} \\
+\end{syntax}
+\glossary(tightlists)%
+  {\cs{tightlists}}%
+  {Declaration removing extra vertical space from \texttt{list}-based 
+   environments.}
+\glossary(defaultlists)%
+  {\cs{defaultlists}}%
+  {Declaration specifying the default vertical spacing \texttt{list}-based 
+   environments.}
+\glossary(firmlists)%
+  {\cs{firmlists}}%
+  {Declaration for some vertical spacing in \texttt{list}-based
+   environments. There may be some extra space before and after the 
+   environments.}
+\glossary(firmlists*)%
+  {\cs{firmlists*}}%
+  {The same as \cs{firmlists} except that there is no space before and after
+   the environments.}
+
+
+The normal LaTeX \Ie{description}, \Ie{itemize} and \Ie{enumerate} lists 
+have an open
+look about them when they are typeset as there is significant vertical space
+between the items in the lists. After the declaration \cmd{\tightlists} is
+issued, the extra vertical spacing between the list items is deleted. The open
+list appearance is used after the \cmd{\defaultlists} declaration is issued.
+These declarations, if used, must come \emph{before} the relevant list 
+environment(s). The class initially sets \cmd{\defaultlists}. This manual,
+though, uses \cmd{\tightlists}. The spacing following the \cmd{\firmlists} 
+declaration is intermediate between \cmd{\defaultlists} and \cmd{\tightlists}.
+The starred version, \cmd{\firmlists*}, allows sligthly less space around 
+the lists when they are preceded by a blank line than does the 
+unstarred \cmd{\firmlists}.
 
- \begin{itemize}
- \item To eliminate the dots in the leader:
- \begin{lcode}
- \renewcommand{\cftXdotsep}{\cftnodots}
- \end{lcode}
+\begin{syntax}
+\cmd{\firmlist} \cmd{\tightlist} \\
+\end{syntax}
+\glossary(firmlist)
+  {\cs{firmlist}}%
+  {In a standard list, sets the vertical spacing intermediate between
+  the default and \cs{tightlist}(s).}
+\glossary(tightlist)
+  {\cs{tightlist}}%
+  {In a standard list, removes extra vertical spacing.}
+The command \cmd{\firmlist} or \cmd{\tightlist} can be used immediately
+after the start of a list environment to reduce the vertical space within
+that list. The \cmd{\tightlist} removes all the spaces while the
+\cmd{\firmlist} produces a list that still has some space but not as much
+as in an ordinary list.
 
- \item To put something (e.g., a name) before the title (number):
- \begin{lcode}
- \renewcommand{\cftXpresnum}{SOMETHING }
- \end{lcode}
+\index{list!tight|)}
 
- \item To add a colon after the section number:
- \begin{lcode}
- \renewcommand{\cftXaftersnum}{:}
- \end{lcode}
-
- \item To put something before the title number, add a colon after the
-    the title number, set everything in bold font,
- and start the title text on the following line:
- \begin{lcode}
- \renewcommand{\cftXfont}{\bfseries}
- \renewcommand{\cftXleader}{\bfseries\cftdotfill{\cftXdotsep}}
- \renewcommand{\cftXpagefont}{\bfseries}
- \renewcommand{\cftXpresnum}{SOMETHING }
- \renewcommand{\cftXaftersnum}{:}
- \renewcommand{\cftXaftersnumb}{\\}
- \end{lcode}
-
-    If you are adding text in the number box in addition to the number,
- then you will probably have to increase the width of the box so that
- multiline titles have a neat vertical alignment; changing box widths
- usually implies that the indents will require modification as 
- well. One possible method of adjusting the box width for the above example
- is:
- \begin{lcode}
- \newlength{\mylen}                  % a "scratch" length
- \settowidth{\mylen}{\bfseries\cftXpresnum\cftXaftersnum}
- \addtolength{\cftXnumwidth}{\mylen} % add the extra space
- \end{lcode} 
 
- \item To set the section numbers flushright:
- \begin{lcode}
- \setlength{\mylen}{0.5em}    % extra space at end of number
- \renewcommand{\cftXpresnum}{\hfill} % note the double `l'
- \renewcommand{\cftXaftersnum}{\hspace*{\mylen}}
- \addtolength{\cftXnumwidth}{\mylen}
- \end{lcode}
- In the above, the added initial \cmd{\hfill} in the box overrides the
- final \cmd{\hfil} in the box, thus shifting everything to the right hand
- end of the box. The extra space is so that the number is not typeset
- immediately at the left of the title text.
-
- \item To set the entry ragged left (but this only looks good for single
-       line titles):
- \begin{lcode}
- \renewcommand{\cftXfont}{\hfill\bfseries}
- \renewcommand{\cftXleader}{}
- \end{lcode}
+\begin{figure}
+\centering
+\drawparameterstrue
+\drawlist
+\caption{The layout parameters for general lists}\label{fig:listlay}
+\end{figure}
 
- \item To set the page number immediately after the entry text instead of at
-       the righthand margin\index{margin}:
- \begin{lcode}
- \renewcommand{\cftXleader}{}
- \renewcommand{\cftXafterpnum}{\cftparfillskip}
- \end{lcode}
- \end{itemize}
+\index{list!new|(}
 
 \begin{syntax}
-\cmd{\cftparfillskip} \\
+\senv{list}\marg{default-label}\marg{code} items \eenv{list} \\
 \end{syntax}
- By default the \cmd{\parfillskip} value is locally set to fill up the last
- line of a paragraph\index{paragraph}. Just changing \cmd{\cftXleader} puts horrible interword
- spaces into the last line of the title. The \cmd{\cftparfillskip} 
- command  is provided just so that the above effect can be achieved.
+\glossary(list)%
+  {\senv{list}\marg{default-label}\marg{code}}%
+  {The general \Pe{list} environment. \meta{default-label} is code that is
+   used for an \cs{item} with no \meta{label} and \meta{code} is used to
+   specify the list layout parameters.}
+\ltx's list environments are defined in terms of a general \Ie{list}
+environment; some other environments, such as the \Ie{quote}, \Ie{quotation}
+and \Ie{adjustwidth} are also defined in terms of a \Ie{list}.
+Figure~\ref{fig:listlay} shows the parameters controlling the layout
+of the \Ie{list} environment.
 
-\begin{syntax}
-\cmd{\cftpagenumbersoff}\marg{entry} \\
-\cmd{\cftpagenumberson}\marg{entry} \\
-\end{syntax}
- The command \cmd{\cftpagenumbersoff} will
- eliminate the page numbers for \meta{entry} in the listing, where
- \meta{entry} is the name of one of the standard
- kinds of entries (e.g., |subsection|, or |figure|) or the name of a
- new entry defined in the document.
+    The \Ie{list} environment takes two arguments. The \meta{default-label}
+argument is the code that should be used when the \cmd{\item} macro is
+used without its optional \meta{label} argument. For lists like \Ie{enumerate}
+this is specified but often it is left empty, such as for the \Ie{adjustwidth}
+environment.
 
-    The command \cmd{\cftpagenumberson} reverses
- the effect of a corresponding \cmd{\cftpagenumbersoff} for \meta{entry}.
- 
- One question that appeared on the \file{comp.text.tex} newsgroup asked
- how to get the titles of Appendices\index{appendix} list in the \toc{} \emph{without} 
- page numbers. Here is a simple way of doing it.
- \begin{lcode}
- ...
- \appendix
- \addtocontents{toc}{\cftpagenumbersoff{chapter}}
- \chapter{First appendix}
- \end{lcode}
- If there are other chapter type headings\index{heading!chapter} to go into the \toc{} after the 
- appendices\index{appendix} (perhaps a bibliography\index{bibliography} or an index\index{index}), 
- then it will be necessary to do a similar 
- \begin{lcode}
- \addtocontents{toc}{\cftpagenumberson{chapter}}
- \end{lcode}
- after the appendices\index{appendix} to restore the page numbering in the \toc.
+    The \meta{code} argument is typically used for setting the particular
+values of the list layout parameters. When defining your own types of lists
+it is advisable to set each of the parameters unless you know that the default
+values are suitable for your purposes. These parameters can all be modified
+with either the \cmd{\setlength} or \cmd{\addtolength} commands.
 
-  At this point, I leave it up to your ingenuity as to other effects that
- you can achieve. However, if you come up with further examples, let me
- know for possible inclusion in a later version of this document.
+    As an example, here is the specification for a description-like list
+that uses an italic rather than bold font for the items, and is somewhat
+tighter than the normal \Ie{description} list.
 
- \section{New list of\ldots{} and entries}
+\begin{lcode}
+%%%%% An italic and tighter description environment
+\newcommand{\itlabel}[1]{\hspace\labelsep\normalfont\itshape #1}
+\newenvironment{itdesc}{%
+  \list{}{%
+    \setlength{\labelsep}{0.5em}
+    \setlength{\itemindent}{0pt}
+    \setlength{\leftmargin}{\parindent} 
+    \setlength{\labelwidth}{\leftmargin}
+    \addtolength{\labelwidth}{-\labelsep}
+    \setlength{\listparindent}{\parindent}
+    \setlength{\parsep}{\parskip}
+    \setlength{\itemsep}{0.5\onelineskip}
+    \let\makelabel\itlabel}}{\endlist}
+\end{lcode}
 
-\index{list!new list of|(}
+    This gets used like any other list:
+\begin{lcode}
+\begin{itdesc}
+\item[label] ....
+\end{itdesc}
+\end{lcode}
 
- \begin{syntax}
-\cmd{\newlistof}\marg{listofcom}\marg{ext}\marg{listofname} \\
-\end{syntax}
- The command \cmd{\newlistof} 
- creates a new \listofx, and assorted commands to go along with it.
-  The first argument, \meta{listofcom} is used to define a new
- command called |\listofcom| which can then be used like |\listoffigures|
-to typeset the \listofx. The \meta{ext} argument is the file extension to
-be used for the new listing. The last argument, \meta{listofname} is
-the title for the \listofx. Unstarred and starred versions of
-|\listofcom| are created. The unstarred version, |\listofcom|, will add
-\meta{listofname} to the \toc, while the starred version, |\listofcom*|,
-makes no entry in the \toc.
+Here is another kind of list called \Ie{symbols} that might be used
+for a list of symbols or other similar kind of listing.
+\begin{lcode}
+% Symbol list
+\newenvironment{symbols}%
+               {\list{}% empty label
+                            {\setlength{\topsep}{\baselineskip}
+                             \setlength{\partopsep}{0pt}
+                             \setlength{\itemsep}{0.5\baselineskip}
+                             \setlength{\parsep}{0pt}
+                             \setlength{\leftmargin}{2em}
+                             \setlength{\rightmargin}{0em}
+                             \setlength{\listparindent}{1em}
+                             \setlength{\itemindent}{0em}
+                             \setlength{\labelwidth}{0em}
+                             \setlength{\labelsep}{2em}}}%
+               {\endlist}
+\newcommand{\symb}[1]{\item[#1]\mbox{}\\\nopagebreak}
+\end{lcode}
+In this case it gets used like this
+\begin{lcode}
+\begin{symbols}
+\symb{SYMBOL 1} definition
+\symb{SYMBOL 2} ...
+\end{symbols}
+\end{lcode}
 
- As an example:
- \begin{lcode}
- \newcommand{\listanswername}{List of Answers}
- \newlistof{listofanswers}{ans}{\listanswername}
- \end{lcode}
- will create a new \cmd{\listofanswers} commmand that can be used
-to typeset a listing of answers under the
-title \cmd{\listanswername}, where the answer titles are in a \file{.ans}
-file. 
-   It is up to the author of the document to specify the `answer' code
-for the answers in the document. For example:
- \begin{lcode}
- \newcounter{answer}[chapter]
- \renewcommand{\theanswer}{\thechapter.\arabic{answer}}
- \newcommand{\answer}[1]{
-   \refstepcounter{answer}
-   \par\noindent\textbf{Answer \theanswer. #1}
-   \addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par}
- \end{lcode}
- which, when used like: \\ 
- |\answer{Hard} The \ldots|  \\
- will print as:
-\begin{syntax}
- \textbf{Answer 1. Hard} \\
- \hspace*{2em} The \ldots \\
-\end{syntax}
+    In the code for the \Pe{symbols} list I used the command forms (i.e.,
+\cmd{\list} and \cmd{\endlist}) for specifying the start and end of a list.
+It is a matter of taste whether you use the command or \verb?\begin{...}?
+and \verb?\end{...}? forms, but the latter does make it more obvious that
+an environment is being dealt with.
 
-    As mentioned above, the \cmd{\newlistof} command creates several 
-new commands in addition to |\listofcom|, most of which you should now be 
-familiar with. For convenience,
- assume that |\newlistof{...}{Z}{...}| has been issued so that
- |Z| is the new file extension and corresponds to the |Z| in
- \S\ref{sec:titles}. Then in addition to |\listofcom| the following 
-new commands will be made available.
+\index{list!new|)}
 
- The four commands, |\Zmark|, 
- |\Zheadstart|, 
- |\printZtitle|, and
- |\afterZtitle|, 
-are analagous to the commands of the same names
-described in \S\ref{sec:titles} (internally the class uses
-the \cmd{\newlistof} macro to define the \toc, \lof{} and \lot). 
-In particular the default definition of |\Zmark| is equivalent to:
+    Several \ltx\ environments are defined in terms of a very simple list,
+called a \Ie{trivlist}. Such a list has little internal structure
+but like the \Ie{list} environment the vertical space before and after
+a \Ie{trivlist} (or any list based on it) is set by \lnc{\topsep} and
+\lnc{\partopsep}, as shown in \fref{fig:listlay}.
+
+\begin{syntax}
+\cmd{\zerotrivseps} \cmd{\savetrivseps} \cmd{\restoretrivseps} \\
+\end{syntax}
+\glossary(zerotrivseps)%
+  {\cs{zerotrivseps}}%
+  {Eliminate space before and after a \Pe{trivlist}.}
+\glossary(savetrivseps)%
+  {\cs{savetrivseps}}%
+  {Stores the current \cs{topsep} and \cs{partopsep} for \Pe{trivlist}s.}
+\glossary(restoretrivseps)%
+  {\cs{restoretrivseps}}%
+  {Sets the current \cs{topsep} and \cs{partopsep} to the values saved
+   by \cs{savetrivseps}.}
+The \Ie{center} environment is one of several that is based on
+a \Ie{trivlist}, and so has space before and after it. If you don't want this
+the \cmd{\zerotrivseps} declaration eliminates those spaces. You can
+think of it as being defined as:
 \begin{lcode}
-\newcommand{\Zmark}{\@mkboth{listofname}{listofname}}
+\newcommand*{\zerotrivseps}{%
+  \setlength{\topsep}{0pt}%
+  \setlength{\partopsep}{0pt}}
 \end{lcode}
-However, this may well be altered by the particular \cmd{\pagestyle} in
-use.
+Before doing this, though, you might consider calling \cmd{\savetrivseps} 
+which stores the current values of \lnc{\topsep} and \lnc{\partopsep};
+it is initially defined to store the default values.
+The command \cmd{\restoretrivseps} sets the current values of these
+lengths to the ones saved by \cmd{\savetrivseps}.
+
+\begin{egresult}[Changing space before and after lists]{eg:trivseps}
+\restoretrivseps%% need this because egresult env reduces the trivseps
+This example shows that the space around the \topsep=0.5\onelineskip
+\begin{center}
+CENTER AND OTHER LIST ENVIRONMENTS
+\end{center}
+can be minimised by using the \zerotrivseps
+\begin{center}
+\verb?\zerotrivseps? declaration.
+\end{center}
+The normal spacing can be restored by using the \restoretrivseps \topsep=0.5\onelineskip
+\begin{center}
+\verb?\restoretrivseps? command.
+\end{center}
+An alternative is to use the \verb?\centering? macro.
+\end{egresult}
+
+
+\begin{egsource}{eg:trivseps}
+This example shows that the space around the
+\begin{center}
+CENTER AND OTHER LIST ENVIRONMENTS
+\end{center}
+can be minimised by using the \zerotrivseps
+\begin{center}
+\verb?\zerotrivseps? declaration.
+\end{center}
+The normal spacing can be restored by using the \restoretrivseps
+\begin{center}
+\verb?\restoretrivseps? command.
+\end{center}
+An alternative is to use the \verb?\centering? macro.
+\end{egsource}
+
+\enlargethispage{\onelineskip}
+Among the environments defined in terms of a \Ie{trivlist} are:
+\Ie{flushleft},
+\Ie{center},
+\Ie{flushright},
+\Ie{verbatim}, and others.
+The example (\ref{eg:trivseps}) shows how it is possible to change the
+spacing around the \Ie{center} environment, but it applies equally to the 
+other environments.
+
+\index{list|)}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\chapterstyle{section}
+%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\chapter{Tops and tails} \label{chap:topsandtails}
+\chapter{Contents lists} \label{chap:toc}
+
+This chapter describes how to change the appearance of the Table of Contents
+(\toc) and similar lists like the List of Figures (\lof). In the standard
+classes the typographic design of these is virtually fixed as it is buried
+within the class definitions.
+
+    As well as allowing these lists to appear multiple times in a
+documant, the \Mname\ class gives handles to easily manipulate the design 
+elements. The class also provides means for you to define your own new kinds of
+`\listofx'. 
+
+    The functionality described is equivalent to the combination
+of the \Lpack{tocloft} and \Lpack{tocbibind} 
+packages~\cite{TOCLOFT,TOCBIBIND}.
 
 \begin{syntax}
-|Zdepth| \\
+\cmd{\tableofcontents} \cmd{\tableofcontents*} \\
+\cmd{\listoffigures} \cmd{\listoffigures*} \\
+\cmd{\listoftables} \cmd{\listoftables*} \\
 \end{syntax}
- The counter |Zdepth| is analagous to the standard
- \Icn{tocdepth} counter, in that it specifies that entries
- in the new listing should not be typeset if their numbering level 
- is greater
- than |Zdepth|. The default definition is equivalent to
-\begin{lcode}
-\setcounter{Zdepth}{1}
-\end{lcode}
+The commands \cmd{\tableofcontents}, \cmd{\listoffigures} and 
+\cmd{\listoftables} typeset, repectively, the Table of Contents (\toc),
+List of Figures (\lof) and List of Tables (\lot). In \Mname, unlike the 
+standard classes, the unstarred versions add their respective titles to 
+the \toc. The starred versions act like the standard classes' unstarred 
+versions as they don't add their titles to the \toc.
+
+    This chapter explains the inner workings behind the \toc, and friends,
+how to change their appearance and the apperance of the entries, and how to
+create new \listofx. If you don't need any of these then you can
+skip the remainder of the chapter.
+
+ \section{General \prtoc\ methods}
+
+    To provide some background information this is a general description
+of how the standard \ltx\ classes process a Table of Contents (\toc).
+As the processing of List of Figures (\lof) and List of Tables (\lot) is 
+similar I will just discuss the \toc. You may wish to skip this section
+on your first reading.
+
+    The basic process is that each sectioning command writes out information
+about itself --- its number, title, and page --- to the \pixfile{toc} file.
+The \cmd{\tableofcontents} command reads this file and typesets the contents.
+
+    First of all, remember that each sectional division has an associated
+level as listed in in \tref{tab:seclevels} on 
+\pref{tab:seclevels}. \ltx\ will not typeset an entry in the \toc{}
+unless the value of the \Icn{tocdepth} counter is equal to or greater
+than the level of the entry. The value of the \Icn{tocdepth} counter
+can be changed by using \cmd{\setcounter} or \cmd{\settocdepth}.
 
 \begin{syntax}
-\cmd{\insertchapterspace} \\
-\cmd{\addtodef}\marg{macro}\marg{prepend}\marg{append} \\
+\cmd{\addcontentsline}\marg{file}\marg{kind}\marg{text} \\
 \end{syntax}
-Remember that the \cmd{\chapter} command uses \cmd{\insertchapterspace}
-to insert vertical spaces into the \lof{} and \lot. If you want similar
-spaces added to your new listing then you have to modify
-\cmd{\insertchapterspace}. The easiest way to do this is via
-the \cmd{\addtodef} macro, like:
-\begin{lcode}
-\addtodef{\insertchapterspaces}{}%
-  {\addtocontents{ans}{\protect\addvspace{10pt}}}
-\end{lcode}
-The \cmd{\addtodef} macro is described later in \S\ref{sec:addtodef}.
-
-    The other part of creating a new \listofx, is to specify the 
-formatting of the entries, i.e., define an appropriate |\l@kind| macro.
+\glossary(addcontentsline)%
+  {\cs{addcontentsline}\marg{file}\marg{kind}\marg{text}}%
+  {Writes heading/caption data to the \meta{file} in the form of
+   the \cs{contentsline} macro.}
+    \ltx\ generates a \ixfile{toc} file if the document contains a
+ \cmd{\tableofcontents} command. The sectioning 
+ commands\footnote{For figures and tables it is the 
+ \cmd{\caption} command
+ that populates the \ixfile{lof} and \ixfile{lot} files.}
+ put entries into the \ixfile{toc} file by calling the 
+ \cmd{\addcontentsline} 
+ command, where \meta{file} is the file extension (e.g., \texttt{toc}),
+ \meta{kind} is the kind of entry (e.g., \texttt{section} or \texttt{subsection}),
+ and \meta{text} is the (numbered) title text. In the cases where
+ there is a number, the \meta{title} argument is given in the
+ form \verb?{\numberline{number}title text}?.
 
 \begin{syntax}
-\cmd{\newlistentry}\oarg{within}\marg{cntr}\marg{ext}\marg{level-1} \\
+\cmd{\contentsline}\marg{kind}\marg{text}\marg{page} \\
 \end{syntax}
- The command \cmd{\newlistentry} creates the commands necessary for
-typesetting an entry in a \listofx.
- The first required argument, \meta{cntr} is used to define a new
- counter called |cntr|, unless |cntr| is already defined. 
-The optional \meta{within} argument can
- be used so that |cntr| gets reset to one every time the counter called 
- |within| is changed. That is, the first two arguments when |cntr| is not
-already defined, are equivalent to
- calling \cmd{\newcounter}\marg{cntr}\oarg{within}. If |cntr| is already
-defined, \cmd{\newcounter} is not called. |cntr| is used for the number that
-goes along with the title of the entry.
-
- The second required argument, \meta{ext}, is the file extension for the
- entry listing.
- The last argument, \meta{level-1}, is a number specifying the numbering
- level minus one, 
- of the entry in a listing.
-
+\glossary(contentsline)%
+  {\cs{contentsline}\marg{kind}\marg{text}\marg{page}}%
+  {An entry in a `\listofx' file for a \meta{kind} entry, with
+  \meta{text} being the title which was on \meta{page}.}
+     The \cmd{\addcontentsline} command writes an entry to the given file
+ in the form: \\
+ \cmd{\contentsline}\marg{kind}\marg{text}\marg{page} \\
+ where \meta{page} is the page number.
 
-    Calling \cmd{\newlistentry} creates several new commands. Assuming that
- it is called as |\newlistentry[within]{X}{Z}{N}|, where |X| and |Z| are
- similar to the
- previous uses of them (e.g., |Z| is the file extension), 
-and |N| is an integer number, then the following
- commands are made available.
-
-
-  The set of commands |\cftbeforeXskip|, 
- |\cftXfont|, 
- |\cftXpresnum|, 
- |\cftXaftersnum|, 
- |\cftXaftersnumb|, 
- |\cftXleader|, 
- |\cftXdotsep|, 
- |\cftXpagefont|, and
- |\cftXafterpnum|,
-  are analagous to the commands of the same names
- described in \S\ref{sec:entries}. Their default values are also
- as described earlier.
+    For example, if \verb?\section{Head text}? was typeset as 
+`\textbf{3.4 Head text}' on page 27, then there would be the following
+entry in the \ixfile{toc} file:
+\begin{lcode}
+\contentsline{section}{\numberline{3.4} Head text}{27}
+\end{lcode}
+Extracts from \pixfile{toc}, \pixfile{lof} and \pixfile{lot} files are shown in
+\fref{fig:tocloflotfiles}.
 
- The default values of |\cftXindent| and |\cftXnumwidth| are set according
- to the value of the \meta{level-1} argument (i.e., |N| in this example).
- For |N=0| the settings correspond to those for 
- figures\index{figure} and tables\index{table}, as listed in \tref{tab:indents} for the 
-\Lclass{memoir} class.
- For |N=1| the settings correspond
- to subfigures\index{figure!sub-}, and so on.
- For values of |N| less than zero or greater than four, 
- or for non-default values, use the
- \cmd{\cftsetindents} command to set the values.
+\begin{figure}
+\centering
+Parts of a \file{toc} file:
+\begin{lcode}
+...
+\contentsline{section}{\numberline{10.1}The spread}{77}
+\contentsline{section}{\numberline{10.2}Typeblock}{89}
+\contentsline{subsection}{\numberline{10.2.1}Color}{77}
+...
+\contentsline{chapter}{Index}{226}
 
+\end{lcode}
 
-  |\l@X| is an internal command that typesets an entry in the list, and
- is defined in terms of the above |\cft*X*| commands. It will not typeset
- an entry if |\Zdepth| is |N| or less, where |Z| is the listing's file
- extension.
+Part of a \file{lof} file:
 
- The command |\theX| prints the value of the |X| counter. It is initially
- defined so that it prints arabic numerals. If the optional \meta{within}
- argument is used, |\theX| is defined as 
 \begin{lcode}
- \renewcommand{\theX}{\thewithin.\arabic{X}}
+...
+\contentsline{figure}{\numberline{8.6}Measuring scales}{56}
+\addvspace{10pt}
+\addvspace{10pt}
+\contentsline{figure}{\numberline{10.1}Two subfigures}{62}
+\contentsline{subfigure}{\numberline{(a)}Subfigure 1}{62}
+\contentsline{subfigure}{\numberline{(b)}Subfigure 2}{62}
+...
 \end{lcode}
- otherwise as
+
+Part of a \file{lot} file:
+
 \begin{lcode}
-\renewcommand{\theX}{\arabic{X}}
+...
+\contentsline{table}{\numberline{1.7}Font declarations}{11}
+\contentsline{table}{\numberline{1.8}Font sizes}{13}
+\addvspace
+\contentsline{table}{\numberline{3.1}Division levels}{21}
+...
 \end{lcode}
+\caption{Example extracts from \file{toc}, \file{lof} and \file{lot} files}
+\label{fig:tocloflotfiles}
+\end{figure}
 
+     For each \meta{kind} that might appear in a \file{toc} 
+(\file{lof}, \file{lot}) file, \ltx\ provides a command: \\
+ \cmd{\l@kind}\marg{title}\marg{page} \\
+which performs the actual typesetting of the \cmd{\contentsline} entry. 
 
- As an example of the independent use of \cmd{\newlistentry}, the following
- will set up for sub-answers.
- \begin{lcode}
- \newlistentry[answer]{subanswer}{1}
- \renewcommand{\thesubanswer}{\theanswer.\alph{subanswer}}
- \newcommand{\subanswer}[1]{
-    \refstepcounter{subanswer}
-    \par\textbf{\thesubanswer) #1}
-    \addcontentsline{ans}{subanswer{\protect\numberline{\thesubanswer}#1}}
- \setcounter{ansdepth}{2}
- \end{lcode}
- And then:
- \begin{lcode}
- \answer{Harder} The \ldots
-   \subanswer{Reformulate the problem} It assists \ldots
- \end{lcode}
- will be typeset as:
-\begin{syntax}
-\textbf{Answer 2. Harder} \\
-\hspace*{2em} The \ldots \\
-\hspace*{2em} \textbf{2.a) Reformulate the problem} It assists \ldots \\
-\end{syntax}
-
- By default the answer entries will appear in the List of Answers listing
- (typeset by the |\listofanswers| command).
- In order to get the subanswers to appear, 
- the |\setcounter{ansdepth}{2}| command was used above.
 
- To turn off page numbering for the subanswers, do \\
- |\cftpagenumbersoff{subanswer}|
+\begin{figure}
+\setlayoutscale{0.8}
+\drawtoc
+\caption{Layout of a \prtoc{} (\prlof, \prlot) entry} \label{fig:ltoc}
+\end{figure}
 
-    As another example of \cmd{\newlistentry}, suppose that an extra sectioning
- division below |subparagraph| is required, called |subsubpara|.
- The |\subsubpara| command itself can be defined via the LaTeX kernel
- \cmd{\@startsection} command. 
- Also it is necessary to define a |\subsubparamark| macro,
- a new |subsubpara| counter, a |\thesubsubpara| macro and a |\l@subsubpara|
- macro. Using \cmd{\newlistentry} 
- takes care of most of these as shown below (remember
- the caveats about commands with |@| signs in them).
- \begin{lcode}
- \newcommand{\subsubpara}{\@startsection{subpara}
-    {6}                            %                    level
-    {\parindent}                   %  indent from left margin
-    {3.25ex \@plus1ex \@minus .2ex}  %     skip above heading
-    {-1em}       runin heading with  % 1em between title & text
-    {\normalfont\normalsize\itshape} % italic number and title 
- }
- \newlistentry[subparagraph]{subsubpara}{toc}{5}
- \cftsetindents{subsubpara}{14.0em}{7.0em}
- \newcommand*{\subsubparamark}[1]{}  % gobble heading mark
- \end{lcode}
  
+\begin{syntax}
+\cmd{\@pnumwidth}\marg{length} \\
+\cmd{\@tocrmarg}\marg{length} \\
+\cmd{\@dotsep}\marg{number} \\
+\end{syntax}
+\glossary(@pnumwidth)%
+  {\cs{@pnumwidth}\marg{length}}%
+  {Space for a page number in the \prtoc, etc.}
+\glossary(@tocrmarg)%
+  {\cs{@tocrmarg}\marg{length}}%
+  {Right hand margin for titles in the \prtoc, etc.}
+\glossary(@dotsep)%
+  {\cs{@docsep}\marg{num}}%
+  {Distance, as \meta{num} math units, bewteen dots in the dotted lines 
+   in the \prtoc, etc.}
+The general layout of a typeset entry is illustrated in \fref{fig:ltoc}. 
+There are three
+internal \ltx\ commands that are used in the typesetting. The page
+number is typeset flushright in a box of width \cmd{\@pnumwidth}, and the box
+is at the righthand margin\index{margin!right}. If the page number is too long 
+to fit into  the box it will stick out into the righthand 
+margin\index{margin!right}.
+The title text is indented from the righthand margin\index{margin!right} by an 
+amount given by \cmd{\@tocrmarg}.
+Note that \cmd{\@tocrmarg} should be greater than \cmd{\@pnumwidth}. Some
+entries are typeset with a dotted leader between the end of the title
+title text and the righthand margin\index{margin!right} indentation. 
+The distance, in
+\index{math unit}\emph{math units}\footnote{There are 18mu to 1em.} 
+between the dots in the leader is given by the value of \cmd{\@dotsep}. 
+In the standard classes the same values are used for the \toc, \lof{} and 
+the \lot.
 
-     Each \listofx{} uses a file to store the list entries, and these
- files must remain open for writing throughout the document processing.
- TeX has only a limited number of files that it can keep open, and this
- puts a limit on the number of listings that can be used. For a document
- that includes a \toc{} but no other extra ancilliary files (e.g., no
- index\index{index} or bibliography\index{bibliography} output files) the maximum number of LoX's, including
- a \lof{} and \lot, is no more than about eleven. If you try and create too many
- new listings LaTeX will respond with the error message: 
- \begin{center}
- |No room for a new write| 
- \end{center}
- If you get such a message the only recourse is to redesign your document.
+    The standard values for these internal commands are:
+ \begin{itemize}
+ \item \cmd{\@pnumwidth} = 1.55em
+ \item \cmd{\@tocrmarg} = 2.55em 
+ \item \cmd{\@dotsep} = 4.5
+ \end{itemize}
+ The values can be changed by using \cmd{\renewcommand}, in spite of the
+ fact that the first two appear to be lengths.
 
-\subsection{Example --- plates}
+    Dotted leaders are not available for Part\index{part} and 
+Chapter\index{chapter} \toc{} entries.
 
-    As has been mentioned earlier, some illustrations\index{illustration} may be 
-tipped in\index{tip in} to a book. Often, these are called `plates' if
-they are on glossy paper\index{paper} and the rest of the book is on ordinary paper\index{paper}.
-We can define a new kind of Listing for these.
+\begin{syntax}
+\cmd{\numberline}\marg{number} \\
+\end{syntax}
+    Each \cmd{\l@kind} macro is responsible for setting the general 
+ \textit{indent} from the lefthand margin\index{margin!left}, and the 
+\textit{numwidth}.
+The \cmd{\numberline} macro is responsible for typesetting the number 
+flushleft in a box of width \textit{numwidth}. If the number is too long 
+for the box then it will protrude into the title text. The title text is 
+indented by (\textit{indent + numwidth}) from the lefthand 
+margin\index{margin!left}. That is, the title text is typeset in a 
+block of width \\
+(\lnc{\linewidth} - \textit{indent} - \textit{numwidth} - \cmd{\@tocrmarg}). 
 
-\begin{lcode}
-\newcommand{\listplatename}{Plates}
-\newlistof{listofplates}{lop}{\listplatename}
-\newlistentry{plate}{lop}{0}
-\cftpagenumbersoff{plate}
-\end{lcode}
-This code defines the \cmd{\listofplates} command to start the listing which
-will be titled `Plates' from the \cmd{\listplatename} macro. The entry name
-is |plate| and the file extension is |lop|. As plate pages typically do
-not have printed folios\index{folio}, the \cmd{\cftpagenumbersoff} command has been
-used to prohibit page number printing in the listing.
+ \begin{table}
+ \centering
+ \caption[Indents and Numwidths]{Indents and Numwidths (in ems)} \label{tab:indents}
+ \begin{tabular}{lcrrrr} \toprule
+ Entry & Level & \multicolumn{2}{c}{Standard} & \multicolumn{2}{c}{\Lclass{memoir} class} \\
+       &       & indent & numwidth & indent & numwidth \\ \midrule
+ book          & -2 & ---  & --- & 0    & --- \\
+ part          & -1 & 0    & --- & 0    & 1.5 \\
+ chapter       & 0  & 0    & 1.5 & 0    & 1.5 \\
+ section       & 1  & 1.5  & 2.3 & 1.5  & 2.3 \\
+ subsection    & 2  & 3.8  & 3.2 & 3.8  & 3.2 \\
+ subsubsection & 3  & 7.0  & 4.1 & 7.0  & 4.1 \\
+ paragraph     & 4  & 10.0 & 5.0 & 10.0 & 5.0 \\
+ subparagraph  & 5  & 12.0 & 6.0 & 12.0 & 6.0 \\
+ figure/table  & (1) & 1.5 & 2.3 & 0    & 1.5 \\ 
+ subfigure/table & (2) & ---& ---& 1.5  & 2.3 \\ 
+\bottomrule
+ \end{tabular}
+ \end{table}
+
+ Table~\ref{tab:indents} lists the standard values for the \textit{indent}
+and \textit{numwidth}. There is no explicit \textit{numwidth} for a
+part\index{part}; instead a gap of 1em is put between the number and the 
+title text. 
+Note that for a sectioning command the values
+depend on whether or not the document class provides the \cmd{\chapter}
+command; the listed values are for the \Lclass{book} and \Lclass{report} 
+classes --- in the \Lclass{article} class a \cmd{\section} is treated
+like a \cmd{\chapter}, and so on. Also, which somewhat surprises me, the 
+table\index{table} and figure\index{figure} entries are all indented.
 
-    If pages are tipped in, then they are put between a verso and a recto 
-page. The \Lpack{afterpage} package~\cite{AFTERPAGE} lets you specify 
-something that should happen after the current page is finished. The next
-piece of code uses the package and its \cmd{\afterpage} macro to
-define two macros which let you specify something that is to be
-done after the next verso or recto page has been completed.
+\begin{syntax}
+\cmd{\@dottedtocline}\marg{level}\marg{indent}\marg{numwidth} \\
+\end{syntax}
+\glossary(@dottedtocline)%
+  {\cs{@dottedtocline}\marg{level}\marg{indent}\marg{numwidth}}%
+  {For a \prtoc, (\prlof, \prlot) entry at \meta{level} specifies the
+   \meta{indent} and \meta{numwidth} and draws a dotted line between
+   the title and page number.}
+    Most of the \verb?\l@kind? commands are defined in terms of the
+ \cmd{\@dottedtocline} command. This command takes three arguments: 
+the \meta{level} argument is the level as shown in \tref{tab:indents},
+and \meta{indent} and \meta{numwidth} are the \textit{indent} and 
+\textit{numwidth} as illustrated in \fref{fig:ltoc}.
+ For example, one definition of the \cmd{\l@section} command is:
 \begin{lcode}
-\newcommand{\afternextverso}[1]{%
-  \afterpage{\ifodd\c@page #1\else\afterpage{#1}\fi}}
-\newcommand{\afternextrecto}[1]{%
-  \afterpage{\ifodd\c@page\afterpage{#1}\else #1\fi}}
+\newcommand*{\l@section}{\@dottedtocline{1}{1.5em}{2.3em}}
 \end{lcode}
+If it is necessary to change the default typesetting of the entries,
+then it is usually necessary to change these definitions, but \Mname\ 
+gives you handles to easily alter things without having to know the \ltx\
+internals.
 
+    You can use the \cmd{\addcontentsline} command to add 
+\cmd{\contentsline} commands to a file. 
+\index{add to contents}\index{insert in contents}
 
-    The \cmd{\pageref}\marg{labelid} command typesets the page number
-corresponding to the location in the document where 
-\cmd{\label}\marg{labelid} is specified. The following code defines
-two macros\footnote{These only work for arabic page numbers.} 
-that print the page number before or after that given by
-\cmd{\pageref}.
-\begin{lcode}
-\newcounter{mempref}
-\newcommand{\priorpageref}[1]{%
-  \setcounter{mempref}{\pageref{#1}}\addtocounter{mempref}{-1}\themempref}
-\newcommand{\nextpageref}[1]{%
-  \setcounter{mempref}{\pageref{#1}}\addtocounter{mempref}{1}\themempref}
-\end{lcode}
+\begin{syntax}
+\cmd{\addtocontents}\marg{file}\marg{text} \\
+\end{syntax}
+\glossary(addtocontents)%
+  {\cs{addtocontents}\marg{file}\marg{text}}%
+  {Inserts \meta{text} into \meta{file} (\prtoc, etc).}
+    \ltx\ also provides the \cmd{\addtocontents}
+ command that will insert \meta{text} into \meta{file}. You can use
+ this for adding extra text and/or macros into the file, for processing
+ when the file is typeset by \cmd{\tableofcontents} (or whatever other
+ command is used for \meta{file} processing, such as \cmd{\listoftables}
+ for a \file{lot} file).
 
-    With these preliminaries out of the way, we can use code like the 
-following for handling a set of physically tipped in plates.
-\begin{lcode}
-\afternextverso{\label{tip}
-  \addtocontents{lop}{%
-    Between pages \priorpageref{tip} and \pageref{tip}
-    \par\vspace*{\baselineskip}}
-  \addcontentsline{lop}{plate}{First plate}
-  \addcontentsline{lop}{plate}{Second plate}
-  ...
-  \addcontentsline{lop}{plate}{Nth plate}
-}
-\end{lcode}
-This starts off by waiting until the next recto page is started, which
-will be the page immediately after the plates, and then
-inserts the label |tip|. The \cmd{\addtocontents} macro puts its argument
-into the plate list |lop| file, indicating the page numbers before and after
-the set of plates. With the plates being physically added to the document
-it is not possible to use \cmd{\caption}, instead the \cmd{\addcontentsline} 
-macros are used to add the plate titles to the |lop| file.
+ As \cmd{\addcontentsline} and \cmd{\addtocontents} write their arguments to a
+ file, any fragile commands used in their arguments must be \cmd{\protect}ed.
+ 
+    You can make certain adjustments to the \toc, etc., layout by modifying
+some of the above macros. Some examples are:
+ \begin{itemize}
+ \item If your page numbers stick out into the righthand margin\index{margin!right}
+  \begin{lcode}
+  \renewcommand{\@pnumwidth}{3em} 
+  \renewcommand{\@tocrmarg}{4em}
+  \end{lcode}
+ but using lengths appropriate to your document.
 
-    With a few modifications the code above can also form the basis 
-for listing plates that are
-electronically tipped in but do not have printed folios\index{folio} or \cmd{\caption}s.
+ \item To have the (sectional) titles in the \toc, etc., typeset ragged 
+right with no  hyphenation
+ \begin{lcode}
+ \renewcommand{\@tocrmarg}{2.55em plus1fil}
+ \end{lcode}
+ where the value \texttt{2.55em} can be changed for whatever 
+margin\index{margin} space you want.
 
-\index{list!new list of|)}
+ \item The dots in the leaders can be eliminated by increasing \cmd{\@dotsep}
+ to a large value:
+  \begin{lcode}
+  \renewcommand{\@dotsep}{10000}
+  \end{lcode}
 
+ \item To have dotted leaders in your \toc\ and \lof\ but not in your \lot:
+ \begin{lcode}
+ ...
+ \tableofcontents
+ \makeatletter \renewcommand{\@dotsep}{10000} \makeatother
+ \listoftables
+ \makeatletter \renewcommand{\@dotsep}{4.5} \makeatother
+ \listoffigures
+ ...
+ \end{lcode}
 
+ \item To add a horizontal line across the whole width of the \toc\ below 
+ an entry for a Part\index{part}:
+ \begin{lcode}
+ \part{Part title}
+ \addtocontents{toc}{\protect\mbox{}\protect\hrulefill\par}
+ \end{lcode}
+ As  said earlier any fragile commands in the arguments to 
+\cmd{\addtocontents} and \cmd{\addcontentsline} must be protected
+ by preceding each fragile command with \cmd{\protect}. 
+ The result of the example above
+ would be the following two lines in the \file{.toc} file (assuming that it
+ is the second Part and is on page 34):
+ \begin{lcode}
+ \contentsline {part}{II\hspace {1em}Part title}{34}
+ \mbox {}\hrulefill \par
+ \end{lcode}
+ If the \cmd{\protect}s were not used, then the second line would 
+instead be:
+ \begin{lcode}
+ \unhbox \voidb@x \hbox {}\unhbox \voidb@x \leaders \hrule \hfill 
+         \kern \z@ \par
+ \end{lcode}
+which would cause \ltx\ to stop and complain because of the commands
+that included the \texttt{@}\idxatincode (\seeatincode).
+If you are modifying any command that includes an 
+\texttt{@}\idxatincode\
+sign then this must be done in either a \file{.sty} file or if in the 
+document itself it must be surrounded by \cmd{\makeatletter} and 
+\cmd{\makeatother}. For example, if you
+ want to modify \cmd{\@dotsep} in the preamble\index{preamble} to your 
+document you have to do it like this:
+ \begin{lcode}
+ \makeatletter
+ \renewcommand{\@dotsep}{9.0}
+ \makeatother
+ \end{lcode}
 
- \section{Extras}
+\item To change the level of entries printed in the \toc\ (for example
+      when normally subsections are listed in the \toc\ but for
+      appendices\index{appendix} only the main title is required)
+  \begin{lcode}
+  \appendix
+  \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
+  \chapter{First appendix}
+  ...
+  \end{lcode}
 
-\index{chapter!precis|(}
+ \end{itemize}
+ 
+ \section{The class \prtoc{} methods} 
 
-   Some old style novels, and even some modern text 
- books,\footnote{For example, Robert Sedgewick, \textit{Algorithms},
- Addison-Wesley, 1983.} include a short synopsis of the contents of 
- the chapter either immediately
- after the chapter heading\index{heading!chapter} or in the \toc, or in both places.
+  The class provides various means of changing the look of the \toc, etc.,
+without having to go through some of the above. 
 
 \begin{syntax}
-\cmd{\chapterprecis}\marg{text} \\
+\cmd{\tableofcontents} \cmd{\tableofcontents*} \\
+\cmd{\listoffigures} \cmd{\listoffigures*} \\
+\cmd{\listoftables} \cmd{\listoftables*} \\
 \end{syntax}
-     The command \cmd{\chapterprecis} prints its argument 
- both at the
- point in the document where it is called, and also adds it to the \file{.toc}
- file. For example:
+\glossary(tableofcontents)%
+  {\cs{tableofcontents}}%
+  {Typeset the \prtoc, adding its title to the \prtoc\ itself.}
+\glossary(tableofcontents*)%
+  {\cs{tableofcontents*}}%
+  {Typeset the \prtoc.}
+\glossary(listoffigures)%
+  {\cs{listoffigures}}%
+  {Typeset the \prlof, adding its title to the \prtoc.}
+\glossary(listoffigures*)%
+  {\cs{listoffigures*}}%
+  {Typeset the \prlof.}
+\glossary(listoftables)%
+  {\cs{listoftables}}%
+  {Typeset the \prlot, adding its title to the \prtoc.}
+\glossary(listoftables*)%
+  {\cs{listoftables*}}%
+  {Typeset the \prlot.}
+ The \toc, \lof, and \lot\ are printed at the point in the document where
+ these commands are called, as per normal \ltx. However, there are
+ two differences between the standard \ltx\ behaviour and the behaviour
+ with this class. In the standard \ltx\ classes
+ that have \cmd{\chapter} headings\index{heading}, the \toc, \lof\ and \lot\ 
+each appear on a new page. With this class they do not necessarily
+ start new pages; if you want them to be on new pages you may have to
+ specifically issue an appropriate command beforehand. For example:
  \begin{lcode}
- ...
- \chapter{}  first chapter
- \chapterprecis{Our hero is introduced; family tree; early days.}
+  ...
+ \clearpage
+ \tableofcontents
+ \clearpage
+ \listoftables
  ...
  \end{lcode}
+Also, the unstarred versions of the commands put their headings\index{heading} 
+into the \toc, while the starred versions do not.
 
-\begin{syntax}
-\cmd{\chapterprecishere}\marg{text} \\
-\cmd{\chapterprecistoc}\marg{text} \\
-\end{syntax}
- The \cmd{\chapterprecis} command calls these two commands to print the
- \meta{text} in the document (the \cmd{\chapterprecishere} command) 
- and to put it into the \toc{} (the \cmd{\chapterprecistoc} command). 
- These can be used individually if required.
-
-\begin{syntax}
-\cmd{\prechapterprecis} \cmd{\postchapterprecis} \\
-\end{syntax}
-The \cmd{\chapterprecishere} macro is intended for use immediately after 
-a \cmd{\chapter}. The \meta{text} argument is typeset in
-italics in a \Ie{quote} environment. The macro's definition is:
-\begin{lcode}
-\newcommand{\chapterprecishere}[1]{%
-  \prechapterprecis #1\postchapterprecis}
-\end{lcode}
-where \cmd{\prechapterprecis} and \cmd{\postchapterprecis} are defined
-as:
-\begin{lcode}
-\newcommand{\prechapterprecis}{%
-  \vspace*{-2\baselineskip}%
-  \begin{quote}\normalfont\itshape}
-\newcommand{\postchapterprecis}{\end{quote}}
-\end{lcode}
-The \cmd{\prechapterprecis} and \cmd{\postchapterprecis} macros can be 
-changed if another style of typesetting is required.
+    You can use \cmd{\tableofcontents}, \cmd{\listoffigures}, etc., more
+than once in a \Lclass{memoir} class document.
 
 \begin{syntax}
-\cmd{\precistoctext}\marg{text} \cmd{\precistocfont} \\
+\cmd{\maxtocdepth}\marg{secname} \\
+\cmd{\settocdepth}\marg{secname} \\
 \end{syntax}
-The \cmd{\chapterprecistoc} macro puts the macro \cmd{\precistoctext} into 
-the \ixfile{toc} file. The default definition is
-\begin{lcode}
-\DeclareRobustCommand{\precistoctext}[1]{%
-  {\leftskip \cftchapterindent\relax
-   \advance\leftskip \cftchapternumwidth\relax
-   \rightskip \@tocrmarg\relax
-   \precistocfont #1\par}}
-\end{lcode}
-Effectively, in the \toc{} \cmd{\precistoctext} typesets its argument like 
-a chapter title using the \cmd{\precistocfont} (default \cmd{\itshape}).
+\glossary(maxtocdepth)%
+  {\cs{maxtocdepth}\marg{secname}}%
+  {Sets the maximum value of the \Pcn{tocdepth} counter.}
+\glossary(settocdepth)%
+  {\cs{settocdepth}\marg{secname}}%
+  {Sets the value of the \Pcn{tocdepth} counter in the \file{toc} file.}
+The class \cmd{\maxtocdepth} command sets the maximum 
+allowable value
+for the \Icn{tocdepth} counter. If used, the command must appear
+before the \cmd{\tableofcontents} command. By default, the class
+sets \verb?\maxtocdepth{section}?.
 
-\index{chapter!precis|)}
+    The \Lclass{memoir} class command \cmd{\settocdepth} is somewhat
+analagous to the \cmd{\setsecnumdepth} command 
+described in \S\ref{sec:secnumbers}.
+It sets the value of the \Icn{tocdepth} counter and puts it into
+the \toc{} to (temporarily) modify what will appear. 
+The command can only be used after the preamble\index{preamble}
+but may be used before calling the \cmd{\tableofcontents}.
+The \cmd{\settocdepth} and \cmd{\maxtocdepth} macros are from the 
+\Lpack{tocvsec2} package~\cite{TOCVSEC2}.
 
- Sometimes it may be desirable to make a change to the global parameters
- for an individual entry. For example, a figure\index{figure} might be placed on
- the end paper\index{paper!end} of a book (the inside of the front or back cover), and
- this needs to be placed in a \lof{} with the page number set as, say
- `inside front cover'. If `inside front cover' is typeset as an ordinary
- page number it will stick out into the margin\index{margin}. Therefore, the parameters
- for this particular entry need to be changed.
 
 \begin{syntax}
-\cmd{\cftlocalchange}\marg{ext}\marg{pnumwidth}\marg{tocrmarg} \\
+\cmd{\phantomsection} \\
 \end{syntax}
- The command \cmd{\cftlocalchange} 
- will write an entry into the file with extension \meta{ext} to reset 
-the global \cmd{\@pnumwidth} and \cmd{\@tocrmarg} parameter lengths. 
- The command should be called again after any special entry to reset
- the parameters back to their usual values. Any fragile commands used
- in the arguments must be protected.
-
-\begin{syntax}
-\cmd{\cftaddtitleline}\marg{ext}\marg{kind}\marg{text}\marg{page} \\
-\cmd{\cftaddnumtitleline}\marg{ext}\marg{kind}\marg{num}\marg{title}\marg{page} \\
-\end{syntax}
- The command \cmd{\cftaddtitleline} 
- will write a \cmd{\contentsline} entry into \meta{ext} for a \meta{kind}
- entry with title \meta{title} and page number \meta{page}. 
- Any fragile commands used in the arguments must be protected.
-That is,
- an entry is made of the form: 
-\begin{lcode}
-\contentsline{kind}{title}{page}
-\end{lcode}
- The command \cmd{\cftaddnumtitleline}
- is similar to \cmd{\cftaddtitleline} except that it also includes 
-\meta{num} as the argument to
- \cmd{\numberline}. That is, an entry is made of the form
-\begin{lcode}
-\contentsline{kind}{\numberline{num} title}{page}
-\end{lcode}
-
- As an example of the use of these commands, 
- noting that the default LaTeX values for 
- \cmd{\@pnumwidth} and \cmd{\@tocrmarg} are 1.55em and 2.55em respectively, 
- one might do the
- following for a figure\index{figure} on the frontispiece\index{frontispiece} page.
- \begin{lcode}
- ...
-  this is the frontispiece page with no number
-  draw or import the picture (with no \caption)
- \cftlocalchange{lof}{4em}{5em} % make pnumwidth big enough for 
-                                % frontispiece and change margin
- \cftaddtitleline{lof}{figure}{The title}{frontispiece}
- \cftlocalchange{lof}{1.55em}{2.55em} % return to normal settings
- \clearpage
- ...
- \end{lcode}
-    Recall that a \cmd{\caption} command will put an entry in the \file{.lof}
- file, which is not wanted here. If a caption\index{caption} is required, then you can 
- either craft one youself or, assuming that your general captions\index{caption} are not
- too exotic, use the \cmd{\legend} command (see later).
- If the illustration\index{illustration} is numbered, use 
- \cmd{\cftaddnumtitleline} instead of \cmd{\cftaddtitleline}.
-
-
-\section{Tails}
-
-    The commands for producing a bibliography\index{bibliography} and an index\index{index} are
-the same as for the standard classes, but there are two differences.
-
-\subsection{Bibliography}
+\glossary(phantomsection)
+  {\cs{phantomsection}}%
+  {A macro to be put before \cs{addcontentsline} when the \Ppack{hyperref} 
+   package is used.}
+\Note{} The \Lpack{hyperref} package~\cite{HYPERREF} appears to dislike 
+authors using 
+ \cmd{\addcontentsline}. To get it to work properly with \Lpack{hyperref}
+ you normally have to put \cmd{\phantomsection} (a macro defined within
+this class and the \Lpack{hyperref} package) immediately 
+ before \cmd{\addcontentsline}.
 
-\index{bibliography|(}
+ \subsection{Changing the titles} \label{sec:titles}
 
-\begin{syntax}
-\senv{thebibliography}\marg{exlabel} \\
-\cmd{\bibitem} ... \\
-\eenv{thebibliography} \\
-\cmd{\bibname} \\
-\end{syntax}
-The bibliography is typeset within the \Ie{thebibliography} environment.
-This takes one required argument, \meta{exlabel}, which is a piece of text
-as wide as the widest label in the bibliography. The value of 
-\cmd{\bibname} (default `Bibliography') is used
-as the title. 
+    Commands are provided for controlling the appearance of the
+\toc, \lof\ and \lot\ titles. 
 
 \begin{syntax}
-\cmd{\bibintoc} \cmd{\nobibintoc} \\
+\cmd{\contentsname} \cmd{\listfigurename} \cmd{\listtablename} \\
 \end{syntax}
-The declaration \cmd{\bibintoc} will cause the |thebibliography|
-environment to add the title to the \toc, while the declaration
-\cmd{\nobibintoc} ensures that the title is not added to the \toc. 
-The default is \cmd{\bibintoc}.
+\glossary(contentsname)%
+  {\cs{contentsname}}%
+  {The title for the Table of Contents.}
+\glossary(listfigurename)%
+  {\cs{listfigurename}}%
+  {The title for the List of Figures.}
+\glossary(listtablename)%
+  {\cs{listtablename}}%
+  {The title for the List of Tables.}
+Following \ltx\ custom, the title texts are the values
+of the \cmd{\contentsname}, \cmd{\listfigurename} and \cmd{\listtablename}
+commands.
+
+ The commands for controlling the typesetting of the \toc, \lof\ and \lot\ 
+titles all follow a similar pattern So for convenience (certainly mine, 
+and hopefully yours) in the following descriptions I will use \texttt{X},
+as listed in \tref{tab:Xlistofxtitles},
+to stand for the file extension for the appropriate \listofx. That is, any
+of the following.
+\begin{itemize}
+\item \texttt{toc} or
+\item \texttt{lof} or
+\item \texttt{lot}. 
+\end{itemize}
+For example, \verb?\Xmark? stands for \cmd{\tocmark} or \cmd{\lofmark} or 
+\cmd{\lotmark}.
 
+\begin{table}
+\centering
+\caption{Values for \texttt{X} in macros for styling the titles of \listofx}
+\label{tab:Xlistofxtitles}
+\begin{tabular}{cccc}\toprule
+\texttt{toc} & \texttt{lof} & \texttt{lot} & \texttt{\ldots} \\
+\bottomrule
+\end{tabular}
+\end{table}
 
-\begin{syntax}
-\cmd{\prebibhook} \cmd{\postbibhook} \\
-\end{syntax}
-The commands \cmd{\prebibhook} and \cmd{postbibhook} are called after 
-typesetting the title of the bibliography and after typesetting the list of
-entries, respectively. By default, they are defined to do nothing. You may
-wish to use one or other of these to provide some general information about
-the bibliography. For example:
+    The code for typesetting the \toc\ title looks like:
 \begin{lcode}
-\renewcommand{\postbibhook}{%
-CTAN is the Comprehensive TeX Archive Network and URLS for the 
-several CTAN mirrors can be found at \url{http://www.tug.org}.}
+\tocheadstart
+\printtoctitle{\contentsname}
+\tocmark
+\thispagestyle{chapter}
+\aftertoctitle
 \end{lcode}
+where the macros are described below.
 
 \begin{syntax}
-\cmd{\setbiblabel}\marg{style} \\
+\cmd{\Xheadstart} \\
 \end{syntax}
-The style of the labels marking the bibliographic entries can be set
-via \cmd{\setbiblabel}. The default definition is
-\begin{lcode}
-\setbiblabel{[#1]\hfill}
-\end{lcode}
-where |#1| is the citation mark position, which generates flushleft 
-marks enclosed in square brackets. To have marks just
-followed by a dot
-\begin{lcode}
-\setbiblabel{#1.\hfill}
-\end{lcode}
-
-
-
-    The definition of the \Ie{thebibliography} environment is:
+\glossary(Xheadstart)%
+  {\cs{Xheadstart}}%
+  {Generic macro called before printing a 'X List of' title.}
+\begin{comment}
+\glossary(tocheadstart)%
+  {\cs{tocheadstart}}%
+  {Called before printing the \prtoc\ title.}
+\glossary(lofheadstart)%
+  {\cs{lofheadstart}}%
+  {Called before printing the \prlof\ title.}
+\glossary(lotheadstart)%
+  {\cs{lotheadstart}}%
+  {Called before printing the \prlot\ title.}
+\end{comment}
+This macro is called before the title is actually printed.
+Its default definition is
 \begin{lcode}
-\newenvironment{thebibliography}[1]{%
-  \bibsection
-  \begin{bibitemlist}{#1}}{\end{bibitemlist}\postbibhook}
+\newcommand{\Xheadstart}{\chapterheadstart}
 \end{lcode}
 
 \begin{syntax}
-\cmd{\bibsection} \\
+\cmd{\printXtitle}\marg{title} \\
 \end{syntax}
-The macro \cmd{\bibsection} defines the heading for the \Ie{thebibliography}
-environment; that is, everything before the actual list of bibliographic
-items starts. Its default definition is:
-\begin{lcode}
-\newcommand{\bibsection}{%
-  \chapter*{\bibname}
-  \bibmark
-  \ifnobibintoc\else
-    \phantomsection
-    \addcontentsline{toc}{chapter}{\bibname}
-  \fi
-  \prebibhook}
-\end{lcode}
-To change the style of the heading for the bibliography, redefine
-\cmd{\bibsection}. For example, to have the bibliography typeset as a
-numbered section instead of a chapter, redefine \cmd{\bibsection} as:
-\begin{lcode}
-\renewcommand{\bibsection}{%
-  \section{\bibname}
-  \prebibhook}
-\end{lcode}
-
-    If you use the \Lpack{natbib} and/or the \Lpack{chapterbib}
-packages~\cite{NATBIB,CHAPTERBIB} with the \Lopt{sectionbib} option, 
-then \cmd{\bibsection} is
-changed appropriately to typeset as a numbered section.
-
-    The \Lpack{jurabib} package~\cite{JURABIB} redefines 
-the \Ie{thebibliography}
-environment, 
-providing its own methods for listing the items. However,
-the redefinition also eliminates the opportunity to add the
-Bibliography to the Table of Contents and to have some introductory text.
-To restore these to the class specification, put the following in your
-preamble after loading \Lpack{jurabib}:
-\begin{lcode}
-\usepackage{jurabib}
-\makeatletter
-\renewcommand{\bib@heading}{\bibsection}
-\makeatother
-\end{lcode}
-However, thanks to the kindness of Jens Berger, if your version of 
-\Lpack{jurabib} is 0.6 or later then 
-the fix is not required.
-
+\glossary(printXtitle)%
+  {\cs{printXtitle}\marg{title}}%
+  {Generic macro printing \meta{title} as the title for the `X List of'.}
+\begin{comment}
+\glossary(printtoctitle)%
+  {\cs{printtoctitle}\marg{title}}%
+  {Prints \meta{title} as the title for the \prtoc.}
+\glossary(printloftitle)%
+  {\cs{printloftitle}\marg{title}}%
+  {Prints \meta{title} as the title for the \prlof.}
+\glossary(printlottitle)%
+  {\cs{printlottitle}\marg{title}}%
+  {Prints \meta{title} as the title for the \prlot.}
+\end{comment}
+The title is typeset via \cmd{\printXtitle}, which defaults to
+using \cmd{\printchaptertitle} for the actual typesetting. 
 
 \begin{syntax}
-\lnc{\bibitemsep} \\
+\cmd{\Xmark} \\
 \end{syntax}
-   The \Lpack{natbib} package provides a length, \lnc{\bibsep} which can
-be used to alter the vertical spacing between the entries in the bibliography.
-Setting \lnc{\bibsep} to 0pt removes any extra space between the entries.
-    The equivalent length provided by the class for changing the space between
-bibliography entries is \lnc{\bibitemsep}, which by default is set to 
-the default value of \lnc{\itemsep}. 
-
-    The bibliography is set as a list, and the spacing between the items is 
-(\lnc{\bibitemsep} + \lnc{\parsep}). To eliminate any extra vertical space do
+\glossary(Xmark)%
+  {\cs{Xmark}}%
+  {Generic macro setting the marks for the 'X List of'.}
+\begin{comment}
+\glossary(tocmark)%
+  {\cs{tocmark}}%
+  {Macro setting the marks for the \prtoc.}
+\glossary(lofmark)%
+  {\cs{lofmark}}%
+  {Macro setting the marks for the \prlof.}
+\glossary(lotmark)%
+  {\cs{lotmark}}%
+  {Macro setting the marks for the \prlot.}
+\end{comment}
+ These macros sets the marks for use by the running heads on the \toc, \lof, and
+ \lot\ pages. The default definition is equivalent to:
 \begin{lcode}
-\setlength{\bibitemsep}{-\parsep}
+\newcommmand{\Xmark}{\markboth{\...name}{\...name}}
 \end{lcode}
+where \verb?\...name? is \cmd{\contentsname} or \cmd{\listfigurename} or
+\cmd{\listtablename} as appropriate. You probably don't need to change these, and
+in any case they may well be changed by the particular \cmd{\pagestyle} in
+use.
 
 \begin{syntax}
-\cmd{\biblistextra} \\
+\cmd{\afterXtitle} \\
 \end{syntax}
-    A hook, called \cmd{\biblistextra}, is provided that is called at the
-end of the bibliography list setup. By default it does nothing but
-it can be used, for example, to set all bibliography entries flushleft by
-modify the list parameters as shown below.
-\begin{lcode}
-\renewcommand{\biblistextra}{%
-  \setlength{\leftmargin}{0pt}%
-  \setlength{\itemindent}{\labelwidth}%
-  \setlength{\itemindent}{\labelsep}%
-}
-\end{lcode}
-  
+\glossary(afterXtitle)%
+  {\cs{afterXtitle}}%
+  {Generic macro called after typesetting the title of the `X List of'.}
+\begin{comment}
+\glossary(aftertoctitle)%
+  {\cs{aftertoctitle}}%
+  {Macro called after typesetting the title of the \prtoc.}
+\glossary(afterloftitle)%
+  {\cs{afterloftitle}}%
+  {Macro called after typesetting the title of the \prlof.}
+\glossary(afterlottitle)%
+  {\cs{afterlottitle}}%
+  {Macro called after typesetting the title of the \prlot.}
+\end{comment}
+ This macro is called after the title is typeset and by
+default it is defined to be \cmd{\afterchaptertitle}.
+
+    Essentially, the \toc, \lof\ and \lot\ titles use the same format
+as the chapter titles, and will be typeset according to the current
+chapterstyle. You can modify their appearance by either using a
+different chapterstyle for them than for the actual chapters, or
+by changing some of the macros. As examples:
+\begin{itemize}
+\item Doing
+      \begin{lcode}
+      \renewcommand{\printXtitle}[1]{\hfill\Large\itshape #1}
+      \end{lcode}
+      will print the title right justified in a Large italic font.
+\item For a Large bold centered title you can do
+      \begin{lcode}
+      \renewcommand{\printXtitle}[1]{\centering\Large\bfseries #1}
+      \end{lcode}
+\item Writing
+      \begin{lcode}
+      \renewcommand{\afterXtitle}{%
+                        \thispagestyle{empty}\afterchaptertitle}
+      \end{lcode}
+      will result in the first page of the listing using the \pstyle{empty}
+      pagestyle instead of the default \pstyle{chapter} pagestyle.
+\item Doing
+      \begin{lcode}
+      \renewcommand{\afterXtitle}{%
+        \par\nobreak \mbox{}\hfill{\normalfont Page}\par\nobreak}
+      \end{lcode}
+      will put the word `Page' flushright on the line following
+      the title.
+\end{itemize}
 
 
-\index{bibliography|)}
+ \subsection{Typesetting the entries} \label{sec:entries}
 
-\subsection{Index}
+ Commands are also provided to enable finer control over the typesetting
+ of the different kinds of entries. The parameters defining the default
+ layout of the entries are illustrated as part of the \Lpack{layouts}
+ package~\cite{LAYOUTS} or in~\cite[p. 51]{COMPANION}, and are repeated in
+ \fref{fig:ltoc}.
 
-\index{index|(}
+    Most of the commands in this section start as \cs{cft...}, where
+\texttt{cft} is intended as a mnemonic for \textit{Table of \textbf{C}ontents, 
+List of \textbf{F}igures, List of \textbf{T}ables}.
 
-    The indexing commands have been significantly enhanced with respect
-to the standard classes and include the
-functionality provided by the \Lpack{makeidx}, \Lpack{showidx} and 
-\Lpack{index} packages~\cite{MAKEIDX,INDEX}; these packages should not be used.
+\begin{syntax}
+ \cmd{\cftdot} \\
+\end{syntax}
+\glossary(cftdot)%
+  {\cs{cftdot}}%
+ {The `dot' in the dotted leaders in \listofx.}
+  In the default \toc{} typesetting only the more minor entries have dotted
+ leader lines between the sectioning title and the page number. The
+ class provides for general leaders for all entries.
+ The `dot' in a leader is given by the value of \cmd{\cftdot}. Its default
+ definition is \verb?\newcommand{\cftdot}{.}? which gives the default
+ dotted leader. By changing \cmd{\cftdot} you can use symbols other than
+ a period in the leader. For example 
+ \begin{lcode}
+ \renewcommand{\cftdot}{\ensuremath{\ast}}
+ \end{lcode}
+ will result in a dotted leader using asterisks as the symbol.
 
-    In the standard classes the index is set in two columns.
 \begin{syntax}
-\cmd{\onecolindextrue} \\
-\cmd{\onecolindexfalse} \\
+ \cmd{\cftdotsep} \\
+ \cmd{\cftnodots} \\
 \end{syntax}
-The declaration \cmd{\onecolindexfalse}, which is the default, causes
-any indexes to be set in two columns. The declaration \cmd{\onecolindextrue}
-causes any following indexes to be set in one column. This can be useful
-if, for example, you need an index of the first lines of poems.
+\glossary(cftdotsep)%
+  {\cs{cftdotsep}}%
+  {The separation between dots in a dotted leader in a \listofx.}
+\glossary(cftnodots)%
+  {\cs{cftnodots}}%
+  {A separation between dots in a dotted leader in a \listofx\
+   that is too large for any dots to occur.}
+    Each kind of entry can control the separation between the dots
+ in its leader (see below). For consistency though, all dotted leaders
+ should use the same spacing. The macro \cmd{\cftdotsep} specifies the
+ default spacing. 
+ However, if the separation is too large
+ then no dots will be actually typeset. The macro \cmd{\cftnodots} is
+ a separation value that is `too large'. 
 
 \begin{syntax}
-\cmd{\makeindex}\oarg{file} \\
-\cmd{\printindex}\oarg{file} \\
+ \cmd{\setpnumwidth}\marg{length} \\
+ \cmd{\setrmarg}\marg{length} \\
 \end{syntax}
-The macro \cmd{\makeindex}, which must be put in the preamble if it is used,
-opens an \ixfile{idx} file, which by default is called \file{jobname.idx}, 
-where \file{jobname} is the name of the main LaTeX source file. 
-If the optional \meta{file} argument is given then a file called
-\file{file.idx} will be opened instead. 
-The macro \cmd{\printindex} reads an \ixfile{ind}
-file called \file{jobname.ind}, which should contain an 
-\Ie{theindex} environment
-and the indexed items. If the optional \meta{file} argument is given then
-the \file{file.ind} file will be read. The \textsc{makeindex} program is often
-used to convert an \ixfile{idx} file to an \ixfile{ind} file.
+\glossary(setpnumwidth)%
+  {\cs{setpnumwidth}\marg{length}}%
+  {Sets the width of the page number box (\cs{@pnumwidth}) in a \listofx\ to 
+   \meta{length}.}
+\glossary(setrmarg)%
+  {\cs{setrmarg}\marg{length}}%
+  {Sets the right hand title margin (\cs{@tocrmarg}) in a \listofx\ to
+   \meta{length}.}
+ The page numbers are typeset in a fixed width box. The command
+ \cmd{\setpnumwidth} can be used to change the width
+ of the box (LaTeX 's internal \cmd{\@pnumwidth}). 
+ The title texts will end before reaching the righthand 
+margin\index{margin!right}.
+ \cmd{\setrmarg} can be used to set this distance 
+ (LaTeX 's internal \cmd{\@tocrmarg}).
+ Note that the length used in \cmd{\setrmarg} should be greater
+ than the length set in \cmd{\setpnumwidth}. These values should remain
+ constant in any given document.
 
+    This manual requires more space for the page numbers than the default,
+so the following was set in the preamble\index{preamble}:
+\begin{lcode}
+\setpnumwidth{2.55em}
+\setrmarg{3.55em}
+\end{lcode}
 
 
 \begin{syntax}
-\senv{theindex} entries \eenv{theindex} \\
-\cmd{\indexname} \\
+\lnc{\cftparskip} \\
 \end{syntax}
-The index\index{index} is typeset in two columns\index{column!double} within the \Ie{theindex} environment.
-The index\index{index} title is given by the current value of \cmd{\indexname} (default
-`Index').
+\glossary(cftparskip)%
+  {\cs{cftparskip}}%
+  {The \cs{parskip} to be used in a \listofx.}
+ Normally the \lnc{\parskip} in the \toc, etc., is zero. This may be changed
+ by changing the length \lnc{\cftparskip}. Note that the current value
+ of \lnc{\cftparskip} is used for the \toc, \lof\ and \lot, but you can change
+ the value before calling \cmd{\tableofcontents} or \cmd{\listoffigures} or
+ \cmd{\listoftables} if one or other of these should have different values
+ (which is not a good idea).
 
-\begin{syntax}
-\cmd{\indexintoc} \cmd{\noindexintoc} \\
-\end{syntax}
-The declaration \cmd{\indexintoc} will cause the |theindex|
-environment to add the title to the \toc, while the declaration
-\cmd{\noindexintoc} ensures that the title is not added to the \toc. 
-The default is \cmd{\indexintoc}.
 
-\begin{syntax}
-\lnc{\indexcolsep} \\
-\lnc{\indexrule} \\
-\end{syntax}
-The length \lnc{\indexcolsep} is the width of the gutter between the two
-index columns\index{column!double}. Its default value is 35pt. The length \lnc{\indexrule}, default
-value 0pt, is the thickness of a vertical rule separating the two columns.
+    Again for convenience, in the following I will use \texttt{K} to stand 
+for the \emph{kind} of entry, as listed in \tref{tab:Klistofxtitles}; that is, 
+any of the following:
+ \begin{itemize}
+ \item \texttt{book} for \cmd{\book} titles.
+ \item \texttt{part} for \cmd{\part} titles
+ \item \texttt{chapter} for \cmd{\chapter} titles
+ \item \texttt{section} for \cmd{\section} titles
+ \item \texttt{subsection} for \cmd{\subsection} titles
+ \item \texttt{subsubsection} for \cmd{\subsubsection} titles
+ \item \texttt{paragraph} for \cmd{\paragraph} titles
+ \item \texttt{subparagraph} for \cmd{\subparagraph} titles
+ \item \texttt{figure} for figure \cmd{\caption} titles
+ \item \texttt{subfigure} for subfigure \cmd{\caption} titles
+ \item \texttt{table} for table \cmd{\caption} titles
+ \item \texttt{subtable} for subtable \cmd{\caption} titles
+ \end{itemize}
+
+\begin{table}
+\centering
+\caption{Value of \texttt{K} in macros for styling entries in a \listofx}
+\label{tab:Klistofxtitles}
+\begin{tabular}{llcll} \toprule
+\multicolumn{1}{c}{\texttt{K}} & \multicolumn{1}{c}{Kind of entry} & & 
+\multicolumn{1}{c}{\texttt{K}} & \multicolumn{1}{c}{Kind of entry} \\ \midrule
+\texttt{book} & \cmd{\book} title & & \texttt{subparagraph} & \cmd{\subparagraph} title \\
+\texttt{part} & \cmd{\part} title & & \texttt{figure} & figure caption  \\
+\texttt{chapter} & \cmd{\chapter} title & & \texttt{subfigure} & subfigure caption \\
+\texttt{section} & \cmd{\section} title & & \texttt{table} & table caption \\
+\texttt{subsection} & \cmd{\subsection} title & & \texttt{subtable} & subtable caption \\
+\texttt{subsubsection} & \cmd{\subsubsection} title & & \texttt{\ldots} & \ldots  \\
+\bottomrule
+\end{tabular}
+\end{table}
 
 
 \begin{syntax}
-\cmd{\preindexhook} \\
+\cmd{\cftbookbreak} \\
+\cmd{\cftpartbreak} \\
+\cmd{\cftchapterbreak} \\
 \end{syntax}
-    The macro \cmd{\preindexhook} is called after the title is typeset and
-before the twocolumn index\index{index} listing starts. By default it does nothing but
-can be changed. For example
+\glossary(cftbookbreak)%
+  {\cs{cftbookbreak}}%
+  {Starts a \cs{book} entry in the \prtoc.}
+\glossary(cftpartbreak)%
+  {\cs{cftpartbreak}}%
+  {Starts a \cs{part} entry in the \prtoc.}
+\glossary(cftchapterbreak)%
+  {\cs{cftchapterbreak}}%
+  {Starts a \cs{chapter} entry in the \prtoc.}
+When \cmd{\l@book} starts to typeset a \cmd{\book} entry in the
+\toc{} the first thing it does is to call the macro \cmd{\cftbookbreak}.
+This is defined as:
 \begin{lcode}
-\renewcommand{\preindexhook}{Bold page numbers are used to indicate
-the main reference for an entry.}
+\newcommand{\cftbookbreak}{\addpenalty{-\@highpenalty}}
 \end{lcode}
-
+which encourages a page break before rather than after the entry. As usual,
+you can change \cmd{\cftbookbreak} to do other things that you feel might
+be useful. The macros \cmd{\cftpartbreak} and \cmd{\cftchapterbreak} apply
+to \cmd{\part} and \cmd{\chapter} entries, respectively, and have the same
+default definitions as \cmd{\cftbookbreak}.
 
 \begin{syntax}
-\cmd{\index}\oarg{file}\marg{item} \\
-\cmd{\specialindex}\marg{file}\marg{counter}\marg{item} \\
+\lnc{\cftbeforeKskip} \\
 \end{syntax}
-The macro \cmd{\index} writes its \meta{item} argument to an \ixfile{idx}
-file. If the optional \meta{file} argument is given then it will write
-to \file{file.idx} otherwise it writes to \file{jobname.idx}. The page for
-the \meta{item} is also written to the \file{idx} file. 
-The \cmd{\specialindex} macro writes its \meta{item} argument to the 
-\file{file.idx} and also writes the page number (in parentheses) and
-the value of the \meta{counter}. This means that indexing can be with 
-respect to something other than page numbers. However, if the \Lpack{hyperref}
-package is used the special index links will be to pages even though they
-appear to be with respect to the \meta{counter}; for example, 
-if figure numbers are used as the index reference the hyperref link will be
-to the page where the figure appears and not the figure itself.
+\glossary(cftbeforeKskip)%
+  {\cs{cftbeforeKskip}}%
+  {Generic vertical space before a `K' entry in a \listofx.}
+ This length controls the vertical space before an entry. It can be changed
+ by using \cmd{\setlength}. 
 
 \begin{syntax}
-\cmd{\see}\marg{item} \cmd{\seename} \\
-\cmd{\seealso}\marg{items} \cmd{\alsoname} \\
+\lnc{\cftKindent} \\
 \end{syntax}
-The macro \cmd{\see} can be used in an \cmd{\index} command to tell the 
-reader to `see \meta{item}' instead of printing a page number. Likewise
-the \cmd{\seealso} macro directs the reader to `see also \meta{items}'.
-For example:
-\begin{lcode}
-\index{Alf|see{Alfred}}
-\index{Frederick|seealso{Fred, Rick}}
-\end{lcode}
-The actual values for `see' and `see also' are given by the 
-\cmd{\seename} and \cmd{\alsoname} macros whose default
-definitions are:
-\begin{lcode}
-\newcommand{\seename}{see}
-\newcommand{\alsoname}{see also}
-\end{lcode}
-
-\begin{syntax}
-\cmd{\reportnoidxfilefalse} \\
-\cmd{\reportnoidxfiletrue} \\
-\end{syntax}
-Following the declaration \cmd{\reportnoidxfilefalse}, which is the default,
-LaTeX will silently pass over attempts to use an \ixfile{idx} file which has
-not been declared via \cmd{\makeindex}. After the declaration
-\cmd{\reportnoidxfiletrue} LaTeX will whinge about any attempts to 
-write to an unopened file.
+\glossary(cftKindent)%
+  {\cs{cftKindent}}%
+  {Generic indent of an `K' entry from the left margin in a \listofx.}
+ This length controls the indentation of an entry from the left 
+margin\index{margin!left} (\textit{indent} in \fref{fig:ltoc}). It
+ can be changed using \cmd{\setlength}. 
 
 \begin{syntax}
-\cmd{\showindexmarktrue} \\
-\cmd{\showindexmarkfalse} \\
+\lnc{\cftKnumwidth} \\
 \end{syntax}
-After the declaration \cmd{\showindexmarktrue} (practically) 
-all \cmd{\index} and 
-\cmd{\specialindex} \meta{item} arguments are listed in the margin of 
-the page on which the index command is issued. The default is
-\cmd{\showindexmarkfalse}.
+\glossary(cftKnumwidth)%
+  {\cs{cftKnumwidth}}%
+  {Generic space for the number of a `K' entry in a \listofx.}
+ This length controls the space allowed for typesetting title numbers 
+ (\textit{numwidth} in \fref{fig:ltoc}). It can
+ be changed using \cmd{\setlength}. Second and subsequent lines of a multiline
+ title will be indented by this amount.
 
-\subsubsection{Indexing and the \Lpack{natbib} package}
+ The remaining commands are related to the specifics of typesetting
+ an entry.
+ This is a simplified pseudo-code version for the typesetting of numbered 
+ and unnumbered entries.
+ \begin{lcode}
+ {\cftKfont {\cftKname \cftKpresnum SNUM\cftKaftersnum\hfil} \cftKaftersnumb TITLE}
+         {\cftKleader}{\cftKformatpnum{PAGE}}\cftKafterpnum\par
 
-    The \Lpack{natbib} package~\cite{NATBIB} will make an index 
-of citations if
-\cmd{\citeindextrue} is put in the preamble after the \Lpack{natbib}
-package is called for.
+ {\cftKfont TITLE}{\cftKleader}{\cftKformatpnum{PAGE}}\cftKafterpnum\par
+ \end{lcode}
+ where \texttt{SNUM} is the section number, \texttt{TITLE} is the title text 
+and \texttt{PAGE} 
+ is the page number. In the numbered entry the pseudo-code
+\begin{lcode}
+{\cftKpresnum SNUM\cftaftersnum\hfil}
+\end{lcode}
+ is typeset within a box of width \lnc{\cftKnumwidth}.
 
 \begin{syntax}
-\cmd{\citeindexfile} \\
+\cmd{\cftKfont} \\
 \end{syntax}
-The name of the file for the citation index is stored in the
-macro \cmd{\citeindexfile}. This is initially defined as:
-\begin{lcode}
-\newcommand{\citeindexfile}{\jobname}
-\end{lcode}
-That is, the citation entries will be written to the default 
-\ixfile{idx} file.
-This may be not what you want so you can change this, for example to:
-\begin{lcode}
-\renewcommand{\citeindexfile}{names}
-\end{lcode}
-If you do change \cmd{\citeindexfile} then you have to put
-\begin{lcode}
-\makeindex[\citeindex]
-\end{lcode}
-\emph{before}
-\begin{lcode}
-\usepackage[...]{natbib}
-\end{lcode}
+\glossary(cftKfont)%
+  {\cs{cftKfont}}%
+  {Controls the appearance of the number and title of a `K' entry in a \listofx.}
+ This controls the appearance of the title (and its preceding number, 
+ if any). It may be changed using \cmd{\renewcommand}.
 
-    So, there are effectively two choices, either along the lines of
+\begin{syntax}
+\cmd{\cftKname} \\
+\end{syntax}
+\glossary(cftKname)
+  {\cs{cftKname}}%
+  {Called as the first element of the  `K' entry line in a \listofx.}
+    The first element typeset in an entry is 
+\cmd{\cftKname}.\footnote{Suggested by Danie\index{Els, Danie} Els.}
+Its default definition is 
 \begin{lcode}
-\renewcommand{\citeindexfile}{authors} % write to authors.idx
-\makeindex[\citeindexfile]
-\usepackage{natbib}
-\citeindextrue
-...
-\renewcommand{\indexname}{Index of citations}
-\printindex[\citeindexfile]
+\newcommand*{\cftKname}{}
 \end{lcode}
-or along the lines of
+so it does nothing. However, to put the word `Chapter' before each chapter 
+number in a \toc\ and `Fig.' before each figure number in a \lof\ do:
 \begin{lcode}
-\usepackage{natbib}
-\citeindextrue
-\makeindex
-...
-\printindex
+\renewcommand*{\cftchaptername}{Chapter\space}
+\renewcommand*{\cftfigurename}{Fig.\space}
 \end{lcode}
 
-\subsubsection{Populating the \file{idx} file}
-
-    In the standard classes, indexed items are written directly to an
-\ixfile{idx} file. With the class, however, the indexed items are
-written to the \ixfile{aux} file and then on the next LaTeX run the
-indexed items in the \ixfile{aux} file are written to the designated
-\ixfile{idx} file.
-
-   The disadvantage of this two stage process is that after any change to
-the indexed items LaTeX has to be run twice to ensure that the change
-is propagated to the \ixfile{idx} file. Then, of course, a new \ixfile{ind}
-will have to be created and LaTeX run one more time. However, this process
-is very similar to what you have to do if you are using BibTeX to create 
-a bibliography.
-
-   The advantage of the approach is that indexed items from \cmd{\include}
-files that are not processed on a particular run are not lost. The
-standard direct write to an \ixfile{idx} file loses any `non-inluded'
-indexed items.
-
-\index{index|)}
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapterstyle{hangnum}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- \chapter{Captions and floats} \label{chap:captions}
-
-This chapter uses the \cstyle{hangnum} chapterstyle. Section numbers
-are also hung into the margin\index{margin} to match via the declaration \cmd{\hangsecnum}.
-\hangsecnum
-
-\newcommand{\pname}{ccaption}
-
- \section{Introduction}
-
-\index{caption|(}
-
- Some publishers require, and some authors prefer, captioning styles
- other than the one style provided by standard LaTeX. This chapter
-describes how you can implement your own captioning style.
-
- Some publishers require that documents that include multi-part
- tables\index{table} use a \textit{continuation caption} on all but the first
- part of the multi-part table\index{table}. For the times where such a table\index{table}
- is specified by the author as a set of tables\index{table}, the 
- class 
- provides a simple `continuation' caption command to meet this 
- requirement. It also provides
- a facility for an `anonymous' caption which can be used in any
- float\index{float} environment. 
- Captions can be defined that are suitable for use in non-float
- environments, such as placing a picture in a minipage and captioning
- it just as though it had been put into a normal figure\index{figure} environment.
- Further, a mechanism is provided for defining new float\index{float} environments.
-
-    The commands and environments described below are very similar to
-those supplied by the \Lpack{ccaption} package~\cite{CCAPTION}.
-
- \section{Captions} 
-
-
- \subsection{Changing the caption style}
-
-\index{caption!style|(}
-
-\begin{syntax}
-\cmd{\captiondelim}\marg{delim} \\
-\end{syntax}
- The default captioning style is to put a delimeter in the form
- of a colon between the caption
- number and the caption title. The command \cmd{\captiondelim}
- can be used to change the delimeter. For example, to have an en-dash instead
- of the colon, |\captiondelim{-- }| will do the trick. Notice that no space is
- put between the delimeter and the title unless it is specified in the
- \meta{delim} parameter. 
- The class initially specifies |\captiondelim{: }|
- to give the normal delimeter.
-
 \begin{syntax}
-\cmd{\captionnamefont}\marg{fontspec} \\
+\cmd{\cftKpresnum} \cmd{\cftKaftersnum} \cmd{\cftKaftersnumb} \\
 \end{syntax}
- The \meta{fontspec} specified by \cmd{\captionnamefont} is used
- for typesetting the caption name; that is, the first part of the caption
- up to and including the delimeter (e.g., the portion `Table 3:').
- \meta{fontspec} can be any kind of font specification and/or command and/or 
- text. This first part of the caption is treated like: 
-|{\captionnamefont Table 3: }|,
- so font declarations, not font text-style commands, are needed for \meta{fontspec}
- For instance, |\captionnamefont{\Large\sffamily}| to specify a large 
-sans-serif font.
- The class initially specifies |\captionnamefont{}|
- to give the normal font.
- 
+\glossary(cftKpresnum)%
+  {\cs{cftKpresnum}}%
+  {Called immediately before typesetting the number of a `K' entry in a \listofx.} 
+\glossary(cftKaftersnum)%
+  {\cs{cftKaftersnum}}%
+  {Called immediately after typesetting the number of a `K' entry in a \listofx.} 
+\glossary(cftKaftersnumb)%
+  {\cs{cftKaftersnumb}}%
+  {Called immediately after typesetting the number box of a `K' entry in a \listofx.} 
+ The section number is typeset within a box of width \lnc{\cftKnumwidth}.
+ Within the box the macro \cmd{\cftKpresnum} is first called, then the
+ number is typeset, and the \cmd{\cftKaftersnum}
+ macro is called after the number is typeset. The last command
+ within the box is \cmd{\hfil} to make the box contents flushleft.
+ After the box is
+ typeset the \cmd{\cftKaftersnumb} macro is called before typesetting
+ the title text. All three of these can be changed by \cmd{\renewcommand}.
+ By default they are defined to do nothing.
 
-\begin{syntax}
-\cmd{\captiontitlefont}\marg{fontspec} \\
-\end{syntax}
- Similarly, the \meta{fontspec} specified by \cmd{\captiontitlefont}
- is used for typesetting the title text of a caption. For example,
- |\captiontitlefont{\itshape}| for an italic title text.
- The class initially specifies |\captiontitlefont{}|
- to give the normal font.
 
 \begin{syntax}
-\cmd{\captionstyle}\oarg{short}\marg{normal} \\
-\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{centerlastline} \\
+\cmd{\booknumberline}\marg{num} \\
+\cmd{\partnumberline}\marg{num} \\
+\cmd{\chapternumberline}\marg{num} \\
 \end{syntax}
-Caption styles are set according to the \cmd{\captionstyle} declaration.
-Unless the optional \meta{short} argument is given all captions are typeset
-according to \meta{normal}. If the optional \meta{short} argument
-is specififed, captions that are less than one line in length are typeset
-according to \meta{short}. 
- By default the name and title of a caption are typeset as a block 
- (non-indented)
- paragraph\index{paragraph!block}. 
-
-    Sensible values for the arguments include:
-\cmd{\raggedleft}, \cmd{\centering}, \cmd{\raggedright}, and
- \cmd{centerlastline}. The class initially specifies
+In the \toc, the macros \cmd{\booknumberline}, \cmd{\partnumberline} and 
+\cmd{\chapternumberline}
+are responsible respectively for typesetting the \cmd{\book}, \cmd{\part} 
+and \cmd{\chapter}
+numbers. Internally they use \cmd{\cftKpresnum}, \cmd{\cftKaftersnum}
+and \cmd{\cftKaftersnumb} as above. If you do not want, say, 
+the \cmd{\chapter} number to appear you
+can do:
 \begin{lcode}
-\captionstyle{}
+\renewcommand{\chapternumberline}[1]{}
 \end{lcode}
-which gives the block paragraph style. The \cmd{\centerlastline} style 
-gives a block paragraph\index{paragraph!block} but with the last 
-line centered.
 
+\begin{comment}
+\Note{}  Because the \Lpack{hyperref} package~\cite{HYPERREF} 
+does not understand
+the \cmd{\partnumberline} and \cmd{\chapternumberline} commands,
+if you use the \Lpack{hyperref} package you will also have to use
+the \Lpack{memhfixc} package, which comes with memoir.
+\end{comment}
 
-\begin{syntax}
-\cmd{\hangcaption} \\
-\cmd{\indentcaption}\marg{length} \\
-\cmd{\normalcaption} \\
-\end{syntax}
- The command \cmd{\hangcaption} will cause captions to be typeset 
-with the second
- and later lines of a multiline caption title indented by the width
- of the caption name. The command \cmd{\indentcaption}
- will indent title lines after the first by \meta{length}. These
- commands are independent of the |\captionstyle{...}|. Note that a
- caption will not be simultaneously hung and indented. The \cmd{\normalcaption}
- command undoes any previous \cmd{\hangcaption} or \cmd{\indentcaption} command.
- The class initially specifies \cmd{\normalcaption}
- to give the normal non-indented paragraph\index{paragraph!indentation} style.
 
 \begin{syntax}
-\cmd{\changecaptionwidth} \\
-\cmd{\captionwidth}\marg{length} \\
-\cmd{\normalcaptionwidth} \\
+\cmd{\cftKleader} \\
+\cmd{\cftKdotsep} \\
 \end{syntax}
- Issuing the command \cmd{\changecaptionwidth} will cause the captions to
- be typeset within a total width \meta{length} as specified by
- \cmd{\captionwidth}. Issuing the command \cmd{\normalcaptionwidth}
- will cause captions to be typeset as normal full width captions.
- The class initially specifies \cmd{\normalcaptionwidth} and 
- |\captionwidth{\linewidth}|
- to give the normal width. If a caption is being set within the 
- side captioned environments from the \Lpack{sidecap} package~\cite{SIDECAP}
- then it must be a \cmd{\normalcaptionwidth} caption.
+\glossary(cftKleader)
+  {\cs{cftKleader}}%
+  {Leader between the title and page number of a `K' entry in a \listofx.} 
+\glossary(cftKdotsep)
+  {\cs{cftKdotsep}}%
+  {Separation between dots in a leader between the title and page number of a `K' entry in a \listofx.} 
+ \cmd{\cftKleader} defines the leader between the title and the page number;
+ it can be changed by \cmd{\renewcommand}.
+ The spacing between any dots in the leader is controlled by \cmd{\cftKdotsep} 
+ (\cmd{\@dotsep} in \fref{fig:ltoc}).
+ It can be changed by \cmd{\renewcommand} and its value must be either a
+ number (e.g., 6.6 or \cmd{\cftdotsep}) or \cmd{\cftnodots} (to disable the dots).
+ The spacing
+ is in terms of \emph{math units} where there are 18mu to 1em.
+
 
 \begin{syntax}
-\cmd{\precaption}\marg{pretext} \\
-\cmd{\postcaption}\marg{posttext} \\
+\cmd{\cftKformatpnum}\marg{pnum} \\
+\cmd{\cftKpagefont} \\
 \end{syntax}
-  The commands \cmd{\precaption} and 
- \cmd{\postcaption}
- specify \meta{pretext} and \meta{posttext} that will be processed at the
- start and end of a caption. For example 
+\glossary(cftKformatpnum)%
+  {\cs{cftKformatpnum}\marg{pnum}}%
+  {Typesets the page number \meta{pnum} of a  `K' entry in a \listofx.} 
+\glossary(cftKpagefont)%
+  {\cs{cftKpagefont}}%
+  {Font for the page number of a  `K' entry in a \listofx.} 
+The macro \cmd{\cftKformatpnum} typesets an entry's page number, using
+the \cmd{\cftKpagefont}.\footnote{This addition to the class was suggested
+by Dan\index{Luecking, Daniel} Luecking, \ctt\ \textit{Re: setting numbers in toc in their natural width box,} 2007/08/15.}
+The default definition is essentially:
 \begin{lcode}
-\precaption{\rule{\linewidth}{0.4pt}\par}
-\postcaption{\rule{\linewidth}{0.4pt}}
+\newcommand*{\cftKformatpnum}[1]{%
+  \hbox to \@pnumwidth{\hfil{\cftKpagefont #1}}}
+\end{lcode}
+which sets the number right justified in a box \lnc{\@pnumwidth} wide.
+To have, say, a \cmd{\part} page number left justified in its box, do:
+\begin{lcode}
+\renewcommand*{\cftpartformatpnum}[1]{%
+  \hbox to \@pnumwidth{{\cftpartpagefont #1}}}
 \end{lcode}
-  will draw a horizontal line above and below the captions.
- The class initially specifies |\precaption{}| and |\postcaption{}|
- to give the normal appearance.
 
- 
-    If any of the above commands are used in a float\index{float}, or other, environment
- their effect is limited to the environment. If they are used in the preamble\index{preamble}
- or the main text, their effect persists until replaced by a similar
- command with a different parameter value. The commands do not affect the
- apperance of the title in any \listofx.
+\begin{syntax}
+\cmd{\cftKafterpnum} \\
+\end{syntax}
+\glossary(cftKafterpnum)
+  {\cs{cftKafterpnum}}%
+  {Called after typesetting the page number of a  `K' entry in a \listofx.} 
+ This macro is called after the page number has been typeset. Its default
+ is to do nothing. It can be changed by \cmd{\renewcommand}.
 
 \begin{syntax}
-\cmd{\\}\oarg{length} \\
-\cmd{\\*}\oarg{length} \\
+\cmd{\cftsetindents}\marg{kind}\marg{indent}\marg{numwidth} \\
 \end{syntax}
- The normal LaTeX command \cmd{\\} can be used within the
- caption text to start a new line. Remember that \cmd{\\} is a fragile 
- command, so if it is
- used within text that will be added to a \listofx{}
- it must be protected.
- As examples: 
+\glossary(cftsetindents)%
+  {\cs{cftsetindents}\marg{kind}\marg{indent}\marg{numwidth}}%
+  {Set the \meta{kind} entry \textit{indent} to \meta{indent} and
+   its \textit{numwidth} to \meta{numwidth}.}
+ The command 
+ \cmd{\cftsetindents} sets the \meta{kind} entries \textit{indent} to the 
+length \meta{indent} and its
+ \textit{numwidth} to the length \meta{numwidth}. The \meta{kind} argument
+ is the name of one of the standard entries (e.g., \texttt{subsection}) or the 
+name of entry that has been defined within the document.
+ For example 
 \begin{lcode}
-\caption{Title with a \protect\\ new line in both the body and List of}
-\caption[List of entry with no new line]{Title with a \\ new line}
-\caption[List of entry with a \protect\\ new line]{Title text}
+ \cftsetindents{figure}{0em}{1.5em}
 \end{lcode}
+ will make figure\index{figure} entries left justified.
 
- Effectively, a caption is typeset as though it were:
+    This manual requires more space for section numbers in the \toc{} than
+the default (which allows for three digits). Consequently the preamble\index{preamble}
+contains the following:
+\begin{lcode}
+\cftsetindents{section}{1.5em}{3.0em}
+\cftsetindents{subsection}{4.5em}{3.9em}
+\cftsetindents{subsubsection}{8.4em}{4.8em}
+\cftsetindents{paragraph}{10.7em}{5.7em}
+\cftsetindents{subparagraph}{12.7em}{6.7em}
+\end{lcode}
+Note that changing the indents at one level implies that any lower level
+indents should be changed as well.
+
+
+ Various effects can be achieved by changing the definitions of \cmd{\cftKfont},
+ \cmd{\cftKaftersnum}, \cmd{\cftKaftersnumb}, \cmd{\cftKleader} and 
+\cmd{\cftKafterpnum}, 
+ either singly or in combination.
+ For the sake of some examples, assume that we have the following initial
+ definitions
  \begin{lcode}
- \precaption
- {\captionnamefont NAME NUMBER \captiondelim}
- {\captionstyle\captiontitlefont THE TITLE}
- \postcaption
+ \newcommand*{\cftKfont}{}
+ \newcommand*{\cftKaftersnum}{}
+ \newcommand*{\cftKaftersnumb}{}
+ \newcommand*{\cftKleader}{\cftdotfill{\cftKdotsep}}
+ \newcommand*{\cftKdotsep}{\cftdotsep}
+ \newcommand*{\cftKpagefont}{}
+ \newcommand*{\cftKafterpnum}{}
  \end{lcode}
- Replacing the above commands by their defaults leads to the simple
- format: \\
- |{NAME NUMBER: }{THE TITLE}|
+Note that the same font should be used for the title, leader and page 
+ number to provide a coherent appearance.
 
- As well as using the styling commands to make simple changes to the
- captioning style more noticeable modifications can also be made.
- To change the captioning style so that the name and title are typeset in
- a sans font it is sufficient to do:
+ \begin{itemize}
+ \item To eliminate the dots in the leader:
  \begin{lcode}
- \captionnamefont{\sffamily}
- \captiontitlefont{\sffamily}
+ \renewcommand*{\cftKdotsep}{\cftnodots}
  \end{lcode}
 
- \begin{table}
- \centering
- \captionnamefont{\sffamily}
- \captiondelim{}
- \captionstyle{\\}
- \captiontitlefont{\scshape}
- \setlength{\belowcaptionskip}{10pt}
- \caption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
-  three & III \\
-  five  & V \\
-  eight & VIII \\ \hline
-  \end{tabular}
- \end{table}
+ \item To put something (e.g., a name) before the title (number):
+ \begin{lcode}
+ \renewcommand*{\cftKname}{SOMETHING }
+ \end{lcode}
 
- A more obvious change in styling is shown in \tref{tab:style},
- which was coded as:
+ \item To add a colon after the section number:
  \begin{lcode}
- \begin{table}
- \centering
- \captionnamefont{\sffamily}
- \captiondelim{}
- \captionstyle{\\}
- \captiontitlefont{\scshape}
- \setlength{\belowcaptionskip}{10pt}
- \caption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
-  ...
- \end{table}
+ \renewcommand*{\cftKaftersnum}{:}
  \end{lcode}
- This leads to the approximate caption format (processed within |\centering|): \\
- |{\sffamily NAME NUMBER}{\\ \scshape THE TITLE}| \\
- Note that the newline command (\cmd{\\}) cannot be put in the first part
- of the format (i.e., the |{\sffamily NAME NUMBER}|); it has to go into
- the second part, which is why it is specified via |\captionstyle{\\}|
- and not |\captiondelim{\\}|.
 
-    If a mixture of captioning styles will be used you may want to
- define a special caption command for each non-standard style. For
- example for the style of the caption in \tref{tab:style}:
+ \item To put something before the title number, add a double colon after 
+    the title number, set everything in bold font,
+ and start the title text on the following line:
  \begin{lcode}
- \newcommand{\mycaption}[2][\@empty]{
-   \captionnamefont{\sffamily\hfill}
-   \captiondelim{\hfill}
-   \captionstyle{\centerlastline\\}
-   \captiontitlefont{\scshape}
-   \setlength{\belowcaptionskip}{10pt}
-   \ifx #1\@empty \caption{#2}\else \caption[#1]{#2}}
+ \renewcommand*{\cftKfont}{\bfseries}
+ \renewcommand*{\cftKleader}{\bfseries\cftdotfill{\cftKdotsep}}
+ \renewcommand*{\cftKpagefont}{\bfseries}
+ \renewcommand*{\cftKname}{SOMETHING }
+ \renewcommand{\cftKaftersnum}{::}
+ \renewcommand{\cftKaftersnumb}{\\}
  \end{lcode}
- \textbf{NOTE:}  Any code that involves the |@| sign must be either in
- a package (\file{.sty}) file or enclosed between a \cmd{\makeatletter} \ldots
- \cmd{\makeatother} pairing.
 
- The code for the \tref{tab:style} example can now be written as:
+    If you are adding text in the number box in addition to the number,
+ then you will probably have to increase the width of the box so that
+ multiline titles have a neat vertical alignment; changing box widths
+ usually implies that the indents will require modification as 
+ well. One possible method of adjusting the box width for the above example
+ is:
  \begin{lcode}
- \begin{table}
- \centering
- \mycaption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
-  ...
- \end{table}
+ \newlength{\mylen}                  % a "scratch" length
+ \settowidth{\mylen}{\bfseries\cftKaftersnum}
+ \addtolength{\cftKnumwidth}{\mylen} % add the extra space
+ \end{lcode} 
+
+
+ \item To set the section numbers flushright:
+ \begin{lcode}
+ \setlength{\mylen}{0.5em}    % extra space at end of number
+ \renewcommand{\cftKpresnum}{\hfill} % note the double `l'
+ \renewcommand{\cftKaftersnum}{\hspace*{\mylen}}
+ \addtolength{\cftKnumwidth}{\mylen}
  \end{lcode}
- Note that in the code for |\mycaption| I have added two
- \cmd{\hfill} commands and \cmd{\centerlastline} compared with the original
- specification.
- It turned out that the original definitions
- worked for a single line caption but not for a multiline caption.
- The additional commands makes it work in both cases, forcing the
- name to be centered as well as the last line of a multiline title,
- thus giving a balanced appearence.
+ In the above, the added initial \cmd{\hfill} in the box overrides the
+ final \cmd{\hfil} in the box, thus shifting everything to the right hand
+ end of the box. The extra space is so that the number is not typeset
+ immediately at the left of the title text.
 
- \index{caption!style|)}
+ \item To set the entry ragged left (but this only looks good for single
+       line titles):
+ \begin{lcode}
+ \renewcommand{\cftKfont}{\hfill\bfseries}
+ \renewcommand{\cftKleader}{}
+ \end{lcode}
 
+\item To set the titles ragged right instead of the usual flushright.
+      Assuming that there are more than 100 pages in the document (otherwise
+      adjust the length):
+\begin{lcode}
+\setrmarg{3.55em plus 1fil}
+\end{lcode}
+where the last four characters before the closing brace are: digit 1, 
+lowercase F, lowercase I, and lowercase L.
 
- \subsection{Continuation captions and legends}
+ \item To set the page number immediately after the entry text instead of at
+       the righthand margin\index{margin!right}:
+ \begin{lcode}
+ \renewcommand{\cftKleader}{}
+ \renewcommand{\cftKafterpnum}{\cftparfillskip}
+ \end{lcode}
 
-\index{caption!continuation|(}
+\end{itemize}
 
 \begin{syntax}
-\cmd{\contcaption}\marg{text} \\
+\cmd{\cftparfillskip} \\
 \end{syntax}
-    The \cmd{\contcaption} command can be used to put 
- a `continuation' or `concluded'
- caption into a float\index{float} environment. It neither increments the
- float number nor makes any entry into a float listing, but it
- does repeat the numbering of the previous \cmd{\caption} command.
- 
-
-   Table~\ref{tab:m} illustrates the use of the \cmd{\contcaption}
- command. The table\index{table} was produced from the following code.
- \begin{lcode}
-   \begin{table}
-   \centering
-   \caption{A multi-part table} \label{tab:m}
-   \begin{tabular}{lc} \hline
-    just a single line & 1 \\ \hline
-   \end{tabular}
-   \end{table}
-
-   \begin{table}
-   \centering
-   \contcaption{Continued}
-   \begin{tabular}{lc} \hline
-    just a single line & 2 \\ \hline
-   \end{tabular}
-   \end{table}
-
-   \begin{table}
-   \centering
-   \contcaption{Concluded}
-   \begin{tabular}{lc} \hline
-    just a single line & 3 \\ \hline
-   \end{tabular}
-   \end{table}
- \end{lcode}
-
-   \begin{table}
-   \centering
-   \caption{A multi-part table} \label{tab:m}
-   \begin{tabular}{lc} \hline
-    just a single line & 1 \\ \hline
-   \end{tabular}
-   \end{table}
-
-   \begin{table}
-   \centering
-   \contcaption{Continued}
-   \begin{tabular}{lc} \hline
-    just a single line & 2 \\ \hline
-   \end{tabular}
-   \end{table}
-
-   \begin{table}
-   \centering
-   \contcaption{Concluded}
-   \begin{tabular}{lc} \hline
-    just a single line & 3 \\ \hline
-   \end{tabular}
-   \end{table}
-
-\index{caption!continuation|)}
-
-\index{legend}
-\index{caption!anonymous|(}
+\glossary(cftparfillskip)%
+  {\cs{cftparfillskip}}%
+  {Fills the last line in a paragraph in a \listofx.}
+ By default the \cmd{\parfillskip} value is locally set to fill up the last
+ line of a paragraph\index{paragraph}. Just changing \cmd{\cftKleader} as
+in the above example puts horrible interword
+ spaces into the last line of the title. The \cmd{\cftparfillskip} 
+ command  is provided just so that the above effect can be achieved.
 
 \begin{syntax}
-\cmd{\legend}\marg{text} \\
+\cmd{\cftpagenumbersoff}\marg{kind} \\
+\cmd{\cftpagenumberson}\marg{kind} \\
 \end{syntax}
-  The \cmd{\legend} command is intended to be used to put an 
- anonymous 
-  caption into a float\index{float} environment, but may be used anywhere.
-
-   \begin{table}
-   \centering
-   \caption{Another table} \label{tab:legend}
-   \begin{tabular}{lc} \hline
-    A legendary table & 5 \\
-    with two lines    & 6 \\ \hline
-   \end{tabular}
-   \legend{The legend}
-   \end{table}
-
-    For example, the following code was used to produce the two-line
- \tref{tab:legend}. The \cmd{\legend} command can be used within a 
- float\index{float}
- independently of any \cmd{\caption} command.
- \begin{lcode}
-   \begin{table}
-   \centering
-   \caption{Another table} \label{tab:legend}
-   \begin{tabular}{lc} \hline
-    A legendary table & 5 \\
-    with two lines    & 6 \\ \hline
-   \end{tabular}
-   \legend{The legend}
-   \end{table}
- \end{lcode}
-
-     \marginpar{\legend{Title legend}
-                This is a marginal note with a legend.}
-
-  Captioned floats\index{float} are usually thought of in terms of the |table|
-  and |figure|\index{figure} environments. There can be other kinds of 
-float\index{float}.
-  As perhaps a more interesting example, the following code produces
-  the titled marginal\index{marginalia} note which should be displayed near here.
- \begin{lcode}
-     \marginpar{\legend{Title legend}
-                This is a marginal note with a legend.}
- \end{lcode}
+\glossary(cftpagenumbersoff)%
+  {\cs{cftpagenumbersoff}\marg{kind}}%
+  {Eliminates page numbers for the \meta{kind} entries in a \listofx.}
+\glossary(cftpagenumberson)%
+  {\cs{cftpagenumberson}\marg{kind}}%
+  {Reverses the effect of \cs{cftpagenumbersoff}.}
+ The command \cmd{\cftpagenumbersoff} will
+ eliminate the page numbers for \meta{kind} entries in the listing, where
+ \meta{kind} is the name of one of the standard
+ kinds of entries (e.g., \texttt{subsection}, or \texttt{figure}) or the 
+ name of a new entry defined in the document.
 
- If you want the legend text to be included in the \listofx{}
- use the \cmd{\addcontentsline} command in conjunction with the 
- \cmd{\legend}. For example:
+    The command \cmd{\cftpagenumberson} reverses
+ the effect of a corresponding \cmd{\cftpagenumbersoff} for \meta{kind}.
+ 
+    For example, to eliminate page numbers for appendices\index{appendix} 
+in the \toc:
  \begin{lcode}
- \addcontentsline{lot}{table}{Titling text} % left justifified
- \addcontentsline{lot}{table}{\protect\numberline{}Titling text} % indented
+ ...
+ \appendix
+ \addtocontents{toc}{\cftpagenumbersoff{chapter}}
+ \chapter{First appendix}
  \end{lcode}
- The first of these forms will align the first line of the legend text
- under the normal table\index{table} numbers. The second form will align the first
- line of the legend text under the normal table\index{table} titles. In either case,
- second and later lines of a multi-line text will be aligned under
- the normal title lines.
-
-   \begin{table}
-   \centering
-   \captiontitlefont{\sffamily}
-   \legend{Legendary table}
-   \addcontentsline{lot}{table}{Legendary table (toc 1)}
-   \addcontentsline{lot}{table}{\protect\numberline{}
-                                Legendary table (toc 2)}
-   \begin{tabular}{lc} \hline
-    An anonymous table & 5 \\
-    with two lines     & 6 \\ \hline
-   \end{tabular}
-   \end{table}
-
- As an example, the \textsf{Legendary table} is produced by the following code:
+ If there are other chapter type headings\index{heading!chapter} to go 
+into the \toc{} after the  appendices\index{appendix} (perhaps a 
+bibliography\index{bibliography} or an index\index{index}), 
+ then it will be necessary to do a similar 
  \begin{lcode}
-   \begin{table}
-   \centering
-   \captiontitlefont{\sffamily}
-   \legend{Legendary table}
-   \addcontentsline{lot}{table}{Legendary table (toc 1)}
-   \addcontentsline{lot}{table}{\protect\numberline{}Legendary table (toc 2)}
-   \begin{tabular}{lc} \hline
-    An anonymous table & 5 \\
-    with two lines     & 6 \\ \hline
-   \end{tabular}
-   \end{table}
+ \addtocontents{toc}{\cftpagenumberson{chapter}}
  \end{lcode}
- Look at the List of Tables to see how the two forms of \cmd{\addcontentsline}
- are typeset.
+ after the appendices\index{appendix} to restore the page numbering in 
+the \toc.
 
-    As with the \cmd{\caption} command, the spacing before and after
- a legend is controlled by the \lnc{\abovecaptionskip} and 
-\lnc{\belowcaptionskip} lengths. 
+ Sometimes it may be desirable to make a change to the global parameters
+ for an individual entry. For example, a figure\index{figure} might be 
+placed on the end paper\index{paper!end} of a book (the inside of the front 
+or back cover), and this needs to be placed in a \lof\ with the page number 
+set as, say,  `inside front cover'. If `inside front cover' is typeset as 
+an ordinary page number it will stick out into the margin\index{margin}. 
+Therefore, the parameters for this particular entry need to be changed.
 
 \begin{syntax}
-\cmd{\namedlegend}\oarg{short-title}\marg{long-title} \\
+\cmd{\cftlocalchange}\marg{ext}\marg{pnumwidth}\marg{tocrmarg} \\
 \end{syntax}
- As a convenience, the \cmd{\namedlegend} 
- command is like the \cmd{\caption} command except that it does not number
- the caption and, by default, puts no entry into a \listofx{} file. Like
- the \cmd{\caption} command, it picks up the name to be prepended to the
- title text from the float\index{float} environment in which it is called (e.g.,
- it will use \cmd{\tablename} if called within a |table| environment). The
- following code is the source of the \textit{Named legendary table}.
- \begin{lcode}
- \begin{table}
- \centering
- \captionnamefont{\sffamily}
- \captiontitlefont{\itshape}
- \namedlegend{Named legendary table}
- \begin{tabular}{lr} \hline
- seven & VII \\
- eight & VIII \\ \hline
- \end{tabular}
- \end{table}
- \end{lcode}
-
- \begin{table}
- \centering
- \captionnamefont{\sffamily}
- \captiontitlefont{\itshape}
- \namedlegend{Named legendary table}
- \begin{tabular}{lr} \hline
- seven & VII \\
- eight & VIII \\ \hline
- \end{tabular}
- \end{table}
+\glossary(cftlocalchange)%
+  {\cs{cftlocalchange}\marg{ext}\marg{pnumwidth}\marg{tocrmarg}}%
+  {Writes commands to the \meta{ext} \listofx\ file resetting
+   \cs{@pnumwidth} and \cs{@tocrmarg} to the specified values.}
+ The command \cmd{\cftlocalchange} 
+ will write an entry into the file with extension \meta{ext} to reset 
+the global \cmd{\@pnumwidth} and \cmd{\@tocrmarg} parameter lengths. 
+ The command should be called again after any special entry to reset
+ the parameters back to their usual values. Any fragile commands used
+ in the arguments must be protected.
 
 \begin{syntax}
-\cmd{\flegtype}\marg{name} \\
-\cmd{\flegtoctype}\marg{title} \\
+\cmd{\cftaddtitleline}\marg{ext}\marg{kind}\marg{title}\marg{page} \\
+\cmd{\cftaddnumtitleline}\marg{ext}\marg{kind}\marg{num}\marg{title}\marg{page} \\
 \end{syntax}
- The macro \cmd{\flegtype}, where |type| is the name 
- of a float\index{float} environment
- (e.g., |table|) is called by the \cmd{\namedlegend} macro. It is provided
- as a hook that defines the \meta{name} to be used as the name in
- \cmd{\namedlegend}. Two defaults are provided, namely:
- \begin{lcode}
- \newcommand{\flegtable}{\tablename}
- \newcommand{\flegfigure}{\figurename}
- \end{lcode}
- which may be altered via \cmd{\renewcommand} if desired. 
- The macro \cmd{\flegtoctype}, where again |type| is the name 
- of a float\index{float} environment
- (e.g., |table|) is also called by the \cmd{\namedlegend} macro. It is provided
- as a hook that can be used to add \meta{title} to the \listofx.
- By default it is defined to do nothing, and can be changed via
-\cmd{\renewcommand}. For instance, it could be changed for tables\index{table} as:
+\glossary(cftaddtitleline)%
+  {\cs{cftaddtitleline}\marg{ext}\marg{kind}\marg{title}\marg{page}}%
+  {Writes a \cs{contentsline} to the \listofx\ \meta{ext} file for
+   a \meta{kind} entry with \meta{title} and \meta{page} number.}
+\glossary(cftaddnumtitleline)%
+  {\cs{cftaddnumtitleline}\marg{ext}\marg{kind}\marg{num}\marg{title}\marg{page}}%
+  {Writes a \cs{contentsline} to the \listofx\ \meta{ext} file for
+   a \meta{kind} entry with number \meta{number} and \meta{title} and 
+   \meta{page} number.}
+ The command \cmd{\cftaddtitleline} 
+ will write a \cmd{\contentsline} entry into \meta{ext} for a \meta{kind}
+ entry with title \meta{title} and page number \meta{page}. 
+ Any fragile commands used in the arguments must be protected.
+That is,
+ an entry is made of the form: 
+\begin{lcode}
+\contentsline{kind}{title}{page}
+\end{lcode}
+ The command \cmd{\cftaddnumtitleline}
+ is similar to \cmd{\cftaddtitleline} except that it also includes 
+\meta{num} as the argument to
+ \cmd{\numberline}. That is, an entry is made of the form
+\begin{lcode}
+\contentsline{kind}{\numberline{num} title}{page}
+\end{lcode}
+
+ As an example of the use of these commands, 
+ noting that the default LaTeX values for 
+ \cmd{\@pnumwidth} and \cmd{\@tocrmarg} are 1.55em and 2.55em respectively, 
+ one might do the following for a figure\index{figure} on the 
+frontispiece\index{frontispiece} page.
  \begin{lcode}
- \renewcommand{\flegtoctable}[1]{
-   \addcontentsline{lot}{table}{#1}}
+ ...
+  this is the frontispiece page with no number
+  draw or import the picture (with no \caption)
+ \cftlocalchange{lof}{4em}{5em} % make pnumwidth big enough for 
+                                % frontispiece and change margin
+ \cftaddtitleline{lof}{figure}{The title}{frontispiece}
+ \cftlocalchange{lof}{1.55em}{2.55em} % return to normal settings
+ \clearpage
+ ...
  \end{lcode}
-
-  The \cmd{\legend} command produces a plain, unnumbered heading. It can also
- be useful sometimes to have named and numbered captions outside
- a floating\index{float} environment, perhaps in a |minipage| if you want the table\index{table}
- or picture\index{illustration} to appear at a precise location in your document.
-
-\index{caption!anonymous|)}
-
-\index{caption!fixed|(}
+    Recall that a \cmd{\caption} command will put an entry in the \file{lof}
+file, which is not wanted here. If a caption\index{caption} is required, 
+then you can  either craft one youself or, assuming that your general 
+captions\index{caption} are not too exotic, use the \cmd{\legend} command 
+(see later). If the illustration\index{illustration} is numbered, use 
+\cmd{\cftaddnumtitleline} instead of \cmd{\cftaddtitleline}.
+
+The next functions were suggested by Lars\index{Madsen, Lars} Madsen who
+found them useful if, for example, you had two versions of the
+\toc\ and you needed some aspects to be formatted differently.
+\begin{syntax}
+\cmd{\cftinsertcode}\marg{name}\marg{code} \\
+\cmd{\cftinserthook}\marg{file}\marg{name} \\
+\end{syntax}
+\glossary(cftinsertcode)
+  {\cs{cftinsertcode}\marg{name}\marg{code}}%
+  {Defines Toc (LoF, LoT) \meta{name} insertion to be \meta{code}.}
+\glossary(cftinserthook)
+  {\cs{cftinserthook}\marg{file}\marg{name}}%
+  {Inserts code \meta{name} into \meta{file} (e.g., \texttt{toc}, \texttt{lof}, etc.}
+The \cmd{\cftinserthook} is somewhat like \cmd{\addtocontents} in that it 
+enables you to insert a code hook into the \toc, etc., where \meta{file} is 
+the (\texttt{toc}, \texttt{lof}, \ldots) file and \meta{name} is the `name'
+of the hook. The \meta{code} for the hook is specified via \cmd{\cftinsertcode}
+where \meta{name} is the name you give to the hook. These can be used to make
+alterations to a \listofx\ on the fly. For example:
+\begin{lcode}
+\cftinsertcode{A}{%
+  \renewcommand*{\cftchapterfont}{\normalfont\scshape}
+  ... }% code for ToC
+...
+\frontmatter
+\tableofcontents
+\cftinsertcode{G}{...}% code for LoF
+\cftinsertcode{F}{...}% code for LoF
+\listoffigures
+...
+\cftinserthook{lof}{G}
+...
+\chapter{...}
+...
+\mainmatter
+\cftinserthook{toc}{A}
+\cftinserthook{lof}{F}
+\chapter{...}
+...
+\end{lcode}
+If you do not use \cmd{\cftinsertcode} \emph{before} calling the command to
+type the \listofx\ that it is intended for then nothing will happen. No
+harm will come if a matching \cmd{\cftinserthook} is never used. No harm
+occures either if you call \cmd{\cftinserthook} and there is no prior
+matching \cmd{\cftinsertcode}.
 
 \begin{syntax}
-\cmd{\newfixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
-\cmd{\renewfixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
-\cmd{\providefixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
+\cmd{\precistoctext}\marg{text} \cmd{\precistocfont} \\
 \end{syntax}
- The \cmd{\newfixedcaption} 
- command, and its friends, can be used to create a new captioning
- \meta{command} that may be used outside the float\index{float} environment \meta{float}.
- Both the environment \meta{float} and a captioning command, 
- \meta{capcommand}, for that environment must have been defined before
- calling \cmd{\newfixedcaption}. Note that \cmd{\namedlegend} can be used
- as \meta{capcommand}.
- The \cmd{\renewfixedcaption} and \cmd{\providefixedcaption} commands take the same 
- arguments as \cmd{\newfixedcaption}; the three commands are analagous
- to those in the \cmd{\newcommand} family.
-
- For example, to define a new |\figcaption| command for captioning pictures
- outside the |figure|\index{figure} environment, do\\
- |\newfixedcaption{\figcaption}{figure}| \\
- The optional \meta{capcommand} argument is the name of the float\index{float}
- captioning command that is being aliased. It defaults to \cmd{\caption}.
- As another example, where the optional argument is required, if you
- want to create a new continuation caption command for non-floating
- tables\index{table}, say |\ctabcaption|, then do \\
- |\newfixedcaption[\contcaption]{\ctabcaption}{table}|
+\glossary(precistoctext)%
+  {\cs{precistoctext}\marg{text}}%
+  {ToC entry for chapter precis \meta{text}}
+\glossary(precistocfont)%
+  {\cs{precistocfont}}%
+  {Font for typesetting \cs{precistoctext}.}
+The \cmd{\chapterprecistoc} macro puts the macro \cmd{\precistoctext} into 
+the \ixfile{toc} file. The default definition is
+\begin{lcode}
+\DeclareRobustCommand{\precistoctext}[1]{%
+  {\leftskip \cftchapterindent\relax
+   \advance\leftskip \cftchapternumwidth\relax
+   \rightskip \@tocrmarg\relax
+   \precistocfont #1\par}}
+\end{lcode}
+Effectively, in the \toc{} \cmd{\precistoctext} typesets its argument like 
+a chapter title using the \cmd{\precistocfont} (default \cmd{\itshape}).
 
- Captioning commands created by \cmd{\newfixedcaption} will be named and
- numbered in the same style as the original \meta{capcommand}, can
- be given a \cmd{\label}, and will appear in the appropriate 
- \listofx. They can also be used within floating\index{float}
- environments, but will not use the environment name as a guide to
- the caption name or entry into the \listofx. For
- example, using |\ctabcaption| in a |figure|\index{figure} environment will still
- produce a \textbf{Table\ldots} named caption.
 
-   Sometimes captions are required on the opposite page to a figure\index{figure}, and
- \cmd{\newfixedcaption} can be useful in this context. For example, if 
-figure\index{figure}
- captions should be placed on an otherwise empty page immediately before
- the actual figure\index{figure}, then this can be accomplished by the following hack:
- \begin{lcode}
- \newfixedcaption{\figcaption}{figure}
-  ...
- \afterpage{ % fill current page then flush pending floats
-   \clearpage
-   \begin{midpage}  %  vertically center the caption
-   \figcaption{The caption} %  the caption
-   \end{midpage}
-   \clearpage
-   \begin{figure}THE FIGURE, NO CAPTION HERE\end{figure}
-   \clearpage
- }  % end of \afterpage
- \end{lcode}
- Note that the \Lpack{afterpage} package~\cite{AFTERPAGE} is required, 
-which is part of the
- required tools bundle. The \Lpack{midpage} package supplies the |midpage|
- environment, which can be simply defined as:
- \begin{lcode}
- \newenvironment{midpage}{\vspace*{\fill}}{\vspace*{\fill}}
- \end{lcode}
- The code might need adjusting to meet your particular requirements.
- The \cmd{\cleartoevenpage} command ensures that you get to the next
- even-numbered page (the \cmd{\cleardoublepage} gets you to the next odd-numbered
- page and \cmd{\clearpage} gets you to the next page which may be odd or even).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\index{caption!fixed|)}
 
- \subsection{Bilingual captions}
+\subsection{Example: No section number}
 
-\index{caption!bilingual|(}
+    There are at least two ways of listing section titles in the \toc\
+without displaying their numbers and both involve the \cmd{\numberline}
+command which typesets the number in a box. 
 
-    Some documents require bilingual (or more) captions. The class 
- provides a set of commands for bilingual captions. Extensions to the
- set, perhaps to support trilingual captioning, are left as an exercise
- for the document author.
 
-\begin{syntax}
-\cmd{\bitwonumcaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{short2}\marg{long2} \\
-\cmd{\bionenumcaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{short2}\marg{long2} \\
-\end{syntax}
-  Bilingual captions can be typeset by the \cmd{\bitwonumcaption} 
- command which has six arguments. 
- The first, optional argument \meta{label}, is the name of a label, if
- required.
- \meta{short1} and \meta{long1} are the short (i.e., equivalent
- to the optional argument
- to the \cmd{\caption} command) and long caption texts for
- the main language of the document. The value of the \meta{NAME} argument
- is used as the caption name for the second language caption, while
- \meta{short2} and \meta{long2} are the short and long caption texts
- for the second language. For example, if the main and secondary languages
- are English and German and a figure\index{figure} is being captioned: \\
- |\bitwonumcaption{Short}{Long}{Bild}{Kurz}{Lang}| \\
-  If the short title text(s) is not required, then leave the appropriate
- argument(s) either empty or as one or more spaces, like: \\
- |\bitwonumcaption[fig:bi1]{}{Long}{Bild}{  }{Lang}| \\
- Both language texts are entered into the appropriate \listofx,
- and both texts are numbered.
-
- Figure~\ref{fig:bi1} is an example of using the above code.
- \begin{figure}
- \centering
- EXAMPLE FIGURE WITH BITWONUMCAPTION
- \bitwonumcaption[fig:bi1]{}{Long \cs{bitwonumcaption}}{Bild}{  }{Lang \cs{bitwonumcaption}} 
- \end{figure}
+    The first method redefines \cmd{\numberline} so it throws away the
+argument. We do this by modifying the \cmd{\cftKfont} macro which is called
+before \cmd{\numberline} and the \cmd{\cftKafterpnum} which is called after
+the page number has been typeset.
+\begin{lcode}
+\let\oldcftsf\cftsectionfont%  save definition of \cftsectionfont
+\let\oldcftspn\cftsectionafterpnum% and of \cftsectionafterpnum
+\renewcommand*{\cftsectionfont}{%
+  \let\oldnl\numberline%       save definition of \numberline
+  \renewcommand*{\numberline}[1]{}% change it
+  \oldcftsf}                 % use original \cftsectionfont
+\renewcommand*{\cftsectionafterpnum}{%
+  \let\numberline\oldnl%     % restore orginal \numberline
+  \oldcftspn}                % use original \cftsectionafterpnum
+\end{lcode}
 
-  The \cmd{\bionenumcaption} command takes the same arguments as 
-\cmd{\bitwonumcaption}.
- The difference between the two commands is that \cmd{\bionenumcaption} does
- not number the second language text in the \listofx.
- Figure~\ref{fig:bi3} is an example of using \cmd{\bionenumcaption}.
- \begin{figure}
- \centering
- EXAMPLE FIGURE WITH BIONENUMCAPTION
- \bionenumcaption[fig:bi3]{}{Long English \cs{bionenumcaption}}{Bild}{  }{Lang Deutsch \cs{bionenumcaption}} 
- \end{figure}
+    Probing a little deeper, the \cmd{\numberline} macro is called to
+typeset section numbers and is defined as:
+\begin{lcode}
+\renewcommand*{\numberline}[1]{%
+  \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}
+\end{lcode}
+Each
+kind of heading \cmd{\let}s the \cmd{\@cftbsnum} macro to \cmd{\cftKpresnum},
+and the \cmd{\@cftasnum} macro to \cmd{\cftKaftersnum}, and the
+\cmd{\@cftasnumb} macro to \cmd{\cftKaftersnumb} as appropriate for the
+heading. The second method for killing the number uses a \tx\ method 
+for defining a macro with
+a delimited argument.
+\begin{lcode}
+\def\cftsectionpresnum #1\@cftasnum{}
+\end{lcode}
+The interpretation of this is left as an exercise for anyone who might 
+be interested.
 
-\begin{syntax}
-\cmd{\bicaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{long2} \\
-\end{syntax}
-  When bilingual captions are typeset via the \cmd{\bicaption} 
- command the second language text is not put into
- the \listofx. The command
- takes 5 arguments. 
- The optional \meta{label} is for a label if required.
- \meta{short1} and \meta{long1} are the short and long caption texts for
- the main language of the document. The value of the \meta{NAME} argument
- is used as the caption name for the second language caption. The last
- argument, \meta{long2}, is the caption text
- for the second language (which is not put into the \listofx). 
- For example, if the main and secondary languages
- are English and German: \\
- |\bicaption{Short}{Long}{Bild}{Langlauf}| \\
- If the short title text is not required, then leave the appropriate
- argument either empty or as one or more spaces.
+\subsection{Example: Multicolumn entries}
 
- Figure~\ref{fig:bi2} is an example of using \cmd{\bicaption} and was 
- produced by the following code:
- \begin{lcode}
- \begin{figure}
- \centering
- EXAMPLE FIGURE WITH A RULED BICAPTION
- \precaption{\rule{\linewidth}{0.4pt}\par}
- \midbicaption{\precaption{}\postcaption{\rule{\linewidth}{0.4pt}}}
- \bicaption[fig:bi2]{Short English \cs{bicaption}}{Longingly}{Bild}{Langlauf}
- \end{figure}
- \end{lcode}
-
- \begin{figure}
- \centering
- EXAMPLE FIGURE WITH A RULED BICAPTION
- \precaption{\rule{\linewidth}{0.4pt}\par}
- \midbicaption{\precaption{}\postcaption{\rule{\linewidth}{0.4pt}}}
- \bicaption[fig:bi2]{Short English \cs{bicaption}}{Longingly}{Bild}{Langlauf}
- \end{figure}
-
-\begin{syntax}
-\cmd{\bicontcaption}\marg{long1}\marg{NAME}\marg{long2} \\
-\end{syntax}
-  Bilingual continuation captions can be typeset via the \cmd{\bicontcaption} 
- command. In this case, neither language text is put into
- the \listofx. The command
- takes 3 arguments.
- \meta{long1} is the caption text for
- the main language of the document. The value of the \meta{NAME} argument
- is used as the caption name for the second language caption. The last
- argument, \meta{long2}, is the caption text
- for the second language.
- For example, if the main and secondary languages
- are again English and German: \\
- |\bicontcaption{Continued}{Bild}{Fortgefahren}|
-
-\begin{syntax}
- \cmd{\midbicaption}\marg{text} \\
-\end{syntax}
- The bilingual captions are implemented by calling \cmd{\caption} twice,
- once for each language. The command \cmd{\midbicaption}, 
- which is similar to the \cmd{\precaption} and \cmd{\postcaption} commands,
- is executed 
- just before calling the second \cmd{\caption}. Among other things,
- this can be used to
- modify the style of the second caption with respect to the first.
- For example, if there is a line above and below normal
- captions, it is probably undesirable to have a double line in the
- middle of a bilingual caption. So, for bilingual captions the
- following may be done within the float\index{float} before the caption:
- \begin{lcode}
- \precaption{\rule{\linewidth}{0.4pt}\par}
- \postcaption{}
- \midbicaption{\precaption{}\postcaption{\rule{\linewidth}{0.4pt}}}
- \end{lcode}
- This sets a line before the first of the two captions, then the
- \cmd{\midbicaption}{...} nulls the pre-caption line and adds a post-caption
- line for the second caption. The class initially specifies
- |\midbicaption{}|.
+    If the subsection entries, say, in the \toc\ are going to be very 
+short it might be worth setting them in multiple columns. Here is one way
+of doing that which depends on using the \Lpack{multicol}
+package~\cite{MULTICOL}. This assumes that subsections will be the lowest
+heading in the \toc.
+\begin{lcode}
+\newcounter{toccols}
+\setcounter{toccols}{3}
+\newenvironment{mysection}[1]{%
+  \section{#1}%
+  \addtocontents{toc}{\protect\begin{multicols}{\value{toccols}}}}%
+  {\addtocontents{toc}{\protect\end{multocols}}}
+\end{lcode}
 
-\index{caption!bilingual|)}
+The counter \texttt{toccols} controls the number of columns to be used.
+For each section where you want subsections to be typeset in multiple columns
+in the \toc, use the \texttt{mysection} environment instead of \cmd{\section},
+like:
+\begin{lcode}
+\begin{mysection}{Columns}
+...
+\subsection{Fat}
+...
+\subsection{Thin}
+...
+\end{mysection}
+\end{lcode}
 
- \subsection{Subcaptions}
+Any \toc\ entries generated from within the environment will be enclosed
+in a \Ie{multicols} environment in the \toc. The \cmd{\protect}s have to be
+used because environment \cmd{\begin} and \cmd{\end} commands are 
+fragile\index{fragile}.
+  
 
-\index{caption!subcaption|(}
+\subsection{Example: Multiple contents}
 
-     The \Lpack{subfigure} package~\cite{SUBFIGURE} enables the captioning of 
-sub-figures\index{figure!sub-} within a larger figure\index{figure}, 
-and similarly for tables\index{table}. The \Lpack{subfigure} package may 
-be used with the class, or you can use the class commands described below.
-These commands can only be used inside a float environment for which a
-subfloat\footnote{See \S\ref{sec:newsub} on \pref{sec:newsub}.}
-has been specified.
+    This book has both a short and a long \toc, neither of which look like
+those typically associated with \ltx. This is how they were done.
 
-\begin{syntax}
-\cmd{\subcaption}\oarg{list-entry}\marg{subcaption} \\
-\end{syntax}
-The \cmd{\subcaption} command is similar to the \cmd{caption} command. It
-typesets an identified \meta{subcaption}, where the identification is
-an alphabetic character enclosed in parentheses. If the optional
-\meta{list-entry} argument is present, \meta{list-entry} is added to
-the caption listings for the float. If it is not present, then 
-\meta{subcaption} is added to the listing. The \cmd{\subcaption} macro
-should only be used in a fixed width box of some sort, for example
-a |minipage| environment, as the \meta{subcaption} will be typeset using
-a box which is the width of the environment.
+    The general style for the \toc, etc., is specified in the \Lpack{memsty}
+package file.
 
-    For example:
 \begin{lcode}
-\begin{figure}
-  \centering
-  \begin{minipage}{0.3\textwidth}
-    \verb?Some verbatim text?
-    \subcaption{First text}
-  \end{minipage}
-  \hfill
-  \begin{minipage}{0.3\textwidth}
-    \verb?More verbatim text?
-    \subcaption{Second text}
-  \end{minipage}
-  \caption{Verbatim texts}
-\end{figure}
+%%% need more space for ToC page numbers
+\setpnumwidth{2.55em}
+\setrmarg{3.55em}
+%%% need more space for ToC section numbers
+\cftsetindents{section}{1.5em}{3.0em}
+\cftsetindents{subsection}{4.5em}{3.9em}
+\cftsetindents{subsubsection}{8.4em}{4.8em}
+\cftsetindents{paragraph}{10.7em}{5.7em}
+\cftsetindents{subparagraph}{12.7em}{6.7em}
+%%% need more space for LoF & LoT numbers
+\cftsetindents{figure}{0em}{3.0em}
+\cftsetindents{table}{0em}{3.0em}
+%%% remove the dotted leaders
+\renewcommand{\cftsectiondotsep}{\cftnodots}
+\renewcommand{\cftsubsectiondotsep}{\cftnodots}
+\renewcommand{\cftsubsubsectiondotsep}{\cftnodots}
+\renewcommand{\cftparagraphdotsep}{\cftnodots}
+\renewcommand{\cftsubparagraphdotsep}{\cftnodots}
+\renewcommand{\cftfiguredotsep}{\cftnodots}
+\renewcommand{\cfttabledotsep}{\cftnodots}
+\end{lcode}
+
+Three macros are defined to control the appearance of the short and 
+the long \toc. First, the macro \cmd{\setupshorttoc} for the short 
+version.
+The first few lines ensure that only chapter or part titles will be set,
+and any chapter precis text or \Icn{tocdepth} changes will be ignored.
+The rest of the code specifies how the chapter titles are to be typeset,
+and finally the part and book titles.
+\begin{lcode}
+\newcommand*{\setupshorttoc}{%
+  \renewcommand*{\contentsname}{Short contents}
+  \let\oldchangetocdepth\changetocdepth
+  \renewcommand*{\changetocdepth}[1]{}
+  \let\oldprecistoctext\precistoctext
+  \renewcommand{\precistoctext}[1]{}
+  \let\oldcftchapterfillnum\cftchapterfillnum
+  \setcounter{tocdepth}{0}% chapters and above
+  \renewcommand*{\cftchapterfont}{\hfill\sffamily}
+  \renewcommand*{\cftchapterleader}{ \textperiodcentered\space}
+  \renewcommand*{\cftchapterafterpnum}{\cftparfillskip}
+%%  \setpnumwidth{0em}
+%%  \setpnumwidth{1.5em}
+  \renewcommand*{\cftchapterfillnum}[1]{%
+    {\cftchapterleader}\nobreak
+    \hbox to 1.5em{\cftchapterpagefont ##1\hfil}\cftchapterafterpnum\par}
+  \setrmarg{0.3\textwidth}
+  \setlength{\unitlength}{\@tocrmarg}
+  \addtolength{\unitlength}{1.5em}
+  \let\oldcftpartformatpnum\cftpartformatpnum
+  \renewcommand*{\cftpartformatpnum}[1]{%
+    \hbox to\unitlength{{\cftpartpagefont ##1}}}}
+  \let\oldcftbookformatpnum\cftbookformatpnum
+  \renewcommand*{\cftbookformatpnum}[1]{%
+    \hbox to\unitlength{{\cftbookpagefont ##1}}}}
+\end{lcode}
+
+    You can do many things using the \cs{cft...} macros to change the 
+appearance of a \toc\ but they can't be entirely coerced into specifying
+the paragraphing of the \cmd{\subsection} titles. The
+\cmd{\setupparasubsecs} also went in the preamble.
+\begin{lcode}
+\newcommand*{\setupparasubsecs}{%
+  \let\oldnumberline\numberline
+  \renewcommand*{\cftsubsectionfont}{\itshape}
+  \renewcommand*{\cftsubsectionpagefont}{\itshape}
+  \renewcommand{\l@subsection}[2]{%
+    \def\numberline####1{\textit{####1}~}%
+    \leftskip=\cftsubsectionindent
+    \rightskip=\@tocrmarg
+%% \advance\rightskip 0pt plus \hsize % uncomment this for raggedright
+%% \advance\rightskip 0pt plus 2em    % uncomment this for semi-raggedright
+    \parfillskip=\fill
+    \ifhmode ,\ \else\noindent\fi
+    \ignorespaces 
+    {\cftsubsectionfont ##1}~{\cftsubsectionpagefont##2}%
+    \let\numberline\oldnumberline\ignorespaces}
+}
+\AtEndDocument{\addtocontents{toc}{\par}
+\end{lcode}
+The above code changes the appearance of subsection titles in the \toc, 
+setting each group as a single paragraph (each is normally set with 
+a paragraph to itself). By uncommenting or commenting the noted lines 
+in the code you can change the layout a little. 
+
+    Normally, section titles (and below) are set as individual 
+paragraphs. Effectively the first thing that is done is to end any 
+previous paragraph, and also the last thing is to end the current 
+paragraph. Notice that the main code above neither starts nor finishes 
+a paragraph. If the group of subsections is followed by a section title, 
+that supplies the paragraph end. The last line above ensures that
+the last entry in the \file{toc} file is \piif{par} as this might be
+needed to finish off a group of subsections if these are the last 
+entries.
+
+And thirdly for the main \toc, the macro \cmd{\setupmaintoc} reverts 
+everything back to normal.
+\begin{lcode}
+\newcommand*{\setupmaintoc}{%
+  \renewcommand{\contentsname}{Contents}
+  \let\changetocdepth\oldchangetocdepth
+  \let\precistoctext\oldprecistoctext
+  \let\cftchapterfillnum\oldcftchapterfillnum
+  \addtodef{\cftchapterbreak}{\par}{}
+  \renewcommand*{\cftchapterfont}{\normalfont\sffamily}
+  \renewcommand*{\cftchapterleader}{%
+                 \sffamily\cftdotfill{\cftchapterdotsep}}
+  \renewcommand*{\cftchapterafterpnum}{}
+  \renewcommand{\cftchapterbreak}{\par\addpenalty{-\@highpenalty}}
+  \setpnumwidth{2.55em}
+  \setrmarg{3.55em}
+  \setcounter{tocdepth}{2}}
+  \let\cftpartformatpnum\oldcftpartformatpnum
+    \addtodef{\cftpartbreak}{\par}{}
+  \let\cftbookformatpnum\oldcftbookformatpnum
+    \addtodef{\cftbookbreak}{\par}{}
+\end{lcode}
+The first few lines restore some macros to their original definitions.
+\begin{lcode}
+\addtodef{\cftchapterbreak}{\par}{}
+\end{lcode}
+ensures that a chapter entry starts off with a \piif{par}; this is needed
+when the previous entry is a group of subsections and their paragraph
+has to be ended. The remaining code lines simply set the appearance of 
+the chapter titles and restore that for parts and books, as well as ensuring
+that they start off new paragraphs.
+
+In the document itself, \cmd{\tableofcontents} was called twice, 
+after the appropriate setups:
+\begin{lcode}
+...
+\setupshorttoc
+\tableofcontents
+\clearpage
+\setupparasubsecs
+\setupmaintoc
+\tableofcontents
+\setlength{\unitlength}{1pt}
+...
 \end{lcode}
+After all this note that I ensured that \lnc{\unitlength} was set 
+to its default value (it had been used as a scratch length in the 
+code for \cmd{\setupparasubsecs}).
 
 
-If a 
-figure that\index{figure}
- includes sub-figures\index{figure!sub-} is itself continued then it may be desireable to
- continue the captioning of the sub-figures. For example, if Figure~3
- has three sub-figures, say A, B and C, and Figure~3 is continued then
- the sub-figures\index{figure!sub-} in the continuation should be D, E, etc.
-\begin{syntax}
-\cmd{\contsubcaption}\oarg{list-entry}\marg{subcaption} \\
-\end{syntax}
-The \cmd{\contsubcaption} command is the continued version of 
-\cmd{\subcaption}.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 
-\begin{syntax}
-\cmd{\label}|(|\meta{bookmark}|)|\marg{key} \\
-\cmd{\subcaptionref}\marg{key} \\
-\end{syntax}
-    A \cmd{\label} command may be included in the \meta{subcaption} argument
-of \cmd{\subcaption} or \cmd{\contsubcaption}.
-Using \cmd{\ref} to refer to the label will typeset the number of the float
-(obtained from a labelled \cmd{\caption}) and the subcaption identifier. On
-the other hand, using \cmd{\subcaptionref} will typeset just the subcaption
-identifier.
 
-    In case the \Lpack{hyperref} package is used, the \cmd{\label} 
-command when used inside a \meta{subcaption} argument can take an optional
-argument, \emph{enclosed in parentheses \emph{not} square brackets}, 
-\meta{bookmark} which will create a bookmark field of the form
-`Subfigure 3.2(c)'.
+ \section{New \listofx\ and entries}
 
-\begin{syntax}
-\cmd{\tightsubcaptions} \cmd{\loosesubcations} \\
-\end{syntax}
-The \cmd{\tightsubcaptions} declaration will put little vertical space 
-around the subcaption, while \cmd{\loosesubcaptions} will add more
-whitespace. The default is \cmd{\tightsubcaptions}.
+\index{list!new list of|(}
 
-\begin{syntax}
-\cmd{\subcaptionsize}\marg{font-size} \\
-\cmd{\subcaptionlabelfont}\marg{fontspec} \\
-\cmd{\subcaptionfont}\marg{fontspec} \\
+ \begin{syntax}
+\cmd{\newlistof}\marg{listofcom}\marg{ext}\marg{listofname} \\
 \end{syntax}
-The size of the font used for subcaptions is set by \cmd{\subcaptionsize}.
-The default is:
-\begin{lcode}
-\subcaptionsize{\footnotesize}
-\end{lcode}
-The fonts used for the identifier and the subcaption are set by
-\cmd{\subcaptionlabelfont} and \cmd{\subcaptionfont}, respectively,
-where \meta{fontspec} is one or more font style declarations (e.g., 
-|\bfseries\slshape| for a bold, slanted font).
-The defaults are:
+\glossary(newlistof)%
+  {\cs{newlistof}\marg{listofcom}\marg{ext}\marg{listofname}}%
+  {Creates two new List of \ldots commands, \cs{listofcom} 
+   and \cs{listofcom*}, which use
+   a file with extension \meta{ext} and \meta{listofname} for the
+  title.}
+ The command \cmd{\newlistof} 
+ creates a new \listofx, and assorted commands to go along with it.
+ The first argument, \meta{listofcom} is used to define a new
+ command called \verb?\listofcom? which can then be used like 
+\verb?\listoffigures?
+to typeset the \listofx. The \meta{ext} argument is the file 
+extension to
+be used for the new listing. The last argument, \meta{listofname} is
+the title for the \listofx. Unstarred and starred versions of
+\verb?\listofcom? are created. The unstarred version, \verb?\listofcom?, 
+will add \meta{listofname} to the \toc, while the starred version, 
+\verb?\listofcom*?, makes no entry in the \toc.
+
+ As an example:
+ \begin{lcode}
+ \newcommand{\listanswername}{List of Answers}
+ \newlistof{listofanswers}{ans}{\listanswername}
+ \end{lcode}
+ will create a new \cmd{\listofanswers} commmand that can be used
+to typeset a listing of answers under the
+title \cmd{\listanswername}, where the answer titles are in an \file{ans}
+file. 
+   It is up to the author of the document to specify the `answer' code
+for the answers in the document. For example:
+ \begin{lcode}
+ \newcounter{answer}[chapter]
+ \renewcommand{\theanswer}{\thechapter.\arabic{answer}}
+ \newcommand{\answer}[1]{
+   \refstepcounter{answer}
+   \par\noindent\textbf{Answer \theanswer. #1}
+   \addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par}
+ \end{lcode}
+ which, when used like:
 \begin{lcode}
-\subcaptionlabelfont{\normalfont}
-\subcaptionfont{\normalfont}
+\answer{Hard} The \ldots
 \end{lcode}
-
+ will print as:
 \begin{syntax}
-\cmd{\subcaptionstyle}\marg{style} \\
+ \textbf{Answer 1. Hard} \\
+ \hspace*{2em} The \ldots \\
 \end{syntax}
- By default the identifier and title of a subcaption are typeset as a block 
-(non-indented) paragraph\index{paragraph!block}. 
-\cmd{\subcaptionstyle} can be used to alter this.
-Sensible values for \meta{style} are: \cmd{\centering}, \cmd{\raggedleft} or
-\cmd{\raggedright} for styles corresponding to these declarations. 
-The \cmd{\centerlastline} style gives a block 
-paragraph\index{paragraph!block} but with the last line centered.
-The class initially specifies |\subcaptionstyle{}|
-to give the normal block paragraph style.
 
-\begin{syntax}
-\cmd{\hangsubcaption} \\
-\cmd{\shortsubcaption} \\
-\cmd{\normalsubcaption} \\
-\end{syntax}
- The \cmd{\hangsubcaption} declaration causes subcaptions to be typeset 
-with the identifier above the title. With the \cmd{\shortsubcaption}
-declaration subcaptions that are less than one line in length are 
-typeset left justified instead of centered.
-The \cmd{\normalsubcaption} command undoes any previous 
-\cmd{\hangsubcaption} or \cmd{\shortsubcaption} command.
-The class initially specifies \cmd{\normalcaption}.
+    As mentioned above, the \cmd{\newlistof} command creates several 
+new commands in addition to \verb?\listofcom?, most of which you should 
+now be familiar with. For convenience,
+assume that \verb?\newlistof{...}{X}{...}? has been issued so that
+\texttt{X} is the new file extension and corresponds to the \texttt{X} in
+\S\ref{sec:titles}. Then in addition to \verb?\listofcom? the following 
+new commands will be made available.
+
+ The four commands, \verb?\Xmark?, 
+ \verb?\Xheadstart?, 
+\verb?\printXtitle?, and
+\verb?\afterXtitle?, 
+are analagous to the commands of the same names
+described in \S\ref{sec:titles} (internally the class uses
+the \cmd{\newlistof} macro to define the \toc, \lof\ and \lot). 
+In particular the default definition of \verb?\Xmark? is equivalent to:
+\begin{lcode}
+\newcommand{\Xmark}{\markboth{listofname}{listofname}}
+\end{lcode}
+However, this may well be altered by the particular \cmd{\pagestyle} in
+use.
 
 \begin{syntax}
- \cmd{\subtop}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
- \cmd{\subbottom}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
+\verb?Xdepth? \\
 \end{syntax}
- The command \cmd{\subtop} puts a subcaption number on top of
-the \meta{text}. If both optional arguments are present, \meta{list-entry}
-will be added to the appropriate listing, and an alphabetic identifier
-and \meta{subcaption} will be placed above \meta{text}. If only one
-optional argument is present, this is treated as \meta{subcaption}; the
-identifier and \meta{subcaption} are placed above \meta{text} and
-\meta{subcaption} is added to the listing. In all cases, the identifier
-is placed above \meta{text} and added to the listing.
-
-    The \cmd{\subbottom} command is similar, except that the identifier
-and any \meta{subcaption} is placed below the \meta{text}.
-
-    The main caption can be at either the top or the bottom of the float.
-
-    For example:
+ The counter \verb?Xdepth? is analagous to the standard
+ \Icn{tocdepth} counter, in that it specifies that entries
+ in the new listing should not be typeset if their numbering level 
+ is greater
+ than \verb?Xdepth?. The default definition is equivalent to
 \begin{lcode}
-\begin{figure}
-\subbottom{...} %  captioned as (a) below
-\subtop{...}    %  captioned as (b) above
-\caption{...}
-\end{figure}
+\setcounter{Xdepth}{1}
 \end{lcode}
 
-    As another example, \fref{subfig:sf} and the next paragraph
-was produced by the code below.
-
-\begin{figure}
-\centering
-\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
-\hfill
-\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
-\caption{Figure with two subfigures} \label{subfig:sf}
-\end{figure}
-
-    Figure \ref{subfig:sf} has two subfigures, namely \ref{sf:1}
-and \subcaptionref{sf:2}.
-
+\begin{syntax}
+\cmd{\insertchapterspace} \\
+\cmd{\addtodef}\marg{macro}\marg{prepend}\marg{append} \\
+\end{syntax}
+Remember that the \cmd{\chapter} command uses \cmd{\insertchapterspace}
+to insert vertical spaces into the \lof{} and \lot. If you want similar
+spaces added to your new listing then you have to modify
+\cmd{\insertchapterspace}. The easiest way to do this is via
+the \cmd{\addtodef} macro, like:
 \begin{lcode}
-    Figure \ref{subfig:sf} has two subfigures, namely \ref{sf:1}
-and \subcaptionref{sf:2}.
-\begin{figure}
-\centering
-\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
-\hfill
-\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
-\caption{Figure with two subfigures} \label{subfig:sf}
-\end{figure}
+\addtodef{\insertchapterspace}{}%
+  {\addtocontents{ans}{\protect\addvspace{10pt}}}
 \end{lcode}
+The \cmd{\addtodef} macro is described later in \S\ref{sec:addtodef}.
 
-
-    The major difference between the \cmd{\subcaption} command and the
-\cmd{\subtop} and \cmd{\subbottom} commands, apart from the \meta{text}
-argument, is that \cmd{\subcaption}
-must be used in a fixed width environment while \cmd{\subtop} uses
-the width of \meta{text} for the box in which to typeset the
-\meta{subcaption}.
+    The other part of creating a new \listofx, is to specify the 
+formatting of the entries, i.e., define an appropriate \verb?\l@kind? 
+macro.
 
 \begin{syntax}
- \cmd{\contsubtop}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
- \cmd{\contsubbottom}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
+\cmd{\newlistentry}\oarg{within}\marg{cntr}\marg{ext}\marg{level-1} \\
 \end{syntax}
-  The command \cmd{\contsubtop} 
- will continue the sub-caption numbering scheme across (continued) floats\index{float},
- putting the \meta{subcaption} at the top of the \meta{text}.
- The \cmd{\contsubbottom} command is similar but puts the \meta{subcaption}
- at the bottom of the \meta{text}. In either case, the main caption can 
- be at the top or bottom of the float\index{float}.
-
-    For example:
-\begin{lcode}
- \begin{table}
- \caption{...}
- \subtop{...}  % captioned as (a) above
- \subtop{...}  % captioned as (b) above
- \end{table}
- ...
- \begin{table}
- \contcaption{Concluded}
- \contsubtop{...} % captioned as (c) above
- \contsubtop{...} % captioned as (d) above
- \end{table}
- \end{lcode}
-
-    As with the \cmd{\subcaption} command, a \cmd{\label} command may be
-used in either the \meta{subcaption} or the \meta{text} arguments to
-\cmd{\subtop} and friends.
+\glossary(newlistentry)%
+  {\cs{newlistentry}\oarg{within}\marg{cntr}\marg{ext}\marg{level-1}}%
+  {Creates the commands for typesetting an entry in a \listofx.
+   \meta{cntr} is the new counter for the entry, which may be reset
+   by the \meta{within} counter. \meta{ext} is the file extension
+   and \meta{level-1} is one less than the entry's level.}
 
+ The command \cmd{\newlistentry} creates the commands necessary for
+typesetting an entry in a \listofx.
+ The first required argument, \meta{cntr} is used to define a new
+ counter called \texttt{cntr}, unless \texttt{cntr} is already defined. 
+The optional \meta{within} argument can be used so that \texttt{cntr} 
+gets reset to one every time the counter called \texttt{within} is changed. 
+That is, the first two arguments when \texttt{cntr} is not
+already defined, are equivalent to calling 
+\cmd{\newcounter}\marg{cntr}\oarg{within}. If \texttt{cntr} is already
+defined, \cmd{\newcounter} is not called. \texttt{cntr} is used for the 
+number that goes along with the title of the entry.
 
-\index{caption!subcaption|)}
+ The second required argument, \meta{ext}, is the file extension for the
+ entry listing.
+ The last argument, \meta{level-1}, is a number specifying the numbering
+ level minus one, 
+ of the entry in a listing.
 
- \subsection{How LaTeX makes captions} \label{sec:ltx}
 
-\index{caption!LaTeX methods|(}
+    Calling \cmd{\newlistentry} creates several new commands. Assuming 
+that it is called as \verb?\newlistentry[within]{K}{X}{N}?, where 
+\texttt{K} and \texttt{X} are  similar to the previous uses of them 
+(e.g., \texttt{K} is the kind of entry \texttt{X} is the file extension),
+and \texttt{N} is an integer number, then the following commands are 
+made available.
+
+
+  The set of commands \verb?\cftbeforeKskip?, 
+ \verb?\cftKfont?, 
+ \verb?\cftKpresnum?, 
+ \verb?\cftKaftersnum?, 
+ \verb?\cftKaftersnumb?, 
+ \verb?\cftKleader?, 
+ \verb?\cftKdotsep?, 
+ \verb?\cftKpagefont?, and
+ \verb?\cftKafterpnum?,
+ are analagous to the commands of the same names
+ described in \Sref{sec:entries}. Their default values are also
+ as described earlier.
 
- This section provides an overview of how LaTeX creates captions and
- gives some examples of how to change the captioning style without
- having to use any package. 
- The section need not be looked at more than once unless you like 
- reading LaTeX code
- or you want to make changes to LaTeX's style of captioning.
+ The default values of \verb?\cftKindent? and \verb?\cftKnumwidth? are 
+set according to the value of the \meta{level-1} argument 
+(i.e., \texttt{N} in this example). For \verb?N=0? the settings 
+correspond to those for figures\index{figure} and tables\index{table}, 
+as listed in \tref{tab:indents} for the \Lclass{memoir} class.
+For \verb?N=1? the settings correspond to subfigures\index{figure!sub-}, 
+and so on. For values of \verb?N? less than zero or greater than four, 
+or for non-default values, use the \cmd{\cftsetindents} command to 
+set the values.
 
- The LaTeX kernel provides tools to help in the definition of captions,
- but it is the particular class that decides on their format.
+  \verb?\l@K? is an internal command that typesets an entry in the list, 
+and is defined in terms of the above \verb?\cft*K*? commands. It will 
+not typeset an entry if \verb?Xdepth? is \texttt{N} or less, where 
+\texttt{X} is the listing's file extension.
 
-\begin{syntax}
- \cmd{\caption}\oarg{short}\marg{long} \\
-\end{syntax}
- The kernel (in \file{ltfloat.dtx}) defines the caption command via 
+ The command \verb?\theK? prints the value of the \texttt{K} counter. 
+It is initially defined so that it prints arabic numerals. If the 
+optional \meta{within} argument is used, \verb?\theK? is defined as 
 \begin{lcode}
-\def\caption{\refstepcounter\@captype \@dblarg{\@caption\@captype}}
+ \renewcommand{\theK}{\thewithin.\arabic{K}}
 \end{lcode}
-
-\begin{syntax}
- \cmd{\@captype} \\
-\end{syntax}
- \cmd{\@captype} is defined by the code that creates a new float\index{float} environment
- and is set to the environment's name (see the code for |\@xfloat|
- in \file{ltfloat.dtx}). For a |figure| environment,
- there is an equivalent to 
+ otherwise as
 \begin{lcode}
-\def\@captype{figure}
+\renewcommand{\theK}{\arabic{K}}
 \end{lcode}
 
+ As an example of the independent use of \cmd{\newlistentry}, the 
+following will set up for sub-answers.
+ \begin{lcode}
+ \newlistentry[answer]{subanswer}{ans}{1}
+ \renewcommand{\thesubanswer}{\theanswer.\alph{subanswer}}
+ \newcommand{\subanswer}[1]{
+    \refstepcounter{subanswer}
+    \par\textbf{\thesubanswer) #1}
+    \addcontentsline{ans}{subanswer{\protect\numberline{\thesubanswer}#1}}
+ \setcounter{ansdepth}{2}
+ \end{lcode}
+ And then:
+ \begin{lcode}
+ \answer{Harder} The \ldots
+   \subanswer{Reformulate the problem} It assists \ldots
+ \end{lcode}
+ will be typeset as:
 \begin{syntax}
- \cmd{\@caption}\marg{type}\oarg{short}\marg{long} \\
+\textbf{Answer 2. Harder} \\
+\hspace*{2em} The \ldots \\
+\hspace*{2em} \textbf{2.a) Reformulate the problem} It assists \ldots \\
 \end{syntax}
- The kernel also provides the \cmd{\@caption} macro as:
-\begin{lcode}
- \long\def\@caption#1[#2]#3{
-   \par
-   \addcontentsline{\csname ext@#1\endcsname}{#1}    <--
-     {\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}
-   \begingroup
-      \@parboxrestore
-      \if@minipage
-        \@setminipage
-      \fi
-      \normalsize
-      \@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par  <--
-   \endgroup}
- \end{lcode}
- where \meta{type} is the name of the environment in which the caption
- will be used.
- Putting these three commands together results in the user's view of the caption
- command as |\caption[|\meta{short}|]{|\meta{long}|}|.
 
- It is the responsibilty of the class (or package) which defines floats\index{float}
- to provide definitions for \cmd{\ext@type}, \cmd{\fnum@type} and 
-\cmd{\@makecaption}
- which appear in the definition of \cmd{\@caption} (in the lines marked
- |<--| above).
+     By default the answer entries will appear in the List of Answers 
+listing (typeset by the \cs{listofanswers} command).
+In order to get the subanswers to appear, 
+the \verb?\setcounter{ansdepth}{2}? command was used above.
 
-\begin{syntax}
- \cmd{\ext@type} \\
-\end{syntax}
- This macro holds the name of the extension for a \listofx{} file.
- For example for the |figure| float\index{float} environment there is the
- definition equivalent to 
+ To turn off page numbering for the subanswers, do
 \begin{lcode}
- \newcommand{\ext@figure}{lof}
+\cftpagenumbersoff{subanswer}
 \end{lcode}
 
-\begin{syntax}
- \cmd{\fnum@type} \\
-\end{syntax}
- This macro is responsible for typesetting the caption number. For example,
- for the |figure| environment there is the definition equivalent to
+    As another example of \cmd{\newlistentry}, suppose that an extra 
+sectioning division below \texttt{subparagraph} is required, 
+called \texttt{subsubpara}. The \verb?\subsubpara? command itself can 
+be defined via the \ltx\ kernel \cmd{\@startsection} command. 
+Also it is necessary to define a \verb?\subsubparamark? macro,
+a new \texttt{subsubpara} counter, a \verb?\thesubsubpara? macro and a 
+\verb?\l@subsubpara?  macro. Using \cmd{\newlistentry} takes care of 
+most of these as shown below; remember the caveats about commands 
+with \idxatincode\texttt{@} signs in them (\seeatincode).
 \begin{lcode}
- \newcommand{\fnum@figure}{\figurename~\thefigure}
-\end{lcode}
+ \newcommand{\subsubpara}{\@startsection{subpara}
+    {6}                              %                    level
+    {\parindent}                     %  indent from left margin
+    {3.25ex \@plus1ex \@minus .2ex}  %     skip above heading
+    {-1em}       run-in heading with % 1em between title & text
+    {\normalfont\normalsize\itshape} % italic number and title 
+ }
+ \newlistentry[subparagraph]{subsubpara}{toc}{5}
+ \cftsetindents{subsubpara}{14.0em}{7.0em}
+ \newcommand*{\subsubparamark}[1]{}  % gobble heading mark
+ \end{lcode}
 
-\begin{syntax}
- \cmd{\@makecaption}\marg{number}\marg{text} \\
-\end{syntax}
- The \cmd{\@makecaption} macro, where \meta{number}
- is a string such as `Table~5.3' and \meta{text} is the caption text,
- performs the typesetting of the caption, and
- is defined in the standard classes (in \file{classes.dtx}) as the
- equivalent of:
-\begin{lcode}
- \newcommand{\@makecaption}[2]{
-   \vskip\abovecaptionskip         <- 1
-   \sbox\@tempboxa{#1: #2}        <- 2
-   \ifdim \wd\@tempboxa >\hsize
-     #1: #2\par                    <- 3
-   \else
-     \global \@minipagefalse
-     \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}
-   \fi
-   \vskip\belowcaptionskip}        <- 4
-\end{lcode}
+     Each \listofx\ uses a file to store the list entries, and these
+ files must remain open for writing throughout the document processing.
+\tx\ has only a limited number of files that it can keep open, and this
+ puts a limit on the number of listings that can be used. For a document
+ that includes a \toc\ but no other extra ancilliary files (e.g., no
+ index\index{index} or bibliography\index{bibliography} output files) 
+the maximum number of LoX's, including a \lof\ and \lot, is no more 
+than about eleven. If you try and create too many new listings \ltx\ 
+will respond with the error message: 
+ \begin{center}
+ \texttt{No room for a new write} 
+ \end{center}
+ If you get such a message the only recourse is to redesign your 
+document.
 
-\begin{syntax}
- \lnc{\abovecaptionskip}
- \lnc{\belowcaptionskip} \\
-\end{syntax}
-  Vertical space is added before and after a caption (lines marked 1 and 4
- in the code for \cmd{\@makecaption} above) and the amount of space is given
- by the lengths \lnc{\abovecaptionskip} and \lnc{\belowcaptionskip}. The
- standard classes set these to 10pt and 0pt respectively. If you want
- to change the space before or after a caption, use \cmd{\setlength} to change
- the values. In figures\index{figure}, the caption is usually placed below the
- illustration\index{illustration}. The actual space between the bottom of the illustration\index{illustration}
- and the baseline of the first line of the caption
- is the \lnc{\abovecaptionskip} plus the \lnc{\parskip} plus the \lnc{\baselineskip}.
- If the illustration\index{illustration} is in a |center| environment then additional space
- will be added by the |\end{center}|; it is usually better to use 
- the \cmd{\centering} command rather than the |center| environment.
+\subsection{Example: plates}
+
+    As has been mentioned earlier, some illustrations\index{illustration}
+may be tipped in\index{tip in} to a book. Often, these are called 
+\emph{plates}\index{plates} if they are on glossy paper\index{paper} 
+and the rest of the book is on ordinary paper\index{paper}.
+We can define a new kind of Listing for these.
 
- The actual typesetting of a caption is effectively performed by the code
- in lines marked 2 and 3 in the code for \cmd{\@makecaption}; note that
- these are where the colon that is typeset after the number is specified. 
- If you want to
- make complex changes to the default captioning style you may have to
- create your own version of \cmd{\@caption} using 
- \cmd{\renewcommand}. On the other hand, many such changes can be achieved
- by changing the definition of the 
- the appropriate \cmd{\fnum@type} command(s). For example, to make the 
- figure\index{figure} name and number bold: 
 \begin{lcode}
-\renewcommand{\fnum@figure}{\textbf{\figurename~\thefigure}}
+\newcommand{\listplatename}{Plates}
+\newlistof{listofplates}{lop}{\listplatename}
+\newlistentry{plate}{lop}{0}
+\cftpagenumbersoff{plate}
 \end{lcode}
-
- REMEMBER: If you are doing anything involving commands that include
- the |@| character, and it's not in a class or package file, you have
- to do it within a \cmd{\makeatletter} and \cmd{\makeatother} pairing. So,
- if you modify the \cmd{\fnum@figure} command anywhere in your document
- it has to be done as:
+This code defines the \cmd{\listofplates} command to start the listing 
+which will be titled `Plates' from the \cmd{\listplatename} macro. 
+The entry name is \texttt{plate} and the file extension is \texttt{lop}. 
+As plate pages typically do not have printed folios\index{folio}, 
+the \cmd{\cftpagenumbersoff} command has been used to prohibit page 
+number printing in the listing.
+
+    If pages are tipped in, then they are put between a verso and 
+a recto page. The \Lpack{afterpage} package~\cite{AFTERPAGE} lets 
+you specify something that should happen after the current page 
+is finished. The next piece of code uses the package and its 
+\cmd{\afterpage} macro to define two macros which let you specify 
+something that is to be done after the next verso (\cmd{\afternextverso})
+or recto (\cmd{\afternextrecto}) page has been completed.
 \begin{lcode}
- \makeatletter
- \renewcommand{\fnum@figure}{......}
- \makeatother
+\newcommand{\afternextverso}[1]{%
+  \afterpage{\ifodd\c@page #1\else\afterpage{#1}\fi}}
+\newcommand{\afternextrecto}[1]{%
+  \afterpage{\ifodd\c@page\afterpage{#1}\else #1\fi}}
 \end{lcode}
 
- \makeatletter
- \renewcommand{\fnum@figure}{\textsc{\figurename~\thefigure}}
- \makeatother
- \begin{figure}
- \centering
- A THOUSAND WORDS\ldots
- \caption{A picture is worth a thousand words}\label{fig:sc}
- \end{figure}
 
- As an example, \fref{fig:sc} was created by the following code:
+    The \cmd{\pageref}\marg{labelid} command typesets the page number
+corresponding to the location in the document where 
+\cmd{\label}\marg{labelid} is specified. The following code defines
+two macros\footnote{These only work for arabic page numbers.} 
+that print the page number before (\cmd{\priorpageref}) or after 
+(\cmd{\nextpageref}) that given by \cmd{\pageref}.
 \begin{lcode}
- \makeatletter
- \renewcommand{\fnum@figure}{\textsc{\figurename~\thefigure}}
- \makeatother
- \begin{figure}
- \centering
- A THOUSAND WORDS\ldots
- \caption{A picture is worth a thousand words}\label{fig:sc}
- \end{figure}
+\newcounter{mempref}
+\newcommand{\priorpageref}[1]{%
+  \setcounter{mempref}{\pageref{#1}}\addtocounter{mempref}{-1}\themempref}
+\newcommand{\nextpageref}[1]{%
+  \setcounter{mempref}{\pageref{#1}}\addtocounter{mempref}{1}\themempref}
 \end{lcode}
 
- As another example, suppose that you needed to typeset the \cmd{\figurename}
- and its number in a bold font, replace the colon that normally appears
- after the number by a long dash, and typeset the actual title text in
- a sans-serif font, as is illustrated by the caption for 
- \fref{fig:sf}. The following code does this.
-
- \makeatletter
- \renewcommand{\fnum@figure}[1]{\textbf{\figurename~\thefigure} --- \sffamily}
- \makeatother
- \begin{figure}
-  \centering
-  ANOTHER THOUSAND WORDS\ldots
- \caption{A different kind of figure caption}\label{fig:sf}
- \end{figure}
-
+    With these preliminaries out of the way, we can use code like the 
+following for handling a set of physically tipped in plates.
 \begin{lcode}
- \makeatletter
- \renewcommand{\fnum@figure}[1]{\textbf{\figurename~\thefigure} 
-                                --- \sffamily}
- \makeatother
- \begin{figure}
-  \centering
-  ANOTHER THOUSAND WORDS\ldots
- \caption{A different kind of figure caption}\label{fig:sf}
- \end{figure}
+\afternextverso{\label{tip}
+  \addtocontents{lop}{%
+    Between pages \priorpageref{tip} and \pageref{tip}
+    \par\vspace*{\baselineskip}}
+  \addcontentsline{lop}{plate}{First plate}
+  \addcontentsline{lop}{plate}{Second plate}
+  ...
+  \addcontentsline{lop}{plate}{Nth plate}
+}
 \end{lcode}
- Perhaps a little description of how this works is in order.
- Doing a little bit of TeX 's macro processing by hand, the typesetting
- lines in \cmd{\@makecaption} (lines 2 and 3) get instantiated like: \\
- |\fnum@figure{\figurename~\thefigure}: text| \\
- Redefining \cmd{\fnum@figure} to take one argument and then not using the
- value of the argument essentially gobbles up the colon. Using \\
- |\textbf{\figurename~\thefigure}| \\
- in the definition causes \cmd{\figurename} and the number to be typeset in
- a bold font. After this comes the long dash. Finally, putting \cmd{\sffamily}
- at the end of the redefinition causes any following text (i.e., the actual 
- title) to be typeset using the sans-serif font.
+This starts off by waiting until the next recto page is started, which
+will be the page immediately after the plates, and then inserts the 
+label \texttt{tip}. The \cmd{\addtocontents} macro puts its argument
+into the plate list \texttt{lop} file, indicating the page numbers 
+before and after the set of plates. With the plates being physically 
+added to the document it is not possible to use \cmd{\caption}, 
+instead the \cmd{\addcontentsline} macros are used to add the plate 
+titles to the \texttt{lop} file.
 
- If you do modify \cmd{\@makecaption}, then spaces in the definition may be
- important; also you must use the comment (\%) character in the same
- places as I have done above. Hopefully, though, the class provides the
-tools that you need to make most, if not all, of any likely caption styles.
+    With a few modifications the code above can also form the basis 
+for listing plates that are electronically tipped in but do not have 
+printed folios\index{folio} or \cmd{\caption}s.
 
-\index{caption!LaTeX methods|)}
+\index{list!new list of|)}
 
 
- \subsection{Captions with footnotes}
 
-\index{caption!footnote|(}
-\index{footnote!in caption|(}
+ \section{Chapter precis}
 
-    If you want to have a caption with a footnote, think long and hard
- as to whether this is really essential. It is not normally considered
- to be good typographic practice, and to rub the point in LaTeX does not
- make it necessarily easy to do. However, if you (or your publisher)
- insists, read on.
+\index{chapter!precis|(}
 
-    If it is present, the optional argument to \cmd{\caption} is put into
- the \lof/lot{} as appropriate. If the argument is not present, then the
- text of the required argument is put into the \lof. In the first case,
- the optional argument is moving, and in the second case the required
- argument is moving. The \cmd{\footnote} command is fragile and must be
- |\protect|ed (i.e., |\protect\footnote{}|) if it is used in a moving 
- argument. If you don't want the footnote to appear in 
-the \lof, use a
- footnoteless optional argument and a footnoted required argument.
+   Some old style novels, and even some modern text 
+ books,\footnote{For example, Robert Sedgewick, \textit{Algorithms},
+ Addison-Wesley, 1983.} include a short synopsis of the contents of 
+ the chapter either immediately
+ after the chapter heading\index{heading!chapter} or in the \toc, or in both places.
 
-   You will probably be surprised if you just do, for example:
- \begin{lcode}
- \begin{figure}
- ...
- \caption[For LoF]{For figure\footnote{The footnote}}
- \end{figure}
- \end{lcode}
- because (a) the footnote number may be greater than you thought, and (b)
- the footnote text has vanished. This latter is because LaTeX won't typeset
- footnotes from a float\index{float}. To get an actual footnote within the float you
- have to use a minipage, like:
+\begin{syntax}
+\cmd{\chapterprecis}\marg{text} \\
+\end{syntax}
+     The command \cmd{\chapterprecis} prints its argument 
+ both at the
+ point in the document where it is called, and also adds it to the \file{.toc}
+ file. For example:
  \begin{lcode}
- \begin{figure}
- \begin{minipage}{\linewidth}
  ...
- \caption[For LoF]{For figure\footnote{The footnote}}
- \end{minipage}
- \end{figure}
- \end{lcode}
- If you are using the standard classes you may now find that you get two 
-footnotes for the price of one. Fortunately this will not occur with this 
-class, nor will an unexpected increase of the footnote number.
-
-    When using a minipage as above, the footnote text is typeset at the
- bottom of the minipage (i.e., within the float\index{float}). If you want the footnote
- text typeset at the bottom of the page, then you have to use the
- \cmd{\footnotemark} and \cmd{\footnotetext} commands like:
- \begin{lcode}
- \begin{figure}
+ \chapter{}  first chapter
+ \chapterprecis{Our hero is introduced; family tree; early days.}
  ...
- \caption[For LoF]{For figure\footnotemark}
- \end{figure}
- \footnotetext{The footnote}
  \end{lcode}
- This will typeset the argument of the \cmd{\footnotetext} command at the
- bottom of the page where you called the command. Of course, the figure\index{figure}
- might have floated\index{float} to a later page, and then it's a matter of some
- manual fiddling to get everything on the same page, and possibly
- to get the footnote marks\index{footnote!mark} to match correctly with the footnote text.
 
- At this point, you are on your own.
+\begin{syntax}
+\cmd{\chapterprecishere}\marg{text} \\
+\cmd{\chapterprecistoc}\marg{text} \\
+\end{syntax}
+ The \cmd{\chapterprecis} command calls these two commands to print the
+ \meta{text} in the document (the \cmd{\chapterprecishere} command) 
+ and to put it into the \toc{} (the \cmd{\chapterprecistoc} command). 
+ These can be used individually if required.
 
-\index{footnote!in caption|)}
-\index{caption!footnote|)}
+\begin{syntax}
+\cmd{\prechapterprecis} \cmd{\postchapterprecis} \\
+\end{syntax}
+The \cmd{\chapterprecishere} macro is intended for use immediately after 
+a \cmd{\chapter}. The \meta{text} argument is typeset in
+italics in a \Ie{quote} environment. The macro's definition is:
+\begin{lcode}
+\newcommand{\chapterprecishere}[1]{%
+  \prechapterprecis #1\postchapterprecis}
+\end{lcode}
+where \cmd{\prechapterprecis} and \cmd{\postchapterprecis} are defined
+as:
+\begin{lcode}
+\newcommand{\prechapterprecis}{%
+  \vspace*{-2\baselineskip}%
+  \begin{quote}\normalfont\itshape}
+\newcommand{\postchapterprecis}{\end{quote}}
+\end{lcode}
+The \cmd{\prechapterprecis} and \cmd{\postchapterprecis} macros can be 
+changed if another style of typesetting is required.
 
+\begin{syntax}
+\cmd{\precistoctext}\marg{text} \cmd{\precistocfont} \\
+\end{syntax}
+The \cmd{\chapterprecistoc} macro puts the macro \cmd{\precistoctext} into 
+the \ixfile{toc} file. The default definition is
+\begin{lcode}
+\DeclareRobustCommand{\precistoctext}[1]{%
+  {\leftskip \cftchapterindent\relax
+   \advance\leftskip \cftchapternumwidth\relax
+   \rightskip \@tocrmarg\relax
+   \precistocfont #1\par}}
+\end{lcode}
+Effectively, in the \toc{} \cmd{\precistoctext} typesets its argument like 
+a chapter title using the \cmd{\precistocfont} (default \cmd{\itshape}).
 
-\index{caption|)}
+\index{chapter!precis|)}
 
-\section{Floats}
 
 
- \subsection{New float environments}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\chapterstyle{hangnum}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \chapter{Floats and captions} \label{chap:captions}
+
+
+    A float\index{float} environment is a particular kind of 
+box\index{box}  --- one that \ltx\ decides where it should go although
+you can provide hints as to where it should be placed; 
+all other boxes are put at the point where they are defined. 
+Within reason you can put what you like within a float but it is 
+unreasonable, for example, to put a float inside 
+another float. The standard classes provide two kinds of float 
+environments, namely \Ie{figure} and \Ie{table}. The only difference
+between these is the naming and numbering of any caption\index{caption} 
+within the environments --- a \cmd{\caption} in a \Ie{figure} 
+environment uses \cmd{\figurename} while a \cmd{\caption} in a 
+\Ie{table} environment uses \cmd{\tablename}. Figures and tables are 
+numbered sequentially but the two numbering schemes are independent 
+of each other.
+
+    The class provides means of defining new kinds of floats. It also
+provides additional forms of captions for use both within and outside 
+float environments together with handles for changing the style 
+of captions.
+
+\section{New float environments} \label{sec:newfloat}
+
+    It is often forgotten that the \ltx\ float environments come
+in both starred and unstarred forms. The unstarred form typesets the 
+float contents\index{float!single column} in one column, which is 
+the most usual form for a book. The starred form typesets the contents 
+of the float across the top of both columns\index{float!double column} 
+in a \Lopt{twocolumn} document. In a \Lopt{onecolumn} document there 
+is no difference between the starred and unstarred forms.
 
 \index{float!new|(}
 
 \begin{syntax}
  \cmd{\newfloat}\oarg{within}\marg{fenv}\marg{ext}\marg{capname} \\
 \end{syntax}
- The \cmd{\newfloat} command 
- creates two new floating environments called \meta{fenv} and \meta{fenv*}. 
-If there
-is not already a counter defined for \meta{fenv} a new one will be created
-to be restarted by \meta{within}, if that is specified.
- A caption within
- the environment will be written out to a file with extension \meta{ext}.
- The caption, if present, will start with \meta{capname}. For example, 
-the |figure| float for the class is defined as:
+\glossary(newfloat)%
+  {\cs{newfloat}\oarg{within}\marg{fenv}\marg{ext}\marg{capname}}%
+  {Creates new float environments, \texttt{fenv} and \texttt{fenv*},
+   using counter \texttt{fenv}, which may be restarted by the 
+   \meta{within} counter, putting captioning information into the
+   file with extension \meta{ext}, and using \meta{capname} as the
+   name for a caption.}
+ The \cmd{\newfloat} command creates two new floating environments 
+called \meta{fenv} and \meta{fenv*}. If there
+is not already a counter\index{counter} defined for \meta{fenv} a new 
+one will be created to be restarted by the counter \meta{within}, 
+if that is specified.  A caption\index{caption} within the environment 
+will be written out to a file with extension \meta{ext}.
+The caption, if present, will start with \meta{capname}. For example, 
+the \texttt{figure} float\index{figure!float definition} for the class 
+is defined as:
 \begin{lcode}
 \newfloat[chapter]{figure}{lof}{\figurename}
 \renewcommmand{\thefigure}{%
   \ifnum\c@chapter>\z@ \thechapter.\fi \@arabic\c@figure}
 \end{lcode}
 The last bit of the definition is internal code to make sure that if a
-figure\index{figure} is in the document before chapter numbering starts, then the figure\index{figure}
-number will not be preceded by a non-existent chapter number.
+figure\index{figure} is in the document before chapter numbering starts, 
+then the figure\index{figure} number will not be preceeded by a 
+non-existent chapter number.
 
-
- The captioning style for floats defined with \cmd{\newfloat} is the same as
- for the figures\index{figure} and tables\index{table}.
+ The captioning style\index{caption!style} for floats defined 
+with \cmd{\newfloat} is the same as
+for the figures\index{figure} and tables\index{table}.
 
     The \cmd{\newfloat} command generates several new commands, some of
-which are internal LaTeX commands. For convenience, assume that the command
-was called as 
+which are internal \ltx\ commands. For convenience, assume that the 
+command was called as 
 \begin{lcode}
-\newfloat{X}{Z}{capname}
+\newfloat{F}{X}{capname}
 \end{lcode}
- so |X| is the name of the float
-environment and also the name of the counter for the caption, and |Z| is
-the file extension.
+so \texttt{F} is the name of the float environment and also the name of 
+the counter for the caption, and \texttt{X} is the file extension.
 The following float environment and related commands are then created.
 
 \begin{syntax}
-\senv{X} float material \eenv{X} \\
-\senv{X*} float material \eenv{X*} \\
+\senv{F} float material \eenv{F} \\
+\senv{F*} float material \eenv{F*} \\
 \end{syntax}
- The new float environment is called |X|, and can be used as either
- |\begin{X}| or |\begin{X*}|, with the matching |\end{X}| or |\end{X*}|.
-It is given the standard default position specification of |tbp|.
+ The new float environment is called \texttt{F}, and can be used as 
+either \senv{F} or \senv{F*}, with the matching \eenv{F} or \eenv{F*}.
+It is given the standard default position\index{float!position} 
+specification of 
+[\textsf{t}\ixposarg{t}\textsf{b}\ixposarg{b}\textsf{p}\ixposarg{p}].
 
 \begin{syntax}
- \Icn{Zdepth} \\
+ \Icn{Xdepth} \\
 \end{syntax}
- The \Icn{Zdepth} counter is analogous to the standard \Icn{tocdepth} counter
- in that it specifies that entries in a listing should not be
- typeset if their numbering level is greater than \Icn{Zdepth}. The
- default definition is |\setcounter{Zdepth}{1}|. To have a subfloat
- of |Z| appear in the listing do |\setcounter{Zdepth}{2}|.
+ The \Icn{Xdepth} counter is analogous to the standard \Icn{tocdepth} 
+counter in that it specifies that entries in a listing should not be
+typeset\index{ToC!controlling entries} if their numbering level is 
+greater than \Icn{Xdepth}. The default definition is 
+\begin{lcode}
+\setcounter{Xdepth}{1}
+\end{lcode}
+To have a subfloat of \texttt{X} appear in the listing do
+\begin{lcode}
+\setcounter{Xdepth}{2}
+\end{lcode}
 
 
-    As a fuller example, suppose you wanted both 
- figures\index{figure} (which come with the
- class), and diagrams. You could then do something like the following.
- \begin{lcode}
- \newcommand{\diagramname}{Diagram}
- \newcommand{\listdiagramname}{List of Diagrams}
- \newlistof{listofdiagrams}{dgm}{\listdiagramname}
- \newfloat{diagram}{dgm}{\diagramname}
- \newfixedcaption{\fdiagcaption}{diagram}
- \newlistentry{diagram}{dgm}{0}
- \begin{document}
- ...
- \listoffigures
- \listfofdiagrams
+    As an example, suppose you wanted both figures\index{figure} 
+(which come with the class), and diagrams\index{float!new diagram}. 
+You could then do something 
+like the following.
+\begin{lcode}
+\newcommand{\diagramname}{Diagram}
+\newcommand{\listdiagramname}{List of Diagrams}
+\newlistof{listofdiagrams}{dgm}{\listdiagramname}
+\newfloat{diagram}{dgm}{\diagramname}
+\newlistentry{diagram}{dgm}{0}
+\begin{document}
  ...
- \begin{diagram}
- \caption{A diagram} \label{diag1}
+\listoffigures
+\listfofdiagrams
  ...
- \end{diagram}
- As diagram~\ref{diag1} shows ...
- \begin{minipage}{.9\textwidth}
- \fdiagcaption{Another diagram} \label{diag2}
+\begin{diagram}
+\caption{A diagram} \label{diag1}
  ...
- \end{minipage}
-
- In contrast to diagram~\ref{diag1}, diagram~\ref{diag2} provides ...
- \end{lcode}
+\end{diagram}
+As diagram~\ref{diag1} shows ...
+\end{lcode}
 
-    As a word of warning, if you mix both floats and fixed environments with the
- same kind of caption you have to ensure that they get printed in the correct
- order in the final document. If you do not do this, then the \listofx{} 
- captions will come out in the wrong order (the lists are ordered according the
- page number in the typeset document, \emph{not} your source input order).
 
 \index{float!new|)}
 
+\section{Setting off a float} \label{sec:floatsetoff}
 
-\subsection{New subfloats} \label{sec:newsub}
-
-\index{subfloat!new|(}
+\index{float!set off|(}
 
-    The \Lpack{subfigure} package defines the |subfigure| and |subtable|
-subfloats. The class does not define any subfloats, if you need them you have
-to specify them yourself.
+    Sometimes it is desireable to set off a float, more probably
+an illustration than a tabular, from its surroundings. The \Ie{framed}
+environment, described later in \Cref{chap:bvf}, might come in handy 
+for this.
 
-\begin{syntax}
- \cmd{\newsubfloat}\marg{fenv} \\
-\end{syntax}
- The \cmd{\newsubfloat} command enables the subcaptioning commands
-(\cmd{\subcaption}, \cmd{\subtop}, etc.) to be used within the float 
-environment \meta{fenv} previously defined via 
-|\newfloat|.
+    The following code produces the example\indextwo{framed}{float} 
+\figurerefname s~\ref{fig:framef} and~\ref{fig:framefcap}.
 
-    Calling |\newsubfloat{fenv}| will, among other things,
-create a new counter called |subfenv| and the command |\thesubfenv| 
-for typesetting the counter. The default definition of |\thesubfenv|
-is equivalent to:
 \begin{lcode}
-\newcommand{\thesubfenv}{(\alph{subfenv})}
-\end{lcode}
-which typesets a lowercase letter enclosed in parentheses. This is
-the identifier for subcaptions, and may be changed via \cmd{\renewcommand}.
+\begin{figure}
+\centering
+\begin{framed}\centering
+FRAMED FIGURE
+\end{framed}
+\caption{Example framed figure}\label{fig:framef}
+\end{figure}
 
-    If you are not using the \Lpack{subfigure} package and want, say, 
-subfigures then in the preamble call:
-\begin{lcode}
-\newsubfloat{figure}
-\end{lcode}
-and if you want the subcaptions to appear in the List of Figures, put:
-\begin{lcode}
-\setcounter{lofdepth}{2}
+\begin{figure}
+\begin{framed}\centering
+FRAMED FIGURE AND CAPTION
+\caption{Example framed figure and caption}\label{fig:framefcap}
+\end{framed}
+\end{figure}
 \end{lcode}
-between the |\begin{document}| and \cmd{\listoffigures} commands.
 
-    Further, if you had some subfigures that were originally planned
-for use with the \Lpack{subfigure} package and wanted to use these
-but without the package, you could:
-\begin{lcode}
-\let\subfigure\subbottom
-\end{lcode}
-which will make |\subfigure| an alias for \cmd{\subbottom}.
+\begin{figure}
+%\begin{shadefigure}
+\centering
+\begin{framed}\centering
+FRAMED FIGURE
+\end{framed}
+\caption{Example framed figure}\label{fig:framef}
+%\end{shadefigure}
+\end{figure}
+
+\begin{figure}
+\begin{framed}\centering
+FRAMED FIGURE AND CAPTION
+\caption{Example framed figure and caption}\label{fig:framefcap}
+\end{framed}
+\end{figure}
+
+    If framing seems overkill then you can use 
+rules\indextwo{ruled}{float} instead, as in the example code below
+which produces 
+\figurerefname s~\ref{fig:rulef} and~\ref{fig:rulefcap}.
 
-\index{subfloat!new|)}
+\begin{lcode}
+\begin{figure}
+\centering
+\hrule\vspace{\onelineskip}
+RULED FIGURE
+\vspace{\onelineskip}\hrule
+\vspace{\onelineskip}
+\caption{Example ruled figure}\label{fig:rulef}
+\end{figure}
 
+\begin{figure}
+\centering
+\hrule\vspace{\onelineskip}
+RULED FIGURE AND CAPTION
+\vspace{\onelineskip}\hrule
+\vspace{0.2pt}\hrule
+\vspace{\onelineskip}
+\caption{Example ruled figure and caption}\label{fig:rulefcap}
+\hrule
+\end{figure}
+\end{lcode}
 
- \subsection{Multiple floats}
+\begin{shadefigure}
+%\centering
+%\definecolor{shadecolor}{gray}{0.75}
+%\begin{shaded}
+\hrule\vspace{\onelineskip}
+RULED FIGURE
+\vspace{\onelineskip}\hrule
+\vspace{\onelineskip}
+\caption{Example ruled figure}\label{fig:rulef}
+%\end{shaded}
+\end{shadefigure}
+
+\begin{shadefigure}
+%\centering
+%\definecolor{shadecolor}{gray}{0.75}
+%\begin{shaded}
+\hrule\vspace{\onelineskip}
+RULED FIGURE AND CAPTION
+\vspace{\onelineskip}\hrule
+\vspace{0.2pt}\hrule
+\vspace{\onelineskip}
+\caption{Example ruled figure and caption}\label{fig:rulefcap}
+\hrule
+%\end{shaded}
+\end{shadefigure}
+
+\index{float!set off|)}
+
+ \section{Multiple floats}
 
 \index{float!multiple|(}
 
-     As far as LaTeX is concerned, a float is a box with certain 
- restrictions as to where it can be placed. You can effectively 
- put what you like inside a float box. Normally there is just a single
- picture or tabular in a float but you can put as many of these as will
- fit inside the box.
+You can effectively put what you like inside a float box. Normally there 
+is just a single picture or tabular in a float but you can include 
+as many of these as will fit inside the box.
 
- \begin{figure}
+% \begin{figure}
+ \begin{shadefigure}
  \centering
  \hspace*{\fill} 
    {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} 
  \hspace*{\fill}
- \caption{Float with two illustrations} \label{fig:mult1}
- \end{figure}
+ \caption{Example float with two illustrations} \label{fig:mult1}
+ \end{shadefigure}
+% \end{figure}
 
-    Three typical cases of multiple figures\index{figure}/tables\index{table} in a single
- float come to mind:
+    Three typical cases of multiple figures\index{figure}/tables\index{table} 
+in a single float come to mind:
  \begin{itemize}
- \item Multiple illustrations\index{illustration}/tabulars with a single caption.
- \item Multiple illustrations\index{illustration}/tabulars each individually captioned.
- \item Multiple illustrations\index{illustration}/tabulars with one main caption and
-       individual subcaptions.
+ \item Multiple illustrations\index{illustration}/tabulars with a single 
+caption.
+ \item Multiple illustrations\index{illustration}/tabulars each 
+individually captioned.
+ \item Multiple illustrations\index{illustration}/tabulars with one 
+main caption and individual subcaptions.
  \end{itemize}
 
-    The \Lpack{subfigure} package is designed for the last of these cases;
- the others do not require a package.
-
-    Figure~\ref{fig:mult1} is an example of multiple illustrations\index{illustration} 
- in a single float with a single caption.
-     This figure was produced by the following code.
+    Figure~\ref{fig:mult1} is an example of multiple 
+illustrations\index{illustration!multiple} in a single float 
+with a single caption. The figure was produced by the following code.
  \begin{lcode}
  \begin{figure}
  \centering
  \hspace*{\fill} 
    {ILLUSTRATION 1} \hfill {ILLUSTRATION 2} 
  \hspace*{\fill}
- \caption{Float with two illustrations} \label{fig:mult1}
+ \caption{Example float with two illustrations} \label{fig:mult1}
  \end{figure}
  \end{lcode}
- The |\hspace*{\fill}| and |\hfill| commands were used to space the two
- illustrations\index{illustration} equally. Of course |\includegraphics| or |tabular|
- environments could just as well
- be used instead of the |{ILLUSTRATION N}| text.
-
-    The following code produces \figurerefname s~\ref{fig:mult2} and~\ref{fig:mult3}
- which are examples of two separately captioned illustrations\index{illustration} in one
- float.
+ The \verb?\hspace*{\fill}? and \cmd{\hfill} commands were used to 
+space the two illustrations\index{illustration} equally. Of course 
+\cmd{\includegraphics} 
+or \Ie{tabular} environments could just as well be used instead of the 
+\verb?{ILLUSTRATION N}? text.
+
+    The following code produces \figurerefname s~\ref{fig:mult2} 
+and~\ref{fig:mult3} which are examples of two separately 
+captioned\index{caption!multiple}
+illustrations\index{illustration} in one float.
  \begin{lcode}
  \begin{figure}
  \centering
  \begin{minipage}{0.4\textwidth}
    \centering
-   ILLUSTRATION 3
-   \caption{Illustration 3} \label{fig:mult2}
+   GRAPHIC 1
+   \caption{Graphic 1 in a float} \label{fig:mult2}
  \end{minipage} 
  \hfill
  \begin{minipage}{0.4\textwidth}
    \centering
-   ILLUSTRATION 4
-   \caption{Illustration 4} \label{fig:mult3}
+   GRAPHIC 2
+   \caption{Graphic 2 in same float} \label{fig:mult3}
  \end{minipage} 
  \end{figure}
  \end{lcode}
- In this case the illustrations\index{illustration} (or graphics or tabulars) are put into
- separate |minipage| environments within the float, and the captions
- are also put within the |minipage|s. Note that any required |\label|
- must also be inside the |minipage|. If you wished, you could add yet
- another caption after the end of the two |minipage|s.
-
- \begin{figure}
+ In this case the illustrations\index{illustration} (or graphics or 
+tabulars) are put into separate \Ie{minipage} 
+environments\index{minipage!in float} within the float, 
+and the captions are also put within the \Ie{minipage}s. Note that 
+any required \cmd{\label} must also be inside the \Ie{minipage}. 
+If you wished, you could add yet another (main) caption after the end 
+of the two \Ie{minipage}s.
+
+%\begin{figure}
+ \begin{shadefigure}
  \centering
  \begin{minipage}{0.4\textwidth}
    \centering
-   ILLUSTRATION 3
-   \caption{Illustration 3} \label{fig:mult2}
+   GRAPHIC 1
+   \caption{Graphic 1 in a float} \label{fig:mult2}
  \end{minipage} 
  \hfill
  \begin{minipage}{0.4\textwidth}
    \centering
-   ILLUSTRATION 4
-   \caption{Illustration 4} \label{fig:mult3}
+   GRAPHIC 2
+   \caption{Graphic 2 in same float} \label{fig:mult3}
  \end{minipage} 
- \end{figure}
+ \end{shadefigure}
+% \end{figure}
 
-  Keith Reckdahl~\cite{EPSLATEX} provides more examples of this
- kind of thing.
+    It is slightly more complex if you want to put, say, both a 
+tabulation captioned as a table and a graph, captioned as a figure, 
+which illustrates the tabulation, as a 
+float\index{float!multiple!table and figure} 
+only permits one kind of caption. The class solves this problem by 
+letting you define `fixed' captions\index{caption!fixed} which are
+independent of the particular kind of the float. These are described in 
+detail later.
 
-\index{float!multiple|)}
+    Things do get a little trickier, though, if the bodies and/or
+the captions in a float are different heights 
+(as in \figurerefname s~\ref{fig:mult2} and~\ref{fig:mult3}) 
+and you want to align them horizontally.
+Here are some examples.
 
 
- \subsection{Where LaTeX puts floats}
+    This code produces \figurerefname s~\ref{fig:left1} 
+and~\ref{fig:right1}. The new \cmd{\hhrule} macro produces a rule
+twice as thick as \cmd{\hrule} does.
+\begin{lcode}
+\newcommand*{\hhrule}{\hrule height 0.8pt}% double thickness
 
-\index{float!placement|(}
+\begin{figure}
+\hhrule \vspace{\onelineskip}
+\null\hfill\parbox{0.45\linewidth}{%
+  \centering
+  Aligned to the center of the right figure
+}\hfill
+\parbox{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left figure}\label{fig:left1}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left1}) so the heights are unequal}%
+           \label{fig:right1}%
+}\hfill\null
+\hhrule
+\end{figure}
+\end{lcode}
 
- The general format for a float environment is: \\
- |\begin{float}[|\meta{loc}|] ... \end{float}| or for double column\index{column!double} floats: \\
- |\begin{float*}[|\meta{loc}|] ... \end{float*}| \\
- where the optional argument \meta{loc}, consisting of one or more characters,
- specifies a location where the float may be placed. Note that the 
- \Lpack{multicol}\index{column!multiple} package~\cite{MULTICOL} 
-only supports the starred floats and it will not 
- let you have a single column\index{column!single} float. The possible \meta{loc} values are one
- or more of the following:
- \begin{itemize}
- \item[\texttt{b}] \textit{bottom}: at the bottom of a page. This does not apply
- to double column\index{column!double} floats as they may only be placed at the top of a page.
- \item[\texttt{h}] \textit{here}: if possible exactly where the float environment
- is defined. It does not apply to double column\index{column!double} floats.
- \item[\texttt{p}] \textit{page}: on a separate page containing only 
- floats (no text).
- \item[\texttt{t}] \textit{top}: at the top of a page. 
- \item[\texttt{!}] make an extra effort to place the float at the earliest place
-  specified by the rest of the argument.
- \end{itemize}
- The default for \meta{loc} is |tbp|, so the float may be placed at the top, 
- or bottom, or on a float-only page; the default works well 95\% of the time.
-  Floats of the same kind are output in
- definition order, except that a double column\index{column!double} float may be output before
- a later single column\index{column!single} float of the same kind, or 
- \textit{vice-versa}\footnote{This little quirk
- is fixed by the \Lpack{fixltx2e} package, at least for tables and figures.
- The package is part of a normal LaTeX distribution.}. 
- A float is never put on
- an earlier page than its definition but may be put on the same or later page
- of its definition. If a float cannot be placed, all
- suceeding floats will be held up, and LaTeX can store no more than 16 held
- up floats. A float cannot
- be placed if it would cause an overfull page, or it otherwise cannot be fitted
- according the the float parameters.
- A |\clearpage| or |\cleardoublepage| or |\end{document}| flushes
- out all unprocessed floats, irrespective of the \meta{loc} and float
- parameters, putting them on float-only pages. 
+\newcommand*{\hhrule}{\hrule height 0.8pt}% double thickness
 
-\begin{syntax}
+%\begin{figure}
+\begin{shadefigure}
+\hhrule \vspace{\onelineskip}
+\null\hfill\parbox{0.45\linewidth}{%
+  \centering
+  Aligned to the center of the right figure
+}\hfill
+\parbox{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left center aligned}\label{fig:left1}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left1}) so the heights are unequal}%
+           \label{fig:right1}%
+}\hfill\null
+\hhrule
+\end{shadefigure}
+%\end{figure}
+
+
+    The following code produces \figurerefname s~\ref{fig:left2} 
+and~\ref{fig:right2}.
+\begin{lcode}
+\begin{figure}
+\hhrule \vspace{0.5\onelineskip}
+\null\hfill\parbox[t]{0.45\linewidth}{%
+  \centering
+  Aligned to the top of the right figure
+}\hfill
+\parbox[t]{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{0.5\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left top aligned}\label{fig:left2}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left2}) so the heights are unequal}%
+           \label{fig:right2}%
+}\hfill\null
+\hhrule
+\end{figure}
+\end{lcode}
+
+%\begin{figure}
+\begin{shadefigure}
+\hhrule \vspace{0.5\onelineskip}
+\null\hfill\parbox[t]{0.45\linewidth}{%
+  \centering
+  Aligned to the top of the right figure
+}\hfill
+\parbox[t]{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{0.5\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left top aligned}\label{fig:left2}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left2}) so the heights are unequal}%
+           \label{fig:right2}%
+}\hfill\null
+\hhrule
+\end{shadefigure}
+%\end{figure}
+
+    The next code produces \figurerefname s~\ref{fig:left3} 
+and~\ref{fig:right3}.
+\begin{lcode}
+\begin{figure}
+\hhrule \vspace{0.5\onelineskip}
+\null\hfill\parbox[b]{0.45\linewidth}{%
+  \centering
+  Aligned to the bottom of the right figure
+}\hfill
+\parbox[b]{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{0.5\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left bottom aligned}\label{fig:left3}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left3}) so the heights are unequal}%
+           \label{fig:right3}%
+}\hfill\null
+\hhrule
+\end{figure}
+\end{lcode}
+
+%\begin{figure}
+\begin{shadefigure}
+\hhrule \vspace{0.5\onelineskip}
+\null\hfill\parbox[b]{0.45\linewidth}{%
+  \centering
+  Aligned to the bottom of the right figure
+}\hfill
+\parbox[b]{0.45\linewidth}{%
+  \centering
+   This is the right figure which is taller
+   than the first one (the one at the left)
+}\hfill\null
+\vspace{0.5\onelineskip}\hrule
+\null\hfill\parbox[t]{0.4\linewidth}{%
+  \caption{Left bottom aligned}\label{fig:left3}%
+}\hfill
+\parbox[t]{0.4\linewidth}{%
+  \caption{Right figure. This has more text than the adjacent
+           caption (\ref{fig:left3}) so the heights are unequal}%
+           \label{fig:right3}%
+}\hfill\null
+\hhrule
+\end{shadefigure}
+%\end{figure}
+
+
+\begin{syntax}
+ \cmd{\newsubfloat}\marg{float} \\
+\end{syntax}
+\glossary(newsubfloat)%
+  {\cs{newsubfloat}\marg{float}}%
+  {Creates subcaptions for use in the \meta{float} float.}
+ The \cmd{\newsubfloat} command\index{float!new subfloat}  
+creates subcaptions\index{caption!new subcaption}
+(\cmd{\subcaption}, \cmd{\subtop} and \cmd{\subbottom})
+for use within the float environment \meta{fenv} previously
+defined via \cmd{\newfloat}\oarg{...}\marg{fenv}\marg{...}. 
+Subcaptions are discussed below. 
+
+\index{float!multiple|)}
+
+ \section{Where \ltx\ puts floats} \label{sec:floatplace}
+
+\index{float!placement|(}
+
+ The general format for a float environment is: \\
+ \senv{float}\oarg{loc} ... \eenv{float} 
+or for double column\index{float!double column} floats: \\
+ \senv{float*}\oarg{loc} ... \eenv{float*} \\
+where the optional argument \meta{loc}, consisting of one or more characters,
+specifies a location where the float may be placed. Note that the 
+\Lpack{multicol}\index{column!multiple} package only supports the 
+starred floats and it will not let you have a single 
+column\index{float!single column} float. The possible \meta{loc} values 
+are one or more of the following:
+\begin{itemize}
+\item[\textsf{b}\ixposarg{b}] \emph{bottom}: at the bottom\index{float!bottom}
+    of a page. 
+    This does not apply to double column\index{float!double column} floats 
+    as they may only be placed at the top of a page.
+\item[\textsf{h}\ixposarg{h}] \emph{here}: if possible exactly where 
+  the float\index{float!here} environment is defined. 
+  It does not apply to double 
+  column\index{float!double column} floats.
+\item[\textsf{p}\ixposarg{p}] \emph{page}: on a separate page
+  containing only floats\index{float!page} (no text); this is called
+  a \emph{float page}.
+\item[\textsf{t}\ixposarg{t}] \emph{top}: at the top\index{float!top} 
+    of a page. 
+\item[\textsf{!}] make an extra effort to place the float at the 
+  earliest place specified by the rest of the argument.
+\end{itemize}
+The default for \meta{loc} is \textsf{t}\textsf{b}\textsf{p}, 
+so the float may be placed at the top, or bottom, or on a 
+float\index{float!page} page; the default works well 95\% of the time.
+Floats of the same kind are output in
+definition order, except that a double column\index{float!double column} float 
+may be output before
+a later single column\index{float!single column} float of the same kind, or 
+\textit{vice-versa}\footnote{This little quirk
+is fixed by the \Lpack{fixltx2e} package, at least for tables and figures.
+The package is part of a normal \ltx\ distribution.}. 
+A float is never put on an earlier page than its definition but may be 
+put on the same or later page of its definition. If a float cannot be 
+placed, all suceeding floats will be held up, and \ltx\ can store no 
+more than 16 held up floats. A float cannot be placed if it would cause 
+an overfull page, or it otherwise cannot be fitted according the the 
+float placement parameters.
+A \cmd{\clearpage} or \cmd{\cleardoublepage} or \eenv{document} 
+flushes\index{float!flush}
+out all unprocessed floats, irrespective of the \meta{loc} and float
+parameters, putting them on float-only\index{float!page} pages. 
+
+\begin{syntax}
+\cmd{\setfloatlocations}\marg{float}\marg{locs} \\
+\end{syntax}
+\glossary(setfloatlocations)%
+  {\cs{setfloatlocations}\marg{float}\marg{locs}}%
+  {Sets the default location for the \meta{float} (e.g., \Pe{table})
+   to \meta{locs} (default \texttt{tbp}).}
+You can set the location for all floats of type \meta{float} to
+\meta{locs} with the \cs{setfloatlocations} declaration. The class
+initialises these using:
+\begin{lcode}
+\setfloatlocations{figure}{tbp}
+\setfloatlocations{table}{tbp}
+\end{lcode}
+
+\begin{syntax}
  \cmd{\suppressfloats}\oarg{pos} \\
 \end{syntax}
-    You can use the command \cmd{\suppressfloats} to suppress floats
- at a given \meta{pos} on the current page. |\suppressfloats[t]| prevents
- any floats at the top of the page and |\suppressfloats[b]| prevents any
- floats at the bottom of the page. The simple |\suppressfloats| prevents
- both top and bottom floats.
-
-    The \Lpack{flafter} package, which should have come with your LaTeX
- distribution, provides a means of preventing floats from moving
- backwards from their definition position in the text. This can be useful to
- ensure, for example, that a float early in a |\section{}| is not typeset before
- the section heading\index{heading}.
+\glossary(suppressfloats)%
+  {\cs{suppressfloats}\oarg{pos}}%
+  {Suppresses any floats on the current page at the given \meta{pos} placement.}
+    You can use the command \cmd{\suppressfloats} to 
+suppress\index{float!suppress} floats
+at a given \meta{pos} on the current page. 
+\cmd{\suppressfloats}\verb?[t]? 
+prevents any floats at the top\index{float!suppress top} of the page and 
+\cmd{\suppressfloats}\verb?[b]? 
+prevents any floats at the bottom\index{float!suppress bottom} of the page. 
+The simple \cmd{\suppressfloats} prevents both top and bottom floats.
+
+    The \Lpack{flafter} package, which should have come with your \ltx\
+distribution, provides a means of preventing floats from moving
+backwards from their definition position in the text. This can be useful to
+ensure, for example, that a float early in a \verb?\section{...}? is not 
+typeset before the section heading\index{heading}.
 
 \begin{figure}
 \centering
@@ -10163,104 +16789,145 @@ only supports the starred floats and it will not
 \end{figure}
 
  \begin{table}
-\begin{adjustwidth}{-1cm}{-1cm}
+\begin{adjustwidth}{-3cm}{-3cm}
  \centering
- \captionnamefont{\small\sffamily}
- \captiontitlefont{\small\sffamily}
+%% \captionnamefont{\small\sffamily}
+%% \captiontitlefont{\small\sffamily}
  \setlength{\belowcaptionskip}{10pt}
  \caption{Float placement parameters}\label{tab:fpp}
- \begin{tabular}{lp{0.5\linewidth}r} \hline
- Parameter & Controls & Default \\ \hline
- \multicolumn{3}{c}{Counters --- change with \cs{setcounter} } \\ \hline
+ \begin{tabular}{lp{0.5\textwidth}r} \toprule
+ Parameter & Controls & Default \\ \midrule
+ \multicolumn{3}{c}{Counters --- change with \cs{setcounter} } \\ \midrule
  \Icn{topnumber}  & max number of floats at top of a page & 2 \\
  \Icn{bottomnumber} & max number of floats at bottom of a page & 1 \\
  \Icn{totalnumber} & max number of floats on a text page & 3 \\
- \Icn{dbltopnumber} & like \Icn{topnumber} for double column\index{column!double} floats & 2 \\ \hline
- \multicolumn{3}{c}{Commands --- change with \cs{renewcommand} } \\ \hline
- \cmd{\topfraction} & max fraction of page reserved for top floats & 0.7 \\
- \cmd{\bottomfraction} & max fraction of page reserved for bottom floats & 0.3 \\
+ \Icn{dbltopnumber} & like \Icn{topnumber} for double column 
+                      floats\index{float!double column} & 2 \\ \midrule
+ \multicolumn{3}{c}{Commands --- change with \cs{renewcommand} } \\ \midrule
+ \cmd{\topfraction} & max fraction of page reserved for top 
+                      floats\index{float!top} & 0.7 \\
+ \cmd{\bottomfraction} & max fraction of page reserved for bottom 
+                         floats\index{float!bottom} & 0.3 \\
  \cmd{\textfraction} & min fraction of page that must have text & 0.2 \\
- \cmd{\dbltopfraction} & like \cmd{\topfraction} for double column\index{column!double} floats & 0.7 \\
+ \cmd{\dbltopfraction} & like \cmd{\topfraction} for double column
+                         floats\index{float!double column} floats & 0.7 \\
  \cmd{\floatpagefraction} & min fraction of a float page that must have float(s) & 0.5 \\
- \cmd{\dblfloatpagefraction} & like \cmd{\floatpagefraction} for double column\index{column!double} floats & 0.5 \\ \hline
- \multicolumn{3}{c}{Text page lengths --- change with \cs{setlength} } \\ \hline
+ \cmd{\dblfloatpagefraction} & like \cmd{\floatpagefraction} for double column
+                              floats\index{float!double column} & 0.5 \\ \bottomrule
+\end{tabular}
+\end{adjustwidth}
+\end{table}
+
+
+ \begin{table}
+\begin{adjustwidth}{-3cm}{-3cm}
+ \centering
+%% \captionnamefont{\small\sffamily}
+%% \captiontitlefont{\small\sffamily}
+ \setlength{\belowcaptionskip}{10pt}
+ \caption{Float spacing parameters}\label{tab:fsp}
+ \begin{tabular}{lp{0.5\textwidth}r} \toprule
+ Parameter & Controls & Default \\ \midrule
+ \multicolumn{3}{c}{Text page lengths --- change with \cs{setlength} } \\ \midrule
  \lnc{\floatsep} & vertical space between floats & 12pt \\
- \lnc{\textfloatsep} & vertical space between a top (bottom) float and suceeding (preceding) text & 20pt  \\
- \lnc{\intextsep} & vertical space above and below an \texttt{h} float & 12pt \\
- \lnc{\dblfloatsep} & like \lnc{\floatsep} for double column\index{column!double} floats & 12pt \\
- \lnc{\dbltextfloatsep} & like  \lnc{\textfloatsep} for double column\index{column!double} floats & 20pt \\ \hline
- \multicolumn{3}{c}{Float page lengths --- change with \cs{setlength} } \\ \hline
- \lnc{\@fptop} & space at the top of the page & |0pt plus 1fil| \\
- \lnc{\@fpsep} & space between floats & |8pt plus 2fil| \\
- \lnc{\@fpbot} & space at the bottom of the page & |0pt plus 1fil| \\
- \lnc{\@dblfptop} & like \lnc{\@fptop} for double column\index{column!double} floats & |0pt plus 1fil| \\
- \lnc{\@dblfpsep} & like \lnc{\@fpsep} for double column\index{column!double} floats & |8pt plus 2fil| \\
- \lnc{\@dblfpbot} & like \lnc{\@fpbot} for double column\index{column!double} floats & |0pt plus 1fil| \\ \hline
+ \lnc{\textfloatsep} & vertical space between a top (bottom) float and 
+                       suceeding (preceeding) text & 20pt  \\
+ \lnc{\intextsep} & vertical space above and below an \texttt{h} 
+                    float\index{float!here} & 12pt \\
+ \lnc{\dblfloatsep} & like \lnc{\floatsep} for double column
+                      floats\index{float!double column} & 12pt \\
+ \lnc{\dbltextfloatsep} & like  \lnc{\textfloatsep} for double column
+                          floats\index{float!double column} & 20pt \\ \midrule
+ \multicolumn{3}{c}{Float page lengths --- change with \cs{setlength} } \\ \midrule
+ \lnc{\@fptop} & space at the top of the page & \verb?0pt plus 1fil? \\
+ \lnc{\@fpsep} & space between floats & \verb?8pt plus 2fil? \\
+ \lnc{\@fpbot} & space at the bottom of the page & \verb?0pt plus 1fil? \\
+ \lnc{\@dblfptop} & like \lnc{\@fptop} for double column
+                    floats\index{float!double column} & \verb?0pt plus 1fil? \\
+ \lnc{\@dblfpsep} & like \lnc{\@fpsep} for double column 
+                    floats\index{float!double column} & \verb?8pt plus 2fil? \\
+ \lnc{\@dblfpbot} & like \lnc{\@fpbot} for double column 
+                    floats\index{float!double column} & \verb?0pt plus 1fil? \\ 
+\bottomrule
  \end{tabular}
 \end{adjustwidth}
  \end{table}
 
- Figures~\ref{fig:fpp} and~\ref{fig:flp} illustrate the many float parameters
+ Figures~\ref{fig:fpp} and~\ref{fig:flp} illustrate the many float 
+parameters\index{float!parameters}
 and \tref{tab:fpp} lists the float parameters and the typical 
- standard default values. All the lengths are rubber lengths, and the actual 
- defaults depend on both the class and its size option.
+standard default values. The lengths controlling the spaces surroundind
+floats are listed
+in \tref{tab:fsp}; typical values are shown as they depend on both
+the class and the size option.
 
     Given the displayed defaults, the height of a top float must be 
- less than 70\% of the textheight and there can be no more than 2 top floats
- on a text page. Similarly, the height of a bottom float must not
- exceed 30\% of the textheight and there can be no more than 1 bottom
- float on a text page. There can be no more than 3 floats (top, bottom and here)
- on the page. At least 20\% of a text page with floats must be text.
- On a float page (one that has no text, only floats) the sum of the heights
- of the floats must be at least 50\% of the textheight. The floats on a float
- page should be vertically centered.
-
-    It can be seen that with the defaults LaTeX might have trouble finding
- a place for a float. Consider what will happen if a float is a bottom float
- whose height is 40\% of the textheight and this is followed by a float whose
- height is 90\% of the textheight. The first is too large to actually go at the
- bottom of a text page but too small to go on a float page by itself. The second
- has to go on a float page but it is too large to share the float page with the
- first float. LaTeX is stuck!
+less than 70\% of the textheight and there can be no more than 2 top 
+floats\index{float!top}
+on a text page. Similarly, the height of a bottom float must not
+exceed 30\% of the textheight and there can be no more than 1 bottom
+float\index{float!bottom} on a text page. There can be no more than 
+3 floats (top, bottom and here\index{float!here})
+on the page. At least 20\% of a text page with floats must be text.
+On a float page\index{float!page} (one that has no text, only floats) 
+the sum of the heights
+of the floats must be at least 50\% of the textheight. The floats on a float
+page should be vertically centered.
+
+    Under certain extreme and unlikely conditions and with the defaults
+\ltx\ might have trouble finding a place for a float. 
+Consider what will happen if a float is specified as a bottom float and
+its height is 40\% of the textheight and this is followed by a float whose
+height is 90\% of the textheight. The first is too large to actually 
+go at the bottom of a text page but too small to go on a float page by 
+itself. The second has to go on a float page but it is too large to share 
+the float page with the first float. \ltx\ is stuck!
 
     At this point it is worthwhile to be precise about the effect of a
  one character \meta{loc} argument:
- \begin{itemize}
- \item[\texttt{[b]}] means: `put the float at the bottom of a page with some
-      text above it, and nowhere else'. The float must fit into the 
-      |\bottomfraction| space otherwise it and subsequent floats will be held up.
- \item[\texttt{[h]}] means: `put the float at this point and nowhere else'.
-      The float must fit into the space left on the page otherwise it and 
-      subsequent floats will be held up.
- \item[\texttt{[p]}] means: `put the float on a page that has no text but may
-      have other floats on it'. There must be at least `|\floatpagefraction|'
-      worth of floats to go on a float only page before the float will be
-      be output.
- \item[\texttt{[t]}] means: `put the float at the top of a page with some
-      text below it, and nowhere else'. The float must fit into the 
-      |\topfraction| space otherwise it and subsequent floats will be held up.
- \item[\texttt{[!...]}] means: `ignore the |\...fraction| values for this
-      float'.
- \end{itemize}
+\begin{itemize}
+\item[\textsf{b}\ixposarg{b}] means: 
+      `put the float at the bottom of a page with some
+      text above it, and nowhere else'. 
+      The float must fit into the \cmd{\bottomfraction} space 
+      otherwise it and subsequent floats will be held up.
+\item[\textsf{h}\ixposarg{h}] means: 
+      `put the float at this point and nowhere else'. 
+      The float must fit into the space left on the page 
+      otherwise it and subsequent floats will be held up.
+\item[\textsf{p}\ixposarg{p}] means: 
+      `put the float on a page that has no text but may
+      have other floats on it'. 
+      There must be at least `\cmd{\floatpagefraction}' worth of 
+      floats to go on a float only page before the float will be output.
+\item[\textsf{t}\ixposarg{t}] means: 
+      `put the float at the top of a page with some
+      text below it, and nowhere else'. 
+      The float must fit into the \cmd{\topfraction} space 
+      otherwise it and subsequent floats will be held up.
+\item[\textsf{!...}] means: 
+      `ignore the \cs{...fraction} values for this float'.
+\end{itemize}
 
- You must try and pick a combination from these that will let LaTeX find
- a place to put your floats. However, you can 
- also can change the float parameters to make it easier to find places
- to put floats. Some examples are:
- \begin{itemize}
- \item Decrease \cmd{\textfraction} to get more `float' on a text page, but
- the sum of \cmd{\textfraction} and \cmd{\topfraction} and the sum of \cmd{\textfraction}
- and \cmd{\bottomfraction} should not exceed 1.0, otherwise the placement algorithm
- falls apart. A minimum value for \cmd{\textfraction} is about 0.10 --- a page
- with less than 10\% text looks better with no text at all, just floats.
-
- \item Both \cmd{\topfraction} and \cmd{\bottomfraction} can be increased, and it does
- not matter if their sum exceeds 1.0. A good typographic style is that floats
- are encouraged to go at the top of a page, and a better balance is achieved
- if the float space on a page is larger
- at the top than the bottom.
-
- \item Making \cmd{\floatpagefraction} too small might have the effect of a
+ You must try and pick a combination from these that will let \ltx\ find
+a place to put your floats. However, you can 
+also can change the float parameters to make it easier to find places
+to put floats. Some examples are:
+\begin{itemize}
+\item Decrease \cmd{\textfraction} to get more `float' on a text page, 
+  but the sum of \cmd{\textfraction} and \cmd{\topfraction} and the sum 
+  of \cmd{\textfraction} and \cmd{\bottomfraction} should not exceed 1.0, 
+  otherwise the placement algorithm falls apart. A minimum value for 
+  \cmd{\textfraction} is about 0.10 --- a page with less than 10\% text 
+  looks better with no text at all, just floats.
+
+\item Both \cmd{\topfraction} and \cmd{\bottomfraction} can be increased, 
+  and it does not matter if their sum exceeds 1.0. A good typographic 
+  style is that floats are encouraged to go at the top of a page, and 
+  a better balance is achieved if the float space on a page is larger
+  at the top than the bottom.
+
+\item Making \cmd{\floatpagefraction} too small might have the effect of a
  float page just having one small float. However, to make sure that a float
  page never has more than one float on it, do: 
 \begin{lcode}
@@ -10268,7644 +16935,18742 @@ and \tref{tab:fpp} lists the float parameters and the typical
 \setlength{\@fpsep}{\textheight}
 \end{lcode}
 
- \item Setting \lnc{\@fptop} to |0pt|, \lnc{\@fpsep} to |8pt| and \lnc{\@fpbot}
- to |0pt plus 1fil| will force floats on a float page to start at the top
- of the page.
- \end{itemize}
- If you are experimenting, a reasonable starting position is:
- \begin{lcode}
- \setcounter{topnumber}{3}
- \setcounter{bottomnumber}{2}
- \setcounter{totalnumber}{4}
- \renewcommand{\topfraction}{0.85}
- \renewcommand{\bottomfraction}{0.5}
- \renewcommand{\textfraction}{0.15}
- \renewcommand{\floatpagefraction}{0.7}
- \end{lcode}
- and similarly for double column\index{column!double} floats if you will have any. Actually, don't
-bother to try these settings as they are the default for this class.
-
-    One of LaTeX's little quirks is that on a text page, the `height' of a float
- is its actual height plus \lnc{\textfloatsep} or \lnc{\floatsep}, while on a float
- page the `height' is the actual height. This means that when using the default
- \meta{loc} of |[tbp]| at least one of the text page float fractions 
- (\cmd{\topfraction} and/or \cmd{\bottomfraction}) must be
- larger than the \cmd{\floatpagefraction} by an amount sufficient to take account
- of the maximum text page separation value.
- 
-\index{float!placement|)}
+\item Setting \lnc{\@fptop} and \lnc{\@dblftop} to \texttt{0pt}, 
+      \lnc{\@fpsep} to \texttt{8pt}, 
+       and \lnc{\@fpbot} and \lnc{\@dblfpbot} to \texttt{0pt plus 1fil} 
+       will force floats on 
+       a float page to start at the top of the page.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeleteShortVerb{\|}
-\MakeShortVerb{\=}
-%%%%\input{tabmanbody}  %% rows & columns
-%%%%  tabmanbody.tex
 
- \chapter{Rows and columns}
+\item Setting \lnc{\@fpbot} and \lnc{\@dblfpbot} to \texttt{0pt}, 
+      \lnc{\@fpsep} to \texttt{8pt},
+       and \lnc{\@fptop} and \lnc{\@dblfptop} to \texttt{0pt plus 1fil} 
+       will force floats on 
+       a float page to the bottom of the page.
+\end{itemize}
 
-\section{Introduction}
+     If you are experimenting, a reasonable starting position is:
+\begin{lcode}
+\setcounter{topnumber}{3}
+\setcounter{bottomnumber}{2}
+\setcounter{totalnumber}{4}
+\renewcommand{\topfraction}{0.85}
+\renewcommand{\bottomfraction}{0.5}
+\renewcommand{\textfraction}{0.15}
+\renewcommand{\floatpagefraction}{0.7}
+\end{lcode}
+and similarly for double column\index{float!double column} floats if you will 
+have any. Actually, there is no need
+to try these settings as they are the default for this class.
+
+    One of \ltx's little quirks is that on a text page, the `height' of 
+a float is its actual height plus \lnc{\textfloatsep} or \lnc{\floatsep}, 
+while on a float page the `height' is the actual height. This means that 
+when using the default \meta{loc} of \verb?[tbp]? at least one of the text 
+page float fractions (\cmd{\topfraction} and/or \cmd{\bottomfraction}) 
+must be larger than the \cmd{\floatpagefraction} by an amount sufficient 
+to take account of the maximum text page separation value.
+ 
 
-    The class provides extensions to the standard \Ie{array} and \Ie{tabular}
-environments. These are based partly on a merging of the
- \Lpack{array}~\cite{ARRAY}, 
- \Lpack{dcolumn}~\cite{DCOLUMN},
- \Lpack{delarray}~\cite{DELARRAY}, 
- \Lpack{tabularx}~\cite{TABULARX}, and 
- \Lpack{booktabs}~\cite{BOOKTABS} 
- packages. 
-    Much of the material in this chapter strongly reflects the
-documentation of these packages.
+\index{float!placement|)}
 
- However, new kinds of tabular environments are also provided.
+\section{Captions}
 
+\index{caption|(}
 
-\section{General}
+ Some publishers require, and some authors prefer, captioning styles
+other than the one style provided by standard \ltx. 
+Further, some demand that documents that include multi-part
+tables\index{table} use a \textit{continuation caption} on all but the first
+part of the multi-part table\index{table}. For the times where such 
+a table\index{table} is specified by the author as a set of 
+tables\index{table}, the class provides a simple `continuation' 
+caption\index{caption!continuation} command to meet this 
+requirement. It also provides a facility for an `anonymous' 
+caption\index{caption!anonymous}
+which can be used in any float\index{float} environment. 
+Captions can be defined that are suitable for use in non-float
+environments, such as placing a picture in a minipage and captioning
+it just as though it had been put into a normal 
+figure\index{figure} environment.
+
+    The commands described below are very similar to
+those supplied by the \Lpack{ccaption} package~\cite{CCAPTION}.
 
-\begin{syntax}
-\cmd{\[} \senv{array}\oarg{pos}\marg{preamble} rows \eenv{array} \cmd{\]} \\
-\senv{tabular}\oarg{pos}\marg{preamble} rows \eenv{tabular} \\
-\senv{tabular*}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabular*} \\
-\senv{tabularx}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabularx} \\
-\end{syntax}
-The \Ie{array} and \Ie{tabular} environments are traditional and the others
-are extensions. The \Ie{array} is for typesetting
-math and has to be within a math environment of some kind. The \Ie{tabular}
-series are for typesetting ordinary text.
+\section{Caption styling} 
 
-    The optional \meta{pos} argument can be one of \texttt{t}, \texttt{c},
-or \texttt{b} (the default is \texttt{c}), and controls the vertical position
-of the array or tabular; either the \texttt{t}op or the \texttt{c}enter,
-or the \texttt{b}ottom is aligned with the baseline. 
-Each row consists of elements separated by
-\&, and finished with \cmd{\\}. There may be as many rows as desired.
-The number and style of the columns is specified by the \meta{preamble}.
-The width of each column is wide enough to contain its longest entry and
-the overall width of the \Ie{array} or \Ie{tabular} is sufficient to contain
-all the columns. However, the \Ie{tabular*} and \Ie{tabularx} provide
-more control over the width through their \meta{width} argument.
+\index{caption!style|(}
 
-\section{The preamble}
+    Just as a reminder, the default appearance of a caption for, say,
+a table looks like this:
+\begin{center}
+Table 11.7: Title for the table
+\end{center}
+That is, it is typeset in the normal body font, with a colon after
+the number.
 
-    You use the \meta{preamble} argument to the array and tabular 
-environments to specify the number of columns and how you want column
-entries to appear. The preamble consists of a sequence of options, which
-are listed in \tref{tab:tabpream}.
+    The class uses the following to specify the standard \ltx\ caption
+style:
+\begin{lcode}
+\captionnamefont{}
+\captiontitlefont{}
+\captionstyle{}
+\captionwidth{\linewidth}
+\normalcaptionwidth
+\normalcaption
+\captiondelim{: }
+\end{lcode}
+These macros are explained in detail below.
 
- \begin{table}
- \begin{center}
- \caption{The array and tabular preamble options.} \label{tab:tabpream}
-    \setlength{\extrarowheight}{1pt}
-    \begin{tabular}{cp{9cm}} \toprule
- \texttt{l}             &  Left adjusted column. \\
- \texttt{c}             &  Centered adjusted column. \\
- \texttt{r}             &  Right adjusted column. \\
- \texttt{p}\marg{width} &  Equivalent to =\parbox[t]=\marg{width}. \\
- \texttt{m}\marg{width} &  Defines a column of width \meta{width}.
-                           Every entry will be centered in proportion to
-                           the rest of the line. It is somewhat like
-                           =\parbox=\marg{width}. \\
- \texttt{b}\marg{width} &  Coincides with =\parbox[b]=\marg{width}. \\
- \texttt{>}\marg{decl}  &  Can be used before an \texttt{l}, \texttt{r},
-                           \texttt{c}, \texttt{p}, \texttt{m} or a
-                           \texttt{b} option. It inserts \meta{decl}
-                           directly in front of the entry of the column.
-                           \\
- \texttt{<}\marg{decl}  &  Can be used after an \texttt{l}, \texttt{r},
-                           \texttt{c}, =p{..}=, =m{..}= or a =b{..}=
-                           option.  It inserts \meta{decl} right
-                           after the entry of the column.  \\
- \texttt{|}             &  Inserts a vertical line. The distance between
-                           two columns will be enlarged by the width of
-                           the line. \\
- \texttt{@}\marg{decl}  &  Suppresses inter-column space and inserts
-                           \meta{decl} instead. \\
- \texttt{!}\marg{decl}  &  Can be used anywhere and corresponds with the
-                           \texttt{|} option. The difference is that
-                           \meta{decl} is inserted instead of a
-                           vertical line, so this option doesn't
-                           suppress the normally inserted space between
-                           columns in contrast to =@{...}=.\\
- \texttt{D}\marg{ssep}\marg{osep}\marg{places} & Column entries aligned
-                           on a `decimal point' \\
-       \bottomrule
-    \end{tabular}
- \end{center}
- \end{table}
+\begin{syntax}
+\cmd{\captiondelim}\marg{delim} \\
+\end{syntax}
+\glossary(captiondelim)%
+  {\cs{captiondelim}\marg{delim}}%
+  {Specifies \meta{delim} to be the delimeter between the number and title in a caption.}
+ The default captioning style is to put a delimeter\index{caption!delimeter} 
+in the form of a colon between the caption
+number and the caption title. The command \cmd{\captiondelim}
+can be used to change the delimeter. For example, to have an en-dash instead
+of the colon, \verb?\captiondelim{-- }? will do the trick. 
+Notice that no space is put between the delimeter and the title unless 
+it is specified in the \meta{delim} parameter. 
+The class initially specifies \verb?\captiondelim{: }? to give the normal 
+delimeter.
 
-    Examples of the options include:
- \begin{itemize}
-    \item A flush left column with bold font can be specified
-          with =>{\bfseries}l=.
-%% Companion, page 106.
+\begin{syntax}
+\cmd{\captionnamefont}\marg{fontspec} \\
+\end{syntax}
+\glossary(captionnamefont)%
+  {\cs{captionnamefont}\marg{fontspec}}%
+  {Set the font for the first part (name and number) of a caption, upto and including
+   the delimeter.}
+ The \meta{fontspec} specified by \cmd{\captionnamefont} is used
+for typesetting the caption\index{caption!font} name; 
+that is, the first part of the caption
+up to and including the delimeter (e.g., the portion `Table 3:').
+\meta{fontspec} can be any kind of font specification and/or command and/or 
+text. This first part of the caption is treated like: 
 \begin{lcode}
-\begin{center}
-\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c} \toprule
-A   & B  & C \\ 
-100 & 10 & 1 \\ \bottomrule
-\end{tabular}
-\end{center}
+{\captionnamefont Table 3: }
 \end{lcode}
+so font declarations, not font text-style commands, are needed for 
+\meta{fontspec}. For instance, 
+\begin{lcode}
+\captionnamefont{\Large\sffamily}
+\end{lcode} 
+to specify a large sans-serif font. The class initially specifies 
+\verb?\captionnamefont{}? to give the normal font.
+ 
 
-\begin{center}
-\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c} \toprule
-A   & B  & C \\ 
-100 & 10 & 1 \\ \bottomrule
-\end{tabular}
-\end{center}
-
-    \item
-       In columns which have been generated with \texttt{p}, \texttt{m}
-       or \texttt{b}, the default value of =\parindent= is
-       \textsf{0pt}.
+\begin{syntax}
+\cmd{\captiontitlefont}\marg{fontspec} \\
+\end{syntax}
+\glossary(captiontitlefont)%
+  {\cs{captiontitlefont}\marg{fontspec}}%
+  {Set the font for the caption title text.}
+ Similarly, the \meta{fontspec} specified by \cmd{\captiontitlefont}
+is used for typesetting the title text\index{caption!font} of a caption. 
+For example,
+\verb?\captiontitlefont{\itshape}? for an italic title text.
+The class initially specifies \verb?\captiontitlefont{}?
+to give the normal font.
 
-%Companion, page 106.
+\begin{syntax}
+\cmd{\captionstyle}\oarg{short}\marg{style} \\
+\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{\centerlastline} \\
+\end{syntax}
+\glossary(captionstyle)%
+  {\cs{captionstyle}\oarg{short}\marg{style}}%
+  {Set the paragraph style for the caption. The optional \meta{short} is
+   the style for captions shorter than a full line.}
+   By default the name and title of a caption are typeset as a block 
+(non-indented) paragraph\index{paragraph!block}. 
+\cmd{\captionstyle} can be used to alter this.
+Sensible values for \meta{style} are: \cmd{\centering}, \cmd{\raggedleft} or
+\cmd{\raggedright} for styles\index{caption!paragraph style} 
+corresponding to these declarations. 
+The \cmd{\centerlastline} style gives a block paragraph\index{paragraph!block}
+but with the last line centered.
+The class initially specifies \verb?\captionstyle{}?
+to give the normal block paragraph style.
 
+    If a caption is less than one line in length it may look odd if the
+\meta{style} is \cmd{\raggedright}, say, as it will be left justified. 
+The optional \meta{short} argument to \cmd{\captionstyle} can be used to
+specify the style\index{caption!short style} for such short captions 
+if it should differ from that for multiline\index{caption!multiline} 
+captions. For example, I think that short captions look better 
+centered:
 \begin{lcode}
-\begin{center}
-\begin{tabular}{m{1cm}m{1cm}m{1cm}} \toprule
-1 1 1 1 1 1 1 1 1 1 1 1 &
-2 2 2 2 2 2 2 2         &
-3 3 3 3                 \\ \bottomrule
-\end{tabular}
-\end{center}
-\end{lcode}
-
-\begin{center}
-\begin{tabular}{m{1cm}m{1cm}m{1cm}} \toprule
-1 1 1 1 1 1 1 1 1 1 1 1 &
-2 2 2 2 2 2 2 2         &
-3 3 3 3                 \\ \bottomrule
-\end{tabular}
-\end{center}
+\captionstyle[\centering]{\raggedright}
+\end{lcode} 
 
-       The \lnc{\parindent} can be changed with, for example 
-       =>{\setlength{\parindent}{1cm}}p=.
+\begin{syntax}
+\cmd{\hangcaption} \\
+\cmd{\indentcaption}\marg{length} \\
+\cmd{\normalcaption} \\
+\end{syntax}
+\glossary(hangcaption)%
+  {\cs{hangcaption}}%
+  {Multiline captions will be typeset as a hanging paragraph.}
+\glossary(indentcaption)%
+  {\cs{indentcaption}\marg{length}}%
+  {Multiline captions will be typeset as a hanging paragraph hung by \meta{length}.}
+\glossary(normalcaption)%
+  {\cs{normalcaption}}%
+  {Multiline captions will be typeset as a block paragraph.}
+ The declaration \cmd{\hangcaption} causes captions to be typeset with 
+the second and later lines of a multiline\index{caption!multiline} 
+caption title indented by 
+the width of the caption name. 
+The declaration \cmd{\indentcaption} will indent title lines after 
+the first by \meta{length}. These commands are independent of 
+the \cmd{\captionstyle}\verb?{...}?. Note that a caption will not 
+be simultaneously hung and indented. The \cmd{\normalcaption} declaration 
+undoes any previous \cmd{\hangcaption} or \cmd{\indentcaption} declaration.
+The class initially specifies \cmd{\normalcaption} to give the normal 
+ non-indented paragraph\index{paragraph!indentation} style.
 
-%%Companion, page 107.
+\begin{syntax}
+\cmd{\changecaptionwidth} \\
+\cmd{\captionwidth}\marg{length} \\
+\cmd{\normalcaptionwidth} \\
+\end{syntax}
+\glossary(changecaptionwidth)%
+  {\cs{changecaptionwidth}}%
+  {Captions will be set within the width specified by \cs{captionwidth}.}
+\glossary(captionwidth)%
+  {\cs{captionwidth}\marg{length}}%
+  {Set the caption width to \meta{length}.}
+\glossary(normalcaptionwidth)%
+  {\cs{normalcaptionwidth}}%
+  {Captions will be set to the full width.}
+   Issuing the declaration \cmd{\changecaptionwidth} causes the captions to
+be typeset within a total width\index{caption!width} \meta{length} 
+as specified by \cmd{\captionwidth}. 
+Issuing the declaration \cmd{\normalcaptionwidth}
+causes captions to be typeset as normal full width captions.
+The class initially specifies
+\begin{lcode}
+\normalcaptionwidth
+\captionwidth{\linewidth}
+\end{lcode}
+to give the normal width. If a caption is being set within the 
+side captioned\index{caption!side caption} environments from 
+the \Lpack{sidecap} package~\cite{SIDECAP}
+then it must be a \cmd{\normalcaptionwidth} caption.
 
+\begin{syntax}
+\cmd{\precaption}\marg{pretext} \\
+\cmd{\captiontitlefinal}{text} \\
+\cmd{\postcaption}\marg{posttext} \\
+\end{syntax}
+\glossary(precaption)%
+  {\cs{precaption}\marg{pretext}}%
+  {\meta{pretext} will be processed at the start of a caption.}
+\glossary(captiontitlefinal)%
+  {\cs{captiontitlefinal}\marg{text}}%
+  {\meta{text} will be put immediately at the end of a caption title,
+   but will not appear in a \listofx.}
+\glossary(postcaption)%
+  {\cs{postcaption}\marg{posttext}}%
+  {\meta{posttext} will be processed at the end of a caption.}
+
+  The commands \cmd{\precaption} and  \cmd{\postcaption}
+specify \meta{pretext} and \meta{posttext} that will be processed at the
+start and end of a caption. For example 
 \begin{lcode}
-\begin{center}
-\begin{tabular}{>{\setlength{\parindent}{5mm}}p{2cm} p{2cm}} \toprule
-1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 &
-1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \\ \bottomrule
-\end{tabular}
-\end{center}
+\precaption{\rule{\linewidth}{0.4pt}\par}
+\postcaption{\rule{\linewidth}{0.4pt}}
 \end{lcode}
+  will draw a horizontal line\index{caption!ruled} above and below 
+the captions.
+The class initially specifies
+\begin{lcode}
+\precaption{}
+\postcaption{}
+\end{lcode}
+to give the normal appearance.
 
-\begin{center}
-\begin{tabular}{>{\setlength{\parindent}{5mm}}p{2cm} p{2cm}} \toprule
-1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 &
-1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \\ \bottomrule
-\end{tabular}
-\end{center}
-
-    \item
-       The specification =>{$}c<{$}= generates a column in math
-       mode in a \Ie{tabular} environment. When used in an \Ie{array}
-       environment the column is in LR mode (because the additional
-       \$'s cancel the existing \$'s).
-    \item
-       Using =c!{\hspace{1cm}}c= you get space between two
-       columns which is enlarged by one centimeter, while
-       =c@{\hspace{1cm}}c= gives you exactly one centimeter
-       space between two columns.
-\item Elsewhere reasons are given why you should not use vertical
-      lines (e.g., the \texttt{|} option) in tables. Any examples
-      that use vertical lines are for illustrative purposes only where
-      it is advantageous to denote column boundaries, for example
-      to show different spacing effects.
- \end{itemize}
-
- \subsection{D column specifiers} \label{sec:dcolumns}
+    The argument to \cmd{\captiontitlefinal} is put immediately after the 
+title text but will not appear in the LoF or LoT. The default is
+\begin{lcode}
+\captiontitlefinal{}
+\end{lcode}
+but it could be used instead as, say
+\begin{lcode}
+\captiontitlefinal{.}
+\end{lcode}
+to put a period (full stop) after the title.
+ 
+    If any of the above commands are used in a float\index{float}, 
+or other, environment their effect is limited to the environment. 
+If they are used in the preamble\index{preamble}
+or the main text, their effect persists until replaced by a similar
+command with a different parameter value. The commands do not affect the
+appearance of the title in any \listofx.
 
-    In financial tables dealing with pounds
-and pence or dollars and cents, column entries
-should be aligned on the separator between the numbers. The \texttt{D}
-column specifier is provided for columns which are to be aligned on 
-a `decimal point'. The specifier takes three arguments.
 \begin{syntax}
- \texttt{D}\marg{ssep}\marg{osep}\marg{places} \\
+\cmd{\\}\oarg{length} \\
+\cmd{\\*}\oarg{length} \\
 \end{syntax}
-\begin{itemize}
-\item[\meta{ssep}] is the single character which is used as the
- separator in the source \texttt{.tex} file. Thus it will usually 
-be `\texttt{.}' or  `\texttt{,}'.
+ The normal \ltx\  command \cmd{\\} can be used within the
+caption text to start a new line. Remember that \cmd{\\} is a fragile 
+command, so if it is used within text that will be added to a \listofx\
+it must be protected.
+ As examples: 
+\begin{lcode}
+\caption{Title with a \protect\\ new line in 
+         both the body and List of}
+\caption[List of entry with no new line]%
+        {Title with a \\ new line}
+\caption[List of entry with a \protect\\ new line]%
+        {Title text}
+\end{lcode}
 
-\item[\meta{osep}] is the separator in the output, this may
- be the same as the first argument, but may be any math-mode
- expression, such as \cmd{\cdot}. A \texttt{D} column
- always uses math mode for the digits as well as the separator.
+ Effectively, a caption is typeset as though it were:
+ \begin{lcode}
+ \precaption
+ {\captionnamefont NAME NUMBER\captiondelim}
+ {\captionstyle\captiontitlefont THE TITLE\captiontitlefinal}
+ \postcaption
+ \end{lcode}
+ Replacing the above commands by their defaults leads to the simple
+ format: \\
+ \verb?{NAME NUMBER: }{THE TITLE}?
 
-\item[\meta{places}] should be the maximum number of decimal places
- in the column (but see below for more on this). 
-If this is negative, any number of decimal places can
- be used in the column, and all entries will be centred on 
- (the leading edge of) the 
- separator. Note that this can cause a column to be too wide; for instance, 
-compare  the first two columns in the example below. 
-\end{itemize}
+ As well as using the styling commands to make simple changes to the
+captioning style, more noticeable modifications can also be made.
+To change the captioning style so that the name and title are typeset in
+a sans font\index{caption!font} it is sufficient to do:
+ \begin{lcode}
+ \captionnamefont{\sffamily}
+ \captiontitlefont{\sffamily}
+ \end{lcode}
 
-    Here are some example specifications which, for convenience, employ
-the \cmd{\newcolumntype} macro described later.
+ \begin{shadetable}
+% \centering
+ \captionnamefont{\sffamily}
+ \captiondelim{}
+ \captionstyle{\\}
+ \captiontitlefont{\scshape}
+ \setlength{\belowcaptionskip}{10pt}
+ \caption{Redesigned table caption style} \label{tab:style}
+ \begin{tabular}{lr} \toprule
+  three & III \\
+  five  & V \\
+  eight & VIII \\ \bottomrule
+  \end{tabular}
+ \end{shadetable}
 
+ A more obvious change in styling is shown in \tref{tab:style},
+ which was coded as:
+ \begin{lcode}
+ \begin{table}
+ \centering
+ \captionnamefont{\sffamily}
+ \captiondelim{}
+ \captionstyle{\\}
+ \captiontitlefont{\scshape}
+ \setlength{\belowcaptionskip}{10pt}
+ \caption{Redesigned table caption style} \label{tab:style}
+ \begin{tabular}{lr} \toprule
+  ...
+ \end{table}
+ \end{lcode}
+This leads to the approximate caption format 
+(processed within \cmd{\centering}): 
 \begin{lcode}
-\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
+{\sffamily NAME NUMBER}{\\ \scshape THE TITLE}
 \end{lcode}
-    This defines \texttt{d} to be a column specifier taking a single argument 
-specifying the number of decimal places, 
-and the \file{.tex} file should use `\texttt{.}' as the separator, with
-\cmd{\cdot} ($\cdot$) being used in the output.
+ Note that the newline command (\cmd{\\}) cannot be put in the first part
+ of the format (i.e., the \verb?{\sffamily NAME NUMBER}?); it has to go into
+ the second part, which is why it is specified via \verb?\captionstyle{\\}?
+ and not \verb?\captiondelim{\\}?.
 
-\begin{lcode}
-\newcolumntype{.}{D{.}{.}{-1}}
-\end{lcode}
-The result of this is that `\texttt{.}' specifies a column of entries to 
-be centered on the~`$.$'.
+    If a mixture of captioning styles will be used you may want to
+define a special caption command for each non-standard style. For
+example for the style of the caption in \tref{tab:style}:
+\begin{lcode}
+\newcommand{\mycaption}[2][\@empty]{
+  \captionnamefont{\sffamily\hfill}
+  \captiondelim{\hfill}
+  \captionstyle{\centerlastline\\}
+  \captiontitlefont{\scshape}
+  \setlength{\belowcaptionskip}{10pt}
+  \ifx \@empty#1 \caption{#2}\else \caption[#1]{#2}}
+\end{lcode}
+Remember that any code that involves the \idxatincode\texttt{@} sign must 
+be either in
+a package (\file{sty}) file or enclosed between a \cmd{\makeatletter} \ldots
+\cmd{\makeatother} pairing (\seeatincode).
 
+ The code for the \tref{tab:style} example can now be written as:
 \begin{lcode}
-\newcolumntype{,}{D{,}{,}{2}}
+\begin{table}
+\centering
+\mycaption{Redesigned table caption style} \label{tab:style}
+\begin{tabular}{lr} \toprule
+ ...
+\end{table}
 \end{lcode}
-And the result of this is that `\texttt{,}' specifies a column of 
-entries with at most two decimal places after a~`$,$'.
+ Note that in the code for \cs{mycaption} I have added two
+\cmd{\hfill} commands and \cmd{\centerlastline} compared with the original
+specification.
+It turned out that the original definitions
+worked for a single line caption but not for a 
+multiline\index{caption!multiline} caption.
+The additional commands makes it work in both cases, forcing the
+name to be centered as well as the last line of a multiline title,
+thus giving a balanced appearence.
 
- \newcolumntype{d}[1]{D{.}{\cdot}{#1}}
- \newcolumntype{.}{D{.}{.}{-1}}
- \newcolumntype{,}{D{,}{,}{2}}
+ \index{caption!style|)}
 
- The following table is typeset from this code:
-\begin{lcode}
-\begin{center}
- \begin{tabular}{|d{-1}|d{2}|.|,|}
- 1.2   & 1.2   &1.2    &1,2    \\
- 1.23  & 1.23  &12.5   &300,2  \\
- 1121.2& 1121.2&861.20 &674,29 \\
- 184   & 184   &10     &69     \\
- .4    & .4    &       &,4     \\
-       &       &.4     &
- \end{tabular}
- \end{center}
-\end{lcode}
 
- \begin{center}
- \begin{tabular}{|d{-1}|d{2}|.|,|}
- 1.2   & 1.2   &1.2    &1,2    \\
- 1.23  & 1.23  &12.5   &300,2  \\
- 1121.2& 1121.2&861.20 &674,29 \\
- 184   & 184   &10     &69     \\
- .4    & .4    &       &,4     \\
-       &       &.4     &
- \end{tabular}
- \end{center}
+ \section{Continuation captions and legends}
 
- Note that the first column, which had a negative \meta{places}
- argument is wider than the second column, so that the decimal point
- appears in the middle of the column.
+\index{caption!continued|(}
 
- The third
- \meta{places} argument may specify \emph{both} the number of
- digits to the left and to the right of the decimal place. The third
- column in the next table below is set with =D{.}{.}{5.1}= and in the
- second  table,  =D{.}{.}{1.1}=, to specify
- `five places to the left and one to the right' and `one place to the
- left and one to the right' respectively.  (You may use `,' or other
- characters, not necessarily `.' in this argument.) The column of figures
- is then positioned such that a number with the specified numbers of
- digits is centred in the column.
+\begin{syntax}
+\cmd{\contcaption}\marg{text} \\
+\end{syntax}
+\glossary(contcaption)%
+  {\cs{contcaption}\marg{text}}%
+  {A continued caption, replacing the original title with \meta{text}.}
+    The \cmd{\contcaption} command can be used to put 
+ a `continued' or `concluded'
+ caption into a float\index{float} environment. It neither increments the
+ float number nor makes any entry into a float listing, but it
+ does repeat the numbering of the previous \cmd{\caption} command.
  
- If you have table headings (inserted with \cmd{\multicolumn}={1}{c}{...}=
- to over-ride the =D= column type) then it may be that neither of the
- above `centred' or `right aligned' forms is quite what you want.
-\begin{lcode}
- \begin{center}\small
- \begin{tabular}[t]{|D..{-1}|D..{1}|D..{5.1}|}
-\multicolumn{1}{|c|}{head}&
-\multicolumn{1}{c|}{head}&
-\multicolumn{1}{c|}{head}\\[3pt]
- 1.2  & 1.2  &1.2 \\
- 11212.2& 11212.2&11212.2  \\
- .4    & .4    &.4         
- \end{tabular}
- \hfill
- \begin{tabular}[t]{|D..{-1}|D..{1}|D..{1.1}|}
-\multicolumn{1}{|c|}{wide heading}&
-\multicolumn{1}{c|}{wide heading}&
-\multicolumn{1}{c|}{wide heading}\\[3pt]
- 1.2  & 1.2  &1.2 \\
- .4    & .4    &.4  
- \end{tabular}
- \end{center}
-\end{lcode}
-
- \begin{center}\small
- \begin{tabular}[t]{|D..{-1}|D..{1}|D..{5.1}|}
-\multicolumn{1}{|c|}{head}&
-\multicolumn{1}{c|}{head}&
-\multicolumn{1}{c|}{head}\\[3pt]
- 1.2  & 1.2  &1.2 \\
- 11212.2& 11212.2&11212.2  \\
- .4    & .4    &.4         
- \end{tabular}
- \hfill
- \begin{tabular}[t]{|D..{-1}|D..{1}|D..{1.1}|}
-\multicolumn{1}{|c|}{wide heading}&
-\multicolumn{1}{c|}{wide heading}&
-\multicolumn{1}{c|}{wide heading}\\[3pt]
- 1.2  & 1.2  &1.2 \\
- .4    & .4    &.4  
- \end{tabular}
- \end{center}
 
- In both of these tables the first column is set with =D{.}{.}{-1}=
- to produce a column centered on the `\texttt{.}', and the second column is
- set with =D{.}{.}{1}= to produce a right aligned column.
+   Table~\ref{tab:m} illustrates the use of the \cmd{\contcaption}
+ command. The table\index{table} was produced from the following code.
+ \begin{lcode}
+   \begin{table}
+   \centering
+   \caption{A multi-part table} \label{tab:m}
+   \begin{tabular}{lc} \toprule
+    just a single line & 1 \\ \bottomrule
+   \end{tabular}
+   \end{table}
 
- The centered (first) column produces columns that are wider than necessary
- to fit in the numbers under a heading as it has to ensure that the
- decimal point is centered. The right aligned (second) column does not have
- this drawback, but under a wide heading a column of small right
- aligned figures is somewhat disconcerting.
+   \begin{table}
+   \centering
+   \contcaption{Continued}
+   \begin{tabular}{lc} \toprule
+    just a single line & 2 \\ \bottomrule
+   \end{tabular}
+   \end{table}
 
- The notation for the \meta{places} argument also enables columns that 
-are centred on the mid-point
- of the separator, rather than its leading edge; for example 
- =D{+}{\,\pm\,}{3,3}= will give a symmetric layout of up to three
- digits on either side of a $\pm$ sign.
+   \begin{table}
+   \centering
+   \contcaption{Concluded}
+   \begin{tabular}{lc} \toprule
+    just a single line & 3 \\ \bottomrule
+   \end{tabular}
+   \end{table}
+ \end{lcode}
 
- \subsection{Defining new column specifiers}
+   \begin{shadetable}
+%   \centering
+   \caption{A multi-part table} \label{tab:m}
+   \begin{tabular}{lc} \toprule
+    just a single line & 1 \\ \bottomrule
+   \end{tabular}
+   \end{shadetable}
 
-     You can easily type
- \begin{quote}
-   =>{=\meta{some declarations}=}{c}<{=\meta{some more
-   declarations}=}=
- \end{quote}
-when you have a one-off column in a table, but it gets tedious
- if you often use columns of this form. 
-The \cmd{\newcolumntype} lets you define a new column option like, say
- \begin{quote}
-   =\newcolumntype{x}{>{=\meta{some declarations}=}{c}<{=\meta{some
-   more declarations}=}}=\hspace*{-3cm} 
- \end{quote}
-and you can then use the \texttt{x} column specifier in the preamble wherever
-you want a column of this kind.
+   \begin{shadetable}
+%   \centering
+   \contcaption{Continued}
+   \begin{tabular}{lc} \toprule
+    just a single line & 2 \\ \bottomrule
+   \end{tabular}
+   \end{shadetable}
 
-\begin{syntax}
-\cmd{\newcolumntype}\marg{char}\oarg{nargs}\marg{spec} \\
-\end{syntax}
-The 
-\meta{char} argument is the character that identifies the option and \meta{spec}
-is its specification in terms of the regular preamble options.
-The \cmd{\newcolumntype} command is similar to \cmd{\newcommand} --- 
-\meta{spec} itself can take arguments with the optional \meta{nargs}
-argument declaring their number. 
+   \begin{shadetable}
+%   \centering
+   \contcaption{Concluded}
+   \begin{tabular}{lc} \toprule
+    just a single line & 3 \\ \bottomrule
+   \end{tabular}
+   \end{shadetable}
 
-    For example, it is commonly required to have both math-mode and text 
-columns in the same alignment. Defining:
-\begin{lcode}
-\newcolumntype{C}{>{$}c<{$}}
-\newcolumntype{L}{>{$}l<{$}}
-\newcolumntype{R}{>{$}r<{$}}
-\end{lcode}
- Then \texttt{C} can be used to get centred text in an
-\Ie{array}, or centred math-mode in a \Ie{tabular}. Similarly
-\texttt{L} and \texttt{R} are for left- and right-aligned columns.
+\index{caption!continued|)}
 
- The \meta{spec} in a \cmd{\newcolumntype} command may refer to any of
- the primitive column specifiers (see table \ref{tab:tabpream} on page
- \pageref{tab:tabpream}), or to any new letters defined in other
-\cmd{\newcolumntype} commands.
+\index{legend}
+\index{caption!anonymous|(}
 
 \begin{syntax}
-\cmd{\showcols} \\
+\cmd{\legend}\marg{text} \\
 \end{syntax}
-   A list of all the currently active
-\cmd{\newcolumntype} definitions is sent to the terminal and log file if
- the \cmd{\showcols} command is given.
+\glossary(legend)%
+  {\cs{legend}\marg{text}}%
+  {A legend (an anonymous caption).}
+  The \cmd{\legend} command is intended to be used to put an 
+anonymous caption, or legend\index{legend} into a float\index{float} 
+environment, but may be used anywhere.
 
-\subsection{Notes}
+   \begin{shadetable}
+%   \centering
+   \caption{Another table} \label{tab:legend}
+   \begin{tabular}{lc} \toprule
+    A legendary table & 5 \\
+    with two lines    & 6 \\ \bottomrule
+   \end{tabular}
+   \legend{The legend}
+   \end{shadetable}
 
- \begin{itemize}
- \item A preamble of the form ={wx*{0}{abc}yz}= is treated as ={wxyz}=
+    For example, the following code was used to produce the two-line
+\tref{tab:legend}. The \cmd{\legend} command can be used within a 
+float\index{float}
+independently of any \cmd{\caption} command.
+\begin{lcode}
+\begin{table}
+  \centering
+  \caption{Another table} \label{tab:legend}
+  \begin{tabular}{lc} \toprule
+  A legendary table & 5 \\
+  with two lines    & 6 \\ \bottomrule
+  \end{tabular}
+  \legend{The legend}
+\end{table}
+\end{lcode}
 
- \item An incorrect positional argument, such as \texttt{[Q]}, 
- is treated as \texttt{[t]}.
+     \marginpar{\definecolor{shadecolor}{gray}{0.75}\begin{shaded}\legend{LEGEND}
+                This is a marginal note with a legend.\end{shaded}}
 
- \item A preamble such as ={cc*{2}}= with an error in
- a $*$-form will generate an error message 
- that is not particularly helpful.
+  Captioned floats\index{float} are usually thought of in terms of the 
+\Ie{table} and \Ie{figure} environments. There can be other kinds of 
+float\index{float}.
+As perhaps a more interesting example, the following code produces
+the titled marginal\index{marginalia} note which should be displayed near here.
+\begin{lcode}
+     \marginpar{\legend{LEGEND}
+                This is a marginal note with a legend.}
+\end{lcode}
 
- \item Error messages generated when parsing the column specification
-   refer to the preamble argument \emph{after} it has been re-written
-   by the \cmd{\newcolumntype} system, not to the preamble entered by the
-   user.  
+%You can even \legend{Legend in running text} use the \cmd{\legend}
+%command in running text, as has been done in this sentence, 
+%but I'm not sure why one might want to do that as \ltx\ already
+%provides the \Ie{center} environment.
 
- \item Repeated \texttt{<} or \texttt{>} constructions
- are allowed.  \texttt{>}\marg{decs1}\texttt{>}\marg{decs2}
- is treated the same as \texttt{>}\marg{decs2}\marg{decs1}.
+ If you want the legend text to be included\index{legend!in list of} 
+in the \listofx{}
+you can do it like this with the \cmd{\addcontentsline} macro.
+\begin{lcode}
+\legend{Legend title}
+% left justified
+\addcontentsline{lot}{table}{Legend title}    % or
+% indented
+\addcontentsline{lot}{table}{\protect\numberline{}Legend title}
+\end{lcode}
+The first of these forms will align the first line of the legend text
+under the normal table\index{table} numbers. The second form will align 
+the first line of the legend text under the normal \Ie{table} titles. 
+In either case, second and later lines of a multi-line text will be 
+aligned under the normal title lines.
 
-   The treatment of multiple \texttt{<} or \texttt{>}
-declarations may seem strange. Using the obvious ordering
-of \texttt{>}\marg{decs1}\marg{decs2} has the disadvantage
-of not allowing the settings of a  \cmd{\newcolumntype} 
-defined using these declarations to be overriden.
-
- \item The \cmd{\extracolsep} command may be used in \texttt{@}-expressions 
- as in standard \ltx, and also in \texttt{!}-expressions.
+   \begin{shadetable}
+%   \centering
+   \captiontitlefont{\sffamily}
+   \legend{Legendary table}
+   \addcontentsline{lot}{table}{Legendary table (toc 1)}
+   \addcontentsline{lot}{table}{\protect\numberline{}
+                                Legendary table (toc 2)}
+   \begin{tabular}{lc} \toprule
+    An anonymous table & 5 \\
+    with two lines     & 6 \\ \bottomrule
+   \end{tabular}
+   \end{shadetable}
 
-   The use of \cmd{\extracolsep} is subject to the following
-   two restrictions.  There must be at most one \cmd{\extracolsep}
-   command per \texttt{@}, or \texttt{!} expression and the command must be
-   directly entered into the \texttt{@} expression, not as part of a macro
-   definition. Thus
-\begin{lcode}
-\newcommand{\ef}{\extracolsep{\fill}} ... @{\ef}
-\end{lcode}
- does not work. However you can use
-   something like
+ As an example, the \textsf{Legendary table} is produced by the following code:
 \begin{lcode}
-\newcolumntype{e}{@{\extracolsep{\fill}}
+\begin{table}
+\centering
+\captiontitlefont{\sffamily}
+\legend{Legendary table}
+\addcontentsline{lot}{table}{Legendary table (toc 1)}
+\addcontentsline{lot}{table}{\protect\numberline{}
+                             Legendary table (toc 2)}
+\begin{tabular}{lc} \toprule
+   An anonymous table & 5 \\
+   with two lines     & 6 \\ \bottomrule
+\end{tabular}
+\end{table}
 \end{lcode}
-instead.
+ Look at the List of Tables to see how the two forms of \cmd{\addcontentsline}
+are typeset.
 
- \item As noted by the \ltx{} book, a 
-   \cmd{\multicolumn}, with the exception of the first column,
-   consists of the entry and the \emph{following} inter-column
-   material. This means that in a tabular with the preamble
-   =|l|l|l|l|= input such as =\multicolumn{2}{|c|}= in
-   anything other than the first column is incorrect.
 
-   In the standard array/tabular implementation this error is not 
-   noticeable as a =|= takes no horizontal space. But in the class the
-   vertical lines take up their natural width and you will see two lines if
-   two are specified --- another reason to avoid using \verb?|?.
+\begin{syntax}
+\cmd{\namedlegend}\oarg{short-title}\marg{long-title} \\
+\end{syntax}
+\glossary(namedlegend)%
+  {\cs{namedlegend}\oarg{short}\marg{long}}%
+  {Like \cs{caption} but no number and no \listofx\ entry.}
+ As a convenience, the \cmd{\namedlegend}\index{legend!named}
+command is like the \cmd{\caption} command except that it does not number
+the caption and, by default, puts no entry into a \listofx{} file. Like
+the \cmd{\caption} command, it picks up the name to be prepended to the
+title text from the float\index{float} environment in which it is called (e.g.,
+it will use \cmd{\tablename} if called within a \Ie{table} environment). The
+following code is the source of the \textit{Named legendary table}.
+ \begin{lcode}
+ \begin{table}
+ \centering
+ \captionnamefont{\sffamily}
+ \captiontitlefont{\itshape}
+ \namedlegend{Named legendary table}
+ \begin{tabular}{lr} \toprule
+ seven & VII \\
+ eight & VIII \\ \bottomrule
+ \end{tabular}
+ \end{table}
+ \end{lcode}
 
- \end{itemize}
+ \begin{shadetable}
+% \centering
+ \captionnamefont{\sffamily}
+ \captiontitlefont{\itshape}
+ \namedlegend{Named legendary table}
+ \begin{tabular}{lr} \toprule
+ seven & VII \\
+ eight & VIII \\ \bottomrule
+ \end{tabular}
+ \end{shadetable}
+
+\begin{syntax}
+\cmd{\flegfloat}\marg{name} \\
+\cmd{\flegtocfloat}\marg{title} \\
+\end{syntax}
+\glossary(flegfloat)%
+  {\cs{flegfloat}\marg{name}}%
+  {Where \texttt{float} is a float type (e.g. \texttt{table}), defines the \meta{name} used by \cs{namedlegend}.}
+\glossary(flegtocfloat)%
+  {\cs{flegtocfloat}\marg{title}}%
+  {Where \texttt{float} is a float type (e.g., \texttt{figure}), called by 
+   \cs{namedlegend} to add \meta{title} to a \listofx.}
+ The macro \cmd{\flegfloat}, where \texttt{float} is the name 
+of a float\index{float} environment
+(e.g., \texttt{figure}) is called by the \cmd{\namedlegend} macro. 
+It is provided as a hook that defines the \meta{name} to be used as 
+the name in \cmd{\namedlegend}. Two defaults are provided, \cmd{\flegtable}
+and \cmd{\flegfigure} defined as:
+ \begin{lcode}
+ \newcommand{\flegtable}{\tablename}
+ \newcommand{\flegfigure}{\figurename}
+ \end{lcode}
+\glossary(flegtable)%
+  {\cs{flegtable}}%
+  {The name for a \cs{legend} in a \texttt{table}.}
+\glossary(flegfigure)%
+  {\cs{flegfigure}}%
+  {The name for a \cs{legend} in a \texttt{figure}.}
+which may be altered via \cmd{\renewcommand} if desired. 
+
+The macro \cmd{\flegtocfloat}, where again \texttt{float} is the name 
+of a float\index{float} environment
+(e.g., \texttt{table}) is also called by the \cmd{\namedlegend} macro. 
+It is provided as a hook that can be used to add \meta{title} to the \listofx.
+Two examplars are provided, \cmd{\flegtocfigure} and \cmd{\flegtoctable}.
+By default they are defined to do nothing, and can be changed via
+\cmd{\renewcommand}. For instance, one could be changed for 
+tables\index{table} as:
+ \begin{lcode}
+ \renewcommand{\flegtoctable}[1]{
+   \addcontentsline{lot}{table}{#1}}
+ \end{lcode}
 
-\section{The array environment}
+\index{caption!anonymous|)}
+\index{caption!outside a float|(}
 
-    Mathematical arrays are usually produced using the \Ie{array} environment.
+  The \cmd{\legend} command produces a plain, unnumbered heading. It can also
+be useful sometimes to have named and numbered captions outside
+a floating\index{float} environment, perhaps in a \Ie{minipage},
+if you want the table\index{table} or picture\index{illustration} 
+to appear at a precise location in your document.
+
+
+\index{caption!fixed|(}
 
 \begin{syntax}
-\cmd{\[} \senv{array}\oarg{pos}\marg{preamble} rows \eenv{array} \cmd{\]} \\
-\cmd{\[} \senv{array}\oarg{pos}\meta{left}\marg{preamble}\meta{right} rows \eenv{array} \cmd{\]} \\
+\cmd{\newfixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
+\cmd{\renewfixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
+\cmd{\providefixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
 \end{syntax}
-    Math formula are usually centered in the columns, but a column of 
-numbers often looks best flush right, or aligned on some distinctive
-feature. In the latter case the \texttt{D} column scheme is very handy.
+\glossary(newfixedcaption)%
+  {\cs{newfixedcaption}\oarg{capcommand}\marg{command}\marg{float}}%
+  {Defines a captioning command \cs{command} that may used outside the
+   \meta{float} float as though it was inside it. The \cs{capcommand}
+  must have been previously defined as a captioning command for \meta{float}.}
+\glossary(renewfixedcaption)%
+  {\cs{renewfixedcaption}\oarg{capcommand}\marg{command}\marg{float}}%
+  {A `renew' version of \cs{newfixedcaption}.}
+\glossary(providefixedcaption)%
+  {\cs{providefixedcaption}\oarg{capcommand}\marg{command}\marg{float}}%
+  {A `provide' version of \cs{newfixedcaption}.}
+ The \cmd{\newfixedcaption} command, and its friends, can be used 
+to create or modify a captioning \meta{command} that may be used 
+outside the float\index{float} environment \meta{float}.
+Both the environment \meta{float} and a captioning command, 
+\meta{capcommand}, for that environment must have been defined before
+calling \cmd{\newfixedcaption}. Note that \cmd{\namedlegend} can be used
+as \meta{capcommand}.
+% The \cmd{\renewfixedcaption} and \cmd{\providefixedcaption} commands 
+% take the same arguments as \cmd{\newfixedcaption}; the three commands 
+% are analagous to those in the \cmd{\newcommand} family.
+
+ For example, to define a new \cs{figcaption} command for captioning pictures
+ outside the \Ie{figure} environment, do
 \begin{lcode}
-\[ \begin{array}{lcr}
-   a +b +c & d - e - f & 123 \\
-   g-h     &  j k      & 45 \\
-    l      &   m       & 6
-  \end{array} \]
+ \newfixedcaption{\figcaption}{figure}
+\end{lcode}
+ The optional \meta{capcommand} argument is the name of the float\index{float}
+captioning command that is being aliased. It defaults to \cmd{\caption}.
+As an example of where the optional argument is required, if you
+want to create a new continuation\index{caption!continued!outside a float} 
+caption command for non-floating
+tables\index{table}, say \cs{ctabcaption}, then do
+\begin{lcode}
+ \newfixedcaption[\contcaption]{\ctabcaption}{table}
 \end{lcode}
 
-\[ \begin{array}{lcr}
-   a +b +c & d - e - f & 123 \\
-   g-h     &  j k      & 45 \\
-    l      &   m       & 6
-  \end{array} \]
+ Captioning commands created by \cmd{\newfixedcaption} will be named and
+ numbered in the same style as the original \meta{capcommand}, can
+ be given a \cmd{\label}, and will appear in the appropriate 
+ \listofx. They can also be used within floating\index{float}
+ environments, but will not use the environment name as a guide to
+ the caption name or entry into the \listofx. For
+ example, using \cs{ctabcaption} in a \Ie{figure} environment will still
+ produce a \textbf{Table\ldots} named caption.
 
-    Arrays are often enclosed in brackets or vertical lines or brackets 
-or other symbols to
-denote math constructs like matrices. The delimeters are often large and have
-to be indicated using \cmd{\left} and \cmd{\right} commands.
+   Sometimes captions are required on the 
+opposite\index{caption!on opposite page} page to a 
+figure\index{figure}, and a fixed caption can be useful in this context. 
+For example, if figure\index{figure} captions should be placed on an 
+otherwise empty page immediately before the actual figure\index{figure}, 
+then this can be accomplished by the following hack:
 \begin{lcode}
-\[ \left[ \begin{array}{cc}
-          x_{1} & x_{2} \\
-          x_{3} & x_{4}
-          \end{array} \right] \]
+\newfixedcaption{\figcaption}{figure}
+ ...
+\afterpage{ % fill current page then flush pending floats
+  \clearpage
+  \begin{midpage}  %  vertically center the caption
+  \figcaption{The caption} %  the caption
+  \end{midpage}
+  \clearpage
+  \begin{figure}THE FIGURE, NO CAPTION HERE\end{figure}
+  \clearpage
+ }  % end of \afterpage
+ \end{lcode}
+ Note that the \Lpack{afterpage} package~\cite{AFTERPAGE} is needed, 
+which is part of the required tools bundle. 
+The \Lpack{midpage} package supplies the \verb?midpage?
+environment, which can be simply defined as:
+\begin{lcode}
+\newenvironment{midpage}{\vspace*{\fill}}{\vspace*{\fill}}
 \end{lcode}
+The code, in particular the use of \cmd{\clearpage}, might need 
+adjusting\index{start new page} to meet your particular requirements.
+\begin{itemize}
+\item \cmd{\clearpage} gets you to the next page, which may be odd or even.
+\item \cmd{\cleardoublepage} gets you to the next odd-numbered page.
+\item \cmd{\cleartoevenpage} ensures that you get to the next
+even-numbered page.
+\end{itemize}
 
-\[ \left[ \begin{array}{cc}
-          x_{1} & x_{2} \\
-          x_{3} & x_{4}
-          \end{array} \right] \]
+    As a word of warning, if you mix both floats and fixed environments 
+with the same kind of caption you have to ensure that they get printed 
+in the correct order in the final document. If you do not do this, then 
+the \listofx\ captions will come out in the wrong order (the lists are 
+ordered according the
+page number in the typeset document, \emph{not} your source input order).
+
+
+\index{caption!fixed|)}
+
+\index{caption!outside a float|)}
+
+ \section{Bilingual captions}
+
+\index{caption!bilingual|(}
+\index{bilingual captions|(}
+
+    Some documents require bilingual (or more) captions. The class 
+ provides a set of commands for bilingual captions. Extensions to the
+ set, perhaps to support trilingual captioning, are left as an exercise
+ for the document author.
+Essentially, the bilingual commands call the \cmd{\caption}
+command twice, once for each language.
+
+    Several commands for bilingual captions are provided. They all produce
+the same appearance in the text but differ in what they put into 
+the \listofx. 
 
+\begin{syntax}
+\cmd{\bitwonumcaption}\oarg{label}\marg{short1}\marg{long1}\% \\
+                      \marg{NAME}\marg{short2}\marg{long2} \\
+\cmd{\bionenumcaption}\oarg{label}\marg{short1}\marg{long1}\% \\
+                      \marg{NAME}\marg{short2}\marg{long2} \\
+\end{syntax}
+\glossary(bitwonumcaption)%
+  {\cs{bitwonumcaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{short2}\marg{long2}}%
+  {A bilingual caption with both captions numbered in the float and in the \listofx.}
+\glossary(bionenumcaption)%
+  {\cs{bionenumcaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{short2}\marg{long2}}%
+  {A bilingual caption with both captions numbered in the float but only the first in the \listofx.}
 
-    The \Ie{array} environment is an extension of the standard environment
-in that it provides a 
- a system of implicit \cmd{\left} \cmd{\right} pairs. If you want an array
- surrounded by parentheses, you can enter:
+  Bilingual captions can be typeset by the \cmd{\bitwonumcaption} 
+ command which has six arguments. 
+ The first, optional argument \meta{label}, is the name of a label, if
+ required.
+ \meta{short1} and \meta{long1} are the short (i.e., equivalent
+ to the optional argument
+ to the \cmd{\caption} command) and long caption texts for
+ the main language of the document. The value of the \meta{NAME} argument
+ is used as the caption name for the second language caption, while
+ \meta{short2} and \meta{long2} are the short and long caption texts
+ for the second language. For example, if the main and secondary languages
+ are English and German and a figure\index{figure} is being captioned:
 \begin{lcode}
- \[  \begin{array}({cc})a&b\\c&d\end{array}   \]
+\bitwonumcaption{Short}{Long}{Bild}{Kurz}{Lang}
 \end{lcode}
+If the short title text(s) is not required, then leave the appropriate
+argument(s) either empty or as one or more spaces, like:
+\begin{lcode}
+\bitwonumcaption[fig:bi1]{}{Long}{Bild}{  }{Lang}
+\end{lcode}
+Both language texts are entered into the 
+appropriate\index{caption!bilingual!in list of} \listofx,
+and both texts are numbered.
 
- \[  \begin{array}({cc})a&b\\c&d\end{array}   \]
-
-Or, a litle more complex
+ Figure~\ref{fig:bi1}, typeset from the following code, is an example.
 \begin{lcode}
-\[ \begin{array}({c})
-     \begin{array}|{cc}|
-       x_{1} & x_{2} \\
-       x_{3} & x_{4}
-     \end{array} \\
-         y \\
-         z
-   \end{array} \]
+\begin{figure}
+\centering
+EXAMPLE FIGURE WITH BITWONUMCAPTION
+\bitwonumcaption[fig:bi1]%
+    {}{Long \cs{bitwonumcaption}}%
+    {Bild}{  }{Lang \cs{bitwonumcaption}} 
+\end{figure}
 \end{lcode}
 
-\[ \begin{array}({c})
-     \begin{array}|{cc}|
-       x_{1} & x_{2} \\
-       x_{3} & x_{4}
-     \end{array} \\
-         y \\
-         z
-   \end{array} \]
+ \begin{shadefigure}
+% \centering
+ EXAMPLE FIGURE WITH BITWONUMCAPTION
+ \bitwonumcaption[fig:bi1]{}{Long \cs{bitwonumcaption}}{Bild}{  }{Lang \cs{bitwonumcaption}} 
+ \end{shadefigure}
 
- Similarly an environment equivalent to plain TeX's \cmd{\cases} could
- be defined by:\\
+  Both \cmd{\bionenumcaption} and \cmd{\bitwonumcaption} take the same 
+arguments.
+The difference between the two commands is that \cmd{\bionenumcaption} does
+not number the second language text in the \listofx.
+Figure~\ref{fig:bi3}, typeset from the following, is an example of this.
 \begin{lcode}
- \[  f(x)=\begin{array}\{{lL}.
-           0        &if $x=0$\\
-           \sin(x)/x&otherwise
-           \end{array}  \]
+\begin{figure}
+\centering
+EXAMPLE FIGURE WITH BIONENUMCAPTION
+\bionenumcaption[fig:bi3]%
+    {}{Long English \cs{bionenumcaption}}%
+    {Bild}{  }{Lang Deutsch \cs{bionenumcaption}} 
+ \end{figure}
 \end{lcode}
 
- \DeleteShortVerb{\=}
- \newcolumntype{L}{>{$}l<{$}}
- \[  f(x)=\begin{array}\{{lL}.
-           0        &if $x=0$\\
-           \sin(x)/x&otherwise
-           \end{array}  \]
- \MakeShortVerb{\=}
+ \begin{shadefigure}
+% \centering
+ EXAMPLE FIGURE WITH BIONENUMCAPTION
+ \bionenumcaption[fig:bi3]%
+    {}{Long English \cs{bionenumcaption}}%
+    {Bild}{  }{Lang Deutsch \cs{bionenumcaption}} 
+ \end{shadefigure}
 
- Here \texttt{L} denotes a column of left aligned L-R text, as described
-earlier.
- Note that as the delimiters must always be used in pairs, the  `=.='
- must be used to denote a  `null delimiter'.
+\begin{syntax}
+\cmd{\bicaption}\oarg{label}\marg{short1}\marg{long1}\% \\
+                \marg{NAME}\marg{long2} \\
+\end{syntax}
+\glossary(bicaption)%
+  {\cs{bicaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{long2}}%
+  {A bilingual caption in a float but only the first added to the \listofx.}
 
- This feature is especially useful if the =[t]= or =[b]=
- arguments are also used. In these cases the result is not equivalent
- to surrounding the environment by \cmd{\left}\ldots\cmd{\right}, as
- can be seen from the following example:
+When bilingual captions are typeset via the \cmd{\bicaption} 
+command the second language text is not put into
+the \listofx. 
+The command takes 5 arguments. 
+The optional \meta{label} is for a label if required.
+\meta{short1} and \meta{long1} are the short and long caption texts for
+the main language of the document. The value of the \meta{NAME} argument
+is used as the caption name for the second language caption. The last
+argument, \meta{long2}, is the caption text
+for the second language (which is not put into the \listofx). 
+
+ For example, if the main and secondary languages are English and German: 
 \begin{lcode}
- \begin{array}[t]({c}) 1\\2\\3 \end{array}
- \begin{array}[c]({c}) 1\\2\\3 \end{array}
- \begin{array}[b]({c}) 1\\2\\3 \end{array}
- \quad\mbox{not}\quad
- \left(\begin{array}[t]{c} 1\\2\\3 \end{array}\right)
- \left(\begin{array}[c]{c} 1\\2\\3 \end{array}\right)
- \left(\begin{array}[b]{c} 1\\2\\3 \end{array}\right)
+\bicaption{Short}{Long}{Bild}{Langlauf}
 \end{lcode}
+If the short title text is not required, then leave the appropriate
+argument either empty or as one or more spaces.
 
+ Figure~\ref{fig:bi2} is an example of using \cmd{\bicaption} and was 
+ produced by the following code:
+\begin{lcode}
+\begin{figure}
+\centering
+   EXAMPLE FIGURE WITH A RULED BICAPTION
+\precaption{\rule{\linewidth}{0.4pt}\par}
+\midbicaption{\precaption{}%
+              \postcaption{\rule{\linewidth}{0.4pt}}}
+\bicaption[fig:bi2]%
+    {Short English \cs{bicaption}}{Longingly}%
+    {Bild}{Langlauf}
+\end{figure}
+\end{lcode}
 
- \[
- \begin{array}[t]({c}) 1\\2\\3 \end{array}
- \begin{array}[c]({c}) 1\\2\\3 \end{array}
- \begin{array}[b]({c}) 1\\2\\3 \end{array}
- \quad\mbox{not}\quad
- \left(\begin{array}[t]{c} 1\\2\\3 \end{array}\right)
- \left(\begin{array}[c]{c} 1\\2\\3 \end{array}\right)
- \left(\begin{array}[b]{c} 1\\2\\3 \end{array}\right)
- \]
+ \begin{shadefigure}
+% \centering
+ EXAMPLE FIGURE WITH A RULED BICAPTION
+ \precaption{\rule{\linewidth}{0.4pt}\par}
+ \midbicaption{\precaption{}%
+               \postcaption{\rule{\linewidth}{0.4pt}}}
+ \bicaption[fig:bi2]{Short English \cs{bicaption}}{Longingly}%
+    {Bild}{Langlauf}
+ \end{shadefigure}
 
-\section{Tables}
+\begin{syntax}
+\cmd{\bicontcaption}\marg{long1}\% \\
+                    \marg{NAME}\marg{long2} \\
+\end{syntax}
+\glossary(bicontcaption)%
+  {\cs{bicontcaption}\marg{long1}\marg{NAME}\marg{long2}}%
+  {A continued bilingual caption.}
+ Bilingual continuation captions can be typeset via the \cmd{\bicontcaption} 
+command. In this case, neither language text is put into the \listofx. 
+The command takes 3 arguments.
+\meta{long1} is the caption text for
+the main language of the document. The value of the \meta{NAME} argument
+is used as the caption name for the second language caption. The last
+argument, \meta{long2}, is the caption text
+for the second language.
+For example, if the main and secondary languages
+are again English and German:
+\begin{lcode}
+\bicontcaption{Continued}{Bild}{Fortgefahren}
+\end{lcode}
 
-    A table is one way of presenting a large amount of information
-in a limited space. Even a simple table can presents facts that could
-require several wordy paragraphs --- it is not only a picture that is worth
-a thousand words.
+\begin{syntax}
+ \cmd{\midbicaption}\marg{text} \\
+\end{syntax}
+\glossary(midbicaption)%
+  {\cs{midbicaption}\marg{text}}%
+  {In bilingual captions, \meta{text} is inserted after the first \cs{caption}
+   and immediately before the second \cs{caption}.}
+ The bilingual captions are implemented by calling \cmd{\caption} twice,
+ once for each language. The command \cmd{\midbicaption}, 
+ which is similar to the \cmd{\precaption} and \cmd{\postcaption} commands,
+ is executed 
+ just before calling the second \cmd{\caption}. Among other things,
+ this can be used to
+ modify the style\index{caption!bilingual!styling} of the second 
+caption with respect to the first.
+ For example, if there is a line above and below normal
+ captions, it is probably undesirable to have a double line in the
+ middle of a bilingual caption. So, for bilingual captions the
+ following may be done within the float\index{float} before the caption:
+\begin{lcode}
+\precaption{\rule{\linewidth}{0.4pt}\par}
+\postcaption{}
+\midbicaption{\precaption{}%
+              \postcaption{\rule{\linewidth}{0.4pt}}}
+\end{lcode}
+ This sets a line before the first of the two captions, then the
+\cmd{\midbicaption}\verb?{...}? nulls the pre-caption line and adds 
+a post-caption line for the second caption. The class initially specifies
+\verb?\midbicaption{}?.
 
-    A table should have at least two columns, otherwise it is really a list,
-and often has more. The leftmost column is often called the \emph{stub}
-and it typically contains a vertical listing of the information categories
- in the other columns. The columns have \emph{heads} (or \emph{headings}) at
-the top indicating the nature of the entries in the column, although
-it is not always necessary to provide a head for the stub if the
-heading is obvious from the table's caption. Column heads
-may include subheadings, often to specify the unit of measurement for numeric
-data. 
+\index{bilingual captions|)}
+\index{caption!bilingual|)}
 
-   A less simple table may need two or more levels of headings, in which
-case \emph{decked heads} are used. A decked head consists of a \emph{spanner
-head} and the two or more column heads it applies to. A horizontal 
-\emph{spanner rule} is set between the the spanner and column heads to 
-show the columns belonging to the spanner.
+ \section{Subcaptions}
 
-  Double decking, and certainly triple decking or more, should be avoided
-as it can make it difficult following them down the table. It may be possible
-to use a \emph{cut-in head} instead of double decking. A cut-in head is
-one that cuts across the columns of the table and applies to all the 
-matter below it.
+\index{caption!subcaption|(}
+\index{figure!subfigure|(}
+\index{table!subtable|(}
+\index{float!subfloat|(}
+
+     The \Lpack{subfigure} package enables the captioning of 
+sub-figures within a larger figure\index{figure}, 
+and similarly for tables\index{table}.
+The \Lpack{subfigure} package may be used with the class, or you
+can use the class commands described below; these commands can only
+be used inside a float environment for which a 
+subfloat\footnote{See \Sref{sec:newfloat}.} has been specified.
+
+\begin{syntax}
+\cmd{\subcaption}\oarg{list-entry}\marg{subtitle} \\
+\end{syntax}
+\glossary(subcaption)%
+  {\cs{subcaption}\oarg{list-entry}\marg{subtitle}}%
+  {Analagous to \cs{caption} but for an identified subcaption within a float.}
+The \cmd{\subcaption} command is similar to the \cmd{\caption} command
+and can only be used inside a float environment.
+It typesets an identified \meta{subtitle}, where the identification
+is an alphabetic character enclosed in parentheses. If the optional
+\meta{list-entry} argument is present, \meta{list-entry} is added to
+the caption listings for the float. If it is not present, then
+\meta{subtitle} is added to the listing.
 
-   No mention has been made of any vertical rules in a table, and this is
-deliberate. There should be no vertical rules in a table. Rules, 
-if used at all, should be horizontal only, and these should be single, 
-not double or triple. It's not that ink is expensive, or that practically
-no typesetting is done by hand any more, it's that the visual clutter should
-be eliminated. 
-
-    For example, in \tref{tab:2views}, \tref{tab:before} is from the \ltx{} book and 
-\tref{tab:after} is how Simon Fear~\cite{BOOKTABS} suggests it
-should be cleaned up.
+    The \meta{subtitle} is typeset within a box which is the width of
+the surrounding environment, so \cmd{\subcaption} should only be used
+within a fixed width box of some kind, for example a \Ie{minipage} as shown
+below.
 \begin{lcode}
-\begin{table}
+\begin{figure}
 \centering
-\caption{Two views of one table} \label{tab:2views}
-\subtop[Before]{\label{tab:before}%
- \begin{tabular}{||l|lr||} \hline
- gnats     & gram      & \$13.65 \\ \cline{2-3}
-           & each      & .01 \\ \hline
- gnu       & stuffed   & 92.50 \\ \cline{1-1} \cline{3-3}
- emu       &           & 33.33 \\ \hline
- armadillo & frozen    & 8.99 \\ \hline
- \end{tabular}}
+\begin{minipage}{0.3\textwidth}
+  \verb?Some verbatim text?
+  \subcaption{First text}
+\end{minipage}
 \hfill
-\subtop[After]{\label{tab:after}%
- \begin{tabular}{@{}llr@{}} \toprule
- \multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
- Animal & Description & Price (\$)\\ \midrule
- Gnat  & per gram  & 13.65 \\
-       & each      & 0.01 \\
- Gnu   & stuffed   & 92.50 \\
- Emu   & stuffed   & 33.33 \\
- Armadillo & frozen & 8.99 \\ \bottomrule
- \end{tabular}
-}
-\end{table}
+\begin{minipage}{0.3\textwidth}
+  \verb?More verbatim text?
+  \subcaption{Second text}
+\end{minipage}
+\caption{Verbatim texts}
+\end{figure}
 \end{lcode}
+As the example code shows, the \cmd{\subcaption} command provides a 
+means of putting verbatim elements into subfigures.
+
+\begin{syntax}
+\cmd{\subtop}\oarg{list-entry}\oarg{subtitle}\marg{text} \\
+\cmd{\subbottom}\oarg{list-entry}\oarg{subtitle}\marg{text} \\
+\end{syntax}
+\glossary(subtop)%
+  {\cs{subtop}\oarg{list-entry}\oarg{subtitle}\marg{text}}%
+  {Puts a subcaption identifier, and optionally \meta{subtitle}, on top of \meta{text}.}
+\glossary(subbottom)%
+  {\cs{subbottom}\oarg{list-entry}\oarg{subtitle}\marg{text}}%
+  {Puts a subcaption identifier, and optionally \meta{subtitle}, below \meta{text}.}
+The command \cmd{\subtop} puts a subcaption identifier on top of
+\meta{text}. If both optional arguments are present, \meta{list-entry}
+will be added to the appropriate\index{caption!subcaption!in list of} 
+listing, and \meta{subtitle} is
+placed above the \meta{text} with the identifier. If only one optional
+argument is present this is treated as being \meta{subtitle}; the
+identifier and \meta{subtitle} are placed above the \meta{text}
+and \meta{subtitle} is added to the listing. Regardless of the optional
+arguments the identifier is always added to the listing and placed above
+the \meta{text}.
+
+    The \cmd{\subbottom} command is identical to \cmd{\subtop} except
+that the identifier, and potentially the \meta{subtitle}, is placed
+below the \meta{text}. Note that verbatim text cannot be used
+in the \meta{text} argument to \cmd{\subbottom} or \cmd{\subtop}.
 
-\begin{table}
+    The main caption can be at either the top or the bottom of the float.
+The positioning of the main and subcaptions are independent.
+For example
+\begin{lcode}
+\begin{figure}
+  \subbottom{...}   % captioned as (a) below
+  \subtop{...}      % captioned as (b) above
+  \caption{...}
+\end{figure}
+\end{lcode}
+
+
+    If a figure that\index{figure} includes subfigures
+is itself continued then it may be desirable to
+continue the captioning of the subfigures. For example, if Figure~3
+has three subfigures, say A, B and C, and Figure~3 is continued then
+the subfigures in the continuation should be D, E, etc.
+\begin{syntax}
+\cmd{\contsubcaption}\oarg{list-entry}\marg{subtitle} \\
+\cmd{\contsubtop}\oarg{list-entry}\oarg{subtitle}\marg{text} \\
+\cmd{\contsubbottom}\oarg{list-entry}\oarg{subtitle}\marg{text} \\
+\cmd{\subconcluded} \\
+\end{syntax}
+\glossary(contsubcaption)%
+  {\cs{contsubcaption}\oarg{list-entry}\marg{subtitle}}%
+  { A continued \cs{subcaption}.}
+\glossary(contsubtop)%
+  {\cs{contsubtop}\oarg{list-entry}\oarg{subtitle}\marg{text}}%
+  { A continued \cs{subtop}.}
+\glossary(contsubbottom)%
+  {\cs{contsubbottom}\oarg{list-entry}\oarg{subtitle}\marg{text}}%
+  { A continued \cs{subbottom}.}
+\glossary(subconcluded)%
+  {\cs{subconcluded}}
+  {Indicates (to \ltx) that a continued subfloat is finished.}
+
+The \cmd{\contsubcaption}, \cmd{\contsuptop} and \cmd{\contsubbottom}
+commands are the continued\index{caption!subcaption!continued} 
+versions of the respective subcaptioning
+commands. These continue the subcaption numbering scheme across
+(continued) floats. In any event, the main caption can 
+ be at the top or bottom of the float\index{float}.
+ The \cmd{\subconcluded} command is used to indicate that the continued 
+ (sub) float has been concluded and the numbering
+ scheme is reinitialized. The command should be placed immediately
+ before the end of the last continued environment.
+    For example:
+ \begin{lcode}
+ \begin{figure}
+ \subbottom{...}  captioned as (a) below
+ \subbottom{...}  captioned as (b) below
+ \caption{...}
+ \end{figure}
+ \begin{figure}
+ \contsubtop{...}  captioned as (c) above
+ \contsubtop{...}  captioned as (d) above
+ \contcaption{Concluded}
+ \subconcluded
+ \end{figure}
+ ...
+ \begin{table}
+ \caption{...}
+ \subtop{...}     captioned as (a) above
+ \subbottom{...}  captioned as (b) below
+ \end{table}
+ \end{lcode}
+
+
+\begin{syntax}
+\cmd{\label}\parg{bookmark}\marg{labstr} \\
+\cmd{\subcaptionref}\marg{labstr} \\
+\end{syntax}
+\glossary(label)%
+  {\cs{label}\parg{bookmark}\marg{labstr}}%
+  {Associates \meta{labstr} with the current (section, caption, etc.)
+   number and page number. If used inside a subfloat and with the 
+  \Ppack{hyperref} package the optional \meta{bookmark} (note the parentheses
+  not square brackets) is available to specify a hyperref bookmark.}
+\glossary(subcaptionref)%
+  {\cs{subcaptionref}\marg{labstr}}%
+  {Print the subcaption identifer for a \meta{labstr} labelled subcaption.}
+A \cmd{\label} command may be included in the \meta{subtitle} argument
+of the subcaptioning\index{caption!subcaption!referencing} commands. 
+Using the normal \cmd{\ref} macro to
+refer to the label will typeset the number of the float (obtained
+from a \cmd{\label}ed main \cmd{\caption}) and the subcaption
+identifier. If the \cmd{\subcaptionref} macro is used instead of 
+\cmd{\ref} then only the subcaption identifier is printed.
+
+    In cases where the \Lpack{hyperref} package is used, the \cmd{\label}
+command when used inside the \meta{subtitle} argument can take an optional
+\meta{bookmark} argument, 
+\emph{enclosed in parenthese \emph{not} square brackets},
+which will create a bookmark field of the form `Subfigure 4.7(d)'.
+
+    As an example to show the difference between \cmd{\subcaptionref} and
+\cmd{\ref}, \fref{fig:twosubfig} and the paragraph immediately
+following this one were produced by the code shown below.
+
+    Figure \ref{fig:twosubfig} has two subfigures,
+namely \ref{sf:1} and \subcaptionref{sf:2}.
+\begin{shadefigure}
+%\centering
+\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
+\hfill
+\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
+\caption{Figure with two subfigures} \label{fig:twosubfig}
+\end{shadefigure}
+\begin{lcode}
+    Figure \ref{fig:twosubfig} has two subfigures,
+namely \ref{sf:1} and \subcaptionref{sf:2}.
+\begin{figure}
 \centering
-\caption{Two views of one table} \label{tab:2views}
-\subtop[Before]{\label{tab:before}%
- \begin{tabular}{||l|lr||} \hline
- gnats     & gram      & \$13.65 \\ \cline{2-3}
-           & each      & .01 \\ \hline
- gnu       & stuffed   & 92.50 \\ \cline{1-1} \cline{3-3}
- emu       &           & 33.33 \\ \hline
- armadillo & frozen    & 8.99 \\ \hline
- \end{tabular}}
+\subbottom[Subfigure 1]{\fbox{SUBFIGURE ONE}\label{sf:1}}
 \hfill
-\subtop[After]{\label{tab:after}%
- \begin{tabular}{@{}llr@{}} \toprule
- \multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
- Animal & Description & Price (\$)\\ \midrule
- Gnat  & per gram  & 13.65 \\
-       & each      & 0.01 \\
- Gnu   & stuffed   & 92.50 \\
- Emu   & stuffed   & 33.33 \\
- Armadillo & frozen & 8.99 \\ \bottomrule
- \end{tabular}
-}
-\end{table}
- 
-\subsection{Fear's rules} \label{sec:fear}
+\subbottom[Subfigure 2]{\fbox{SUBFIGURE TWO}\label{sf:2}}
+\caption{Figure with two subfigures} \label{fig:twosubfig}
+\end{figure}
+\end{lcode}
 
-    Simon Fear disapproves of the default LaTeX table rules and
- wrote the \Lpack{booktabs} package~\cite{BOOKTABS} to provide
- better horizontal rules. Like many typographers, he abhors vertical rules.
+\begin{syntax}
+\cmd{\tightsubcaptions} \cmd{\loosesubcaptions} \\
+\end{syntax}
+\glossary(tightsubcaptions)%
+  {\cs{tightsubcaptions}}%
+  {Specifies the default vertical space around subcaptions.}
+\glossary(loosesubcaptions)%
+  {\cs{loosesubcaptions}}%
+  {Specifies extra vertical space around subcaptions.}
+As with many other aspects of typesetting the style of 
+subcaptions\index{caption!subcaption!styling} may 
+be specified. There is a small amount of vertical space 
+surrounding a subcaption. More space is used after the \cmd{\loosesubcaptions}
+declaration compared to that produced after the default
+\cmd{\tightsubcaptions} declaration.
 
-     In a simple case a table begins with a \cmd{\toprule}, has
- a single row of column headings, then a dividing rule called
- here a \cmd{\midrule}; after the columns of data the table is 
-finished off with
- a \cmd{\bottomrule}. Most book publishers set the \cmd{\toprule} and 
- \cmd{\bottomrule} heavier (i.e., thicker, or darker)
- than the intermediate \cmd{\midrule}. 
+\begin{syntax}
+\cmd{\subcaptionsize}\marg{size} \\
+\cmd{\subcaptionlabelfont}\marg{fontspec} \\
+\cmd{\subcaptionfont}\marg{fontspec} \\
+\end{syntax}
+\glossary(subcaptionsize)%
+  {\cs{subcaptionsize}\marg{size}}%
+  {Font size for subcaptions.}
+\glossary(subcaptionlabelfont)%
+  {\cs{subcaptionlabelfont}\marg{fontspec}}%
+  {Font for subcaption identifiers.}
+\glossary(subcaptionfont)%
+  {\cs{subcaptionfont}\marg{fontspec}}%
+  {Font for subcaption titles.}
+
+The size of the font used for subcaptions is specified by 
+\cmd{\subcaptionsize}, and the fonts for the identifier and text
+are specified by \cmd{\subcaptionlabelfont} for the identifier and by
+\cmd{\subcaptionfont} for the title text. The defaults are:
+\begin{lcode}
+\subcaptionsize{\footnotesize}
+\subcaptionlabelfont{\normalfont}
+\subcaptionfont{\normalfont}
+\end{lcode}
 
 \begin{syntax}
-\cmd{\toprule}\oarg{wd} 
-\cmd{\bottomrule}\oarg{wd} 
-\lnc{\heavyrulewidth} \\
-\cmd{\midrule}\oarg{wd} 
-\lnc{\lightrulewidth} \\
+\cmd{\subcaptionstyle}\marg{style} \\
+\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{\centerlastline} \\
+\end{syntax}
+\glossary(subcaptionstyle)%
+  {\cs{subcaptionstyle}\marg{style}}%
+  {Paragraph \meta{style} for subcaptions.}
+The identifier and title of a subcaption is typeset as a block (i.e.,
+non-indented) paragraph by specifying
+\begin{lcode}
+\subcaptionstyle{}
+\end{lcode}
+Other styles are available by calling \cmd{\subcaptionstyle}
+with a styling \meta{cmd}. Values that you might use are:
+\cmd{\centering} for a centered paragraph, \cmd{\raggedleft} or
+\cmd{\raggedright} for ragged left or right paragraphs, or
+\cmd{\centerlastline} which calls for a block paragraph with the last
+line centered.
+
+\begin{syntax}
+\cmd{\hangsubcaption} \\
+\cmd{\shortsubcaption} \\
+\cmd{\normalsubcaption} \\
 \end{syntax}
+\glossary(hangsubcaption)%
+  {\cs{hangsubcaption}}%
+  {The subcaption version of \cs{hangcaption}.}
+\glossary(shortsubcaption)%
+  {\cs{shortsubcaption}}%
+  {The subcaption version of \cs{shortcaption}.}
+\glossary(normalsubcaption)%
+  {\cs{normalsubcaption}}%
+  {The subcaption version of \cs{normalcaption}.}
+The \cmd{\hangsubcaption} declaration causes subcaptions to be typeset
+with the identifier above the title. Following the \cmd{\shortsubcaption}
+declaration subcaptions that are less than a full line in length are
+typeset left justified instead of centered. The \cmd{\normalsubcaption}
+declaration, which is the default, undoes any previous \cmd{\hangsubcaption}
+or \cmd{\shortsubcaption} declaration, so that subcaptions are normally
+centered.
+
+\index{float!subfloat|)}
+\index{table!subtable|)}
+\index{figure!subfigure|)}
+\index{caption!subcaption|)}
 
- The rule commands here all take a default width (thickness)
- which may be reset within the document.
-For the top and bottom rules this
- is \lnc{\heavyrulewidth} and for midrules it is \lnc{\lightrulewidth}
- (fully described below). In very rare cases where you need to have
-a special width, you may use the optional argument \meta{wd} length
-argument.
+\section{Side captions}
+
+\index{caption!side|(}
+
+    Typically captions are put either above or below the the element they
+are describing. Sometimes it is desireable to put a caption at the
+side of the element instead.
 
-    The rule commands go immediately after the closing
-\cmd{\\} of the preceding row (except of course \cmd{\toprule}, which
- comes right after the =\tabular{}= command); in other words,
- exactly where plain \ltx{} allows \cmd{\hline} or \cmd{\cline}.
 
 \begin{syntax}
-\cmd{\cmidrule}\oarg{wd}=(=\meta{trim}=)=\marg{a--b} 
-\lnc{\cmidrulewidth} \\
+\senv{sidecaption}\oarg{fortoc}\marg{title}\oarg{label} \\
+ the body of the float \\
+\eenv{sidecaption} \\
 \end{syntax}
-Similar to the normal \cmd{\cline} macro, \cmd{\cmidrule} draws a 
-rule across the columns (numbered) \meta{a--b}. 
-Generally, this rule
- should not come to the full width of the end columns, and this
- is especially the case when we need to begin a \cmd{\cmidrule}
- straight after the end of another one.
-The optional `trimming' commands, which are =(r)=, =(l)= and =(rl)=
- or =(lr)=, indicate whether the right and/or left ends of the
- rule should be trimmed. Note the exceptional use of parentheses
- instead of braces or brackets for this optional argument. For example,
-the code
+\glossary(sidecaption)%
+  {\senv{sidecaption}\oarg{fortoc}\marg{title}\oarg{label}}%
+  {Environment for setting a sidecaption.}%
+    The \Ie{sidecaption} environment is used for a sidecaption rather than a
+macro. The body of the float is put inside the environment. For example:
 \begin{lcode}
-\cmidrule(r){1-2}
+\begin{figure}
+  \begin{sidecaption}{An illustration}[fig:ill]
+    \centering
+    \includegraphics{...}
+  \end{sidecaption}
+\end{figure}
 \end{lcode}
-is used for \tref{tab:after}.
-
-The default width is \lnc{\cmidrulewidth} but the optional
-\meta{wd} argument can be used to override this. 
-
- An example of the commands in use is given by the code used to
- produce the `after' example in \tref{tab:after} above.
+whereby the caption, `Figure N: An illustration', will be placed in the 
+margin alongside the graphic, and for reference purposes will be given 
+given the \cs{label} \texttt{fig:ill}.
+
+\begin{syntax}
+\lnc{\sidecapwidth} \lnc{\sidecapsep} \\
+\cmd{\setsidecaps}\marg{sep}\marg{width} \\
+\end{syntax}
+\glossary(sidecapwidth)%
+  {\cs{sidecapwidth}}%
+  {Length specifying the maximum width of a sidecaption.}%
+\glossary(sidecapsep)%
+  {\cs{sidecapsep}}%
+  {Length specifying the horizontal separation between a sidecaption and the float.}%
+\glossary(setsidecaps)%
+  {\cs{setsidecaps}\marg{sep}\marg{width}}%
+  {Sets the lengths \cs{sidecapsep} and \cs{sidcapwidth} to the given
+   values.}%
+
+The caption is set in a box \lnc{\sidecapwidth} wide (the default is
+\lnc{\marginparwidth}) offset \lnc{\sidecapsep} (default \lnc{\marginparsep})
+into the margin.
+The command \cmd{\setsidcaps} sets the \lnc{\sidecapsep} and 
+\lnc{\sidecapwidth} to the given values. Changing the marginpar parameters,
+for example with \cmd{\setmarginnotes}, will not change the side caption
+settings. Note also that \cmd{\checkandfixthelayout}
+neither checks nor fixes the side caption parameters.
+
+\begin{syntax}
+\cmd{\sidecapmargin}\marg{margin} \\
+\piif{ifscapmargleft} \piif{scapmarglefttrue} \piif{scapmargleftfalse} \\
+\end{syntax}
+\glossary(sidecapmargin)%
+  {\cs{sidecapmargin}\marg{margin}}%
+  {Sets the the margin for sidecaptions.}%
+\glossary(ifsidecapleft)%
+  {\cs{ifsidecapleft}}%
+  {\ptrue\ if sidecaptions will be set in the left margin,
+    otherwise they will be set in the right margin.}%
+
+    If the float is a single column float in a twocolumn document then
+the caption is 
+always\footnote{Well, nearly always. See the \cs{overridescapmargin} command 
+later.}
+placed in the adjacent margin, otherwise the \cmd{\sidecapmargin} command
+controls the margin where the sidecaption will be placed. 
+The possible values for \meta{margin} are one of: 
+\texttt{left}, 
+\texttt{right},
+\texttt{inner}, or
+\texttt{outer}.
+If \texttt{left} or \texttt{right} is specified the caption will go into
+the left or right margin. If \texttt{inner} or \texttt{outer} is specified
+then in a two sided document the caption will be on different sides of the
+typeblock according to whether it is a recto or verso page; in a one sided
+document the caption margin is fixed. The left margin is the default.
+
+    When the caption is to be set in the left margin, \piif{ifscapmargleft} is
+set \ptrue, and for a right margin it is set \pfalse.
+
+\begin{syntax}
+\cmd{\setsidecappos}\marg{pos} \\
+\end{syntax}
+\glossary(setsidcappos)%
+  {\cs{setsidcappos}\marg{pos}}%
+  {Declaration of the vertical position of a sidecaption with respect
+   to the float.}%
+By default a sidecaption is vertically centered with respect to the float
+it is captioning. This can be altered by using the \cmd{\setsidecappos}
+declaration. The allowed values for \meta{pos} are:
+\begin{description}
+\item[\texttt{t}] --- the top of the caption is aligned 
+                      with the top of the float
+\item[\texttt{c}] --- (the default) the center of the caption is aligned 
+                      with the center of the float
+\item[\texttt{b}] --- the bottom of the caption is aligned 
+                      with the bottom of the float
+\end{description}
 
- Occasionally extra space is required between certain rows
- of a table; for example, before the last row when it is a
- total of numbers above.
-This is simply a matter of inserting \cmd{\addlinespace}
- after the \cmd{\\} alignment marker.
+    The other kinds of simple captions can also be put at the side
+of a float. The positioning and styling commands for these are exactly
+those for \Ie{sidecaption}. 
+Bilingual captions, which are not considered to be simple, can only be 
+placed above or below a float; 
+no facilities are provided for setting tham at the side..
 
 \begin{syntax}
-\cmd{\addlinespace}\oarg{wd}
-\lnc{\defaultaddspace} \\
+\senv{sidecontcaption}\marg{title}\oarg{label} \\
+ the body of the float \\
+\eenv{sidecontcaption} \\
 \end{syntax}
-Think of \cmd{\addlinespace} as being a white rule of width \meta{wd}.
- The default space is \cmd{\defaultaddspace} which gives rather
- less than a whole line space.
+\glossary(sidecontcaption)%
+  {\senv{sidecontcaption}\marg{title}\oarg{label}}%
+  {Environment for setting a continued sidecaption.}%
+Sidecaptions may be continued with the \Ie{sidecontcaption} environment.
 
 \begin{syntax}
-\cmd{\specialrule}\marg{wd}\marg{abovespace}\marg{belowspace} \\
+\senv{sidenamedlegend}\oarg{fortoc}\marg{title} \\
+ the body of the float \\
+\eenv{sidenamedlegend} \\
 \end{syntax}
-    You should not use double rules in a table; use rules with different 
-thicknesses instead. The \cmd{specialrule} can be used for drawing
-rules with special thickness and spacing. 
-However, the rules already described should be sufficient without
-having to resort to \cmd{\specialrule}.
+\glossary(sidenamedlegend)%
+  {\senv{sidenamedlegend}\marg{title}\oarg{label}}%
+  {Environment for setting a named legend kind of sidecaption.}%
+Named legends may be set at the side with the \Ie{sidenamedlegend} environment.
 
 \begin{syntax}
-\cmd{\morecmidrules} \\
+\senv{sidelegend}\marg{title} \\
+ the body of the float \\
+\eenv{sidelegend} \\
 \end{syntax}
-Nevertheless, if you insist on having 
-double \cmd{\cmidrule}s you will need the extra command
- \cmd{\morecmidrules} to do so properly, because two
- \cmd{\cmidrule}s  in a row calls for two rules on the same `rule row'. 
-Thus in
-\begin{lcode}
-\cmidrule{1-2}\cmidrule{1-2}
-\end{lcode}
- the second command writes a rule that just overwrites the first
- one. Use
-\begin{lcode}
-\cmidrule{1-2}\morecmidrules\cmidrule{1-2}
-\end{lcode}
- which gives you a double rule between columns one and two,
- separated by \cmd{\cmidrulesep}.
-Finish off a whole row of rules before giving the
- \cmd{\morecmidrules} command. Note that \cmd{\morecmidrules} has no
- effect whatsoever if it does not immediately follow a
- \cmd{\cmidrule} (i.e., it is not a general space-generating command).
+\glossary(sidelegend)%
+  {\senv{sidelegend}\marg{title}\oarg{label}}%
+  {Environment for setting a legend kind of sidecaption.}%
+Legends may be set at the side with the \Ie{sidelegend} environment.
 
- The new rule commands are not guaranteed to work with \cmd{\hline}
- or \cmd{\cline}.
- More significantly the rules generated by the new commands are pretty
-well guaranteed not to connect with verticals generated by ={|}=
- characters in the preamble. This is a feature --- you
- should not use vertical rules in tables.
 
-\subsection{Tabular environments}
+
+
+\subsection{Tweaks}
 
 \begin{syntax}
-\senv{tabular}\oarg{pos}\marg{preamble} rows \eenv{tabular} \\
-\senv{tabular*}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabular*} \\
-\senv{tabularx}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabularx} \\
+\cmd{\sidecapstyle} \\
 \end{syntax}
+\glossary(sidecapstyle)%
+  {\cs{sidecapstyle}}%
+  {Style settings for a sidecaption.}%
+Just before the caption is set, the \cmd{\sidecapstyle} command is called.
+This may be used to set the styling for the particular caption. By default
+it sets captions that are in the left margin raggedleft, and those
+that are in the right margin are set raggedright. The default definition
+is:
+%\begin{lcode}
+\begin{shadecode}
+\newcommand*{\sidecapstyle}{%
+%%  \captionnamefont{\bfseries}
+  \ifscapmargleft
+    \captionstyle{\raggedleft}%
+  \else
+    \captionstyle{\raggedright}%
+  \fi}
+\end{shadecode}
+%\end{lcode}
+ You can change the command to suit your purposes; for example, uncommenting
+the \cmd{\captionnamefont} line would result in the caption's float name being
+set in a bold font. 
 
-    A table created using the \Ie{tabular} environment comes out as
-wide as it has to be to accomodate the entries. On the other hand,
-both the \Ie{tabular*} and \Ie{tabularx} environments let you specify
-the overall width of the table via the additional \meta{width} atrgument.
-
-    The \Ie{tabular*} environment makes any necessary adjustment by altering
-the intercolumn spaces while the \Ie{tabularx} environment alters
-the column widths. Those columns that can be adjusted are noted by
-using the letter \texttt{X} as the column specifier in the \meta{preamble}.
-Once the correct column widths have been calculated the \texttt{X}
-columns are converted to \texttt{p} columns.
+\begin{syntax}
+\cmd{\overridescapmargin}\marg{margin} \\
+\lnc{\sidecapraise} \\
+\end{syntax}
+\glossary(overridescapmargin)%
+  {\cs{overridescapmargin}\marg{margin}}%
+  {A one-time override of \cs{sidecapmargin}.}%
+\glossary(sidecapraise)%
+  {\cs{sidecapraise}}%
+  {Vertical distance added to the default vertical placement of a sidecaption.}%
+Sometimes the caption may not be placed exactly where you want it --- it
+may be in the wrong margin or at the wrong height.
 
-    The following code is used for a regular \Ie{tabular}.
+The command \cmd{\overridescapmargin} will force the following caption into
+the \meta{margin} you specify which can only be \texttt{left} or
+\texttt{right}. In a twosided document where \cmd{\sidecapmargin}
+is \texttt{inner} or \texttt{outer} and the caption goes in the wrong margin,
+it is likely that the declaration \piif{strictpagecheck} will solve
+the problem. The wrong margin might be chosen in a twocolumn document
+where the float is in the second column; use 
 \begin{lcode}
-\begin{center}
-\begin{tabular}{|c|p{5.5pc}|c|p{5.5pc}|}  \hline
-\multicolumn{2}{|c|}{Multicolumn entry!} & THREE & FOUR \\ \hline
-one &
-\raggedright\arraybackslash The width of this column is fixed (5.5pc). &
-three &
-\raggedright\arraybackslash Column four will act in the same way as
-  column two, with the same width.\\
-\hline
-\end{tabular}
-\end{center}
+\overridescapmargin{right}
 \end{lcode}
+to fix this.
 
-\begin{center}
-\begin{tabular}{|c|p{5.5pc}|c|p{5.5pc}|}   \hline
-\multicolumn{2}{|c|}{Multicolumn entry!} & THREE & FOUR \\  \hline
-one &
-\raggedright\arraybackslash The width of this column is fixed (5.5pc). &
-three &
-\raggedright\arraybackslash Column four will act in the same way as
-  column two, with the same width.\\
- \hline
-\end{tabular}
-\end{center}
+    The caption may not be at quite the height you want with respect to the
+float. The caption will be raised by the length \lnc{\sidecapraise} 
+in addition to the calculated movement (or lowered if \lnc{\sidecapraise}
+is negative). 
 
-    The following examples use virtually the same contents, the major
-differences are the specifications of the environment.
+\begin{syntax}
+\cmd{\sidecapfloatwidth}\marg{length} \\
+\end{syntax}
+\glossary(sidecapfloatwidth)%
+  {\cs{sidecapfloatwidth}\marg{length}}%
+  {Macro holding the width of a float with a sidecaption.}%
 
- The following \Ie{tabularx} is set with
+    The float is set in a \Ie{minipage} with width \cmd{sidecapfloatwidth},
+whose default definition is
 \begin{lcode}
-\begin{tabularx}{250pt}{|c|X|c|X|}
+\newcommand*{\sidecapfloatwidth}{\linewidth}
 \end{lcode}
-and the result is:
-
- \begin{center}
- \begin{tabularx}{250pt}{|c|X|c|X|}
- \hline
- \multicolumn{2}{|c|}{Multicolumn entry!}&
- THREE&
- FOUR\\
- \hline
- one&
- \raggedright\arraybackslash The width of this column depends on the
- width of the table.\footnote{You can use footnotes in a \texttt{tabularx}!}
-&
- three&
- \raggedright\arraybackslash Column four will act in the same way as
- column two, with the same width.\\
- \hline
- \end{tabularx}
- \end{center}
-
-The following \Ie{tabular*} is set with
+That is, the normal width is the same as the current \lnc{\linewidth}.
+For a narrow table, say, you may want to reduce this, for example to
+half by
 \begin{lcode}
- \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}
+\renewcommand*{\sidecapfloatwidth}{0.5\linewidth}
 \end{lcode}
-Notice that there is no \texttt{X} column; the total width required
-for the tabular is less than the specfied width and hence the horizontal
-lines spill over the right hand end of the apparent tabular width.
- \begin{center}
- \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}
- \hline
- \multicolumn{2}{|c|}{Multicolumn entry!}&
- THREE&
- FOUR\\
- \hline
- one&
- \raggedright\arraybackslash The width of this column is fixed (5.5pc). &
- three &
- \raggedright\arraybackslash Column four will act in the same way as
- column two, with the same width.\\
- \hline
- \end{tabular*}
- \end{center}
+    Note that \cmd{\sidecapfloatwidth} is a macro, not a length, 
+so it must be altered by using a \cmd{\renewcommand*}, 
+\emph{not} by \cmd{\setlength}.
+
+    If you do reduce the \cmd{\sidecapfloatwidth} you may notice that the
+sidecaption is actualy placed a distance \lnc{\sidecapsep} with respect
+to the float's \Ie{minipage}, not with respect to the text block.
+
+\newlength{\mylength}
+\setlength{\mylength}{\linewidth}
+\addtolength{\mylength}{-\sidecapsep}
+\addtolength{\mylength}{-\sidecapwidth}
+\begin{shadetable}
+  \sidecapmargin{left}%
+  \renewcommand*{\sidecapfloatwidth}{\mylength}%
+  \raggedleft
+  \begin{sidecaption}{%
+    Permitted arguments for some sidecaption related commands}[scap:one]
+  \centering
+%  \begin{tabular}{ccc} \toprule
+%  \cs{setsidecappos} & \cs{sidecapmargin} & \cs{overridescapmargin} \\ \midrule
+%  \texttt{t}         & \texttt{left}      & \texttt{left}       \\
+%  \texttt{c}         & \texttt{right}     & \texttt{right}       \\
+%  \texttt{b}         & \texttt{inner}      &  \\
+%                     & \texttt{outer}      &  \\ \bottomrule
+%  \end{tabular}
+  \begin{tabular}{cc} \toprule
+  \cs{sidecapmargin} & \cs{overridescapmargin} \\ \midrule
+  \texttt{left}      & \texttt{left}       \\
+  \texttt{right}     & \texttt{right}       \\
+  \texttt{inner}      &  \\
+  \texttt{outer}      &  \\ \bottomrule
+  \end{tabular}
+\end{sidecaption}
+\end{shadetable}
+
+Table~\ref{scap:one} was created by the following code.
+%\begin{lcode}
+\begin{shadecode}
+\newlength{\mylength}
+\setlength{\mylength}{\linewidth}
+\addtolength{\mylength}{-\sidecapsep}
+\addtolength{\mylength}{-\sidecapwidth}
+\begin{table}
+  \sidecapmargin{left}%
+  \renewcommand*{\sidecapfloatwidth}{\mylength}%
+  \raggedleft
+  \begin{sidecaption}{%
+    Permitted arguments for some sidecaption related commands}[scap:one]
+  \centering
+  \begin{tabular}{cc} \toprule
+  \cs{sidecapmargin} & \cs{overridescapmargin} \\ \midrule
+  \texttt{left}      & \texttt{left}       \\
+  \texttt{right}     & \texttt{right}       \\
+  \texttt{inner}     &  \\
+  \texttt{outer}     &  \\ \bottomrule
+  \end{tabular}
+\end{sidecaption}
+\end{table}
+\end{shadecode}
+%\end{lcode} 
 
-The next \Ie{tabular*} table is set with 
+    The calculations on the \cs{mylength} length are so that the sidecaption
+and float will just fit inside the typeblock.
+
+Note that the \cmd{\raggedleft} command before the \Ie{sidecaption} environment
+makes the float's \Ie{minipage} be placed raggedleft (i.e., moved across to
+the right hand edge of the typeblock) while the \cmd{\centering} centers
+the \Ie{tabular} within the minipage. You can get a variety of horizontal
+placements by judicious use of \cmd{\raggedright}, \cmd{\centering}
+and \cmd{\raggedleft} commands. If you do move the float sideways to leave
+space for the caption make sure that the caption will go to the side you
+want. In the example code I `moved' the float to the right so I made
+sure that the caption would go on the left by explicitly setting
 \begin{lcode}
- \begin{tabular*}{300pt}{|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
+\sidecapmargin{left}
 \end{lcode}
 
- \begin{center}
- \begin{tabular*}{300pt}{|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
- \hline
- \multicolumn{2}{|c|}{Multicolumn entry!}&
- THREE&
- FOUR\\
- \hline
- one&
- \raggedright\arraybackslash The width of this column's text is fixed (5.5pc). &
- three &
- \raggedright\arraybackslash Column four will act in the same way as
- column two, with the same width.\\
- \hline
- \end{tabular*}
- \end{center}
+    As far as \tx\ is concerned a sidecaption takes no horizontal space. If
+you use a sidecaption in a wrapped float from, say, the \Lpack{wrapfig} 
+package, make sure that the sidecaption gets placed where it won't be 
+overlaid by the main text.
+
+\index{caption!side|)}
+
+ \section{How \ltx\ makes captions} \label{sec:ltx}
+
+\index{caption!\ltx\ methods|(}
 
+ This section provides an overview of how \ltx\ creates captions and
+ gives some examples of how to change the captioning style directly.
+ The section need not be looked at more than once unless you like 
+ reading \ltx\ code
+ or you want to make changes to \ltx's style of captioning not supported
+by the class.
+
+ The \ltx\ kernel provides tools to help in the definition of captions,
+ but it is the particular class that decides on their format.
 
-The following \Ie{tabularx} is set with
+\begin{syntax}
+ \cmd{\caption}\oarg{short}\marg{long} \\
+\end{syntax}
+\glossary(caption)%
+  {\cs{caption}\oarg{short}\marg{long}}%
+  {Typeset a caption with title \meta{long}, and add it, or \meta{short}
+   instead if given, to a \listofx.} 
+ The kernel (in \file{ltfloat.dtx}) defines the caption command via 
 \begin{lcode}
-\begin{tabularx}{300pt}{|c|X|c|X|}
+\def\caption{%
+    \refstepcounter\@captype \@dblarg{\@caption\@captype}}
 \end{lcode}
-the result is:
-
- \begin{center}
- \begin{tabularx}{300pt}{|c|X|c|X|}
- \hline
- \multicolumn{2}{|c|}{Multicolumn entry!}&
- THREE&
- FOUR\\
- \hline
- one&
- \raggedright\arraybackslash The width of this column depends on the
- width of the table.&
- three&
- \raggedright\arraybackslash Column four will act in the same way as
- column two, with the same width.\\
- \hline
- \end{tabularx}
- \end{center}
-
-     The main differences between the \Ie{tabularx} and \Ie{tabular*}
-environments are:
- \begin{itemize}
- \item \Ie{tabularx} modifies the widths of the \emph{columns},
- whereas \Ie{tabular*} modifies the widths of the inter-column
- \emph{spaces}.
- \item \Ie{tabular} and \Ie{tabular*} environments may be
- nested with no restriction, however if one \Ie{tabularx}
- environment occurs inside another, then the inner one \emph{must} be
- enclosed by ={ }=.
- \item The body of the \Ie{tabularx} environment is in fact the
- argument to a command, and so certain constructions which are not
- allowed in command arguments (like \cmd{\verb}) may not be used.\footnote
- {Actually, \texttt{verb} and \texttt{verb*} may be used, but they may 
- treat spaces incorrectly, and the
- argument can not contain an unmatched {\ttfamily\char`\{} or
- {\ttfamily\char`\}}, or a  {\ttfamily\char`\%} character.}
- \item \Ie{tabular*} uses a primitive capability of \tx{} to
- modify the inter column space of an alignment. \Ie{tabularx}
- has to set the table several times as it searches for the best column
- widths, and is therefore much slower. Also the fact that the body is
- expanded several times may break certain \tx{} constructs.
- \end{itemize}
 
 \begin{syntax}
-\cmd{\tracingtabularx} \\
+ \cmd{\@captype} \\
 \end{syntax}
-Following the \cmd{\tracingtabularx} declaration all
-later \Ie{tabularx} environments will print information
- about column widths as they repeatedly re-set the tables to find the
- correct widths.
-
- By default the \texttt{X} specification is turned into
- =p{=\meta{some value}=}=. Such narrow columns often
- require a special format, which can be achieved by using the =>= syntax.
-For example, =>{\small}X=. Another format which is useful in narrow 
-columns is  ragged right, however \ltx's \cmd{\raggedright} macro redefines
-\cmd{\\} in a way which conflicts with its use in  \Ie{tabular} or 
-\Ie{array}  environments.
+ \cmd{\@captype} is defined by the code that creates a new float\index{float} 
+environment and is set to the environment's name (see the code for 
+\cmd{\@xfloat} in \file{ltfloat.dtx}). For a \Ie{figure} environment,
+ there is an equivalent to 
+\begin{lcode}
+\def\@captype{figure}
+\end{lcode}
 
 \begin{syntax}
-\cmd{\arraybackslash} \\
+ \cmd{\@caption}\marg{type}\oarg{short}\marg{long} \\
 \end{syntax}
- For this reason the command \cmd{\arraybackslash} is provided;
-this may be used after a \cmd{\raggedright}, \cmd{\raggedleft}  or
-\cmd{\centering} declaration. Thus a \Ie{tabularx} preamble may include
-\begin{lcode}
->{\raggedright\arraybackslash}X
-\end{lcode}
- These preamble specifications may of course be saved using the
- command, \cmd{\newcolumntype}. After specifying, say,
+ The kernel also provides the \cmd{\@caption} macro as:
 \begin{lcode}
-\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}
-\end{lcode}
-then \texttt{Y} could be used in the \Ie{tabularx} preamble
- argument.
- 
+\long\def\@caption#1[#2]#3{\par
+  \addcontentsline{\csname ext@#1\endcsname}{#1}%     <-
+    {\protect\numberline{\csname the#1\endcsname}%
+     {\ignorespaces #2}}
+  \begingroup
+    \@parboxrestore
+    \if@minipage
+      \@setminipage
+    \fi
+    \normalsize
+    \@makecaption{\csname fnum@#1\endcsname}%         <-
+                 {\ignorespaces #3}\par
+  \endgroup}
+ \end{lcode}
+ where \meta{type} is the name of the environment in which the caption
+ will be used. Putting these three commands together results in the user's 
+view of the caption command as \cmd{\caption}\oarg{short}\marg{long}.
+
+ It is the responsibilty of the class (or package) which defines 
+floats\index{float} to provide definitions for \cmd{\ext@type}, 
+\cmd{\fnum@type} and \cmd{\@makecaption} which appear in the 
+definition of \cmd{\@caption} (in the lines marked \verb?<-? above).
+
 \begin{syntax}
-\cmd{\tabularxcolumn} \\
+ \cmd{\ext@type} \\
 \end{syntax}
- The \texttt{X} columns are set using the \texttt{p} column, which
- corresponds  to \cmd{\parbox}=[t]=. You may want them set using, say, the
-\texttt{m} column, which corresponds to \cmd{\parbox}=[c]=. It is not
- possible to change the column type using the \texttt{>} syntax, so another
- system is provided.  \cmd{\tabularxcolumn} should be defined to be a macro
- with one argument, which expands to the \Ie{tabular} preamble
- specification that you want to correspond to \texttt{X}. The
- argument will be replaced by the calculated width of a column.
-
- The default definition is
-\begin{lcode}
-\newcommand{\tabularxcolumn}[1]{p{#1}}
-\end{lcode}
-This may be changed, for instance
+ This macro holds the name of the extension for a \listofx{} file.
+ For example for the \Ie{figure} float\index{float} environment there is the
+ definition equivalent to 
 \begin{lcode}
-\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
+ \newcommand{\ext@figure}{lof}
 \end{lcode}
-so that \texttt{X} columns will be typeset as \texttt{m} columns using
-the \cmd{\small} font.
 
- Normally all \texttt{X} columns in a single table are set to the
- same width, however it is possible to make \Ie{tabularx} set
- them to different widths.
- A preamble argument of 
+\begin{syntax}
+ \cmd{\fnum@type} \\
+\end{syntax}
+ This macro is responsible for typesetting the caption number. For example,
+ for the \Ie{figure} environment there is the definition equivalent to
 \begin{lcode}
-{>{\hsize=.5\hsize}X>{\hsize=1.5\hsize}X}
+ \newcommand{\fnum@figure}{\figurename~\thefigure}
 \end{lcode}
- specifies two columns, the second will be three times as wide as the
- first. However if you want to play games like this you should follow
- the following two rules.
- \begin{enumerate}
- \item Make sure that the sum of the widths of all the \texttt{X}
- columns is unchanged. (In the above example, the new widths still add
- up to twice the default width, the same as two standard \texttt{X}
- columns.)
- \item Do not use \cmd{\multicolumn} entries which cross any \texttt{X}
- column.
- \end{enumerate}
- As with most rules, these may be broken if you know what you are
- doing.
-
- It may be that the widths of the `normal' columns of the table
- already total more  than the requested total
- width. \Ie{tabularx} refuses to set the 
- \texttt{X} columns to a negative width, so in this case you get a 
- warning ``X Columns too narrow (table too wide)''.
-
- The \texttt{X} columns will in this case be set to a width of 1em
- and so the table itself will be wider than the requested total width
- given in the argument to the environment.
-% This behaviour of the package can be customised slightly
-% as noted in the documentation of the code section.
-
-    The standard \cmd{\verb} macro does not work inside a \Ie{tabularx},
-just as it does not work in the argument to any macro.
 
 \begin{syntax}
-\cmd{\TX@verb} \\
+ \cmd{\@makecaption}\marg{number}\marg{text} \\
 \end{syntax}
-\cmd{\TX@verb} is the `poor man's \cmd{\verb}' 
-and is based on page 382 of the \tx Book. As
- explained there, doing verbatim this way means that spaces are not
- treated correctly, and so a \cmd{\verb*} version may well be useless. 
- The mechanism is quite general, and any macro which wants to allow a
- form of \cmd{\verb} to be used within its argument may
+ The \cmd{\@makecaption} macro, where \meta{number}
+ is a string such as `Table~5.3' and \meta{text} is the caption text,
+ performs the typesetting of the caption, and
+ is defined in the standard classes (in \file{classes.dtx}) as the
+ equivalent of:
 \begin{lcode}
-\let\verb=\TX@verb
+\newcommand{\@makecaption}[2]{
+  \vskip\abovecaptionskip         <- 1
+  \sbox\@tempboxa{#1: #2}         <- 2
+  \ifdim \wd\@tempboxa >\hsize
+    #1: #2\par                    <- 3
+  \else
+    \global \@minipagefalse
+    \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}
+  \fi
+  \vskip\belowcaptionskip}        <- 4
 \end{lcode}
-It must ensure that the real definition is restored afterwards.
-
-    This version of \cmd{\verb} is subject to the 
-following restictions:
- \begin{enumerate}
- \item Spaces in the argument are not read verbatim, but may be skipped
-       according to \tx's usual rules.
- \item Spaces will be added to the output after control words, even if
-       they were not present in the input.
- \item Unless the argument is a single space, any trailing space,
-       whether in the original argument, or added as in (2),
-       will be omitted.
- \item The argument must not end with =\=, so =\verb|\|= is not
-      allowed, however, because of (3), =\verb|\ |= produces
-      =\=.
- \item The argument must be balanced with respect to ={= and =}=. So
-      =\verb|{|= is not allowed.
- \item A comment character like \verb?%? will not appear verbatim. It will
-       act as usual, commenting out the rest of the input line!
- \item The combinations =?`= and =!`= will appear as
-       {\ttfamily?`} and {\ttfamily!`} if the \texttt{cmtt} font is
-       being used.
- \end{enumerate}
-
-\section{Free tabulars}
-
-    All the tabular environments described so far put the table
-into a box, which \ltx{} treats like a large, even though complex,
- character, and characters are not broken across pages. If you
-have a long table that runs off the bottom of the page you can turn
-to, say, the \Lpack{longtable}~\cite{LONGTABLE} or \Lpack{xtab}~\cite{XTAB}
-packages which will automatically break tables across page boundaries.
-These have various bells and whistles, such as automatically putting
-on a caption at the top of each page, repeating the column heads, and 
-so forth. 
-
-\subsection{Continuous tabulars}
 
 \begin{syntax}
-\senv{ctabular}\oarg{pos}\marg{preamble} rows \eenv{ctabular} \\
-\senv{ctabular*}\oarg{pos}\marg{width}\marg{preamble} rows \eenv{ctabular*} \\
+ \lnc{\abovecaptionskip}
+ \lnc{\belowcaptionskip} \\
 \end{syntax}
-The \Ie{ctabular} environment is similar to \Ie{tabular}, but with a few
-differences, the main one 
-being that the table will merrily continue across page breaks.
-The \meta{preamble} argument is the same as for the previous \Ie{array}
-and \Ie{tabular} environments, but the optional \meta{pos} argument
-controls the horizontal position of the table, not the vertical. The
-possible argument values are 
-\texttt{l} (left justified), 
-\texttt{c} (centered), or
-\texttt{r} (right justified); the default is \texttt{c}.
+\glossary(abovecaptionskip)%
+  {\cs{abovecaptionskip}}%
+  {Vertical space above a caption.}
+\glossary(belowcaptionskip)%
+  {\cs{belowcaptionskip}}%
+  {Vertical space below a caption.}
+  Vertical space is added before and after a caption (lines marked 1 and 4
+in the code for \cmd{\@makecaption} above) and the amount of space is given
+by the lengths \lnc{\abovecaptionskip}\index{caption!space above} 
+and \lnc{\belowcaptionskip}. The
+standard classes set these to 10pt and 0pt respectively. If you want
+to change the space before or after a caption, use \cmd{\setlength} to change
+the values. In figures\index{figure}, the caption is usually placed below the
+illustration\index{illustration}. The actual space between the bottom 
+of the illustration\index{illustration} and the baseline of the first 
+line of the caption\index{caption!space above} is 
+the \lnc{\abovecaptionskip} plus the 
+\lnc{\parskip} plus the \lnc{\baselineskip}.
+If the illustration\index{illustration} is in a \Ie{center} environment 
+then additional space will be added by the \eenv{center}; it is usually 
+better to use the \cmd{\centering} command rather than the 
+\Ie{center} environment.
 
+ The actual typesetting of a caption is effectively performed by the code
+in lines marked 2 and 3 in the code for \cmd{\@makecaption}; note that
+these are where the colon that is typeset after the number is specified. 
+If you want to
+make complex changes to the default captioning style you may have to
+create your own version of \cmd{\@caption} using 
+\cmd{\renewcommand}. On the other hand, many such changes can be achieved
+by changing the definition of the 
+the appropriate \cmd{\fnum@type} command(s). For example, to make the 
+figure\index{figure} name and number\index{caption!font} bold: 
 \begin{lcode}
-\begin{ctabular}{lcr}  \toprule
-LEFT & CENTER & RIGHT \\  \midrule
-l & c & r \\
-l & c & r \\
-l & c & r \\
-l & c & r \\  \bottomrule
-\end{ctabular}
+\renewcommand{\fnum@figure}{\textbf{\figurename~\thefigure}}
 \end{lcode}
-  
-\begin{ctabular}[c]{lcr}  \toprule
-LEFT & CENTER & RIGHT \\  \midrule
-l & c & r \\
-l & c & r \\
-l & c & r \\
-l & c & r \\  \bottomrule
-\end{ctabular}
 
-    The \Ie{ctabular} environment will probably not be used within
-a \Ie{table} environment (which defeats the possibility of the table
-crossing page boundaries). To caption a \Ie{ctabular} you can define a 
-fixed caption. For example:
+ REMEMBER: If you are doing anything involving commands that include
+the \idxatincode\texttt{@} character, and it's not in a class or package 
+file, you have
+to do it within a \cmd{\makeatletter} and \cmd{\makeatother} pairing
+(\seeatincode). So,
+if you modify the \cmd{\fnum@figure} command anywhere in your document
+it has to be done as:
 \begin{lcode}
-\newfixedcaption{\freetabcaption}{table}
+ \makeatletter
+ \renewcommand{\fnum@figure}{......}
+ \makeatother
 \end{lcode}
-And then \cmd{\freetabcaption} can be used like the normal \cmd{\caption}
-within a \Ie{table} float.
-\newfixedcaption{\freetabcaption}{table}
-
-\subsection{Automatic tabulars}
-
-    A tabular format may be used just to list things, for example the
-names of the members of a particular organisation, or the names of
-\ltx{} environments. 
 
-    Especially when drafting a document, or when the number of entries
-is likely to change, it is convenient to be able to tabulate a list
-of items without having to explicitly mark the end of each row.
+ \makeatletter
+\let\oldfnum@figure\fnum@figure
+ \renewcommand{\fnum@figure}{\textsc{\figurename~\thefigure}}
+ \makeatother
+ \begin{shadefigure}
+ \centering
+ A THOUSAND WORDS\ldots
+ \caption{A picture is worth a thousand words}\label{fig:sc}
+ \end{shadefigure}
 
-\begin{syntax}
-\cmd{\autorows}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries} \\
-\end{syntax}
-The \cmd{\autorows} macro lists the \meta{entries} in rows; that is,
-the entries are typeset left to right and top to bottom. 
-The table below was set by \cmd{\autorows} using:
+ As an example, \fref{fig:sc} was created by the following code:
 \begin{lcode}
-\freetabcaption{Example automatic row ordered table}
-\autorows{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+ \makeatletter
+ \renewcommand{\fnum@figure}{\textsc{\figurename~\thefigure}}
+ \makeatother
+ \begin{figure}
+ \centering
+ A THOUSAND WORDS\ldots
+ \caption{A picture is worth a thousand words}\label{fig:sc}
+ \end{figure}
 \end{lcode}
 
-\freetabcaption{Example automatic row ordered table}
-\autorows{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
-
-    The \meta{pos} (\texttt{l}, \texttt{c}, or \texttt{r})
-argument controls the horizontal position of the
-tabular and \meta{num} is the number of columns. The \meta{style}
-(\texttt{l}, \texttt{c}, or \texttt{r}) argument specifies the location
-of the entries in the columns; each column is treated identically.
-The \meta{entries} argument is a comma-separated list of the names to be
-tabulated; there must be no comma after the last of the names before the
-closing brace.
-
- Each column is normaly the same width which is large enough to accomodate
-the widest entry in the list.
-A positive \meta{width} (e.g., \verb?[0.8\textwidth]?), defines the overall
-width of the table, and the column width is calculated by dividing \meta{width}
-by the number of columns. Any negative value for the \meta{width} width lets 
-each column be wide enough for the widest entry in that column; the column width 
-is no longer a constant. 
+ As another example, suppose that you needed to typeset the \cmd{\figurename}
+and its number in a bold font, replace the 
+colon\index{caption!delimeter} that normally appears
+after the number by a long dash, and typeset the actual title 
+text\index{caption!font} in
+a sans-serif font, as is illustrated by the caption for 
+\fref{fig:sf}. The following code does this.
 
-   The next examples illustrate the effect of the \meta{width} argument
-(the default value is 0pt).
+ \makeatletter
+ \renewcommand{\fnum@figure}[1]{\textbf{\figurename~\thefigure} --- \sffamily}
+ \makeatother
+ \begin{shadefigure}
+  \centering
+  ANOTHER THOUSAND WORDS\ldots
+ \caption{A different kind of figure caption}\label{fig:sf}
+ \end{shadefigure}
 
 \begin{lcode}
-\freetabcaption{Changing the width of a row ordered table}
-\autorows[-1pt]{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
-\autorows[0pt]{c}{5}{c}{one, two, three, four, five, ... }
-\autorows[0.9\textwidth]{c}{5}{c}{one, two, three, four, five, ... }
+ \makeatletter
+ \renewcommand{\fnum@figure}[1]{\textbf{\figurename~\thefigure} 
+                                --- \sffamily}
+ \makeatother
+ \begin{figure}
+  \centering
+  ANOTHER THOUSAND WORDS\ldots
+ \caption{A different kind of figure caption}\label{fig:sf}
+ \end{figure}
+\end{lcode}
+ Perhaps a little description of how this works is in order.
+ Doing a little bit of \tx's macro processing by hand, the typesetting
+ lines in \cmd{\@makecaption} (lines 2 and 3) get instantiated like:
+\begin{lcode}
+\fnum@figure{\figurename~\thefigure}: text
+\end{lcode}
+ Redefining \cmd{\fnum@figure} to take one argument and then not using the
+ value of the argument essentially gobbles up the colon. Using
+\begin{lcode}
+\textbf{\figurename~\thefigure}
 \end{lcode}
+in the definition causes \cmd{\figurename} and the number to be typeset in
+a bold font. After this comes the long dash. Finally, putting \cmd{\sffamily}
+at the end of the redefinition causes any following text (i.e., the actual 
+title) to be typeset using the sans-serif font.
 
-\freetabcaption{Changing the width of a row ordered table}
-\autorows[-1pt]{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+ If you do modify \cmd{\@makecaption}, then spaces in the definition may be
+important; also you must use the comment (\%) character in the same
+places as I have done above. Hopefully, though, the class provides the
+tools that you need to make most, if not all, of any likely caption styles.
 
- \autorows[0pt]{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+\makeatletter
+\let\fnum@figure\oldfnum@figure
+\makeatother
 
-\autorows[0.9\textwidth]{c}{5}{c}{one, two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+\index{caption!\ltx\ methods|)}
 
 
-\begin{syntax}
-\cmd{\autocols}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries} \\
-\end{syntax}
-The \cmd{\autocols} macro lists its \meta{entries} in columns, proceeding
-top to bottom and left to right. The arguments, except for \meta{width},
-are the same as for \cmd{\autorows}. The column width is always constant throughout
-the table and is normally sufficient for the
-widest entry. A positive \meta{width} has the same effect as for \cmd{\autorows}
-but a negative value is ignored.
+ \section{Footnotes in captions}
 
-    If you need to include a comma within one of the entries in the list
-for either \cmd{\autorows} or \cmd{\autocols} you have to use a macro. 
-For instance:
-\begin{lcode}
-\newcommand*{\comma}{,}
-\end{lcode}
-\newcommand*{\comma}{,}
+\index{caption!footnote|(}
+\index{footnote!in caption|(}
 
-The following examples illustrate these points.
+    If you want to have a caption with a footnote, think long and hard
+ as to whether this is really essential. It is not normally considered
+ to be good typographic practice, and to rub the point in \ltx\ does not
+ make it necessarily easy to do. However, if you (or your publisher)
+ insists, read on.
 
-\begin{lcode}
-\freetabcaption{Changing the width of a column ordered table}
-\autocols{c}{5}{c}{one\comma{} two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
-\autocols[0.9\textwidth]{c}{5}{c}{one\comma{} two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
-\end{lcode}
+    If it is present, the optional argument to \cmd{\caption} is put into
+the \listofx\ as appropriate. If the argument is not present, then the
+text of the required argument is put into the \listofx. In the first case,
+the optional argument is moving, and in the second case the required
+argument is moving. The \cmd{\footnote} command\index{footnote!fragile} 
+is fragile and must be
+\cmd{\protect}ed (i.e., \verb?\protect\footnote{}?) if it is used in a moving 
+argument. If you don't want the footnote to appear in 
+the \listofx, use a
+footnoteless optional argument and a footnoted required argument.
 
-\freetabcaption{Changing the width of a column ordered table}
-\autocols{c}{5}{c}{one\comma{} two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+   You will probably be surprised if you just do, for example:
+ \begin{lcode}
+ \begin{figure}
+ ...
+ \caption[For LoF]{For figure\footnote{The footnote}}
+ \end{figure}
+ \end{lcode}
+because (a) the footnote number may be greater than you thought, and (b)
+the footnote text has vanished. This latter is because \ltx\ won't typeset
+footnotes\index{footnote!in float} from a float\index{float}. 
+To get an actual footnote within the float you have to use a minipage, 
+like:
+ \begin{lcode}
+ \begin{figure}
+ \begin{minipage}{\linewidth}
+ ...
+ \caption[For LoF]{For figure\footnote{The footnote}}
+ \end{minipage}
+ \end{figure}
+ \end{lcode}
+ If you are using the standard classes you may now find that you get two 
+footnotes for the price of one. Fortunately this will not occur with this 
+class, nor will an unexpected increase of the footnote number.
 
-\autocols[0.9\textwidth]{c}{5}{c}{one\comma{} two, three, four, five,
-                   six, seven, eight, nine, ten,
-                   eleven, twelve, thirteen, fourteen }
+    When using a minipage as above, the footnote text is typeset at the
+bottom of the minipage (i.e., within the float\index{float}). 
+If you want the footnote text typeset at the bottom of the page, 
+then you have to use the
+\cmd{\footnotemark} and \cmd{\footnotetext} commands like:
+ \begin{lcode}
+ \begin{figure}
+ ...
+ \caption[For LoF]{For figure\footnotemark}
+ \end{figure}
+ \footnotetext{The footnote}
+ \end{lcode}
+ This will typeset the argument of the \cmd{\footnotetext} command at the
+bottom of the page where you called the command. 
+Of course, the figure\index{figure} might have floated\index{float} to a 
+later page, and then it's a matter of some manual fiddling to get everything 
+on the same page, and possibly to get the footnote 
+marks\index{footnote!mark} to match correctly with the 
+footnote\index{footnote!text} text.
 
+ At this point, you are on your own.
 
-\section{Spacing}
+\index{footnote!in caption|)}
+\index{caption!footnote|)}
 
-    Sometimes tabular rows appear vertically challenged.
-\begin{syntax}
-\lnc{\extrarowheight} \\
-\end{syntax}
-The length called \lnc{\extrarowheight} can be set to modify
-the normal height of \Ie{tabular} (and \Ie{array}) rows. 
-If it is a positive
- length, the value is added to the normal height of
- every row of the table, while
- the depth will remain the same. This is important for tables
- with horizontal lines because those lines normally touch the
- capital letters.
- For example, =\setlength{\extrarowheight}{1pt}= was used in the
-definition of \tref{tab:tabpream}.
-
- \subsection{Special variations of \texttt{\textbackslash hline}}
-
- The family of \Ie{tabular} environments allows
- vertical positioning with respect to the baseline of
- the text in which the environment appears.  By default the
- environment appears centered, but this can be changed to
- align with the first or last line in the environment by
- supplying a \texttt{t} or \texttt{b} value to the
- optional position argument. However, this does not work
- when the first or last element in the environment is a
- \cmd{\hline} command---in that case the environment is
- aligned at the horizontal rule.
 
- \pagebreak[3]
+\index{caption|)}
 
- Here is an example:
- \begin{center}
- \begin{minipage}[t]{.4\linewidth}
- Tables
- \begin{tabular}[t]{l}
-   with no\\ hline \\ commands \\ used
- \end{tabular} versus \\ tables
- \begin{tabular}[t]{|l|}
-  \hline
-   with some \\ hline \\ commands \\
-  \hline
- \end{tabular} used.
- \end{minipage}
- \begin{minipage}[t]{.5\linewidth}
- \begin{verbatim}
- Tables
- \begin{tabular}[t]{l}
-  with no\\ hline \\ commands \\ used
- \end{tabular} versus tables
- \begin{tabular}[t]{|l|}
-  \hline
-   with some \\ hline \\ commands \\
-  \hline
- \end{tabular} used.
- \end{verbatim}
- \end{minipage}
-\end{center}
 
-\begin{syntax}
-\cmd{\firsthline} \cmd{\lasthline} \\
-\lnc{\extratabsurround} \\
-\end{syntax}
- Using \cmd{\firsthline} and \cmd{\lasthline} will 
- cure the problem, and the tables will align properly as long
- as their first or last line does not contain extremely large
- objects.
- \begin{center}
- \begin{minipage}[t]{.4\linewidth}
- Tables
- \begin{tabular}[t]{l}
-   with no\\ line \\ commands \\ used
- \end{tabular} versus \\ tables
- \begin{tabular}[t]{|l|}
-  \firsthline
-   with some \\ line   \\ commands \\
-  \lasthline
- \end{tabular} used.
- \end{minipage}
- \begin{minipage}[t]{.5\linewidth}
- \begin{verbatim}
- Tables
- \begin{tabular}[t]{l}
-   with no\\ line \\ commands \\ used
- \end{tabular} versus tables
- \begin{tabular}[t]{|l|}
-  \firsthline
-   with some \\ line   \\ commands \\
-  \lasthline
- \end{tabular} used.
- \end{verbatim}
- \end{minipage}
- \end{center}
 
- The implementation of these two commands contains an extra
- dimension, which is called \cmd{\extratabsurround}, to add some
- additional space at the top and the bottom of such an environment.
- This is useful if such tables are nested.
- 
 
- \subsection{Handling of rules}
 
- There are two possible approaches to the handling of horizontal and
- vertical rules in tables:
- \begin{enumerate}
-   \item rules can be placed into the available space without
-   enlarging the table, or
-   \item rules can be placed between columns or rows thereby enlarging
-   the table.
- \end{enumerate}
- This class implements the second possibility while the
- default implementation in the \ltx{} kernel implements the first
- concept.
 
-   With standard \ltx{} adding rules to a table will not affect the
-   width or height of the table (unless double rules are used), e.g.,
-   changing a preamble from \verb=lll= to \verb=l|l|l= does not
-   affect the document other than adding rules to the table. In
-   contrast, with this class a table that just fitted the
-   \verb=\textwidth= might now produce an overfull box. (But you shouldn't
-   have vertical rules in the first place.)
 
 
-%%%%%%%%%%%%%%%%%%%%%%%%
-% end of tabman.tex
-%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Original memman
 
-\DeleteShortVerb{\=}
-\MakeShortVerb{\|}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%% end original memman
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%\DeleteShortVerb{\|}
+%%%%\MakeShortVerb{\=}
+%%%%\input{tabmanbody}  %% rows & columns
+%%%%  tabmanbody.tex
 
-\chapter{Margin and foot notes} \label{chap:mnotes}
+ \chapter{Rows and columns}
 
-   The standard classes provide the \cmd{\marginpar} command for putting
-things into the margin. The class supports two extra kinds of side notes.
-It also provides extended footnoting capabilities.
+    The class provides extensions to the standard \Ie{array} and \Ie{tabular}
+environments. These are based partly on a merging of the
+ \Lpack{array}~\cite{ARRAY}, 
+ \Lpack{dcolumn}~\cite{DCOLUMN},
+ \Lpack{delarray}~\cite{DELARRAY}, 
+ \Lpack{tabularx}~\cite{TABULARX}, and 
+ \Lpack{booktabs}~\cite{BOOKTABS} 
+ packages. 
+    Much of the material in this chapter strongly reflects the
+documentation of these packages.
 
+ Additionaly, new kinds of tabular environments are also provided.
 
-\section{Footnotes}
 
-    A footnote can be considered to be a special kind of float\index{float} 
-that is put at the bottom of a page.
+\section{General}
 
 \begin{syntax}
-\cmd{\footnote}\oarg{num}\marg{text} \\
-\cmd{\footnotemark}\oarg{num} \cmd{\footnotetext}\oarg{num}\marg{text} \\
+\cmd{\[} \senv{array}\oarg{pos}\marg{preamble} rows \eenv{array} \cmd{\]} \\
+\senv{tabular}\oarg{pos}\marg{preamble} rows \eenv{tabular} \\
+\senv{tabular*}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabular*} \\
+\senv{tabularx}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabularx} \\
 \end{syntax}
-In the main text, the \cmd{\footnote} command puts a marker at the
-point where it is called, and puts the \meta{text}, preceded by the same
-mark, at the bottom of the page. If the optional \meta{num} is used
-then its value is used for the mark, otherwise the \Icn{footnote}
- counter is stepped and provides the mark's value. 
-
-    You can use \cmd{\footnotemark} to put a marker in the main text; the value
-is determined just like that for \cmd{\footnote}. Footnote text can be put 
-at the bottom of the page via \cmd{\footnotetext}; if the optional \meta{num}
-is given it is used as the mark's value, otherwise the value of the
-\Icn{footnote} counter is used.
-   It may be helpful, but completely untrue, to think of \cmd{\footnote} being
-defined like:
-\begin{lcode}
-\newcommand{\footnote}[1]{\footnotemark\footnotetext{#1}}
-\end{lcode}
+\glossary(array)%
+  {\senv{array}\oarg{pos}\marg{preamble}}%
+  {Environment for setting math elements in an array form.}
+\glossary(tabular)%
+  {\senv{tabular}\oarg{pos}\marg{preamble}}%
+  {Environment for setting text elements in a tabular form.}
+\glossary(tabular*)%
+  {\senv{tabular*}\marg{width}\oarg{pos}\marg{preamble}}%
+  {Environment for setting text elements in a tabular form within an overall 
+  \meta{width}; intercolumn spacing is adjusted to suit.}
+\glossary(tabularx)%
+  {\senv{tabularx}\marg{width}\oarg{pos}\marg{preamble}}%
+  {Environment for setting text elements in a tabular form within an overall
+   \meta{width}; column widths are adjusted to suit.}
+The \Ie{array} and \Ie{tabular} environments are traditional and the others
+are extensions. The \Ie{array} is for typesetting
+math and has to be within a math environment of some kind. The \Ie{tabular}
+series are for typesetting ordinary text.
 
+    The optional \meta{pos} argument can be one of \texttt{t}, \texttt{c},
+or \texttt{b} (the default is \texttt{c}), and controls the vertical position
+of the array or tabular; either the \texttt{t}op or the \texttt{c}enter,
+or the \texttt{b}ottom is aligned with the baseline. 
+Each row consists of elements separated by
+\&, and finished with \cmd{\\}. There may be as many rows as desired.
+The number and style of the columns is specified by the \meta{preamble}.
+The width of each column is wide enough to contain its longest entry and
+the overall width of the \Ie{array} or \Ie{tabular} is sufficient to contain
+all the columns. However, the \Ie{tabular*} and \Ie{tabularx} environments
+provide more control over the width through their \meta{width} argument.
 
-\begin{syntax}
-\cmd{\footref}\marg{label} \\
-\end{syntax}
-    On occasions it may be desireable to make more than one reference
-to the text of a footnote\index{footnote!reference}. This can be done by putting a \cmd{\label}
-in the footnote and then using \cmd{\footref} to refer to the label; this
-prints the footnote label. For example:
-\begin{lcode}
-...\footnote{... adults or babies.\label{fn:rabbits}}
-...
-... The footnote\footref{fn:rabbits} on \pref{fn:rabbits} ...
-\end{lcode}
-In this manual, the last line above prints:
-\begin{syntax}
-... The footnote\footref{fn:rabbits} on \pref{fn:rabbits} ... \\
-\end{syntax}
+\section{The preamble}
 
-    The parameters provided by the standard classes for controlling 
-footnotes are illustrated in \fref{fig:fn}.
+    You use the \meta{preamble} argument to the array and tabular 
+environments to specify the number of columns and how you want column
+entries to appear. The preamble consists of a sequence of options, which
+are listed in \tref{tab:tabpream}.
 
-\begin{figure}
+ \begin{table}
+\begin{adjustwidth}{-5mm}{-5mm}
+ %\begin{center}
 \centering
-\drawparameterstrue
-\setlayoutscale{0.4}
-\drawfootnote
-\caption{Footnote layout parameters for the standard classes}\label{fig:fn}
-\end{figure}
-
-\begin{syntax}
-\lnc{\footnotesep} \\
-\verb!\skip\footins! \\
-\end{syntax}
-The length \lnc{\footnotesep} controls the vertical spacing between footnotes\index{footnote}
-(and thanks notes),
-and is initialised by the class to give no extra spacing for a
-\cmd{\footnotesize} font. You can change the spacing by 
-\begin{lcode}
-\addtolength{\footnotesep}{...}
-\end{lcode}
-The length |\skip\footins| defines the vertical spacing between the
-bottom of the main text and the top of the first line of the first
-footnote\index{footnote}. Likewise this can be changed by 
-\begin{lcode}
-\addtolength{\skip\footins}{...}
-\end{lcode}
-The total vertical distance between the bottom of the main text and
-the baseline of the first line of the first footnote\index{footnote} is
-|\footnotesep + \skip\footins|.
+ \caption{The array and tabular preamble options.} \label{tab:tabpream}
+    \setlength{\extrarowheight}{1pt}
+    \begin{tabular}{cp{9cm}} \toprule
+ \texttt{l}             &  Left adjusted column. \\
+ \texttt{c}             &  Centered adjusted column. \\
+ \texttt{r}             &  Right adjusted column. \\
+ \texttt{p}\marg{width} &  Equivalent to \verb?\parbox[t]?\marg{width}. \\
+ \texttt{m}\marg{width} &  Defines a column of width \meta{width}.
+                           Every entry will be centered in proportion to
+                           the rest of the line. It is somewhat like
+                           \cmd{\parbox}\marg{width}. \\
+ \texttt{b}\marg{width} &  Coincides with \verb?\parbox[b]?\marg{width}. \\
+ \texttt{>}\marg{decl}  &  Can be used before an \texttt{l}, \texttt{r},
+                           \texttt{c}, \texttt{p}, \texttt{m} or a
+                           \texttt{b} option. It inserts \meta{decl}
+                           directly in front of the entry of the column.
+                           \\
+ \texttt{<}\marg{decl}  &  Can be used after an \texttt{l}, \texttt{r},
+                           \texttt{c}, \verb?p{..}?, \verb?m{..}? or a 
+                           \verb?b{..}?
+                           option.  It inserts \meta{decl} right
+                           after the entry of the column.  \\
+ \texttt{|}             &  Inserts a vertical line. The distance between
+                           two columns will be enlarged by the width of
+                           the line. \\
+ \texttt{@}\marg{decl}  &  Suppresses inter-column space and inserts
+                           \meta{decl} instead. \\
+ \texttt{!}\marg{decl}  &  Can be used anywhere and corresponds with the
+                           \texttt{|} option. The difference is that
+                           \meta{decl} is inserted instead of a
+                           vertical line, so this option doesn't
+                           suppress the normally inserted space between
+                           columns in contrast to \verb?@{...}?.\\
+ \texttt{D}\marg{ssep}\marg{osep}\marg{places} & Column entries aligned
+                           on a `decimal point' \\
+       \bottomrule
+    \end{tabular}
+% \end{center}
+\end{adjustwidth}
+ \end{table}
 
-\begin{syntax}
-\cmd{\footnoterule} \\
-\end{syntax}
- The \cmd{\footnoterule} macro is defined in the LaTeX kernel and
-redefined in the standard classes. An `\texttt{@}less' definition, which is slightly
-less efficient than that in the classes, is:
+    Examples of the options include:
+ \begin{itemize}
+    \item A flush left column with bold font can be specified
+          with \verb?>{\bfseries}l?.
+%% Companion, page 106.
+%\begin{egsource}{eg:tabcols}
 \begin{lcode}
-\renewcommand{\footnoterule}{%
-   \kern -3pt                   % call this kerna
-   \hrule height 0.4pt width 0.4\columnwidth
-   \kern 2.6pt                  % call this kernb
-}
+\begin{center}
+\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c} 
+                \toprule
+A   & B  & C \\ 
+100 & 10 & 1 \\ \bottomrule
+\end{tabular}
+\end{center}
 \end{lcode}
-This produces a horizontal rule from the left margin\index{margin} to 40\% of the
-\cmd{\columnwidth} with thickness 0.4pt. The rule must not take up any
-vertical space, which means that |kerna + kernb| must equal the thickness
-of the rule. The rule is located a distance |\skip\footins + kerna|
-below the bottom of the main text. So, to move the rule upwards, decrease
-the value of |kerna| and increase that of |kernb|, and the reverse to
-move the rule downwards.
-
-    This class provides some additional parameters but for a wider
-variety of footnote styles you may like to use the \Lpack{footmisc} 
-package~\cite{FOOTMISC}.
-    The additional class parameters have been chosen so as not to clash with
-the \Lpack{footmisc} package. Similar concepts apply to the
-\cmd{\thanks} command described in \Sref{sec:thanks} 
-starting on \pref{sec:thanks}.
-
-    The \cmd{\footnote} macro essentially does three things:
-\begin{itemize}
-\item Typesets a marker at the point where \cmd{\footnote} is called;
-\item Typesets a marker at the bottom of the page on which \cmd{\footnote}
-      is called;
-\item Following the marker at the bottom of the page, typesets the text 
-      of the footnote.
-\end{itemize}
+%\end{egsource}
+
+%\begin{egresult}[Different column styles in a \Pe{tabular}]{eg:tabcols}
+\begin{center}
+\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c} 
+                \toprule
+A   & B  & C \\ 
+100 & 10 & 1 \\ \bottomrule
+\end{tabular}
+\end{center}
+%\end{egresult}
+
+    \item
+       In columns which have been generated with \texttt{p}, \texttt{m}
+       or \texttt{b}, the default value of \lnc{\parindent} is
+       0pt.
+
+%Companion, page 106.
 
-\begin{syntax}
-\cmd{\@makefnmark} \\
-\end{syntax}
-The \cmd{\footnote} macro calls the kernel command \cmd{\@makefnmark} to
-typeset the footnote marker at the point where \cmd{\footnote} is called
-(the value of the marker is kept in the macro \cmd{\@thefnmark}). The default
-definition typesets the mark as a superscript and is essentially
-\begin{lcode}
-\def\@makefnmark{\hbox{\textsuperscript{\@thefnmark}}}
-\end{lcode}
-To get, say, the marker to be typeset on the baseline in the normal font
-and enclosed in brackets ---
 \begin{lcode}
-\renewcommand*{\@makefnmark}{ [\@thefnmark]}
+\begin{center}
+\begin{tabular}{m{1cm}m{1cm}m{1cm}} \toprule
+1 1 1 1 1 1 1 1 1 1 1 1 &
+2 2 2 2 2 2 2 2         &
+3 3 3 3                 \\ \bottomrule
+\end{tabular}
+\end{center}
 \end{lcode}
 
-\begin{syntax}
-\cmd{\footfootmark} \\
-\lnc{\footmarkwidth} \cmd{\footmarkstyle}\marg{arg} \\
-\end{syntax}
-The class macro for typesetting the marker at the foot of the page is
-\cmd{\footfootmark}. The mark is set in a box of width
-\lnc{\footmarkwidth}. If this is negative, the mark is outdented
-into the margin, if zero the mark is flush left, and when positive
-the mark is indented. The appearance of the mark is contolled by
-\cmd{\footmarkstyle}. The default specification is
+\begin{center}
+\begin{tabular}{m{1cm}m{1cm}m{1cm}} \toprule
+1 1 1 1 1 1 1 1 1 1 1 1 &
+2 2 2 2 2 2 2 2         &
+3 3 3 3                 \\ \bottomrule
+\end{tabular}
+\end{center}
+
+       The \lnc{\parindent} for a particular column can be changed with, 
+for example
 \begin{lcode}
-\footmarkstyle{\textsuperscript{#1}}
+>{\setlength{\parindent}{1cm}}p
 \end{lcode}
-where the |#1| indicates the position of \cmd{\@thefnmark} in the style.
-The default results in the mark being set as a superscript.
-For example, to have the marker set on the baseline 
-and followed by a right parenthesis, do
+
+%%Companion, page 107.
+
 \begin{lcode}
-\footmarkstyle{#1) }
+\begin{center}
+\begin{tabular}{>{\setlength{\parindent}{5mm}}p{2cm} p{2cm}} \toprule
+1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 &
+1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \\ \bottomrule
+\end{tabular}
+\end{center}
 \end{lcode}
 
-\begin{syntax}
-\lnc{\footmarksep} \lnc{\footparindent} \\
-\end{syntax}
-The mark is typeset in a box of width \lnc{\footmarkwidth} and this is
-then followed by the text of the footnote. Second and later lines of the
-text are offset by the length \lnc{\footmarksep} from the end of the box.
-The first line of a paragraph within a footnote is indented by
-\lnc{\footparindent}. 
+\begin{center}
+\begin{tabular}{>{\setlength{\parindent}{5mm}}p{2cm} p{2cm}} \toprule
+1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 &
+1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 7 8 9 0 \\ \bottomrule
+\end{tabular}
+\end{center}
+
+    \item
+       The specification \verb?>{$}c<{$}? generates a column in math
+       mode in a \Ie{tabular} environment. When used in an \Ie{array}
+       environment the column is in LR mode (because the additional
+       \$'s cancel the existing \$'s).
+    \item
+       Using \verb?c!{\hspace{1cm}}c? you get space between two
+       columns which is enlarged by one centimeter, while
+       \verb?c@\hspace{1cm}}c? gives you exactly one centimeter
+       space between two columns.
+\item Elsewhere reasons are given why you should not use vertical
+      lines (e.g., the \texttt{|} option) in tables. Any examples
+      that use vertical lines are for illustrative purposes only where
+      it is advantageous to denote column boundaries, for example
+      to show different spacing effects.
+ \end{itemize}
 
+ \subsection{D column specifiers} \label{sec:dcolumns}
+
+    In financial tables dealing with pounds
+and pence or dollars and cents, column entries
+should be aligned on the separator between the numbers. The \texttt{D}
+column specifier is provided for columns which are to be aligned on 
+a `decimal point'. The specifier takes three arguments.
 \begin{syntax}
-\cmd{\foottextfont} \\
+ \texttt{D}\marg{ssep}\marg{osep}\marg{places} \\
 \end{syntax}
-The text in the footnote is typeset using the \cmd{\foottextfont} font.
-The default is \cmd{\footnotesize}.
+\begin{itemize}
+\item[\meta{ssep}] is the single character which is used as the
+ separator in the source \texttt{.tex} file. Thus it will usually 
+be `\texttt{.}' or  `\texttt{,}'.
 
-    Altogether, the class specifies
-\begin{lcode}
-\footmarkstyle{\textsuperscript{#1}}
-\setlength{\footmarkwidth}{1.8em}
-\setlength{\footmarksep}{-1.8em}
-\setlength{\footparindent}{1em}
-\newcommand{\foottextfont}{\footnotesize}
-\end{lcode}
-to replicate the standard footnote layout. 
+\item[\meta{osep}] is the separator in the output, this may
+ be the same as the first argument, but may be any math-mode
+ expression, such as \cmd{\cdot}. A \texttt{D} column
+ always uses math mode for the digits as well as the separator.
 
-    You might like to try the
-following combinations of \lnc{\footmarkwidth} and \lnc{\footmarksep}
-to see if you prefer the layout produced by one of them to the standard 
-layout (which is produced by the first pairing in the list below):
-\begin{lcode}
-\setlength{\footmarkwidth}{1.8em}  \setlength{\footmarksep}{-1.8em}
-\setlength{\footmarkwidth}{1.8em}  \setlength{\footmarksep}{0em}
-\setlength{\footmarkwidth}{0em}    \setlength{\footmarksep}{0em}
-\setlength{\footmarkwidth}{-1.8em} \setlength{\footmarksep}{1.8em}
-\setlength{\footmarkwidth}{0em} \setlength{\footmarksep}{1.8em} \footmarkstyle{#1)\hfill}
-\end{lcode}
-% width = 1.8, sep = 0 -> indented block para & hung number
-% width = sep = 0 -> block paragraph at margin
-% width = -1.8, sep = -width -> mark in margin, block para at margin
+\item[\meta{places}] should be the maximum number of decimal places
+ in the column (but see below for more on this). 
+If this is negative, any number of decimal places can
+ be used in the column, and all entries will be centred on 
+ (the leading edge of) the 
+ separator. Note that this can cause a column to be too wide; for instance, 
+compare  the first two columns in the example below. 
+\end{itemize}
 
+    Here are some example specifications which, for convenience, employ
+the \cmd{\newcolumntype} macro described later.
 
-\begin{syntax}
-\cmd{\makefootmarkhook} \\
-\end{syntax}
-Just before a footnote is typeset the macro \cmd{\makefootmarkhook} is
-called, which by default does nothing, but you can renew it to do something.
-For example:
 \begin{lcode}
-\renewcommand{\makefootmarkhook}{\raggedright}
+\newcolumntype{d}[1]{D{.}{\cdot}{#1}}
 \end{lcode}
-will cause footnotes to be typeset raggedright.
+    This defines \texttt{d} to be a column specifier taking a single argument 
+specifying the number of decimal places, 
+and the \file{.tex} file should use `\texttt{.}' as the separator, with
+\cmd{\cdot} ($\cdot$) being used in the output.
 
-    Any footnotes after this point will be set according to:
 \begin{lcode}
-\setlength{\footmarkwidth}{-1.0em}
-\setlength{\footmarksep}{-\footmarkwidth}
-\footmarkstyle{#1}
+\newcolumntype{.}{D{.}{.}{-1}}
 \end{lcode}
-\setlength{\footmarkwidth}{-1.0em}
-\setlength{\footmarksep}{-\footmarkwidth}
-\footmarkstyle{#1}
-
-
+The result of this is that `\texttt{.}' specifies a column of entries to 
+be centered on the~`$.$'.
 
-\begin{syntax}
-\cmd{\multfootsep} \\
-\end{syntax}
-In the standard classes if two or more footnotes are applied 
-sequentially\footnote{One footnote}\footnote{Immediately followed by another}
-then the markers in the text are just run together. The class, like the
-\Lpack{footmisc}~\cite{FOOTMISC} and \Lpack{ledmac}~\cite{LEDMAC} packages, 
-inserts a separator
-between the marks. In the class the macro \cmd{\multfootsep} is used as
-the separator. Its default definition is:
 \begin{lcode}
-\newcommand*{\multfootsep}{\textsuperscript{\normalfont,}}
+\newcolumntype{,}{D{,}{,}{2}}
 \end{lcode}
+And the result of this is that `\texttt{,}' specifies a column of 
+entries with at most two decimal places after a~`$,$'.
 
-\begin{syntax}
-\cmd{\feetabovefloat} \\
-\cmd{\feetbelowfloat} \\
-\end{syntax}
-In the standard classes, footnotes on a page that has a float at the
-bottom are typeset before the float. I think that this looks
-peculiar. Following the \cmd{\feetbelowfloat} declaration footnotes will be
-typeset at the bottom of the page below any bottom floats; they will also
-be typeset at the bottom of \cmd{\raggedbottom} pages as opposed to being
-put just after the bottom line of text. The standard positioning is
-used following the \cmd{\feetabovefloat} declaration, which is the default.
-
-\begin{syntax}
-\cmd{\plainfootnotes} \\
-\cmd{\twocolumnfootnotes} \\
-\cmd{\threecolumnfootnotes} \\
-\cmd{\paragraphfootnotes} \\
-\end{syntax}
-Normally, each footnote starts a new paragraph. The class provides three
-other styles, making four in all. Following the \cmd{\twocolumnfootnotes}
-declaration footnotes will be typeset in two columns, and similarly
-they are typeset in three columns after the \cmd{\threecolumnfootnotes}
-declaration. Footnotes are run together as a single paragraph after the
-\cmd{\paragraphfootnotes} declaration. The default style is used after
-the \cmd{\plainfootnotes} declaration. 
+ \newcolumntype{d}[1]{D{.}{\cdot}{#1}}
+ \newcolumntype{.}{D{.}{.}{-1}}
+ \newcolumntype{,}{D{,}{,}{2}}
 
-   The style can be changed at any 
-time but there may be odd effects if the change is made in the middle of
-a page when there are footnotes before and after the declaration. You may
-find it interesting to try changing styles in an article type document 
-that uses \cmd{\maketitle} and \cmd{\thanks}, and some footnotes on the 
-page with the title:
+ The following table is typeset from this code:
 \begin{lcode}
-\title{...\thanks{...}}
-\author{...\thanks{...}...}
-...
-\begin{document}
-\paragraphfootnotes
-\maketitle
-\plainfootnotes
-...
+\begin{center}
+ \begin{tabular}{|d{-1}|d{2}|.|,|}
+ 1.2   & 1.2   &1.2    &1,2    \\
+ 1.23  & 1.23  &12.5   &300,2  \\
+ 1121.2& 1121.2&861.20 &674,29 \\
+ 184   & 184   &10     &69     \\
+ .4    & .4    &       &,4     \\
+       &       &.4     &
+ \end{tabular}
+ \end{center}
 \end{lcode}
 
-\begin{syntax}
-\cmd{\newfootnoteseries}\marg{series} \\
-\cmd{\plainfootstyle}\marg{series} \\
-\cmd{\twocolumnfootstyle}\marg{series} \\
-\cmd{\threecolumnfootstyle}\marg{series} \\
-\cmd{\paragraphfootstyle}\marg{series} \\
-\end{syntax}
-
-    The class provides for additional series of footnotes; perhaps the
-normal footnotes are required, flagged with arabic numerals, and another 
-kind of footnote flagged with roman numerals. A new footnote series is
-created by the \cmd{\newfootseries} macro, where \meta{series} is an
-alphabetic identifier for the series. This is most conveniently a 
-single (upper case) letter, for example \texttt{P}. 
-
-    Calling, say, \verb?\newfootnoteseries{Q}? creates a set of macros
-equivalent to those for the normal \cmd{\footnote} but with the \meta{series}
-appended. These include \cs{footnoteQ}, \cs{footnotemarkQ},
-\cs{footnotetextQ} and so on. These are used just like the normal
-\cmd{\footnote} and companions.
+ \begin{center}
+ \begin{tabular}{|d{-1}|d{2}|.|,|}
+ 1.2   & 1.2   &1.2    &1,2    \\
+ 1.23  & 1.23  &12.5   &300,2  \\
+ 1121.2& 1121.2&861.20 &674,29 \\
+ 184   & 184   &10     &69     \\
+ .4    & .4    &       &,4     \\
+       &       &.4     &
+ \end{tabular}
+ \end{center}
 
-    By default, a series is set to typeset using the normal style
-of a paragraph per note. The series' style can be changed by using one
-of the \cs{...footstyle} commands.
+ Note that the first column, which had a negative \meta{places}
+ argument is wider than the second column, so that the decimal point
+ appears in the middle of the column.
 
-    For example, to have a `P' (for paragraph) series using roman numerals 
-as markers which, in the main text are superscript with a closing parenthesis
-and at the foot are on the baseline followed by an endash, and the text is
-set in italics at the normal footnote size:
+ The third
+ \meta{places} argument may specify \emph{both} the number of
+ digits to the left and to the right of the decimal place. The third
+ column in the next table below is set with \verb?D{.}{.}{5.1}? and in the
+ second  table,  \verb?D{.}{.}{1.1}?, to specify
+ `five places to the left and one to the right' and `one place to the
+ left and one to the right' respectively.  (You may use `,' or other
+ characters, not necessarily `.' in this argument.) The column of figures
+ is then positioned such that a number with the specified numbers of
+ digits is centred in the column.
+ 
+     Be careful if you have table headings inserted, say, with 
 \begin{lcode}
-\newfootnoteseries{P}
-\paragraphfootstyle{P}
-\renewcommand{\thefootnoteP}{\roman{footnoteP}}
-\footmarkstyleP{#1--}
-\renewcommand{\@makefnmarkS}{\hbox{\textsuperscript{\@thefnmarkP)}}}
-\renewcommand{\foottextfont}{\itshape\footnotesize}
+\multicolumn{1}{c}{...}
 \end{lcode}
-This can then be used like:
+ to over-ride the \texttt{D} column type, as the overall result may not look
+quite as good as you might expect. In the next pair of tabulars the first
+column is set with
 \begin{lcode}
-.... this sentence\footnoteP{A `p' footnote\label{fnp}} 
-includes footnote~\footrefP{fnp}.
+D{.}{.}{-1}
 \end{lcode}
-In a minipage a different counter (\texttt{mpfootn...}) is used for a footnote 
-than in the main text (\texttt{footn...}).
-By default its value is a letter. To change it to, say, a numeral for the
-`P' series, do:
+to produce a column centered on the `.', and the second column is set with
 \begin{lcode}
-\renewcommand{\thempfootnoteP}{\arabic{mpfootnoteP}}
+D{.}{.}{1}
 \end{lcode}
+to produce a right aligned column.
 
-   The \cmd{\newfootnoteseries} macro does not create series versions
-of the footnote-related length commands, such as \lnc{\footmarkwidth}
-and \lnc{\footmarksep}, nor does it create versions of \cmd{\footnoterule}.
+%\begin{lcode}
+\begin{egsource}{eg:tabwidehead}
+\begin{center}\small
+\begin{tabular}[t]{|D..{-1}|D..{1}|D..{5.1}|}
+\multicolumn{1}{|c|}{head} &
+\multicolumn{1}{c|}{head}  &
+\multicolumn{1}{c|}{head}    \\[3pt]
+1       & 2       & 3        \\
+1.2     & 1.2     & 1.2      \\
+11212.2 & 11212.2 & 11212.2  \\
+.4      & .4      & .4         
+\end{tabular}
+\hfill
+\begin{tabular}[t]{|D..{-1}|D..{1}|D..{1.1}|}
+\multicolumn{1}{|c|}{wide heading} &
+\multicolumn{1}{c|}{wide heading} &
+\multicolumn{1}{c|}{wide heading} \\[3pt]
+1       & 2       & 3             \\
+1.2     & 1.2     & 1.2           \\
+.4      & .4      & .4  
+\end{tabular}
+\end{center}
+\end{egsource}
+%\end{lcode}
 
-   At the foot of the page footnotes are grouped according to their series;
-all ordinary footnotes are typeset, then all the first series footnotes 
-(if any), then the second series, and so on. The ordering corresponds to
-the order of \cmd{\newfootnoteseries} commands.
+\begin{egresultplain}[Tabular with narrow and wide headings]{eg:tabwidehead}
+ \begin{center}\small
+ \begin{tabular}[t]{|D..{-1}|D..{1}|D..{5.1}|}
+\multicolumn{1}{|c|}{head}&
+\multicolumn{1}{c|}{head}&
+\multicolumn{1}{c|}{head}\\[3pt]
+1       & 2       & 3        \\
+1.2     & 1.2     &1.2 \\
+11212.2 & 11212.2 &11212.2  \\
+ .4     & .4      &.4         
+ \end{tabular}
+ \hfill
+ \begin{tabular}[t]{|D..{-1}|D..{1}|D..{1.1}|}
+\multicolumn{1}{|c|}{wide heading}&
+\multicolumn{1}{c|}{wide heading}&
+\multicolumn{1}{c|}{wide heading}\\[3pt]
+1       & 2       & 3        \\
+1.2     & 1.2     & 1.2 \\
+.4      & .4      & .4  
+ \end{tabular}
+ \end{center}
+\end{egresultplain}
 
-\begin{syntax}
-\cmd{\footfudgefiddle} \\
-\end{syntax}
-For paragraphed footnotes \tx{} has to estimate the amount of space they
-will take. Unfortunately this \emph{is} an estimate and if it is an
-underestimate then the footnotes will flow too low on the page, for example
-below the page number. Increasing \cmd{\footfudgefiddle} from its default
-vaue of 64, causes \tx{} to allot more space. For instance
+ In both of these tables the first column is set with \verb?D{.}{.}{-1}?
+ to produce a column centered on the `\texttt{.}', and the second column is
+ set with \verb?D{.}{.}{1}? to produce a right aligned column.
+
+ The centered (first) column produces columns that are wider than necessary
+ to fit in the numbers under a heading as it has to ensure that the
+ decimal point is centered. The right aligned (second) column does not have
+ this drawback, but under a wide heading a column of small right
+ aligned figures is somewhat disconcerting.
+
+ The notation for the \meta{places} argument also enables columns that 
+are centred on the mid-point
+ of the separator, rather than its leading edge; for example 
 \begin{lcode}
-\renewcommand{\footfufgefiddle}{70}
+D{+}{\,\pm\,}{3,3}
 \end{lcode}
-will at least go some way to curing the problem. You will probably have
-to do some experimentation to get a good value.
+ will give a symmetric layout of up to three
+ digits on either side of a $\pm$ sign.
+
+ \subsection{Defining new column specifiers}
+
+     You can easily type
+ \begin{quote}
+   \verb?>{?\meta{some declarations}\verb?}{c}<{?\meta{some more
+   declarations}\verb?}?
+ \end{quote}
+when you have a one-off column in a table, but it gets tedious
+ if you often use columns of this form. 
+The \cmd{\newcolumntype} lets you define a new column option like, say
+ \begin{quote}
+   \verb?\newcolumntype{x}{>{?\meta{some declarations}\verb?}{c}<{?\meta{some
+   more declarations}\verb?}}?\hspace*{-3cm} 
+ \end{quote}
+and you can then use the \texttt{x} column specifier in the preamble wherever
+you want a column of this kind.
 
 \begin{syntax}
-\cmd{\fnsymbol}\marg{counter} \\
-\cmd{\@fnsymbol}\marg{num} \\
+\cmd{\newcolumntype}\marg{char}\oarg{nargs}\marg{spec} \\
 \end{syntax}
-The \cmd{\fnsymbol} macro typesets the representation of the counter \meta{counter}
-like a footnote symbol. Internally it uses the kernel \cmd{\@fnsymbol} macro
-which converts a positive integer \meta{num} to a symbol. If you are not fond of
-the standard ordering of the footnote symbols, this is the macro to change. Its
-original definition is:
-\begin{lcode}
-\def\@fnsymbol#1{\ensuremath{\ifcase#1\or *\or \dagger\or \ddagger\or
-  \mathsection\or \mathparagraph\or \|\or **\or \dagger\dagger
-  \or \ddagger\ddagger \else\@ctrerr\fi}}
-\end{lcode}
-This, as shown by \verb?\@fnsymbol{1},...\@fnsymbol{9}? produces the series: \makeatletter
-\@fnsymbol{1},
-\@fnsymbol{2},
-\@fnsymbol{3},
-\@fnsymbol{4},
-\@fnsymbol{5},
-\@fnsymbol{6},
-\@fnsymbol{7},
-\@fnsymbol{8}, and
-\@fnsymbol{9}.
-%\@fnsymbol{10}  % out of bounds
-\makeatother 
+\glossary(newcolumntype)
+  {\cs{newcolumntype}\marg{char}\oarg{nargs}\marg{spec}}%
+  {Creates a new column type \meta{char} according to \meta{spec} (which has
+   \meta{nargs} number of arguments).}
+The \meta{char} argument is the character that identifies the option 
+and \meta{spec}
+is its specification in terms of the regular preamble options.
+The \cmd{\newcolumntype} command is similar to \cmd{\newcommand} --- 
+\meta{spec} itself can take arguments with the optional \meta{nargs}
+argument declaring their number. 
 
-\makeatletter
-\let\m@mold@fnsymbol\@fnsymbol
-\renewcommand{\@fnsymbol}[1]{\ensuremath{%
-  \ifcase#1\or *\or \dagger\or \ddagger\or
-  \mathsection\or \|\or \mathparagraph\or **\or \dagger\dagger
-  \or \ddagger\ddagger \else\@ctrerr\fi}}
-\makeatother
-    Robert Bringhurst quotes 
-the following as the traditional ordering (at least up
-to \makeatletter\@fnsymbol{6}\makeatother): \makeatletter
-\@fnsymbol{1},
-\@fnsymbol{2},
-\@fnsymbol{3},
-\@fnsymbol{4},
-\@fnsymbol{5},
-\@fnsymbol{6},
-\@fnsymbol{7},
-\@fnsymbol{8}, and
-\@fnsymbol{9}.
-\makeatother 
-You can obtain this sequence by redefining \cmd{\@fnsymbol} as:
+    For example, it is commonly required to have both math-mode and text 
+columns in the same alignment. Defining:
 \begin{lcode}
-\renewcommand{\@fnsymbol}[1]{\ensuremath{%
-  \ifcase#1\or *\or \dagger\or \ddagger\or
-  \mathsection\or \|\or \mathparagraph\or **\or \dagger\dagger
-  \or \ddagger\ddagger \else\@ctrerr\fi}}
+\newcolumntype{C}{>{$}c<{$}}
+\newcolumntype{L}{>{$}l<{$}}
+\newcolumntype{R}{>{$}r<{$}}
 \end{lcode}
-not forgetting judicious use of \cmd{\makeatletter} and \cmd{\makeatother}
-if you do this in the preamble\index{preamble}. Other authorities or publishers
-may prefer other sequences and symbols.
-\makeatletter\let\@fnsymbol\m@mold@fnsymbol\makeatother
+ Then \texttt{C} can be used to get centred text in an
+\Ie{array}, or centred math-mode in a \Ie{tabular}. Similarly
+\texttt{L} and \texttt{R} are for left- and right-aligned columns.
 
+ The \meta{spec} in a \cmd{\newcolumntype} command may refer to any of
+ the primitive column specifiers (see table \ref{tab:tabpream} on page
+ \pageref{tab:tabpream}), or to any new letters defined in other
+\cmd{\newcolumntype} commands.
 
+\begin{syntax}
+\cmd{\showcols} \\
+\end{syntax}
+\glossary(showcols)%
+  {\cs{showcols}}%
+  {Writes a list of all \cs{newcolumntype}s to the terminal and log file.}
+   A list of all the currently active
+\cmd{\newcolumntype} definitions is sent to the terminal and log file if
+ the \cmd{\showcols} command is given.
 
+\subsection{Surprises}
 
+ \begin{itemize}
+ \item A preamble of the form \verb?{wx*{0}{abc}yz}? is treated as \verb?{wxyz}?
 
+ \item An incorrect positional argument, such as \texttt{[Q]}, 
+ is treated as \texttt{[t]}.
 
+ \item A preamble such as \verb?{cc*{2}}? with an error in
+ a $*$-form will generate an error message 
+ that is not particularly helpful.
 
-\section{Verbatim footnotes}
-    
-    The macro \cmd{\verbfootnote} can typeset a footnote that includes
-some verbatim text.
+ \item Error messages generated when parsing the column specification
+   refer to the preamble argument \emph{after} it has been re-written
+   by the \cmd{\newcolumntype} system, not to the preamble entered by the
+   user.  
 
-\begin{syntax}
-\cmd{\verbfootnote}\oarg{num}\marg{text} \\
-\end{syntax}
+ \item Repeated \texttt{<} or \texttt{>} constructions
+ are allowed.  \texttt{>}\marg{decs1}\texttt{>}\marg{decs2}
+ is treated the same as \texttt{>}\marg{decs2}\marg{decs1}.
 
-    The next two paragraph are typeset by this code:
-\begin{lcode}
-    Below, footnote\footref{fn1} is a \cmd{\footnote} while 
-footnote~\ref{fn2} is a \cmd{\verbfootnote}.
+   The treatment of multiple \texttt{<} or \texttt{>}
+declarations may seem strange. Using the obvious ordering
+of \texttt{>}\marg{decs1}\marg{decs2} has the disadvantage
+of not allowing the settings of a  \cmd{\newcolumntype} 
+defined using these declarations to be overriden.
 
-    The \cmd{\verbfootnote} command should 
-appear\footnote{There may be some problems if color is 
-                used.\label{fn1}}
-to give identical results as the normal \cmd{\footnote}, 
-but it can include some verbatim 
-text\verbfootnote{The \verb?\footnote? macro, like all others 
-                  except for \verb?\verbfootnote?, can not 
-                  contain verbatim text in its argument.\label{fn2}}
-in the \meta{text} argument.
-\end{lcode}
+ \item The \cmd{\extracolsep} command may be used in \texttt{@}-expressions 
+ as in standard \ltx, and also in \texttt{!}-expressions.
 
-    Below, footnote\footref{fn1} is a \cmd{\footnote} while 
-footnote~\ref{fn2} is a \cmd{\verbfootnote}.
+   The use of \cmd{\extracolsep} is subject to the following
+   two restrictions.  There must be at most one \cmd{\extracolsep}
+   command per \texttt{@}, or \texttt{!} expression and the command must be
+   directly entered into the \texttt{@} expression, not as part of a macro
+   definition. Thus
+\begin{lcode}
+\newcommand{\ef}{\extracolsep{\fill}} ... @{\ef}
+\end{lcode}
+ does not work. However you can use
+   something like
+\begin{lcode}
+\newcolumntype{e}{@{\extracolsep{\fill}}
+\end{lcode}
+instead.
 
-    The \cmd{\verbfootnote} command should 
-appear\footnote{There may be some problems if color is 
-                used.\label{fn1}}
-to give identical results as the normal \cmd{\footnote}, 
-but it can include some verbatim 
-text\verbfootnote{The \verb?\footnote? macro, like all others 
-                  except for \verb?\verbfootnote?, can not 
-                  contain verbatim text in its argument.\label{fn2}}
-in the \meta{text} argument.
+ \item As noted by the \ltx\ book~\cite{LAMPORT94}, a 
+   \cmd{\multicolumn}, with the exception of the first column,
+   consists of the entry and the \emph{following} inter-column
+   material. This means that in a tabular with the preamble
+   \verb?|l|l|l|l|? input such as \verb?\multicolumn{2}{|c|}? in
+   anything other than the first column is incorrect.
 
+   In the standard array/tabular implementation this error is not 
+   noticeable as a \verb?|? takes no horizontal space. But in the class the
+   vertical lines take up their natural width and you will see two lines if
+   two are specified --- another reason to avoid using \verb?|?.
 
+ \end{itemize}
 
-\section{Sidebars}
+\section{The array environment}
 
-    It appears that the \cmd{\sidebar} command, which was originally noted
-as being experimental, has been used successfully for a variety of tasks.
+    Mathematical arrays are usually produced using the \Ie{array} environment.
 
 \begin{syntax}
-\cmd{\sidebar}\marg{text} \\
-\cmd{\sidebarfont} \\
+\cmd{\[} \senv{array}\oarg{pos}\marg{preamble} rows \eenv{array} \cmd{\]} \\
+\cmd{\[} \senv{array}\oarg{pos}\meta{left}\marg{preamble}\meta{right} rows \eenv{array} \cmd{\]} \\
 \end{syntax}
-The \cmd{\sidebar} command is like the \cmd{\marginpar} command in that
-it typesets its \meta{text} argument, using the font specified
-by \cmd{\sidebarfont}, in the margin. Unlike |\marginpar|,
-the \meta{text} will start near the top of the page and may continue onto
-later pages if it is too long to go on a single page.
-
-   The default definition of \cmd{\sidebarfont} is 
+    Math formula are usually centered in the columns, but a column of 
+numbers often looks best flush right, or aligned on some distinctive
+feature. In the latter case the \texttt{D} column scheme is very handy.
 \begin{lcode}
-\newcommand{\sidebarfont}{\normalfont}
+\[ \begin{array}{lcr}
+   a +b +c & d - e - f & 123 \\
+   g-h     &  j k      & 45 \\
+    l      &   m       & 6
+  \end{array} \]
 \end{lcode}
 
+\[ \begin{array}{lcr}
+   a +b +c & d - e - f & 123 \\
+   g-h     &  j k      & 45 \\
+    l      &   m       & 6
+  \end{array} \]
 
-\begin{syntax}
-\cmd{\sidebarform} \\
-\end{syntax}
-
-    Sidebars are normally narrow so text is set ragged right. More
-accurately, the text is set according to \cmd{\sidebarform} which is defined
-as:
+    Arrays are often enclosed in brackets or vertical lines or brackets 
+or other symbols to
+denote math constructs like matrices. The delimeters are often large and have
+to be indicated using \cmd{\left} and \cmd{\right} commands.
 \begin{lcode}
-\newcommand{\sidebarform}{\rightskip=\z@ \@plus 2em}
+\[ \left[ \begin{array}{cc}
+          x_{1} & x_{2} \\
+          x_{3} & x_{4}
+          \end{array} \right] \]
 \end{lcode}
-which is ragged right but with less raggedness than \cmd{\raggedright}
-would allow. As usual, you can change \cmd{\sidebarform}, for example:
+
+\[ \left[ \begin{array}{cc}
+          x_{1} & x_{2} \\
+          x_{3} & x_{4}
+          \end{array} \right] \]
+
+
+    The class's \Ie{array} environment is an extension of the standard 
+environment in that it provides a system of implicit \cmd{\left} \cmd{\right} 
+pairs. If you want an array surrounded by parentheses, you can enter:
 \begin{lcode}
-\renewcommand{\sidebarform}{}            % justified text
+ \[  \begin{array}({cc})a&b\\c&d\end{array}   \]
 \end{lcode}
 
-    You are likely to run into problems if the \cmd{\sidebar} command comes
-near a pagebreak, or if the sidebar text gets typeset alongside main
-text that has non-uniform line spacing (e.g., around a \cmd{\section}).
-Also, the contents of sidebars may not be typeset if they are too near
-to the end of the document.
-
-\begin{syntax}
-\lnc{\sidebarwidth} \\
-\lnc{\sidebarhsep} \\
-\lnc{\sidebarvsep} \\
-\end{syntax}
-The \meta{text} of a \cmd{\sidebar} is typeset in a column of width
-\lnc{\sidebarwidth} and there will be a horizontal gap of length 
-\lnc{\sidebarhsep} between the typeblock and the \meta{text}. The
-length \lnc{\sidebarvsep} is the vertical gap between sidebars that fall
-on the same page.
+ \[  \begin{array}({cc})a&b\\c&d\end{array}   \]
 
-\begin{syntax}
-\cmd{\setsidebarheight}\marg{length} \\
-\end{syntax}
-The macro \cmd{\setsidebarheight} can be used to specify the height
-of a sidebar. The \meta{length} argument should be equivalent to
-an integral number of lines. For example:
+Or, a litle more complex
 \begin{lcode}
-\setsidebarheight{15\onelineskip}
+\[ \begin{array}({c})
+     \begin{array}|{cc}|
+       x_{1} & x_{2} \\
+       x_{3} & x_{4}
+     \end{array} \\
+         y \\
+         z
+   \end{array} \]
 \end{lcode}
 
+\[ \begin{array}({c})
+     \begin{array}|{cc}|
+       x_{1} & x_{2} \\
+       x_{3} & x_{4}
+     \end{array} \\
+         y \\
+         z
+   \end{array} \]
 
-Currently the alignment of the text in a sidebar with the main text
-is not particularly good and you may want to do some 
-experimentation (possibly through a combination of
-\lnc{sidebarvsep} and \cmd{\setsidebarheight}) to make it 
-better.\footnote{If you do improve the alignment, 
-please let me know how you did it.}
+    And you can do things like this:
+\begin{lcode}
+\[ a = {\begin{array}|{*{20}{c}}|
+        x-\lambda & 1         & 0 \\
+        0         & x-\lambda & 1 \\
+        0         &           & x-\lambda \\
+        \end{array}
+       }^{2} \]
+\end{lcode}
 
-\section{Side notes}
+\[ a = {\begin{array}|{*{20}{c}}|
+        x-\lambda & 1         & 0 \\
+        0         & x-\lambda & 1 \\
+        0         &           & x-\lambda \\
+        \end{array}
+       }^{2} \]
 
-    The vertical position of side notes specified via \cmd{\marginpar}
-is flexible so that adjacent notes are prevented from overlapping.
 
-\begin{syntax}
-\cmd{\sidepar}\oarg{left}\marg{right} \\
-\lnc{\sideparvshift} \\
-\end{syntax}
 
-    The \cmd{\sidepar} macro is similar to \cmd{\marginpar} except that
-it produces side notes that do not float --- they may overlap. The same
-spacing is used for both \cmd{\marginpar} and \cmd{\sidepar}, namely
-the lengths \lnc{\marginparsep} and \lnc{\marginparwidth}. The length
-\lnc{\sideparvshift} can be used to make vertical adjustments to the
-position of \cmd{\sidepar} notes. By default this is set to a value
-of -2.08ex which seems to be the magical length that aligns the top of
-the note with the text line.
+ As another example, a construct equivalent to plain \tx's \cmd{\cases} 
+could be defined by:\\
+\begin{lcode}
+ \[  f(x)=\begin{array}\{{lL}.
+           0         & if $x=0$\\
+           \sin(x)/x & otherwise
+           \end{array}  \]
+\end{lcode}
 
-    By default the \meta{right} argument is put in the right margin. When
-the \Lopt{twoside} option is used the \meta{right} argument is put into
-the left margin on the verso (even numbered) pages; however, for these pages
-the optional \meta{left} argument is used instead if it is present. For
-two column text the relevent argument is put into the `outer' margin with 
-respect to the column.
+ \newcolumntype{L}{>{$}l<{$}}
+ \[  f(x)=\begin{array}\{{lL}.
+           0         & if $x=0$\\
+           \sin(x)/x & otherwise
+           \end{array}  \]
 
-\begin{syntax}
-\cmd{\sideparswitchtrue} \cmd{\sideparswitchfalse} \\
-\cmd{\reversesidepartrue} \cmd{\reversesideparfalse} \\
-\cmd{\parnopar} \\
-\end{syntax}
+ Here \texttt{L} denotes a column of left aligned L-R text, as described
+earlier.
+ Note that as the delimiters must always be used in pairs, the  `\texttt{.}'
+ must be used to denote a  `null delimiter'.
 
-    The default placement can be changed by judicious use of the
-\cs{reversidepar*} and \cs{sideparswitch*} declarations. For two sided
-documents the default is \cmd{\sideparswitchtrue}, which specifies that
-notes should be put into the outer margins; in one sided documents
-the default is \cmd{\sideparswitchfalse} which specifies that notes
-should always be put into the right hand margin. Following the
-declaration \cmd{\reversesidepartrue} notes are put into opposite margin
-than that described above 
-(the default declaration is \cmd{\reversesideparfalse}).
-
-    When LaTeX is deciding where to place the side notes it checks whether
-it is on an odd or even page and sometimes TeX doesn't realise that it has just
-moved onto the next page. Effectively TeX typesets paragraph by paragraph 
-(including any side notes) and at the end of each paragraph sees if there
-should have been a page break in the middle of the paragraph. If there was
-it outputs the first part of the paragraph, inserts the page break, and retains
-the second part of the paragraph, without retypesetting it, for eventual
-output at the top of the new page. This means that side notes for any given
-paragraph are in the same margin, either left or right. A side note at the
-end of a paragraph may then end up in the wrong margin. The macro 
-\cmd{\parnopar} forces a new paragraph but without appearing to (the first
-line in the following paragraph follows immediately after the last element
-in the prior paragraph with no line break). You can use \cmd{\parnopar}
-to make TeX to do its page break calculation when you want it to, by splitting
-what appears to be one paragraph into two paragraphs.
-
-    Bastiaan Veelo has kindly provided example code for another
-form of a side note, as follows.
+ This feature is especially useful if the \verb?[t]? or \verb?[b]?
+ arguments are also used. In these cases the result is not equivalent
+ to surrounding the environment by \cmd{\left}\ldots\cmd{\right}, as
+ can be seen from the following example:
 \begin{lcode}
-%% A new command that allows you to note down ideas or annotations in
-%% the margin of the draft. If you are printing on a stock that is wider
-%% than the final page width, we will go to some length to utilise the
-%% paper that would otherwise be trimmed away, assuming you will not be
-%% trimming the draft. These notes will not be printed when we are not
-%% in draft mode.
-\makeatletter
-   \ifdraftdoc
-     \newlength{\draftnotewidth}
-     \newlength{\draftnotesignwidth}
-     \newcommand{\draftnote}[1]{\@bsphack%
-       {%% do not interfere with settings for other marginal notes
-         \strictpagechecktrue%
-         \checkoddpage%
-         \setlength{\draftnotewidth}{\foremargin}%
-         \addtolength{\draftnotewidth}{\trimedge}%
-         \addtolength{\draftnotewidth}{-3\marginparsep}%
-         \ifoddpage
-           \setlength{\marginparwidth}{\draftnotewidth}%
-           \marginpar{\flushleft\textbf{\textit{\HUGE !\ }}\small #1}%
-         \else
-           \settowidth{\draftnotesignwidth}{\textbf{\textit{\HUGE\ !}}}%
-           \addtolength{\draftnotewidth}{-\draftnotesignwidth}%
-           \marginpar{\raggedleft\makebox[0pt][r]{%% hack around
-               \parbox[t]{\draftnotewidth}{%%%%%%%%% funny behaviour
-                 \raggedleft\small\hspace{0pt}#1%
-               }}\textbf{\textit{\HUGE\ !}}%
-           }%
-         \fi
-       }\@esphack}
-   \else
-     \newcommand{\draftnote}[1]{\@bsphack\@esphack}
-   \fi
-\makeatother
+ \begin{array}[t]({c}) 1\\2\\3 \end{array}
+ \begin{array}[c]({c}) 1\\2\\3 \end{array}
+ \begin{array}[b]({c}) 1\\2\\3 \end{array}
+ \quad\mbox{not}\quad
+ \left(\begin{array}[t]{c} 1\\2\\3 \end{array}\right)
+ \left(\begin{array}[c]{c} 1\\2\\3 \end{array}\right)
+ \left(\begin{array}[b]{c} 1\\2\\3 \end{array}\right)
 \end{lcode}
 
-    Bastiaan also noted that it provided an example of using the
-\lnc{\foremargin} length.
-    If you want to try it out, either put the code in your preamble,
-or put it into a package (i.e., \file{.sty} file) without the 
-\cs{makeat...} commands. 
 
+ \[
+ \begin{array}[t]({c}) 1\\2\\3 \end{array}
+ \begin{array}[c]({c}) 1\\2\\3 \end{array}
+ \begin{array}[b]({c}) 1\\2\\3 \end{array}
+ \quad\mbox{not}\quad
+ \left(\begin{array}[t]{c} 1\\2\\3 \end{array}\right)
+ \left(\begin{array}[c]{c} 1\\2\\3 \end{array}\right)
+ \left(\begin{array}[b]{c} 1\\2\\3 \end{array}\right)
+ \]
 
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\clearpage
-\pagestyle{companion}
-\chapterstyle{companion}
-\defaultsecnum
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Signposts and decoration} \label{chap:signposts}
 
+\section{Tables}
 
-\newcommand{\tepi}[2]{\epigraph{#1}{#2}}
+    A table is one way of presenting a large amount of information
+in a limited space. Even a simple table can presents facts that could
+require several wordy paragraphs --- it is not only a picture that is worth
+a thousand words.
 
- \tepi{My soul, seek not the life of immortals; but enjoy to the full
-       the resources that are within your reach}
-      {\textit{Pythian Odes \\ Pindar}}
+    A table should have at least two columns, otherwise it is really a list,
+and many times has more. The leftmost column is often called the 
+\emph{stub}\index{table!column!stub}
+and it typically contains a vertical listing of the information categories
+ in the other columns. The columns\index{table!column!head} 
+have \emph{heads} (or \emph{headings}) at
+the top indicating the nature of the entries in the column, although
+it is not always necessary to provide a head for the stub if the
+heading is obvious from the table's caption. Column heads
+may include subheadings, often to specify the unit of measurement for numeric
+data. 
 
-    This chapter is typeset using the \cstyle{companion} chapterstyle 
-and the \pstyle{companion} pagestyle.
+   A less simple table may need two or more levels of headings, in which
+case \emph{decked heads} are used. 
+A decked head\index{table!column!decked head} consists of a 
+\emph{spanner head}\index{table!column!spanner head} and the two or 
+more column heads it applies to. A horizontal 
+\emph{spanner rule}\index{table!column!spanner rule} is set between the the 
+spanner and column heads to 
+show which columns belong to the spanner.
 
-\section{Introduction}
+  Double decking, and certainly triple decking or more, should be avoided
+as it can make it difficult following them down the table. It may be possible
+to use a \emph{cut-in head}\index{table!column!cut-in head} instead of 
+double decking. A cut-in head is
+one that cuts across the columns of the table and applies to all the 
+matter below it. To try and clarify, the parts of a table
+are shown diagrammatically in \tref{tab:tabparts}.
 
-    By now we have covered most aspects of typesetting. As far as
-the class is concerned this chapter describes the remaining major element, 
-namely headers\index{header} and footers\index{footer}, and the slightly more fun task of typesetting
-epigraphs\index{epigraph}.
+\begin{table}
+\centering
+\caption{Demonstrating the parts of a table} \label{tab:tabparts}
+\begin{tabular}{lcccc} \toprule
+     &    & \multicolumn{2}{c}{spanner} &  \\ \cmidrule{3-4}
+     & head & head & head & head        \\
+stub & subhead & subhead &       &      \\ \midrule
+A    &   a     &   b     &   c   &   d  \\
+B    &   e     &   f     &   g   &   h  \\ \cmidrule{2-5}
+     & \multicolumn{4}{c}{cut-in head}  \\ \cmidrule{2-5}
+C    &   i     &   j     &   k   &   l  \\
+D    &   m     &   n     &   o   &   p  \\ \bottomrule
+\end{tabular}
+\end{table}
 
+   No mention has been made of vertical\index{table!rule!vertical} 
+rules in a table, and this is
+deliberate. There should be no vertical rules in a table. Rules, 
+if used at all, should be horizontal\index{table!rule!horizontal} only, 
+and these should be single, 
+not double or triple. It's not that ink is expensive, or that practically
+no typesetting is done by hand any more, it is simply that the visual 
+clutter should be eliminated. 
 
-\section{Page styles}
+    For example, in \tref{tab:twoviews} which was produced from the code below,
+\tref{tab:before} is from the \ltx\ book and 
+\tref{tab:after} is how Simon Fear~\cite{BOOKTABS} suggests it
+should be cleaned up. Notice how both the revised code and the table 
+are generally simpler than the originals.
 
-    The class provides a selection of pagestyles that you can use and if 
-they don't suit, then there are means to define your own.
+\begin{table}
+\centering
+\caption{Two views of one table} \label{tab:twoviews}
+\subtop[Before]{\label{tab:before}%
+ \begin{tabular}{||l|lr||} \hline
+ gnats     & gram      & \$13.65 \\ \cline{2-3}
+           & each      & .01 \\ \hline
+ gnu       & stuffed   & 92.50 \\ \cline{1-1} \cline{3-3}
+ emu       &           & 33.33 \\ \hline
+ armadillo & frozen    & 8.99 \\ \hline
+ \end{tabular}}
+\hfill
+\subtop[After]{\label{tab:after}%
+ \begin{tabular}{@{}llr@{}} \toprule
+ \multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
+ Animal & Description & Price (\$)\\ \midrule
+ Gnat  & per gram  & 13.65 \\
+       & each      & 0.01 \\
+ Gnu   & stuffed   & 92.50 \\
+ Emu   & stuffed   & 33.33 \\
+ Armadillo & frozen & 8.99 \\ \bottomrule
+ \end{tabular}
+}
+\end{table}
 
-    These facilities were inspired by the \Lpack{fancyhdr} 
-package~\cite{FANCYHDR}, although the command set is different.
+\begin{lcode}
+\begin{table}
+\centering
+\caption{Two views of one table} \label{tab:twoviews}
+\subtop[Before]{\label{tab:before}%
+ \begin{tabular}{||l|lr||} \hline
+ gnats     & gram      & \$13.65 \\ \cline{2-3}
+           & each      & .01 \\ \hline
+ gnu       & stuffed   & 92.50 \\ \cline{1-1} \cline{3-3}
+ emu       &           & 33.33 \\ \hline
+ armadillo & frozen    & 8.99 \\ \hline
+ \end{tabular}}
+\hfill
+\subtop[After]{\label{tab:after}%
+ \begin{tabular}{@{}llr@{}} \toprule
+ \multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
+ Animal & Description & Price (\$)\\ \midrule
+ Gnat   & per gram    & 13.65 \\
+        & each        & 0.01 \\
+ Gnu    & stuffed     & 92.50 \\
+ Emu    & stuffed     & 33.33 \\
+ Armadillo & frozen   & 8.99 \\ \bottomrule
+ \end{tabular}
+}
+\end{table}
+\end{lcode}
+ 
 
-    The standard classes provide for a footer\index{footer} and header\index{header} for odd and even 
-pages. Thus there are four elements to be specified for a pagestyle.
-This class partitions the headers\index{header} and footers\index{footer} into left, center and right
-portions, so there are a total of 12 elements that have to be specified
-for a pagestyle. You may find, though, that one of the built in pagestyles
-meets your needs so you don't have to worry about all these specifications.
+    Columns of numbers often end with a line giving the total or result.
+A horizontal rule\index{table!rule} may be drawn to separate the result 
+from the rest but
+a small amount of white space may do just as well, as in \tref{tab:micawber}.
 
-\begin{syntax}
-\cmd{\pagestyle}\marg{style} \\
-\cmd{\thispagestyle}\marg{style} \\
-\end{syntax}
-   \cmd{\pagestyle} sets the current pagestyle to \meta{style}. On a particular
-page \cmd{\thispagestyle} can be used to override the cuurent pagestyle for
-the one page.
+Some other points are:
+ \begin{itemize}
+   \item Put the units in the column heading (not in the body of
+           the table).
+   \item Always precede a decimal point by a digit; thus 0.1
+       \emph{not} just .1.
+   \item Do not use `ditto' signs or any other such convention to
+       repeat a previous value. In many circumstances a blank
+       will serve just as well. If it won't, then repeat the value.
+ \end{itemize}
 
-    Some of the class' commands automatically call \cmd{\thispagestyle}:
-\begin{itemize}
-\item \cmd{\part} calls |\thispagestyle{part}|; 
-\item \cmd{\chapter} calls |\thispagestyle{chapter}|; 
-\item if \cmd{\cleardoublepage} will result in an empty verso page it calls
-    |\thispagestyle{cleared}| for the empty page.
-\end{itemize}
+    Not every table requires all the elements mentioned above.
+For instance, in Charles Dicken's \emph{David Copperfield} (1849--1850) 
+Mr Wilkins Micawber states:
+\begin{quote}
+`Annual income twenty pounds, annual expenditure nineteen six, 
+result hapiness.
+Annual income twenty pounds, annual expenditure twenty pounds ought and six, 
+result misery.'
+\end{quote}
+This can also be represented in tabular 
+form\footnote{%
+But putting Josh Billings' (Henry Wheeler Shaw) corollary: 
+`Live within your income, even if you have to borrow to do it.'
+into tabular form would not work.}
+ as in \tref{tab:micawber}.
 
-    The page styles provided by the class are:
-\begin{itemize}
-\item[\pstyle{empty}] The headers\index{header} and footers\index{footer} 
-  are empty.
-\item[\pstyle{plain}] The header\index{header} is empty and the 
-  folio\index{folio} (page number) is centered at the bottom of the page.
-\item[\pstyle{headings}] The footer\index{footer} is empty and the 
-  header\index{header} contains the the folio\index{folio} at the outer 
-  side of the page, and either the chapter or section title. 
-  Chapter~\ref{chap:starting} uses this style.
-\item[\pstyle{myheadings}] This is like the \pstyle{headings} style except you
-     have to specify the titles, if any, to go into the header\index{header}.
-\item[\pstyle{ruled}] The footer\index{footer} contains the 
-  folio\index{folio} at the outside. The header\index{header} contains 
-  either the chapter or section titles, and a line is drawn underneath the 
-  header\index{header}. 
-  This style is used in \Cref{chap:layingpage}.
-\item[\pstyle{Ruled}] This is like the \pstyle{ruled} style except that 
-  the headers\index{header} and footers\index{footer} extend into the 
-  \foredge{} margin\index{margin}.
-  Chapter~\ref{chap:verse} uses this style.
-\item[\pstyle{companion}] This is like the pagestyle in the 
-     \textit{Companion} series (e.g., see~\cite{GOOSSENS94}).
-    For an example, see \Cref{chap:signposts}.
-\item[\pstyle{part}] This is the same as the \pstyle{plain} pagestyle.
-\item[\pstyle{chapter}]  This is the same as the \pstyle{plain} pagestyle.
-\item[\pstyle{cleared}]  This is the same as the \pstyle{empty} pagestyle.
-\item[\pstyle{title}]   This is the same as the \pstyle{plain} pagestyle.
-\item[\pstyle{titlingpage}] This is the same as the \pstyle{empty} pagestyle.
-\end{itemize}
+\begin{table}
+\centering
+\caption{Micawber's law} \label{tab:micawber}
+\begin{tabular}{lrr} \toprule
+Income     & \pounds{20-0-0}  & \pounds{20-0-0} \\
+Expenditure & \pounds{19-0-6} & \pounds{20-0-6} \\ \addlinespace
+Result      & happiness & misery \\ \bottomrule
+\end{tabular}
+\end{table}
 
-    For the \pstyle{headings} pagestyle above, you have to define your own
-titles to go into the header\index{header}. Each sectioning command, say |\sec|, 
-calls a macro called |\secmark|. The pagestyles usually define this command
-so that it picks up the title, and perhaps the number, of the |\sec|. 
+    Long narrow tables do not look well on the page. In such cases
+the table\index{table!half and half} could be set half and half 
+instead, as in \tref{tab:halfhalf}.
 
-\begin{syntax}
-\cmd{\markboth}\marg{left}\marg{right} \\
-\cmd{\markright}\marg{right} \\
-\end{syntax}
-    \cmd{\markboth} sets the values of two \emph{markers}\index{markers}
-to \meta{left} and \meta{right} respectively, at the point in the text 
-where it is called. Similarly, \cmd{\markright} sets the value of a
-marker to \meta{right}.
+\settowidth{\versewidth}{Relative contents of odd isotopes for heavy elements}
+\addtolength{\versewidth}{2mm}
+\begin{table}
+\begin{adjustwidth}{-5mm}{-5mm}
+\centering \addtolength{\cmidrulekern}{0.25em}
+\caption{A narrow table split half and half} \label{tab:halfhalf}
+\begin{tabularx}{\versewidth}{lclXlcl@{}} 
+\multicolumn{7}{c}{Relative contents of odd isotopes for heavy elements}\\ \toprule
+Element & Z & \multicolumn{1}{c}{$\gamma$} & & 
+Element & Z & \multicolumn{1}{c}{$\gamma$} \\ \cmidrule{1-3}\cmidrule(r){5-7}
+Sm & 62 & 1.480 & & W  & 74 & 0.505 \\
+Gd & 64 & 0.691 & & Os & 76 & 0.811 \\
+Dy & 66 & 0.930 & & Pt & 78 & 1.160 \\
+\ldots & &      & & \ldots & &      \\ \bottomrule
+\end{tabularx}
+\end{adjustwidth}
+\end{table}
 
-\begin{syntax}
-\cmd{\leftmark} \cmd{\rightmark} \\
-\end{syntax}
-The macro \cmd{\leftmark} contains the value of the \meta{left} argument
-of the \emph{last} \cmd{\markboth} on the page. The macro \cmd{\rightmark}
-contains the value of the \meta{right} argument of the \emph{first}
-\cmd{\markboth} or \cmd{\markright} on the page, or if there is not one it
-contains the value of the most recent \meta{right} argument.
+\section{Fear's rules}
 
-    So, a pagestyle can define the |\secmark| commands in terms of 
-\cmd{\markboth} or \cmd{\markright}, and then use \cmd{\leftmark} and/or
-\cmd{\rightmark} in the headers\index{header} or footers\index{footer}. I'll show examples of how this
-works later, and this is often how the \pstyle{myheadings} style gets 
-implemented.
+    Simon Fear disapproves of the default \ltx\ table\index{table!rule} 
+rules and
+wrote the \Lpack{booktabs} package~\cite{BOOKTABS} to provide
+better horizontal rules. Like many typographers, he abhors vertical rules.
+The following is taken almost verbatim from the \Lpack{booktabs} package.
 
+\index{table!rule|(}
 
-\section{Making headers and footers}
+ In the simplest of cases a table begins with a top rule, has
+ a single row of column headings, then a dividing rule, 
+and after the columns of data it is finished
+off with a final rule. The top and bottom rules are normally
+set heavier (i.e., thicker or darker) than any intermediate rules.
 
-    As mentioned, the class provides for left, center, and right slots in
-even and odd headers\index{header} and footers\index{footer}. This section describes how you can make
-your own pagestyle using these 12 slots.
 
 \begin{syntax}
-\cmd{\makepagestyle}\marg{style} \\
-\cmd{\aliaspagestyle}\marg{alias}\marg{original} \\
-\cmd{\copypagestyle}\marg{new}\marg{original} \\
-\end{syntax}
-The command \cmd{\makepagestyle} specifies a pagestyle \meta{style} which
-is initially equivalent to the \pstyle{empty} pagestyle. 
-The \cmd{\aliaspagestyle} macro defines the \meta{alias} pagestyle to be 
-the same as the \meta{original} pagestyle. As an example of the latter, 
-the class includes the code
+\cmd{\toprule}\oarg{width} 
+\cmd{\bottomrule}\oarg{width} 
+\lnc{\heavyrulewidth} \\
+\cmd{\midrule}\oarg{width} 
+\lnc{\lightrulewidth} \\
+\lnc{\aboverulesep} \lnc{\belowrulesep} \lnc{\doublerulesep} \\
+\end{syntax}
+\glossary(toprule)%
+  {\cs{toprule}\oarg{width}}%
+  {Draws a rule across a tabular, default width \cs{heavyrulewidth}.}
+\glossary(bottomrule)%
+  {\cs{bottomrule}\oarg{width}}%
+  {Draws a rule across a tabular, default width \cs{heavyrulewidth}.}
+\glossary(midrule)%
+  {\cs{midrule}\oarg{width}}%
+  {Draws a rule across a tabular, default width \cs{lightrulewidth}.}
+\glossary(heavyrulewidth)%
+  {\cs{heavyrulewidth}}%
+  {Default width for a heavy tabular rule.}
+\glossary(lightrulewidth)%
+  {\cs{lightrulewidth}}%
+  {Default width for a light tabular rule.}
+\glossary(aboverulesep)%
+  {\cs{aboverulesep}}%
+  {Space above a tabular rule.}
+\glossary(belowrulesep)%
+  {\cs{belowrulesep}}%
+  {Space below a tabular rule.}
+\glossary(doublerulesep)%
+  {\cs{doublerulesep}}%
+  {Space between adjacent rules in a tabular, or an array.}
+ All the rule commands here go immediately after the closing
+\cmd{\\} of the preceding row (except of course \cmd{\toprule}, which
+ comes right after the start of the environment). Each rule has an optional
+length argument, \meta{width}, which you can use to locally change the default 
+width of the rule.
+
+ \cmd{\toprule} draws a rule (with a default width of \lnc{\heavyrulewidth}), 
+and \lnc{\belowrulesep} vertical space inserted below it.
+
+   \cmd{\midrule} draws a rule (default \lnc{\lightrulewidth} width) 
+with \lnc{\aboverulesep} space above it and \lnc{\belowrulesep}
+below it. 
+
+
+\cmd{\bottomrule} draws a rule with a default width of \lnc{\heavyrulewidth}.
+There is \lnc{\aboverulesep} space above it and \lnc{\belowrulesep} space 
+below it.
+
+   If a rule immediately follows another the space between them is
+\lnc{\doublerulesep}, but as you are not going to use double rules you
+won't be concerned about this.
+
+\begin{syntax}
+\cmd{\cmidrule}\oarg{width}\parg{trim}\marg{m--n} \\
+\lnc{\cmidrulewidth} \lnc{\cmidrulekern} \\
+\end{syntax}
+\glossary(cmidrule)%
+  {\cs{cmidrule}\oarg{width}\parg{trim}\marg{m--n}}%
+  {Draws a rule, default thickness \cs{cmidrulewidth}, across tabular
+   columns \meta{m} to \meta{n}; the ends may be \meta{trim}ed by
+   \cs{cmidrulekern}.}
+\glossary(cmidrulewidth)%
+  {\cs{cmidrulewidth}}%
+  {Default width for a \cs{cmidrule} tabular rule.}
+\glossary(cmidrulekern)
+  {\cs{cmidrulekern}}
+  {Trim amount for \cs{cmidrule}.}
+Spanner rules do not extend the full width of the table, and the
+\cmd{\cmidrule} is provided for that purpose. This draws a rule,
+default thickness \lnc{\cmidrulewidth}, across columns \meta{m}
+to \meta{n} inclusive (where \meta{m} and \meta{n} are column numbers,
+with \meta{m} not greater than \meta{n}).
+
+ Generally, this rule
+ should not come to the full width of the end columns, and this
+ is especially the case if you have to begin a \cmd{\cmidrule}
+ straight after the end of another one. You can use the
+optional trimming argument commands, which are \verb?(r)?, \verb?(l)? and \verb?(rl)?
+ or \verb?(lr)?, indicated whether the right and/or left ends of the
+ rule should be trimmed. Note the exceptional use of parentheses
+ instead of brackets for this optional argument.
+
+
+   \cmd{\cmidrule} draws a rule from column $m$ to $n$ with a default 
+thickness of \lnc{\cmidrulewidth}. Adjacent \cmd{\cmidrule}s,
+for example
 \begin{lcode}
-\aliaspagestyle{part}{plain}
-\aliaspagestyle{chapter}{plain}
-\aliaspagestyle{cleared}{empty}
+... \\ \cmidrule{2-3}\cmidrule{5-7}
+\end{lcode}
+have the same vertical alignment. It is best not to leave any space between
+these commands. The space above and below
+is normally \lnc{\aboverulesep} and \lnc{\belowrulesep}.
+
+    If you are forced into having double spanner rules then you will
+reluctantly have
+to insert the command \cmd{\morecmidrules} between the commands for
+the upper and lower rules. For example:
+\begin{lcode}
+... \\ \cmidrule{2-3}\cmidrule{5-7}\morecmidrules\cmidrule{2-3}
 \end{lcode}
-The macro \cmd{\copypagestyle} creates a \meta{new} pagestyle with the 
-definitions being copies of those for the \meta{original} pagestyle.
+will draw double rules across columns 2 and 3. You must finish off
+the rules for one row before starting the lower set of rules. There
+must not be any space surrounding the \cmd{\morecmidrules} macro.
+The upper and lower rules are separated by \lnc{\cmidrulesep}.
 
 
 \begin{syntax}
-\cmd{\makeevenhead}\marg{style}\marg{left}\marg{center}\marg{right} \\
-\cmd{\makeoddhead}\marg{style}\marg{left}\marg{center}\marg{right} \\
-\cmd{\makeevenfoot}\marg{style}\marg{left}\marg{center}\marg{right} \\
-\cmd{\makeoddfoot}\marg{style}\marg{left}\marg{center}\marg{right} \\
+\cmd{\addlinespace}\oarg{width}
+\lnc{\defaultaddspace} \\
 \end{syntax}
-The macro \cmd{\makeevenhead} defines the \meta{left}, \meta{center}, and
-\meta{right} portions of the \meta{style} pagestyle header\index{header} for even numbered
-(verso) pages. Similarly \cmd{\makeoddhead}, \cmd{\makeevenfoot}, and
-\cmd{\makeoddfoot} define the \meta{left}, \meta{center} and \meta{right}
-portions of the \meta{style} header\index{header} for odd numbered (recto) pages,
-and the footers\index{footer} for verso and recto pages. These commmands for \meta{style}
-should be used after the corresponding \cmd{\makepagestyle} for \meta{style}.
+\glossary(addlinespace)%
+  {\cs{addlinespace}\marg{width}}%
+  {Puts extra space, default \cs{defaultaddspace}, between a pair of tabular
+   rows.}
+\glossary(defaultaddspace)%
+  {\cs{defaultaddspace}}%
+  {Default space for \cs{addlinespace}.}
 
-\begin{syntax}
-\cmd{\makerunningwidth}\marg{style}\marg{length} \\
-\lnc{\headwidth} \\
-\end{syntax}
-The macro \cmd{\makerunningwidth} sets the width of the \meta{style}
-pagestyle headers\index{header} and footers\index{footer} to be \meta{length}. The \cmd{\makepagestyle}
-sets the width to be the textwidth, so the macro need only be used if some
-other width is desired. The length \lnc{\headwidth} is provided as a
-(scratch) length that may be used for headers\index{header} or footers\index{footer}, or any other
-purpose.
 
-\begin{syntax}
-\cmd{\makeheadrule}\marg{style}\marg{width}\marg{thickness} \\
-\cmd{\makefootrule}\marg{style}\marg{width}\marg{thickness}\marg{skip} \\
-\end{syntax}
-A header\index{header} may have a rule drawn between it and the top of the typeblock\index{typeblock},
-and similarly a rule may be drawn between the bottom of the typeblock\index{typeblock}
-and the footer\index{footer}. The \cmd{\makeheadrule} macro specifies the the \meta{width}
-and \meta{thickness} of the rule below the \meta{style} pagestyle header\index{header}, and
-the \cmd{\makefootrule} does the same for the rule above the footer\index{footer}; the
-additional \meta{skip} argument is a distance that specifies the vertical
-positioning of the foot rule (see \cmd{\footruleskip}).
-The \cmd{\makepagestyle} macro initialises the \meta{width} to the 
-\lnc{\textwidth} and the \meta{thickness} to 0pt, so by default no rules
-are visible.
+ Occasionally extra space between certain rows of a table may be helpful; 
+for example, before the last row if this is a total.
+This is simply a matter of inserting \cmd{\addlinespace}
+ after the \cmd{\\} alignment marker.
+You can think
+ of \cmd{\addlinespace} as being a white rule of width \meta{width}.
+ The default space is \cmd{\defaultaddspace} which gives rather
+ less than a whole line space. If another rule follows 
+the amount of whitespace is increased by \lnc{\doublerulesep}.
 
 \begin{syntax}
-\lnc{\normalrulethickness} \\
+\cmd{\specialrule}\marg{width}\marg{abovespace}\marg{belowspace} \\
 \end{syntax}
-\lnc{\normalrulethickness} is the normal thickness of a visible rule, by 
-default 0.4pt. It can be changed using \cmd{\setlength}, although I suggest 
-that you do not unless perhaps when using the \Lopt{14pt} or \Lopt{17pt}
-class options. 
+\glossary(specialrule)%
+  {\cs{specialrule}\marg{width}\marg{abovespace}\marg{belowspace}}%
+  {Draws a rule with the given parameters across a tabular.}
+    You can, but should not, generate peculiar spacing between
+rules by using \cmd{\specialrule}. The three required arguments are the
+width, \meta{width}, of the rule and the spaces above (\meta{abovespace})
+and below (\meta{belowspace}). \cmd{\specialrule} ignores a preceding rule
+but if there is a following one then \meta{belowspace}
+will be increased by \lnc{\doublerulesep}.
 
-\begin{syntax}
-\cmd{\footruleheight} \\
-\cmd{\footruleskip} \\
-\end{syntax}
-The macro \cmd{\footruleheight} is the height of a normal
-rule above a footer\index{footer} (default zero). \cmd{\footruleskip} is a distance 
-sufficient to ensure that a foot rule will be placed between the bottom
-of the typeblock\index{typeblock} and the footer\index{footer}. Despite appearing to be lengths, if
-you really need to change the values use \cmd{\renewcommand}, 
-not \cmd{\setlength}.
+ The default dimensions are
+ \begin{quote}
+   \lnc{\heavyrulewidth} = 0.08em \\
+   \lnc{\lightrulewidth} = 0.5em \\
+   \lnc{\cmidrulewidth}  = 0.3em \\
+   \lnc{\belowrulesep}   = 0.65ex \\
+   \lnc{\aboverulesep}   = 0.4ex \\
+   \lnc{\defaultaddspace} = 0.5em \\
+   \lnc{\cmidrulekern}   = 0.25em
+ \end{quote}
+ The last of these, \lnc{\cmidrulekern}, is the amount by which a
+ \cmd{\cmidrule} is trimmed at the ends indicated in the \verb?()?
+ option. In the construction
+ \begin{quote}
+   \verb?\cmidrule(r){1-2}\cmidrule(l){3-4}?
+ \end{quote}
+ there is a total of 0.5em separating the two rules. Currently
+ the only way to get special effects is to reset \lnc{\cmidrulekern}
+ as appropriate; the amount of trimming is not available as an
+ argument in the current implementation of \cmd{\cmidrule}.
 
-\begin{syntax}
-\cmd{\makeheadposition}\marg{style}\\
-    \marg{eheadpos}\marg{oheadpos}\marg{efootpos}\marg{ofootpos} \\
-\end{syntax}
-The \cmd{\makeheadposition} macro specifies the horizontal positioning
-of the even and odd headers\index{header} and footers\index{footer}, respectively, for the \meta{style}
-pagestyle. Each of the \meta{...pos} arguments may be |flushleft|, |center|,
-or |flushright|, with the obvious meanings. An empty, or unrecognised, argument
-is equivalent to |center|. This macro is really only of use if the 
-header/footer\index{header}\index{footer} width is not the same as the \lnc{\textwidth}.
 
-\begin{syntax}
-\cmd{\makepsmarks}\marg{style}\marg{code} \\
-\end{syntax}
-The last thing that the \cmd{\pagestyle}\marg{style} does is call the
-\meta{code} argument of the \cmd{\makepsmarks} for \meta{style}.
-This is normally used for specifying non-default code 
-(i.e., code not specifiable via any of the previous macros) for the particular
-pagestyle. The code normally defines the marks, if any, that will be used in
-the headers\index{header} and footers\index{footer}.
+ An example of the commands in use was given by the code to
+ produce \tref{tab:after} on \pref{tab:after}:
+\begin{lcode}
+\begin{tabular}{@{}llr@{}} \toprule
+\multicolumn{2}{c}{Item} \\ \cmidrule(r){1-2}
+Animal & Description & Price (\$)\\ \midrule
+Gnat   & per gram  & 13.65 \\
+       & each      & 0.01 \\
+Gnu    & stuffed   & 92.50 \\
+Emu    & stuffed   & 33.33 \\
+Armadillo & frozen & 8.99 \\ \bottomrule
+\end{tabular}
+\end{lcode}
 
+\index{table!rule|)}
 
-\subsection{Example pagestyles}
+\subsection{Fills}
 
-    This first example demonstrates most of the page styling commands.
-In the \textit{LaTeX Companion} series of 
-books~\cite{GOOSSENS94,GOOSSENS97,GOOSSENS99} the header\index{header} is wider 
-than the typeblock\index{typeblock}, sticking out into the foredge margin\index{margin}, and has a rule 
-underneath it. The page number is in bold and at the outer end of the header\index{header}.
-Chapter titles are in verso headers\index{header} and section titles in recto headers\index{header}, both
-in bold font and at the spine margin\index{margin}. The footers\index{footer} are empty.
+\index{table!row fill|(}
+\index{array!row fill|(}
 
-    The first thing to do in implementing this style is to calculate 
-the width of the headers\index{header}, which extend to cover any marginal\index{marginalia} notes.
-\begin{lcode}
-\setlength{\headwidth}{\textwidth}
-  \addtolength{\headwidth}{\marginparsep}
-  \addtolength{\headwidth}{\marginparwidth}
-\end{lcode}
-Now we can set up an empty \pstyle{companion} pagestyle and start to change
-it by specifying the new header\index{header} and footer\index{footer} width:
-\begin{lcode}
-\makepagestyle{companion}
-\makerunningwidth{companion}{\headwidth}
-\end{lcode}
-and specify the width and thickness for the header\index{header} rule, otherwise it will 
-be invisible.
-\begin{lcode}
-\makeheadrule{companion}{\headwidth}{\normalrulethickness}
-\end{lcode}
+    The rules described previously go between rows. Sometimes it may be 
+desirable to to put a rule or something similar within a 
+row.
+    
+\begin{syntax}
+\cmd{\downbracefill} \cmd{\hrulefill} \cmd{\upbracefill} \\
+\end{syntax}
+\glossary(downbracefill)%
+  {\cs{downbracefill}}%
+  {Fills a tabular column with a down brace.}
+\glossary(hrulefill)%
+  {\cs{hrulefill}}%
+  {Fills a tabular column with a rule.}
+\glossary(upbracefill)%
+  {\cs{upbracefill}}%
+  {Fills a tabular column with an up brace.}
 
-    In order to get the header\index{header} to stick out into the foredge margin\index{margin}, 
-verso headers\index{header} have to be flushright (raggedleft) and recto headers\index{header}
-to be flushleft (raggedright). As the footers\index{footer} are empty, their position
-is immaterial.
-\begin{lcode}
-\makeheadposition{companion}{flushright}{flushleft}{}{}
-\end{lcode}
+Examples of \cmd{\downbracefill}, \cmd{\hrulefill}, and \cmd{\upbracefill}
+are illustrated in \tref{tab:fills}, typeset from the code below. 
+Surprisingly these are
+ordinary text commands, not math mode commands.
 
-    The current chapter and section titles are obtained from the 
-\cmd{\leftmark} and \cmd{\rightmark} macros which are defined via the
-\cmd{\chaptermark} and \cmd{\sectionmark} macros. Remember that
-\cmd{\leftmark} is the last \meta{left} marker and \cmd{\rightmark}
-is the first \meta{right} marker\index{markers} on the page.
 
-Chapter numbers are not
-put into the header\index{header} but the section number, if there is one, is put into
-the header\index{header}. We have to make sure that
-the correct definitions are used for these, and this is where the 
-\cmd{\makepsmarks} macro comes into play.
 \begin{lcode}
-\makepsmarks{companion}{%
-  \let\@mkboth\markboth
-  \def\chaptermark##1{\markboth{##1}{##1}}% % left & right marks
-  \def\sectionmark##1{\markright{%          % right mark
-    \ifnum \c@secnumdepth>\z@
-      \thesection. \%                       % section number
-    \fi
-    ##1}}
-}
+\begin{table}
+\centering
+\caption{Example table with fills} \label{tab:fills}
+\begin{tabular}{rrrrr}
+1 & 2   & 3   & 4    & 5 \\
+Q &     & fgh & jklm & qwerty \\
+v & as  & x   &    y &      z \\
+g & nnn & \multicolumn{3}{c}{\upbracefill} \\
+\multicolumn{3}{c}{\downbracefill} & pq & dgh \\
+k & j   & t   & co   & ytrewq \\
+1 & 2   & 3   & \multicolumn{2}{c}{\hrulefill}
+\end{tabular}
+\end{table}
 \end{lcode}
 
-    The preliminaries have all been completed, and it just remains to specify
-what goes into each header\index{header} and footer\index{footer} slot (but the footers\index{footer} are empty).
-\begin{lcode}
-\makeevenhead{companion}%
-  {\normalfont\bfseries\thepage}{}{\normalfont\bfseries\leftmark}
-\makeoddhead{companion}%
-  {\normalfont\bfseries\rightmark}{}{\normalfont\bfseries\thepage}
-\end{lcode}
+\begin{table}
+\centering
+\caption{Example table with fills} \label{tab:fills}
+\begin{tabular}{rrrrr}
+1 & 2   & 3   & 4    & 5 \\
+Q &     & fgh & jklm & qwerty \\
+v & as  & x   &    y &      z \\
+g & nnn & \multicolumn{3}{c}{\upbracefill} \\
+\multicolumn{3}{c}{\downbracefill} & pq & dgh \\
+k & j   & t   & co   & ytrewq \\
+1 & 2   & 3   & \multicolumn{2}{c}{\hrulefill}
+\end{tabular}
+\end{table}
 
-    Now issuing the command |\pagestyle{companion}| will produce pages 
-typeset with \pstyle{companion} pagestyle headers\index{header}.
+    Here are the same fills, but this time in an \Ie{array} environment.
+are shown afterwards. Notice the \texttt{\$}s in the array surrounding
+the fills. Normally \verb?$...$? is used to typeset a small
+amount of math mode material
+in the middle of text. In this case, as the \Ie{array} is already in math mode
+the \verb?$...$? are used to typeset a small amount of text material
+within math mode.
 
-    This definition is actually part of the class. If you want to alter it, or
-use it as the basis for a style of your own, remember the caveats about
-macros with |@| in their names.
+\begin{lcode}
+\begin{displaymath}
+\begin{array}{rrrrr}
+1 & 2   & 3   & 4    & 5 \\
+Q &     & fgh & jklm & qwerty \\
+v & as  & x   &    y &      z \\
+g & nnn & \multicolumn{3}{c}{$\upbracefill$} \\
+\multicolumn{3}{c}{$\downbracefill$} & pq & dgh \\
+k & j   & t   & co   & ytrewq \\
+1 & 2   & 3   & \multicolumn{2}{c}{\hrulefill}
+\end{array}
+\end{displaymath}
+\end{lcode}
 
-\subsection{Special headers}
+\begin{displaymath}
+\begin{array}{rrrrr}
+1 & 2   & 3   & 4    & 5 \\
+Q &     & fgh & jklm & qwerty \\
+v & as  & x   &    y &      z \\
+g & nnn & \multicolumn{3}{c}{$\upbracefill$} \\
+\multicolumn{3}{c}{$\downbracefill$} & pq & dgh \\
+k & j   & t   & co   & ytrewq \\
+1 & 2   & 3   & \multicolumn{2}{c}{\hrulefill}
+\end{array}
+\end{displaymath}
 
-    If you look at the Index\index{index} you will see that the header\index{header} shows the first and
-last entries on the page.
-A main entry in the index\index{index} looks like:
+    You can define your own `fill'. For example:
 \begin{lcode}
-\item \idxmark{entry}, page number(s)
+\newcommand*{\upbracketfill}{%
+  \vrule height 4pt depth 0pt\hrulefill%
+  \vrule height 4pt depth 0pt}
 \end{lcode}
-and in the preamble\index{preamble} to this manual \cmd{\idxmark} is defined as
+is a fill that has the appearance of a (horizontal) bracket. It can
+be used like this:
 \begin{lcode}
-\newcommand{\idxmark}[1]{#1\markboth{#1}{#1}}
+\begin{displaymath}
+\begin{array}{cccc}
+1 & 2 & 3 & 4 \\
+a & \multicolumn{2}{c}{\upbracketfill} & d \\
+A & B & C & D
+\end{array}
+\end{displaymath}
 \end{lcode}
-This typesets the entry and also uses the entry as markers so that
-the first entry on a page is held in \cmd{\rightmark} and the last
-is in \cmd{\leftmark}.
-
-    As index\index{index} entries are usually very short, the Index\index{index} is set in 
-two columns\index{column!double}. Unfortunately LaTeX's marking mechanism can be a little
-fragile on twocolumn\index{column!double} pages, but the standard 
-\Lpack{fixltx2e} package~\cite{FIXLTX2E} corrects this.
 
-    The index\index{index} itself is called by\index{indexing}
-\begin{lcode}
-\clearpage
-\pagestyle{index}
-\renewcommand{\preindexhook}{%
-The first page number is usually, but not always, the primary reference to
-the indexed topic.\vskip\onelineskip}
-\printindex
-\end{lcode}
+\newcommand*{\upbracketfill}{%
+  \vrule height 4pt depth 0pt\hrulefill\vrule height 4pt depth 0pt}
 
-\makepagestyle{index}
-  \makeheadrule{index}{\textwidth}{\normalrulethickness}
-  \makeevenhead{index}{\rightmark}{}{\leftmark}
-  \makeoddhead{index}{\rightmark}{}{\leftmark}
-  \makeevenfoot{index}{\thepage}{}{}
-  \makeoddfoot{index}{}{}{\thepage}
+\begin{displaymath}
+\begin{array}{cccc}
+1 & 2 & 3 & 4 \\
+a & \multicolumn{2}{c}{\upbracketfill} & d \\
+A & B & C & D
+\end{array}
+\end{displaymath}
 
-    The \pstyle{index} pagestyle, which is the crux of
-this example, is defined here as:
-\begin{lcode}
-\makepagestyle{index}
-  \makeheadrule{index}{\textwidth}{\normalrulethickness}
-  \makeevenhead{index}{\rightmark}{}{\leftmark}
-  \makeoddhead{index}{\rightmark}{}{\leftmark}
-  \makeevenfoot{index}{\thepage}{}{}
-  \makeoddfoot{index}{}{}{\thepage}
-\end{lcode}
-This, as you can hopefully see, puts the first and last index\index{index} entries
-on the page into the header\index{header} at the left and right, with the folios\index{folio}
-in the footers\index{footer} at the \foredge{} margin\index{margin}.
+\index{array!row fill|)}
+\index{table!row fill|)}
 
-    I used Pehong Chen's 
-\textit{MakeIndex}\index{MakeIndex?\textit{MakeIndex}} program~\cite{CHEN88} 
-for converting the raw index\index{index}
-data in the \file{.idx} file into the form expected by LaTeX in 
-the \file{.ind} file. \textit{MakeIndex} can be configured via an
-\file{.ist} file, and the \file{memman.ist} file that I created for
-this manual includes the mysterious lines
-\begin{lcode}
-% output main entry <entry> as: \item \idxmark{<entry>},
-item_0  "\n\\item \\idxmark{"
-delim_0 "},"
-\end{lcode}
-Look up either Chen's paper~\cite{CHEN88} or Chapter~12 in~\cite{GOOSSENS94}
-for an explanation of this cryptic code.
+\section{Tabular environments}
 
-\index{float!page|(}
+\index{tabular|(}
 
 \begin{syntax}
-\piif{ifonlyfloats}\marg{yes}\marg{no} \\
+\senv{tabular}\oarg{pos}\marg{format} rows \eenv{tabular} \\
+\senv{tabular*}\marg{width}\oarg{pos}\marg{format} rows \eenv{tabular*} \\
+\senv{tabularx}\marg{width}\oarg{pos}\marg{format} rows \eenv{tabularx} \\
 \end{syntax}
-    There are occasions when it is desireable to have different headers\index{header} on
-pages that only contain figures\index{figure} or tables\index{table}. If the command \piif{ifonlyfloats}
-is issued on a page that contains no text and only floats then the \meta{yes}
-argument is processed, otherwise on a normal page the \meta{no} argument
-is processed. The command is most useful when defining a pagestyle that 
-should be different on a float-only page\index{page!of floats}.
 
-    For example, assume that the \pstyle{companion} pagestyle is to be
-generally used, but on float-only pages all that is required is a pagestyle
-similar to \pstyle{plain}. Borrowing some code from the \pstyle{companion}
-specification this can be accomplished like:
-\begin{lcode}
-\makepagestyle{floatcomp}
-% \headwidth has already been defined for the companion style
-\makeheadrule{floatcomp}{\headwidth}%
-  {\ifonlyfloats{0pt}{\normalrulethickness}}
-\makeheadposition{floatcomp}{flushright}{flushleft}{}{}
-\makepsmarks{floatcomp}{\companionpshook}
-\makeevenhead{floatcomp}{\ifonlyfloats{}{\normalfont\bfseries\thepage}}%
-           {}{\ifonlyfloats{}{\normalfont\bfseries\leftmark}}
-\makeoddhead{floatcomp}{\ifonlyfloats{}{\normalfont\bfseries\rightmark}}%
-           {}{\ifonlyfloats{}{\normalfont\bfseries\thepage}}
-\makeevenfoot{floatcomp}{}{\ifonlyfloats{\thepage}{}}{}
-\makeoddfoot{floatcomp}{}{\ifonlyfloats{\thepage}{}}{}
-\end{lcode}
-The code above for the \pstyle{floatcomp} style should be compared with 
-that for the earlier \pstyle{companion} style.
+    A table created using the \Ie{tabular} environment comes out as
+wide as it has to be to accomodate the entries. On the other hand,
+both the \Ie{tabular*} and \Ie{tabularx} environments let you specify
+the overall width\index{tabular!controlling width} 
+of the table via the additional \meta{width} atrgument.
 
-    The headrule is invisible on float pages by giving it zero thickness, 
-otherwise it has the \cmd{\normalrulethickness}. The head position is 
-identical for both pagestyles. However, the headers\index{header} are empty for
-\pstyle{floatcomp} and the footers\index{footer} have centered page numbers 
-on float pages; on ordinary pages the footers\index{footer} are empty while the headers\index{header}
-are the same as the \pstyle{companion} headers\index{header}.
+    The \Ie{tabular*} environment makes any necessary adjustment by altering
+the intercolumn\index{tabular!intercolumn space} spaces while the 
+\Ie{tabularx} environment alters
+the column\index{tabular!column width} widths. Those columns that can 
+be adjusted are noted by
+using the letter \texttt{X}\index{tabular!X column} as the column 
+specifier in the \meta{format}.
+Once the correct column widths have been calculated the \texttt{X}
+columns are converted to \texttt{p} columns.
 
-    The code includes one `trick'. The macro \cmd{\makepsmarks}|{X}{code}|
-is equivalent to
-\begin{lcode}
-\newcommand{\Xpshook}{code}
-\end{lcode}
-I have used this knowledge in the line:
+ \subsection{Examples}
+
+    The following code is used for a regular \Ie{tabular}.
 \begin{lcode}
-\makepsmarks{floatcomp}{\companionpshook}
+\begin{figure}
+\centering
+\caption{Example of a regular \texttt{tabular}}
+\begin{tabular}{|c|p{5.5pc}|c|p{5.5pc}|}  \hline
+\multicolumn{2}{|c|}{Multicolumn entry!} & THREE & FOUR \\ \hline
+one &
+\raggedright\arraybackslash The width of this column is fixed 
+(5.5pc). & three &
+\raggedright\arraybackslash Column four will act in the same 
+way as column two, with the same width.\\
+\hline
+\end{tabular}
+\end{figure}
 \end{lcode}
-which avoids having to retype the code from |\makepsmarks{companion}{...}|,
-and ensures that the code is actually the same for the two pagestyles.
 
+\begin{figure}
+\centering
+\caption{Example of a regular \texttt{tabular}}
+\begin{tabular}{|c|p{5.5pc}|c|p{5.5pc}|}   \hline
+\multicolumn{2}{|c|}{Multicolumn entry!} & THREE & FOUR \\  \hline
+one &
+\raggedright\arraybackslash The width of this column is fixed (5.5pc). &
+three &
+\raggedright\arraybackslash Column four will act in the same way as
+  column two, with the same width.\\
+ \hline
+\end{tabular}
+\end{figure}
 
-\begin{syntax}
-\cmd{\mergepagefloatstyle}\marg{style}\marg{textstyle}\marg{floatstyle} \\
-\end{syntax}
-    If you have two pre-existing pagestyles, one that will be used for
-text pages and the other that can be used for float pages, then the
-\cmd{\mergepagefloatstyle} command provides a simpler means of combining
-them than the above example code for \pstyle{floatcomp}. The argument
-\meta{style} is the name of the pagestyle being defined. The
-argument \meta{textstyle}
-is the name of the pagestyle for text pages and \meta{floatstyle} is the
-name of the pagestyle for float-only pages. Both of these must have been 
-defined before calling \cmd{\mergepagefloatstyle}. So, instead of the long
-winded, and possibly tricky, code I could have simply said:
-\begin{lcode}
-\mergepagefloatstyle{floatcomp}{companion}{plain}
-\end{lcode}
 
-\index{float!page|)}
+    The following examples use virtually the same contents, the major
+differences are the specifications of the environment.
 
 
- \section{Epigraphs} 
-\index{epigraph|(}
+\begin{figure}
+\centering
+\caption{Example \texttt{tabularx} and \texttt{tabular*} with widths of 250pt}
+\verb?\begin{tabularx}{250pt}{|c|X|c|X|}?
 
- \tepi{The whole is more than the sum of the parts.}
-      {\textit{Metaphysica \\ Aristotle}}
-
- Some authors like to add an interesting quotation\index{quotation} at either the start
- or end of a chapter. The class provides commands
- to assist in the typesetting of a single epigraph. Other authors like to 
- add many such quotations\index{quotation} and the class provides environments to
- cater for these as well.
- Epigraphs can be typeset at either the left, the center or the right of 
- the typeblock\index{typeblock}. A few example eipgraphs are exhibited here, and
- others can be found in an article by
- Christina Thiele~\cite{TTC199} where she reviewed the \Lpack{epigraph}
-package~\cite{EPIGRAPH} which is included in the class.
+ \begin{tabularx}{250pt}{|c|X|c|X|}
+ \hline
+ \multicolumn{2}{|c|}{Multicolumn entry!}&
+ THREE&
+ FOUR\\
+ \hline
+ one&
+ \raggedright\arraybackslash The width of this column depends on the
+ width of the table.\footnote{You can use footnotes in a \texttt{tabularx}!}
+&
+ three&
+ \raggedright\arraybackslash Column four will act in the same way as
+ column two, with the same width.\\
+ \hline
+ \end{tabularx}
+\vspace{\onelineskip}
 
- \subsection{The \texttt{epigraph} command}
+\verb? \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}? 
 
-  The original inspiration for \cmd{\epigraph} was Doug Schenck's
- for the epigraphs in our book~\cite{EBOOK}. That was hard wired for
- the purpose at hand. The version here provides much more flexibility.
+ \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}
+ \hline
+ \multicolumn{2}{|c|}{Multicolumn entry!}&
+ THREE&
+ FOUR\\
+ \hline
+ one&
+ \raggedright\arraybackslash The width of this column is fixed (5.5pc). &
+ three &
+ \raggedright\arraybackslash Column four will act in the same way as
+ column two, with the same width.\\
+ \hline
+ \end{tabular*}
+\end{figure}
 
+Note that the horizontal rules\index{tabular!rule} extend beyond the 
+last column.
+There are no \texttt{X} columns and the total width required to set
+the \Ie{tabular*} is less than the 250pt specified for the width.
 
-\begin{syntax}
-\cmd{\epigraph}\marg{text}\marg{source} \\
-\end{syntax}
-  The command \cmd{\epigraph}
- typesets
- an epigraph using \meta{text} as the main text of the epigraph and
- \meta{source} being the original author (or book, article, etc.)
- of the quoted text. By default the epigraph is placed at the right hand 
- side of the typeblock\index{typeblock}, and the \meta{source} is typeset at the bottom
- right of the \meta{text}.
 
+Compare the previous narrow \Ie{tabular*} with the next one which is set with 
+\begin{lcode}
+ \begin{tabular*}{300pt}%
+       {|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
+\end{lcode}
 
- \subsection{The \texttt{epigraphs} environment}
+\begin{figure}
+\centering
+\caption{Example \texttt{tabularx} and \texttt{tabular*} with widths of 300pt}
+\verb?\begin{tabularx}{300pt}{|c|X|c|X|}?
 
-\begin{syntax}
-\senv{epigraphs}  \\
-  \cmd{\qitem}\marg{text}\marg{source} \\
-  ... \\
-\eenv{epigraphs} \\
-\end{syntax}
- The \Ie{epigraphs} environment typesets a list of epigraphs, and by default
- places them at the right hand side of the typeblock\index{typeblock}.
-  Each epigraph in an \Ie{epigraphs} environment is specified by a 
- \cmd{\qitem} (analagous to the \cmd{\item}
- command in ordinary list environments).
- By default, the \meta{source} is typeset at the bottom right of the
- \meta{text}. 
+ \begin{tabularx}{300pt}{|c|X|c|X|}
+ \hline
+ \multicolumn{2}{|c|}{Multicolumn entry!}&
+ THREE&
+ FOUR\\
+ \hline
+ one&
+ \raggedright\arraybackslash The width of this column depends on the
+ width of the table.&
+ three&
+ \raggedright\arraybackslash Column four will act in the same way as
+ column two, with the same width.\\
+ \hline
+ \end{tabularx}
 
+\vspace{\onelineskip}
+\verb?\begin{tabular*}{300pt}%? \\
+\verb?      {|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}?
  
+ \begin{tabular*}{300pt}{|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
+ \hline
+ \multicolumn{2}{|c|}{Multicolumn entry!}&
+ THREE&
+ FOUR\\
+ \hline
+ one&
+ \raggedright\arraybackslash The width of this column's text is fixed (5.5pc). &
+ three &
+ \raggedright\arraybackslash Column four will act in the same way as
+ column two, with the same width.\\
+ \hline
+ \end{tabular*}
+\end{figure}
 
- \subsection{General}
 
- \tepi{Example is the school of mankind, and they will learn at no other.}
-      {\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}}
 
-   The commands described in this section apply to both the \cmd{\epigraph}
- command and the |epigraphs| environment. But first of all, note that an
- epigraph immediately after a heading\index{heading} will cause the first paragraph\index{paragraph!indentation}
- of the following text to be indented. If you want the initial paragraph
- to have no indentation, then start it with the \cmd{\noindent} command.
+     The main differences between the \Ie{tabularx} and \Ie{tabular*}
+environments are:
+ \begin{itemize}
+ \item \Ie{tabularx} modifies the widths\index{tabular!column width} 
+ of the \emph{columns},
+ whereas \Ie{tabular*} modifies the widths of the 
+ intercolumn\index{tabular!intercolumn space}  \emph{spaces}.
+ \item \Ie{tabular} and \Ie{tabular*} environments may be
+ nested with no restriction, however if one \Ie{tabularx}
+ environment occurs inside another, then the inner one \emph{must} be
+ enclosed by \verb?{ }?.
+ \item The body of the \Ie{tabularx} environment is in fact the
+ argument to a command, and so certain constructions which are not
+ allowed in command arguments (like \cmd{\verb}) may not be used.\footnote
+ {Actually, \cs{verb} and \cs{verb*} may be used, but they may 
+ treat spaces incorrectly, and the
+ argument can not contain an unmatched {\ttfamily\char`\{} or
+ {\ttfamily\char`\}}, or a  {\ttfamily\char`\%} character.}
+ \item \Ie{tabular*} uses a primitive capability of \tx\ to
+ modify the inter column space of an alignment. \Ie{tabularx}
+ has to set the table several times as it searches for the best column
+ widths, and is therefore much slower. Also the fact that the body is
+ expanded several times may break certain \tx\ constructs.
+ \end{itemize}
 
 \begin{syntax}
- \lnc{\epigraphwidth} \\
-\cmd{\epigraphtextposition}\marg{flush} \\
+\cmd{\tracingtabularx} \\
 \end{syntax}
-  The epigraphs are typeset in a minipage of width \lnc{\epigraphwidth}. 
-The default
- value for this can be changed using the \cmd{\setlength} command. Typically,
- epigraphs are typset in a measure much less than the width of the typeblock\index{typeblock}.
- In order to avoid bad line breaks, the \meta{text} is normally typeset 
- raggedright. 
+\glossary(tracingtabularx)%
+  {\cs{tracingtabularx}}%
+  {Writes information about the changing column widths while setting
+   a \texttt{tabularx}.}
+Following the \cmd{\tracingtabularx} declaration all
+later \Ie{tabularx} environments will print information
+ about column widths as they repeatedly re-set the tables to find the
+ correct widths.
 
-    The \meta{flush} argument to the \cmd{\epigraphtextposition} 
-declaration
-controls the \meta{text} typesetting style. By default this is 
-\texttt{flushleft} (which produces raggedright text). The sensible values
-are \texttt{center} for centered text, \texttt{flushright} for raggedleft
-text, and \texttt{flushleftright} for normal justified text.
 
-    If by any chance you want the \meta{text} to be typeset in some
-other layout style, the easiest
-way to do this is by defining a new environment which sets the paragraphing
-parameters to your desired values. For example, as the \meta{text} is
-typeset in a minipage, there is no paragraph indentation. If you
-want the paragraphs to be indented and justified then define
-a new environment like:
+ By default the \texttt{X} specification is turned into
+ \verb?p?\marg{some value}. Such narrow columns often
+ require a special format, which can be achieved by using the \verb?>? syntax.
+For example, \verb?>{\small}X?. Another format which is useful in narrow 
+columns is  raggedright\index{tabular!raggedright}, 
+however \ltx's \cmd{\raggedright} macro redefines
+\cmd{\\} in a way which conflicts with its use in  \Ie{tabular} or 
+\Ie{array}  environments.
+
+\begin{syntax}
+\cmd{\arraybackslash} \\
+\end{syntax}
+\glossary(arraybackslash)%
+  {\cs{arraybackslash}}%
+  {Use instead of \Vprint{\\} in a tabular column.}
+ For this reason the command \cmd{\arraybackslash} is provided;
+this may be used after a \cmd{\raggedright}, \cmd{\raggedleft}  or
+\cmd{\centering} declaration. Thus a \Ie{tabularx} format may include
 \begin{lcode}
-\newenvironment{myparastyle}{\setlength{\parindent}{1em}}{}
+>{\raggedright\arraybackslash}X
 \end{lcode}
- and use it as: 
+ These format specifications may of course be saved using the
+ command, \cmd{\newcolumntype}\index{tabular!new column type}. 
+After specifying, say,
 \begin{lcode}
-\epigraphtextposition{myparastyle}
+\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}
 \end{lcode}
+then \texttt{Y} could be used in the \Ie{tabularx} format
+ argument.
 
+ 
 \begin{syntax}
- \cmd{\epigraphposition}\marg{flush} \\
-\end{syntax}
-  As noted, the default position of epigraphs is at the right hand side
- of the typeblock\index{typeblock}. The positioning is 
-controlled by 
-the \meta{flush} argument to the \cmd{\epigraphposition} declaration.
-The default value is \texttt{flushright}. This can be changed
- to \texttt{flushleft} for positioning at the left hand side or to
- \texttt{center} for positioning at the center of the typeblock\index{typeblock}.
-
-\begin{syntax}
- \cmd{\epigraphsourceposition}\marg{flush} \\
+\cmd{\tabularxcolumn} \\
 \end{syntax}
- The \meta{flush} argument to the \cmd{\epigraphsourceposition}
-declaration controls the position 
-of the \meta{source}.
- The default value is \texttt{flushright}. It can be changed to
- \texttt{flushleft}, \texttt{center} or \texttt{flushleftright}.
-
- For example, to have epigraphs centered with the \meta{source} at the left,
- add the following to your document.
- \begin{lcode}
- \epigraphposition{center}
- \epigraphsourceposition{flushleft}
- \end{lcode}
+\glossary(tabularxcolumn)%
+  {\cs{tabularxcolumn}}%
+  {Column type for an \texttt{X} column in a \texttt{tabularx}.}
+ The \texttt{X} columns are set using the \texttt{p} column, which
+ corresponds  to \cmd{\parbox}\verb?[t]?. You may want them set using, say, the
+\texttt{m} column, which corresponds to \cmd{\parbox}\verb?[c]?. It is not
+ possible to change the column type using the \texttt{>} syntax, so another
+ system is provided.  \cmd{\tabularxcolumn} should be defined to be a macro
+ with one argument, which expands to the \Ie{tabular} format
+ specification that you want to correspond to \texttt{X}. The
+ argument will be replaced by the calculated width of a column.
 
-\begin{syntax}
-\cmd{\epigraphfontsize}\marg{fontsize} \\
-\end{syntax}
- Epigraphs are often typeset in a smaller font than the main text. The
-\meta{fontsize} argument to the \cmd{\epigraphfontsize}
-declaration sets the font size to be used.
- If you don't like the default value (\cmd{\small}), you can easily change
-it to, say \cmd{\footnotesize} by:
+ The default definition is
 \begin{lcode}
-\epigraphfontsize{\footnotesize}
+\newcommand{\tabularxcolumn}[1]{p{#1}}
 \end{lcode}
-		
-\begin{syntax}
- \lnc{\epigraphrule} \\
-\end{syntax}
- By default, a rule is drawn between the \meta{text} and \meta{source},
- with the rule thickness being given by the value of \lnc{\epigraphrule}.
- The value can be changed by using \cmd{\setlength}.
- A value of \texttt{0pt} will eliminate the rule. Personally, I dislike
- the rule in the list environments.
+This may be changed, for instance
+\begin{lcode}
+\renewcommand{\tabularxcolumn}[1]{>{\small}m{#1}}
+\end{lcode}
+so that \texttt{X} columns will be typeset as \texttt{m} columns using
+the \cmd{\small} font.
 
-\begin{syntax}
- \lnc{\beforeepigraphskip} \\
- \lnc{\afterepigraphskip} \\
-\end{syntax}
- The two |...skip| commands specify the amount of vertical space inserted
- before and after typeset epigraphs. Again, these can be changed by
- \cmd{\setlength}. It is desireable that the sum of their values should be an 
- integer multiple of the \lnc{\baselineskip}.
+ Normally all \texttt{X} columns\index{tabular!X column} 
+in a single table are set to the
+ same width, however it is possible to make \Ie{tabularx} set
+ them to different widths.
+ A format argument of 
+\begin{lcode}
+{>{\hsize=.5\hsize}X>{\hsize=1.5\hsize}X}
+\end{lcode}
+ specifies two columns, where the second will be three times as wide as the
+ first. If you think you need to do things like this try and redesign 
+your table. However, if you must you should follow these two rules.
+ \begin{itemize}
+ \item Make sure that the sum of the widths of all the \texttt{X}
+ columns is unchanged. (In the above example, the new widths still add
+ up to twice the default width, the same as two standard \texttt{X}
+ columns.)
+ \item Do not use \cmd{\multicolumn} entries which cross any \texttt{X}
+ column.
+ \end{itemize}
 
- Note that you can use normal LaTeX commands in the \meta{text} and
- \meta{source} arguments. You may wish to use different fonts for the
- \meta{text} (say roman) and the \meta{source} (say italic).
 
- The epigraph at the start of this section was specified as:
- \begin{lcode}
- \epigraph{Example is the school of mankind,
-           and they will learn at no other.}
-  {\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}}
- \end{lcode}
+ \Ie{tabularx} will not set \texttt{X} columns to a negative width.
+If the widths of the `normal' columns of the table already total more 
+than the requested total width you will get the warning 
+`\texttt{X columns too narrow (table too wide)}'.\index{X columns too narrow (table too wide)}
+ The \texttt{X} columns will be set to a width of 1em
+ and so the table itself will be wider than the requested total width
+ given in the argument to the environment.
+% This behaviour of the package can be customised slightly
+% as noted in the documentation of the code section.
 
- \subsection{Epigraphs before chapter headings}
+    The standard \cmd{\verb} macro does not work inside a \Ie{tabularx},
+just as it does not work in the argument to any macro.
 
-    The \cmd{\epigraph} command and the |epigraphs| environment typeset
- an epigraph at the point in the text where they are placed. The
- first thing that a \cmd{\chapter} command does is to start off a new page,
- so another mechanism is provided for placing an epigraph just before
- a chapter heading\index{heading!chapter}.
-    
 \begin{syntax}
- \cmd{\epigraphhead}\oarg{distance}\marg{text} \\
+\cmd{\TX@verb} \\
 \end{syntax}
-  The \cmd{\epigraphhead} macro  stores \meta{text} 
- for printing at \meta{distance} below the header\index{header} on a page.
- \meta{text} can be ordinary text or, more likely, can be either an
- \cmd{\epigraph} command or an |epigraphs| environment. By default, the 
- epigraph will be typeset at the righthand margin\index{margin}.
- If the command is immediately preceded by a \cmd{\chapter} or \cmd{\chapter*} 
- command, the epigraph is typeset on the chapter title page.
+\glossary(TX@verb)%
+  {\cs{TX@verb}}%
+  {A poor man's \cs{verb} for use in a \texttt{tabularx}.}
+The `poor man's \cmd{\verb}' (and
+ \cmd{\verb*}) defined here is based on page 382 of the \btitle{\tx book}. As
+ explained there, doing verbatim this way means that spaces are not
+ treated correctly, and so \cmd{\verb*} may well be useless. 
+ The mechanism is quite general, and any macro which wants to allow a
+ form of \cmd{\verb} to be used within its argument may
+\begin{lcode}
+\let\verb=\TX@verb
+\end{lcode}
+It must sure that the real definition is restored afterwards.
 
-    The default value for the optional \meta{distance} argument is set so
- that an \cmd{\epigraph} consisting of a single line of quotation\index{quotation} and a single
- line denoting the source is aligned with the bottom of the `Chapter X'
- line produced by the \cmd{\chapter} command. In other cases you will
- have to experiment with the \meta{distance} value. The value for
- \meta{distance} can be either a integer or a real number. The units
- are in terms of the current value for \lnc{\unitlength}. A typical value
- for \meta{distance} for a single line quotation\index{quotation} and source for 
- a \cmd{\chapter*} might be about 70 (points). A positive value
- of \meta{distance} places the epigraph below the page heading and a negative
- value will raise it above the page heading.
+    This version of \cmd{\verb} and \cmd{\verb*} are subject to the 
+following restictions:
+ \begin{enumerate}
+ \item Spaces in the argument are not read verbatim, but may be skipped
+       according to \tx's usual rules.
+ \item Spaces will be added to the output after control words, even if
+       they were not present in the input.
+ \item Unless the argument is a single space, any trailing space,
+       whether in the original argument, or added as in (2),
+       will be omitted.
+ \item The argument must not end with \verb?\?, so \verb?\verb|\|? is not
+      allowed, however, because of (3), \verb?\verb|\ |? produces
+      \verb?\?.
+ \item The argument must be balanced with respect to \verb?{? and \verb?}?. So
+      \verb?\verb|{|? is not allowed.
+ \item A comment character like \verb?%? will not appear verbatim. It will
+       act as usual, commenting out the rest of the input line!
+ \item The combinations \verb=?`= and \verb?!`? will appear as
+       {\ttfamily?`} and {\ttfamily!`} if the Computer Typewriter\index{Typewriter}
+       font is  being used.
+ \end{enumerate}
 
-    Here's some example code:
- \begin{lcode}
- \chapter*{Celestial navigation}
- \epigraphhead[70]{\epigraph{Star crossed lovers.}{\textit{The Bard}}}
- \end{lcode}
 
+\index{tabular|)}
 
- The \meta{text} argument is put into a minipage of width \lnc{\epigraphwidth}.
- If you use something other than \cmd{\epigraph} or |epigraphs| for the
- \meta{text} argument, you may have to so some positioning of the text
- yourself so that it is properly located in the minipage. For example
- \begin{lcode}
- \chapter{Short}
- \renewcommand{\epigraphflush}{center}
- \epigraphhead{\centerline{Short quote}}
- \end{lcode}
+\section{Spaces and rules}
 
- The \cmd{\epigraphhead} command changes the page style for the page on
- which it is specified, so there should be no text between the
- \cmd{\chapter} and the \cmd{\epigraphhead} commands. The page style
-is identical to the \pstyle{plain} page style except for the inclusion of
-the epigraph.
-    If you want a more fancy style for epigraphed chapters you will have
-to do some work yourself.
+\subsection{Spacing}
+
+    Sometimes tabular rows appear vertically challenged.
 
 \begin{syntax}
-\cmd{\epigraphforheader}\oarg{distance}\marg{text} \\
-\cmd{\epigraphpicture} \\
+\cmd{\arraystretch} \\
 \end{syntax}
-The \cmd{\epigraphforheader} macro takes the same arguments as
-\cmd{\epigraphhead} but puts \meta{text} into a zero-sized picture at
-the coordinate position |(0,-<distance>)|; the macro \cmd{\epigraphpicture}
-holds the resulting picture. This can then be used as part of a 
-chapter pagestyle, as in
+\glossary(arraystretch)%
+  {\cs{arraystretch}}%
+  {Multiplication factor for the normal row spacing in tabulars and arrays.}
+The macro \cmd{\arraystretch} controls the spacing between 
+rows.\index{array!row spacing}\index{tabular!row spacing} The normal
+space is multiplied by the value of \cmd{\arraystretch}, whose default
+definition is
 \begin{lcode}
-\makepagestyle{mychapterpagestyle}
+\newcommand{\arraystretch}{1.0}
+\end{lcode}
+If this is changed to 1.25, for example, the row spacing is increased by 25\%.
+
+\begin{syntax}
+\lnc{\extrarowheight} \\
+\end{syntax}
+\glossary(extrarowheight)%
+  {\cs{extrarowheight}}%
+  {Length added to the normal row height in tabulars and arrays.}
+If the length \lnc{\extrarowheight} is positive, its value is added
+to the normal height of every row of the array or table, while
+the depth will remain the same. This is important for tables
+with horizontal lines because those lines normally touch the
+capital letters. For example
+\begin{lcode}
+\begin{table}
+\centering
+\caption{The array and tabular format options.}%
+ \label{tab:tabpream}
+    \setlength{\extrarowheight}{1pt}
+\begin{tabular}{cp{9cm}} \toprule
 ...
-\makeoddhead{mychapterpagestyle}{}{}{\epigraphpicture}
 \end{lcode}
+was used for \tref{tab:tabpream}.
 
+\begin{syntax}
+\lnc{\arraycolsep} \lnc{\tabcolsep} \\
+\end{syntax}
+\glossary(arraycolsep)%
+  {\cs{arraycolsep}}%
+  {Half the space between columns in an array.}
+\glossary(tabcolsep)%
+  {\cs{tabcolsep}}%
+  {Half the space between columns in a tabular.}
+The length \lnc{\arraycolsep} is half the width of the horizontal space
+between columns\index{array!intercolumn space} in an \Ie{array} environment 
+and similarly the length
+\lnc{\tabcolsep} is half the space between 
+columns\index{tabular!intercolumn space} in an \Ie{tabular}
+or \Ie{tabular*} environment.
 
 \begin{syntax}
- \cmd{\dropchapter}\marg{length} \\
- \cmd{\undodrop} \\
+\lnc{\arrayrulewidth} \lnc{\doublerulesep} \\
 \end{syntax}
- If a long epigraph is placed before a chapter title it is possible that the
- bottom of the epigraph may interfere with the chapter title. The command
- \cmd{\dropchapter} will lower any subsequent chapter titles by 
- \meta{length}; a negative \meta{length} will raise the titles.
- The command \cmd{\undodrop} restores subsequent chapter titles to their default
- positions. For example:
- \begin{lcode}
- \dropchapter{2in}
- \chapter{Title}
- \epigraphhead{long epigraph}
- \undodrop
- \end{lcode}
+\glossary(arrayrulewidth)%
+  {\cs{arrayrulewidth}}%
+  {Width of lines (e.g., \cs{hline}, \cs{vline}, etc.) in an array or tabular.}
+The length \lnc{\arrayrulewidth} is the width of the line created by
+a \verb?|? in the format, or by an \cmd{\hline}, \cmd{\cline} or
+\cmd{\vline} command. The length \lnc{\doublerulesep} is the space
+between lines created by two successive \verb?|? options in the format
+or by successive \cmd{\hline} commands.
+
+
+\subsection{Special variations on horizontal lines}
+
+ The family of \texttt{tabular} environments allows
+vertical positioning\index{tabular!vertical position} 
+with respect to the baseline of
+the text in which the environment appears.  By default the
+environment appears centered, but this can be changed to
+align with the first or last line in the environment by
+supplying a \texttt{t} or \texttt{b} value to the
+optional position argument. However, this does not work
+when the first or last element in the environment is a
+\cmd{\hline} command --- in that case the environment is
+aligned at the horizontal rule.
+
+ \pagebreak[3]
+
+ Here is an example:
+ \begin{center}
+ \begin{minipage}[t]{.4\linewidth}
+ Tables
+ \begin{tabular}[t]{l}
+   with no\\ hline\\ commands 
+ \end{tabular} versus \\ tables
+ \begin{tabular}[t]{|l|}
+  \hline
+  with some\\ hline\\ commands\\
+  \hline
+ \end{tabular} used.
+ \end{minipage}
+ \begin{minipage}[t]{.52\linewidth}
+ \begin{verbatim}
+ Tables
+ \begin{tabular}[t]{l}
+  with no\\ hline\\ commands
+ \end{tabular} versus tables
+ \begin{tabular}[t]{|l|}
+  \hline
+  with some\\ hline\\ commands\\
+  \hline
+ \end{tabular} used.
+ \end{verbatim}
+ \end{minipage}
+\end{center}
+
+\begin{syntax}
+\cmd{\firsthline} \cmd{\lasthline} \\
+\lnc{\extratabsurround} \\
+\end{syntax}
+\glossary(firsthline)%
+  {\cs{firsthline}}%
+  {An \cs{hline} (the first) that does not effect vertical alignment of an 
+   array or tabular.}
+\glossary(lasthline)%
+  {\cs{lasthline}}%
+  {An \cs{hline} (the last) that does not effect vertical alignment of an 
+   array or tabular.}
+\glossary(extratabsurround)%
+  {\cs{extratabsurround}}
+  {Adds additional space for \cs{firsthline} and \cs{lasthline}.}
+
+ Using \cmd{\firsthline} and \cmd{\lasthline} will 
+ cure the problem, and the tables will align properly as long
+ as their first or last line does not contain extremely large
+ objects.
+ \begin{center}
+ \begin{minipage}[t]{.4\linewidth}
+ Tables
+ \begin{tabular}[t]{l}
+   with no\\ line \\ commands 
+ \end{tabular} versus \\ tables
+ \begin{tabular}[t]{|l|}
+  \firsthline
+   with some\\ line \\ commands \\
+  \lasthline
+ \end{tabular} used.
+ \end{minipage} 
+ \begin{minipage}[t]{.52\linewidth}
+ \begin{verbatim}
+ Tables
+ \begin{tabular}[t]{l}
+   with no\\ line\\ commands
+ \end{tabular} versus tables
+ \begin{tabular}[t]{|l|}
+  \firsthline
+   with some\\ line\\ commands\\
+  \lasthline
+ \end{tabular} used.
+ \end{verbatim}
+ \end{minipage}
+ \end{center}
+
+ The implementation of these two commands contains an extra
+ dimension, which is called \cmd{\extratabsurround}, to add some
+ additional space at the top and the bottom of such an environment.
+ This is useful if such tables are nested.
+
+ \subsection{Handling of rules}
+ 
+ There are two possible approaches to the handling of horizontal and
+ vertical rules in tables:
+ \begin{enumerate}
+   \item rules can be placed into the available space without
+   enlarging the table, or
+   \item rules can be placed between columns or rows thereby enlarging
+   the table.
+ \end{enumerate}
+ The class implements the second possibility while the
+ default implementation in the \ltx\ kernel implements the first
+ concept. 
+
+   With standard \ltx\ adding rules to a table will not affect the
+   width or height of the table (unless double rules are used), e.g.,
+   changing a format from \verb?lll? to \verb?l|l|l? does not
+   affect the document other than adding rules to the table. In
+   contrast, with the class a table that just fits the
+   \lnc{\textwidth} might now produce an overfull box.
+(But you shouldn't have vertical rules in the first place.)
+
+
+\section{Free tabulars}
+
+\index{tabular!free|(}
+
+    All the tabular environments described so far put the table
+into a box\index{box}, which \ltx\ treats like a large complex
+character, and characters are not broken across\index{page!break} pages. 
+If you
+have a long table\index{table!long} that runs off the bottom of 
+the page you can turn
+to, say, the \Lpack{longtable}~\cite{LONGTABLE} or \Lpack{xtab}~\cite{XTAB}
+packages which will automatically break tables across page boundaries.
+These have various bells and whistles, such as automatically putting
+a caption at the top of each page, repeating the column heads, and 
+so forth. 
+
+\subsection{Continuous tabulars}
+
+\index{tabular!continuous}
+
+\begin{syntax}
+\senv{ctabular}\oarg{pos}\marg{format} rows \eenv{ctabular} \\
+\end{syntax}
+\glossary(ctabular)%
+  {\senv{ctabular}\oarg{pos}\marg{format}}%
+  {Like \texttt{tabular} except that it will continue over a page break.}
+The \Ie{ctabular} environment is similar to \Ie{tabular}, but with a 
+couple of differences, the main one 
+being that the table will merrily continue across page\index{page!break} 
+breaks.
+The \meta{format} argument is the same as for the previous \Ie{array}
+and \Ie{tabular} environments, but the optional \meta{pos} argument
+controls the horizontal position\index{tabular!continuous!position} 
+of the table, not the vertical. The
+possible argument value is one of the following characters:
+\begin{itemize}
+\item[\pixposarg{l}] left justified, 
+\item[\pixposarg{c}] centered, or
+\item[\pixposarg{r}] right justified; 
+\end{itemize}
+the default is \pixposarg{c}.
+
+\begin{lcode}
+\begin{ctabular}{lcr}  \toprule
+LEFT & CENTER & RIGHT \\  \midrule
+l & c & r \\
+l & c & r \\
+l & c & r \\
+l & c & r \\  \bottomrule
+\end{ctabular}
+\end{lcode}
+  
+\begin{ctabular}[c]{lcr}  \toprule
+LEFT & CENTER & RIGHT \\  \midrule
+l & c & r \\
+l & c & r \\
+l & c & r \\
+l & c & r \\  \bottomrule
+\end{ctabular}
+  
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\begin{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    The \Ie{ctabular*} has an extra \meta{width} argument. The table will be
+placed within \meta{width} from the lefthand margin. Essentially
+the following are equivalent:
+\begin{lcode}
+\begin{ctabular}[c]{...}
+\begin{ctabular*}[c]{\textwidth}{...}
+\end{lcode}
+but \ldots
+\begin{lcode}
+\begin{ctabular*}[c]{0.5\textwidth}{lcr}  \toprule
+LEFT & CENTER & RIGHT \\  \midrule
+l & c & r \\
+l & c & r \\
+l & c & r \\
+l & c & r \\  \bottomrule
+\end{ctabular*}
+\end{lcode}
+
+\begin{ctabular*}[c]{0.5\textwidth}{lcr}  \toprule
+LEFT & CENTER & RIGHT \\  \midrule
+l & c & r \\
+l & c & r \\
+l & c & r \\
+l & c & r \\  \bottomrule
+\end{ctabular*}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\end{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+An example use is for setting two texts\index{parallel texts} in parallel, 
+for instance a
+poem and it's translation, without having to be concerned about page
+breaks.
+
+\begin{ctabular}{lcl}
+Je suis Fran\c{c}oys, dont il me pois, &
+\index[lines]{Je suis Fran\c{c}oys, dont il me pois}%
+\index[lines]{I am Fran\c{c}ois, which is unfortunate}& 
+I am Fran\c{c}ois, which is unfortunate, \\
+N\'{e} de Paris empr\`{e}s Pointoise, & & born in Paris near Pointoise, \\
+Et de la corde d'une toise            & & and with a six-foot stretch of rope, \\
+S\c{c}aura mon col que mon cul poise. & & my neck will know my arse's weight. \\
+\multicolumn{3}{r}{Fran\c{c}ois Villon, 1431--1463?}
+\end{ctabular}
+
+    The \Ie{ctabular} environment will probably not be used within
+a \Ie{table} environment (which defeats the possibility of the table
+crossing page boundaries). To caption a \Ie{ctabular} you can define a 
+fixed\index{tabular!free!caption} caption\index{caption!fixed}. 
+For example:
+\begin{lcode}
+\newfixedcaption{\freetabcaption}{table}
+\end{lcode}
+And then \cmd{\freetabcaption} can be used like the normal \cmd{\caption}
+within a \Ie{table} float.
+\newfixedcaption{\freetabcaption}{table}
+
+
+\subsection{Automatic tabulars}
+
+    A tabular format may be used just to list things, for example the
+names of the members of a particular organisation, or the names of
+\ltx\ environments. 
+
+\index{tabular!automatic|(}
+
+    Especially when drafting a document, or when the number of entries
+is likely to change, it is convenient to be able to tabulate a list
+of items without having to explicitly mark the end of each row.
+
+\index{tabular!automatic!by row}
+\begin{syntax}
+\cmd{\autorows}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries} \\
+\end{syntax}
+\glossary(autorows)%
+  {\cs{autorows}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries}}%
+  {Lists the \meta{entries} in rows across \meta{num} columns in a tabular 
+   fashion.}
+The \cmd{\autorows} macro lists the \meta{entries} in rows; that is,
+the entries are typeset left to right and top to bottom. The
+\meta{num} argument is the number of columns.
+The \meta{entries} argument is a comma-separated list of the names to be
+tabulated; there must be no comma after the last of the names before the
+closing brace.
+Table~\ref{tab:autorows} was set by \cmd{\autorows} using:
+\begin{lcode}
+\begin{figure}
+\freetabcaption{Example automatic row ordered table}
+               \label{tab:autorows}
+\autorows{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+\end{figure}
+\end{lcode}
+
+\begin{figure}
+\freetabcaption{Example automatic row ordered table} \label{tab:autorows}
+\autorows{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+\end{figure}
+
+    The \meta{pos} argument controls the horizontal 
+position\index{tabular!automatic!position} of the
+tabular and the \meta{style} argument specifies the location of the
+entries in the columns; each column\index{tabular!automatic!column style} 
+is treated identically. The value
+of a \meta{pos} or \meta{style} argument is one of the following
+characters:
+\begin{itemize}
+\item[\pixposarg{l}] left justified, 
+\item[\pixposarg{c}] centered, or
+\item[\pixposarg{r}] right justified. 
+\end{itemize}
+
+ Each column is normaly the same 
+width,\index{tabular!automatic!column width}\index{tabular!automatic!table width}
+which is large enough to accomodate
+the widest entry in the list.
+A positive \meta{width} (e.g., \verb?{0.8\textwidth}?), defines the overall
+width of the table, and the column width is calculated by dividing \meta{width}
+by the number of columns. Any negative value for the \meta{width} width lets 
+each column be wide enough for the widest entry in that column; 
+the column width is no longer a constant. 
+
+   The examples in \fref{fig:arw} illustrate the effect of the \meta{width} 
+argument (the default value is 0pt). The principal elements of the code
+for the \figurerefname{} are:
+\begin{lcode}
+\begin{figure}
+...
+\autorows[-1pt]{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+...
+\autorows[0pt]{c}{5}{c}{one, two, three, 
+                            ... fourteen }
+...
+\autorows[0.9\textwidth]{c}{5}{c}{one, two, three, 
+                                      ... fourteen }
+\caption{Changing the width of a row ordered table} 
+         \label{fig:arw}
+\end{figure}
+\end{lcode}
+
+\begin{figure}
+\centering
+\meta{width} = \verb?-1pt? 
+\autorows[-1pt]{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+
+\meta{width} = \verb?0pt? (the default)
+ \autorows[0pt]{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+
+\meta{width} = \verb?0.9\textwidth? 
+\autorows[0.9\textwidth]{c}{5}{c}{one, two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+\caption{Changing the width of a row ordered table} \label{fig:arw}
+\end{figure}
+
+
+\begin{syntax}
+\cmd{\autocols}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries} \\
+\end{syntax}
+\glossary(autocols)%
+  {\cs{autocols}\oarg{width}\marg{pos}\marg{num}\marg{style}\marg{entries}}%
+  {Lists the \meta{entries} down \meta{num} columns in a tabular 
+   fashion.}
+The \cmd{\autocols} macro lists its \meta{entries} in 
+columns,\index{tabular!automatic!by column} proceeding
+top to bottom and left to right. The arguments, 
+are the same as for \cmd{\autorows}, except that a negative
+\meta{width} is treated as if it were zero. The column 
+width\index{tabular!automatic!column width}\index{tabular!automatic!table width}
+is always constant 
+throughout the table and is normally sufficient for the
+widest entry. A positive or zero \meta{width} has the same effect as for 
+\cmd{\autorows}.
+
+    If you need to include a comma within one of the entries in the list
+for either \cmd{\autorows} or \cmd{\autocols} you have to use a macro. 
+For instance:
+\begin{lcode}
+\newcommand*{\comma}{,}
+\end{lcode}
+\newcommand*{\comma}{,}
+
+The examples in \fref{fig:acw}, from the following code elements, 
+illustrate these points.
+
+\begin{lcode}
+\begin{figure}
+...
+\autocols{c}{5}{c}{one\comma{} two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+...
+\autocols[0.9\textwidth]{c}{5}{c}{one\comma{} two, three, 
+                                            ... fourteen }
+\caption{Changing the width of a column ordered table} 
+\label{fig:acw}
+\end{figure}
+\end{lcode}
+
+\begin{figure}
+\begin{adjustwidth}{-10mm}{-10mm}
+\centering
+\meta{width} = \verb?0pt? (the default)
+\autocols{c}{5}{c}{one\comma{} two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+
+\meta{width} = \verb?0.9\textwidth? 
+\autocols[0.9\textwidth]{c}{5}{c}{one\comma{} two, three, four, five,
+                   six, seven, eight, nine, ten,
+                   eleven, twelve, thirteen, fourteen }
+\caption{Changing the width of a column ordered table} \label{fig:acw}
+\end{adjustwidth}
+\end{figure}
+
+\index{tabular!automatic|)}
+\index{tabular!free|)}
+
+
+
+
+\chapter{Page notes} \label{chap:mnotes}
+
+   The standard classes provide the \cmd{\footnote} command for notes
+at the bottom of the page. The class provides several styles of footnotes
+and you can also have several series of footnotes for when the material
+gets complicated. The normal \cmd{\marginpar} command puts notes into
+the margin, which may float around a little if there are other
+\cmd{\marginpar}s on the page. The class additionally supplies commands
+for fixed marginal notes and sidebars.
+
+
+\section{Footnotes}
+
+    A footnote can be considered to be a special kind of float\index{float} 
+that is put at the bottom of a page.
+
+\begin{syntax}
+\cmd{\footnote}\oarg{num}\marg{text} \\
+\end{syntax}
+\glossary(footnote)
+  {\cs{footnote}\oarg{num}\marg{text}}%
+  {Put \meta{text} as a footnote.}
+In the main text, the \cmd{\footnote} command puts a marker at the
+point where it is called, and puts the \meta{text}, preceded by the same
+mark, at the bottom of the page. If the optional \meta{num} is used
+then its value is used for the mark, otherwise the \Icn{footnote}
+counter is stepped and provides the mark's value. The \cmd{\footnote}
+command should be used in paragraph mode where it puts the note at the
+bottom of the page, or in a \Ie{minipage} where it puts the note
+at the end of the \Ie{minipage}. Results are likely to be peculiar if
+it used anywhere else (like in a \Ie{tabular}).
+
+\begin{syntax}
+\cmd{\footnotemark}\oarg{num} \\
+\cmd{\footnotetext}\oarg{num}\marg{text} \\
+\end{syntax}
+\glossary(footnotemark)%
+  {\cs{footnotemark}\oarg{num}}%
+  {Typesets a footnote mark.}
+\glossary(footnotetext)%
+  {\cs{footnotetext}\oarg{num}\marg{text}}%
+  {Typesets \meta{text} as a footnote at the bottom of the page but does 
+   not put a mark in the main text.}
+    You can use \cmd{\footnotemark} to put a marker in the main text; the value
+is determined just like that for \cmd{\footnote}. Footnote text can be put 
+at the bottom of the page via \cmd{\footnotetext}; if the optional \meta{num}
+is given it is used as the mark's value, otherwise the value of the
+\Icn{footnote} counter is used.
+   It may be helpful, but completely untrue, to think of \cmd{\footnote} being
+defined like:
+\begin{lcode}
+\newcommand{\footnote}[1]{\footnotemark\footnotetext{#1}}
+\end{lcode}
+In any event, you can use a combination of \cmd{\footnotemark} and 
+\cmd{\footnotetext} to do footnoting where \ltx\ would normally get upset.
+
+\begin{syntax}
+\cmd{\footref}\marg{label} \\
+\end{syntax}
+\glossary(footref)%
+  {\cs{footref}{labstr}}%
+  {Reference a labelled footnote.}
+    On occasions it may be desireable to make more than one reference
+to the text of a footnote\index{footnote!reference}. This can be done by 
+putting a \cmd{\label} in the footnote and then using \cmd{\footref} to refer 
+to the label; this prints the footnote mark. For example:
+\begin{lcode}
+...\footnote{... adults or babies.\label{fn:rabbits}}
+...
+... The footnote\footref{fn:rabbits} on \pref{fn:rabbits} ...
+\end{lcode}
+In this manual, the last line above prints:
+\begin{syntax}
+... The footnote\footref{fn:rabbits} on \pref{fn:rabbits} ... \\
+\end{syntax}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% from membook
+
+\begin{syntax}
+\cmd{\multfootsep} \\
+\end{syntax}
+\glossary(multfootsep)%
+  {\cs{multfootsep}}%
+  {Separator between adjacent footnote marks.}
+In the standard classes if two or more footnotes are applied 
+sequentially\footnote{One footnote}\footnote{Immediately followed by another}
+then the markers in the text are just run together. The class, like the
+\Lpack{footmisc} and \Lpack{ledmac} packages, inserts a 
+separator\index{footnote!marker separator}
+between the marks. In the class the macro \cmd{\multfootsep} is used as
+the separator. Its default definition is:
+\begin{lcode}
+\newcommand*{\multfootsep}{\textsuperscript{\normalfont,}}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\feetabovefloat} \\
+\cmd{\feetbelowfloat} \\
+\end{syntax}
+\glossary(feetabovefloat)%
+  {\cs{feetabovefloat}}%
+  {Typeset footnotes above bottom floats (the default).}
+\glossary(feetbelowfloat)%
+  {\cs{feetbelowfloat}}%
+  {Typeset footnotes below bottom floats.}
+In the standard classes, footnotes on a page that has a float at the
+bottom are typeset before the float. I think that this looks
+peculiar. Following the \cmd{\feetbelowfloat} declaration footnotes 
+will be typeset at the bottom of the page below any bottom 
+floats;\index{footnote!bottom float} 
+they will also be typeset at the bottom of \cmd{\raggedbottom} pages 
+as opposed to being
+put just after the bottom line of text. The standard positioning is
+used following the \cmd{\feetabovefloat} declaration, which is the default.
+
+\subsection{A variety of footnotes}
+
+ \begin{syntax}
+ \cmd{\verbfootnote}\oarg{num}\marg{text} \\
+ \end{syntax}
+\glossary(verbfootnote)%
+  {\cs{verbfootnote}\oarg{num}\marg{text}}%
+  {Like \cs{footnote} except that \meta{text} can contain verbatim material.}
+ The macro \cmd{\verbfootnote} is like the normal \cmd{\footnote}
+except that its \meta{text} agument\index{footnote!verbatim text} 
+can contain verbatim material.
+For example, the next two paragraphs are typeset by this code:
+ \begin{lcode}
+    Below, footnote~\ref{fn1} is a \verb?\footnote? while
+footnote~\ref{fn2} is a \verb?\verbfootnote?.
+
+    The \verb?\verbfootnote? command should 
+appear\footnote{There may be some problems if color is
+		 used.\label{fn1}}
+to give identical results as the normal \verb?\footnote?, 
+but it can include some verbatim 
+text\verbfootnote{The \verb?\footnote? macro, like all 
+                  other macros except for \verb?\verbfootnote?, 
+                  can not contain verbatim text in its 
+                  argument.\label{fn2}}
+in the \meta{text} argument.
+\end{lcode}
+
+     Below, footnote~\ref{fn1} is a \verb?\footnote? while
+ footnote~\ref{fn2} is a \verb?\verbfootnote?.
+
+     The \verb?\verbfootnote? command should 
+ appear\footnote{There may be some problems if color is
+		 used.\label{fn1}}
+ to give identical results as the normal \verb?\footnote?, but it
+ can include some verbatim 
+ text\verbfootnote{The \verb?\footnote? macro, like all other macros
+		   except for \verb?\verbfootnote?, can not contain
+		   verbatim text in its argument.\label{fn2}}
+ in the \meta{text} argument.
+
+
+
+\begin{syntax}
+\cmd{\plainfootnotes} \\
+\cmd{\twocolumnfootnotes} \\
+\cmd{\threecolumnfootnotes} \\
+\cmd{\paragraphfootnotes} \\
+\end{syntax}
+\glossary(plainfootnotes)%
+  {\cs{plainfootnotes}}%
+  {Typeset footnotes as separate marked paragraphs (the default).}
+\glossary(twocolumnfootnotes)%
+  {\cs{twocolumnfootnotes}}%
+  {Typeset footnotes in two columns.}
+\glossary(threecolumnfootnotes)%
+  {\cs{threecolumnfootnotes}}%
+  {Typeset footnotes in three columns.}
+\glossary(paragraphfootnotes)%
+  {\cs{paragraphfootnotes}}%
+  {Typeset footnotes as a single paragraph.}
+
+Normally, each footnote\index{footnotes!as paragraphs} 
+starts a new paragraph. The class provides three
+other\index{footnote!styles} styles, making four in all. 
+Following the \cmd{\twocolumnfootnotes}\index{footnotes!as two columns}
+declaration footnotes will be typeset in two columns, and similarly
+they are typeset in three columns\index{footnotes!as three columns} 
+after the \cmd{\threecolumnfootnotes}
+declaration. Footnotes are run together as a single 
+paragraph\index{footnotes!as a paragraph} after the
+\cmd{\paragraphfootnotes} declaration. The default style is used after
+the \cmd{\plainfootnotes} declaration. 
+
+   The style can be changed at any 
+time but there may be odd effects if the change is made in the middle of
+a page when there are footnotes before and after the declaration. You may
+find it interesting to try changing styles in an article type document 
+that uses \cmd{\maketitle} and \cmd{\thanks}, and some footnotes on the 
+page with the title:
+\begin{lcode}
+\title{...\thanks{...}}
+\author{...\thanks{...}...}
+...
+\begin{document}
+\paragraphfootnotes
+\maketitle
+\plainfootnotes
+...
+\end{lcode}
+
+\begin{syntax}
+\cmd{\footfudgefiddle} \\
+\end{syntax}
+\glossary(footfudgefiddle)%
+  {\cs{footfudgefiddle}}%
+  {Integer number (default 64) to help when typesetting \cs{paragraphfootnotes}.}
+Paragraphed footnotes may overflow\index{footnote!too long} 
+the bottom of a page. \tx\ has
+to estimate the amount of space that the paragraph will require once
+all the footnotes are assembled into it. It then chops off the main text
+to leave the requisite space at the bottom of the page, following which
+it assembles and typesets the paragraph. If it underestimated the size
+then the footnotes will run down the page too far. If this happens then
+you can change \cmd{\footfudgefiddle} to make \tx\ be more generous in
+its estimation. The default is 64 and a value about 10\% higher should
+fix most overruns.
+\begin{lcode}
+\renewcommand*{\footfudgefiddle}{70}
+\end{lcode}
+You must use an integer in the redefinition as the command is going to be 
+used in a place where \tx\ expects an integer.
+
+\begin{syntax}
+\cmd{\footnoteA}\marg{text} \\
+\cmd{\footnoteB}\marg{text} \\
+\cmd{\footnoteC}\marg{text} \\
+\end{syntax}
+\glossary(footnoteA)%
+  {\cs{footnoteA}\marg{text}}%
+  {A series A footnote.}
+\glossary(footnoteB)%
+  {\cs{footnoteB}\marg{text}}%
+  {A series B footnote.}
+\glossary(footnotec)%
+  {\cs{footnoteC}\marg{text}}%
+  {A series C footnote.}
+
+    In addition to the regular \cmd{\footnote} the class provides 
+three further\index{footnote!series} series 
+of footnotes, namely the `A', `B', and `C' series which are
+distinguished by appending the series' uppercase letter at the end of
+the command, like \cmd{\footnoteB} for the `B' series.
+Perhaps the normal footnotes are required, 
+marked\index{footnote!marker} flagged with arabic numerals, and another 
+kind of footnote flagged with roman numerals. Each series has its own
+\cmd{\footnotemarkB}, \cmd{\footnotetextB} and so on matching the regular
+commands.
+
+
+\begin{syntax}
+\cmd{\newfootnoteseries}\marg{series} \\
+\cmd{\plainfootstyle}\marg{series} \\
+\cmd{\twocolumnfootstyle}\marg{series} \\
+\cmd{\threecolumnfootstyle}\marg{series} \\
+\cmd{\paragraphfootstyle}\marg{series} \\
+\end{syntax}
+\glossary(newfootnoteseries)%
+  {\cs{newfootnoteseries}\marg{series}}%
+  {Create a new footnote \meta{series}.}
+\glossary(plainfootstyle)%
+  {\cs{plainfootstyle}\marg{series}}%
+  {Set the \meta{series} footnotes to be typeset plain style.}
+\glossary(twocolumnfootstyle)%
+  {\cs{twocolumnfootstyle}\marg{series}}%
+  {Set the \meta{series} footnotes to be typeset in two column style.}
+\glossary(threecolumnfootstyle)%
+  {\cs{threecolumnfootstyle}\marg{series}}%
+  {Set the \meta{series} footnotes to be typeset in three column style.}
+\glossary(paragraphfootstyle)%
+  {\cs{paragraphfootstyle}\marg{style}}%
+  {Set the \meta{series} footnotes to be typeset in single paragraph style.}
+
+    If you need further series you can create you own.
+A new footnote series\index{footnote!new series} is
+created by the \cmd{\newfootseries} macro, where \meta{series} is an
+alphabetic identifier for the series. This is most conveniently a 
+single (upper case) letter, for example \texttt{P}. 
+
+    Calling, say, \verb?\newfootnoteseries{Q}? creates a set of macros
+equivalent to those for the normal \cmd{\footnote} but with the \meta{series}
+appended. These include \cs{footnoteQ}, \cs{footnotemarkQ},
+\cs{footnotetextQ} and so on. These are used just like the normal
+\cmd{\footnote} and companions.
+
+    By default, a series is set to typeset using the normal style
+of a paragraph per note. The series' style can be changed by using one
+of the \cs{...footstyle} commands.\index{footnote!style}
+
+    For example, to have a `P' (for paragraph) series using roman numerals 
+as markers which, in the main text are superscript with a closing parenthesis
+and at the foot are on the baseline followed by an endash, and the text is
+set in italics at the normal footnote size:
+\begin{lcode}
+\newfootnoteseries{P}
+\paragraphfootstyle{P}
+\renewcommand{\thefootnoteP}{\roman{footnoteP}}
+\footmarkstyleP{#1--}
+\renewcommand{\@makefnmarkP}{%
+              \hbox{\textsuperscript{\@thefnmarkP)}}}
+\renewcommand{\foottextfontP}{\itshape\footnotesize}
+\end{lcode}
+This can then be used like:
+\begin{lcode}
+.... this sentence\footnoteP{A `p' footnote\label{fnp}} 
+includes footnote~\footrefP{fnp}.
+\end{lcode}
+
+   The \cmd{\newfootnoteseries} macro does not create series versions
+of the footnote-related length commands, such as \lnc{\footmarkwidth}
+and \lnc{\footmarksep}, nor does it create versions of \cmd{\footnoterule}.
+
+   At the foot of the page footnotes are grouped according to their series;
+all ordinary footnotes are typeset, then all the first series footnotes 
+(if any), then the second series, and so on. The ordering corresponds to
+the order of \cmd{\newfootnoteseries} commands.
+
+     If you can't specify a particular footnote style using the
+class facilities the \Lpack{footmisc}
+package~\cite{FOOTMISC} provides a range of styles. 
+A variety of styles also comes with the \Lpack{ledmac} package~\cite{LEDMAC} 
+which additionally provides several classes of footnotes that can be mixed
+on a page.
+
+
+
+\subsection{Styling}
+
+\index{footnote!styling|(}
+     The parameters controlling the vertical spacing of footnotes are 
+ illustrated in \fref{fig:fn}.
+
+ \begin{figure}
+ \centering
+ \drawparameterstrue
+ \setlayoutscale{0.4}
+ \drawfootnote
+ \caption{Footnote layout parameters}\label{fig:fn}
+ \end{figure}
+
+     There is a discussion in \Sref{sec:thanks} starting on
+\pref{sec:thanks} about how to style the \cmd{\thanks} command; footnotes
+can be similarly styled. 
+
+    The \cmd{\footnote} macro (and its relations) essentially does three 
+things:
+\begin{itemize}
+\item Typesets a marker\index{footnote!marker} at the point where 
+      \cmd{\footnote} is called;
+\item Typesets a marker\index{footnote!marker} at the bottom of the page 
+      on which \cmd{\footnote} is called;
+\item Following the marker at the bottom of the page, typesets the 
+      text \index{footnote!text} of the footnote.
+\end{itemize}
+
+\begin{syntax}
+\cmd{\@makefnmark} \\
+\cmd{\@thefnmark} \\
+\end{syntax}
+\glossary(@makefnmark)%
+  {\cs{@makefnmark}}%
+  {Typesets the footnote marker where \cs{footnote} is called.}
+\glossary(@thefnmark)%
+  {\cs{@thefnmark}}%
+  {Value of the footnote marker.}
+
+The \cmd{\footnote} macro calls the kernel command \cmd{\@makefnmark} to
+typeset the footnote marker at the point where \cmd{\footnote} is called
+(the value of the marker is kept in the macro \cmd{\@thefnmark}
+which is defined by the \cmd{\footnote} or \cmd{\footnotemark} macros). 
+The default definition typesets the mark\index{footnote!marker!styling} 
+as a superscript and is effectively
+\begin{lcode}
+\newcommand*{\@makefnmark}[1]{\hbox{\textsuperscript{#1}}}
+\end{lcode}
+You can change this if, for example,
+ you wanted the marks to be in parentheses at the baseline.
+ \begin{lcode}
+ \renewcommand*{\@makefnmark}[1]{{\footnotesize (#1)}}
+ \end{lcode}
+ or, somewhat better to take acount of the size of the surounding text
+ \begin{lcode}
+ \renewcommand*{\@makefnmark}[1]{\slashfracstyle{(#1)}
+ \end{lcode}
+
+
+
+\begin{syntax}
+\cmd{\footfootmark} \\
+\cmd{\footmarkstyle}\marg{arg} \\
+\end{syntax}
+\glossary(footfootmark)%
+  {\cs{footfootmark}}%
+  {Typsets the footnote mark at the bottom of the page.}
+\glossary(footmarkstyle)%
+  {\cs{footmarkstyle}\marg{style}}%
+  {Style of the footnote mark at the bottom of the page.}
+The class macro for typesetting the marker at the foot of the page is
+\cmd{\footfootmark}.  The appearance of the mark is contolled by
+\cmd{\footmarkstyle}. The default specification is
+\begin{lcode}
+\footmarkstyle{\textsuperscript{#1}}
+\end{lcode}
+where the \verb?#1? indicates the position of \cmd{\@thefnmark} in the style.
+The default results in the mark being set as a superscript.
+For example, to have the marker set on the baseline 
+and followed by a right parenthesis, do
+\begin{lcode}
+\footmarkstyle{#1) }
+\end{lcode}
+
+\begin{syntax}
+\lnc{\footmarkwidth} \lnc{\footmarksep} \lnc{\footparindent} \\
+\end{syntax}
+\glossary(footmarkwidth)%
+  {\cs{footmarkwidth}}%
+  {Width of footnote mark box.}
+\glossary(footmarksep)%
+  {\cs{footmarksep}}%
+  {Offset from the footnote mark box for lines after the first.}
+\glossary(footparindent)%
+  {\cs{footparindent}}%
+  {Paragraph indent for multiparagraph footnote text.}
+The mark is typeset in a box of width \lnc{\footmarkwidth}
+If this is negative, the mark is outdented
+into the margin, if zero the mark is flush left, and when positive
+the mark is indented. The mark is followed by the 
+text\index{footnote!text} of the footnote. Second and later lines of the
+text are offset by the length \lnc{\footmarksep} from the end of the box.
+The first line of a paragraph within a footnote is indented by
+\lnc{\footparindent}. 
+ The default values for these lengths are:
+\begin{lcode}
+\setlength{\footmarkwidth}{1.8em}
+\setlength{\footmarksep}{-\footmarkwidth}
+\setlength{\footparindent}{1em}
+\end{lcode}
+
+
+\begin{syntax}
+\cmd{\foottextfont} \\
+\end{syntax}
+\glossary(foottextfont)%
+  {\cs{foottextfont}}%
+  {Font for footnote text.}
+The text in the footnote\index{footnote!text!font} is typeset using 
+the \cmd{\foottextfont} font. The default is \cmd{\footnotesize}.
+
+
+    Altogether, the class specifies
+\begin{lcode}
+\footmarkstyle{\textsuperscript{#1}}
+\setlength{\footmarkwidth}{1.8em}
+\setlength{\footmarksep}{-1.8em}
+\setlength{\footparindent}{1em}
+\newcommand{\foottextfont}{\footnotesize}
+\end{lcode}
+to replicate the standard footnote layout. 
+
+    You might like to try the
+combinations of \lnc{\footmarkwidth} and \lnc{\footmarksep} listed
+in \tref{tab:fnstyle} to see which you might prefer.
+Not listed in the \tablerefname, to get the marker flushleft and then 
+the text set as a block paragraph you can try:
+\begin{lcode}
+\setlength{\footmarkwidth}{1.8em}
+\setlength{\footmarksep}{0em}
+\footmarkstyle{#1\hfill}
+\end{lcode}
+
+\begin{table}
+\begin{adjustwidth}{-5mm}{-5mm}
+\centering
+\caption{Some footnote text styles}\label{tab:fnstyle}
+\begin{tabular}{ccp{0.5\textwidth}} \toprule
+\lnc{\footmarkwidth} & \lnc{\footmarksep} & Comment \\ \midrule
+1.8em & -1.8em & Flushleft, regular indented paragraph (the default) \\
+1.8em & 0em    & Indented, block paragraph hung on the mark \\
+%1.8em & 1.8em  & Indented, outdented paragraph \\
+%0em   & -1.8em & Regular indented paragraph, first line flushleft \\
+0em   & 0em    & Flushleft, block paragraph \\
+%0em   & 1.8em  & Outdented paragraph, first line flushleft \\
+%-1.8em & -1.8em & Regular indented paragraph, starting in the margin \\
+%-1.8em & 0em & \\
+-1.8em & 1.8em & Block paragraph, flushleft, mark in the margin \\
+\bottomrule
+\end{tabular}
+\end{adjustwidth}
+\end{table}
+
+    As an example of a rather different scheme, in at least one discipline
+the footnoted text in the main body has a 
+marker\index{footnote!marker!multiple} at each end. It is possible 
+to define a macro to do this:
+\begin{lcode}
+\newcommand{\wrapfootnote}[1]{\stepcounter\@mpfn%
+  %  marks in the text
+  \protected@xdef\@thefnmark{\thempfn}% 
+  \@footnotemark #1\@footnotemark%
+  %  marks at the bottom
+  \protected@xdef\@thefnmark{\thempfn--\thempfn}% 
+  \@footnotetext}
+\end{lcode}
+\makeatletter
+\newcommand{\wrapfootnote}[1]{\stepcounter\@mpfn%
+  % marks in the text
+  \protected@xdef\@thefnmark{\thempfn}% 
+  \@footnotemark #1\@footnotemark%
+  % marks at the bottom
+  \protected@xdef\@thefnmark{\thempfn--\thempfn}%
+  \@footnotetext}
+\makeatother
+The macro is based on a posting to \ctt{} by Donald 
+Arseneau\index{Arseneau, Donald} in November 2003, 
+and is used like this:
+\begin{lcode}
+Some 
+\wrapfootnote{disciplines}{For example, Celtic studies.} 
+require double marks in the text.
+\end{lcode}
+Some 
+\wrapfootnote{disciplines}{For example, Celtic studies.} 
+require double marks in the text.
+
+
+\begin{syntax}
+\cmd{\fnsymbol}\marg{counter} \\
+\cmd{\@fnsymbol}\marg{num} \\
+\end{syntax}
+\glossary(fnsymbol)%
+  {\cs{fnsymbol}\marg{counter}}%
+  {Typesets the representation of the footnote marker.}
+\glossary(@fnsymbol)%
+  {\cs{@fnsymbol}\marg{num}}%
+  {Converts \meta{num} to the footnote marker representation.}
+
+    Any footnotes after this point will be set according to:
+\begin{lcode}
+\setlength{\footmarkwidth}{-1.0em}
+\setlength{\footmarksep}{-\footmarkwidth}
+\footmarkstyle{#1}
+\end{lcode}
+\setlength{\footmarkwidth}{-1.0em}
+\setlength{\footmarksep}{-\footmarkwidth}
+\footmarkstyle{#1}
+
+The \cmd{\fnsymbol} macro typesets the representation of the 
+counter \meta{counter} like a footnote\index{footnote!symbol} symbol. 
+Internally it uses the kernel \cmd{\@fnsymbol} macro which converts 
+a positive integer \meta{num} to a symbol. If you are not fond of
+the standard ordering\index{footnote!symbol!order} of the footnote 
+symbols, this is the macro to change. Its
+original definition is:
+\begin{lcode}
+\def\@fnsymbol#1{\ensuremath{%
+  \ifcase#1\or *\or \dagger\or \ddagger\or 
+  \mathsection\or \mathparagraph\or \|\or **\or 
+  \dagger\dagger \or \ddagger\ddagger \else\@ctrerr\fi}}
+\end{lcode}
+This, as shown by \verb?\@fnsymbol{1},...\@fnsymbol{9}? produces the series:
+\begin{center}
+ \makeatletter
+\@fnsymbol{1},
+\@fnsymbol{2},
+\@fnsymbol{3},
+\@fnsymbol{4},
+\@fnsymbol{5},
+\@fnsymbol{6},
+\@fnsymbol{7},
+\@fnsymbol{8}, and
+\@fnsymbol{9}.
+%\@fnsymbol{10}  % out of bounds
+\makeatother 
+\end{center}
+
+\makeatletter
+\let\m@mold@fnsymbol\@fnsymbol
+\renewcommand*{\@fnsymbol}[1]{\ensuremath{%
+  \ifcase#1\or *\or \dagger\or \ddagger\or
+  \mathsection\or \|\or \mathparagraph\or **\or \dagger\dagger
+  \or \ddagger\ddagger \else\@ctrerr\fi}}
+\makeatother
+    Robert Bringhurst quotes the following as the traditional 
+ordering\index{footnote!symbol!order} (at least up
+to \makeatletter\@fnsymbol{6}\makeatother):
+\begin{center}
+ \makeatletter
+\@fnsymbol{1},
+\@fnsymbol{2},
+\@fnsymbol{3},
+\@fnsymbol{4},
+\@fnsymbol{5},
+\@fnsymbol{6},
+\@fnsymbol{7},
+\@fnsymbol{8}, and
+\@fnsymbol{9}.
+\makeatother 
+\end{center}
+You can obtain this sequence by redefining \cmd{\@fnsymbol} as:
+\begin{lcode}
+\renewcommand*{\@fnsymbol}[1]{\ensuremath{%
+  \ifcase#1\or *\or \dagger\or \ddagger\or
+  \mathsection\or \|\or \mathparagraph\or **\or \dagger\dagger
+  \or \ddagger\ddagger \else\@ctrerr\fi}}
+\end{lcode}
+not forgetting judicious use of \cmd{\makeatletter} and \cmd{\makeatother}
+if you do this in the preamble\index{preamble}. Other authorities or publishers
+may prefer other sequences and symbols.
+\makeatletter\let\@fnsymbol\m@mold@fnsymbol\makeatother
+
+    To get the footnote reference marks\index{reference mark} set with
+symbols use:
+\begin{lcode}
+\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
+\end{lcode}
+or to use roman numerals instead of the regular arabic numbers:
+\begin{lcode}
+\renewcommand*{\thefootnote}{\roman{footnote}}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\footnoterule} \\
+\end{syntax}
+\glossary(footnoterule)%
+{\cs{footnoterule}}%
+{Rule separating footnotes from the main text.}
+
+    The rule separating footnotes from the main text is specified 
+by \cmd{\footnoterule}:
+\begin{lcode}
+\newcommand*{\footnoterule}{%
+  \kern-3pt%
+  \hrule width 0.4\columnwidth
+  \kern 2.6pt}
+\end{lcode}
+If you don't want a rule (but you might later), then the easiest method is:
+\begin{lcode}
+\let\oldfootnoterule\footnoterule
+\renewcommand*{\footnoterule}{}
+\end{lcode}
+and if you later want rules you can write:
+\begin{lcode}
+\let\footnoterule\oldfootnoterule
+\end{lcode} 
+
+
+\index{footnote!styling|)}
+
+\index{footnote|)}
+
+ \section{Marginal notes}
+
+     Some marginalia can also be considered to be kinds of floats. 
+The class provides the standard margin notes\index{margin note} 
+via \cmd{\marginpar}.
+
+ \begin{syntax}
+ \cmd{\marginpar}\oarg{left-text}\marg{text} \\
+ \cmd{\reversemarginpar} \\
+ \cmd{\normalmarginpar} \\
+ \end{syntax}
+\glossary(marginpar)%
+  {\cs{marginpar}\oarg{left-text}\marg{text}}%
+  {Puts \meta{text} into the margin; if given, \meta{left-text} will be
+   used instead of \meta{text} for the left margin.}
+\glossary(reversemarginpar)%
+  {\cs{reversemarginpar}}%
+  {Reverses the normal margins used by \cs{marginpar}.}
+\glossary(normalmarginpar)%
+  {\cs{normalmarginpar}}%
+  {Sets the normal margins used by \cs{marginpar}(the default).}
+ Just as a reminder, the \cmd{\marginpar} macro puts \meta{text} into
+the margin alongside the typeblock --- the particular margin depends
+on the document style and the particular page. Following the declaration
+\cmd{\normalmarginpar}, which is the default, the selected 
+margin\index{margin note!specifying the margin} is:
+\begin{itemize}
+ \item Two columns: the note appears in the margin next to the column.
+ \item Single column, two sided: the note apears in the outside margin
+       (left on verso pages and right on odd numbered pages).
+ \item Single column, one sided: the note appears in the right margin.
+\end{itemize}
+If the optional argument \meta{left-text} is given then this will be used for
+the text\index{margin note!text for particular margin} if the note 
+appears in the left margin, otherwise \meta{text}
+is used no matter which margin. The note text is typeset in a parbox.
+
+     Following the \cmd{\reversemarginpar} declaration the default margins
+are reversed. The placement is determined by the declaration in effect at the
+end of the paragraph containing the \cmd{\marginpar} command. \ltx\ tries
+to align the the top line of the note with the line in the main text where
+the command was given. However, if this would overlap a previous note it will
+be moved\index{margin note!moved} down, and possibly below, the page; 
+a warning message is printed on the terminal if a note is moved. 
+
+     Sometimes \ltx\ gets confused near a page break and a note just after
+a break may get put into the wrong\index{margin note!wrong margin} margin 
+(the wrong margin for the current 
+page but the right one if the note fell on the previous page). If this occurs
+then inserting the \cmd{\strictpagecheck} declaration before 
+any \cmd{\marginpar}
+command is used will prevent this, at the cost of at least one additional
+\ltx\ run.
+
+
+\section{Side notes}
+
+    The vertical position of margin notes\index{margin note!moved} 
+specified via \cmd{\marginpar}
+is flexible so that adjacent notes are prevented from overlapping.
+
+\begin{syntax}
+\cmd{\sidepar}\oarg{left}\marg{right} \\
+\lnc{\sideparvshift} \\
+\end{syntax}
+\glossary(sidepar)%
+  {\cs{sidepar}\oarg{left}\marg{right}}%
+  {Like \cs{marginpar} except that the note does not move vertically.}
+\glossary(sideparvshift)%
+  {\cs{sideparvshift}}%
+  {Move a \cs{sidepar} up/down by this amount.}
+
+    The \cmd{\sidepar} macro is similar to \cmd{\marginpar} except that
+it produces side notes\index{side note} that do not float --- 
+they may overlap. 
+
+The same spacing is used for both \cmd{\marginpar} and \cmd{\sidepar}, namely
+the lengths \lnc{\marginparsep} and \lnc{\marginparwidth}. 
+
+The length
+\lnc{\sideparvshift} can be used to make vertical 
+adjustments\index{side note!adjust position} to the
+position of \cmd{\sidepar} notes. By default this is set to a value
+of 0pt which should align the top of the note with the text line.
+
+    By default the \meta{right} argument is put in the 
+right\index{side note!text for particular margin} margin. When
+the \Lopt{twoside} option is used the \meta{right} argument is put into
+the left margin on the verso (even numbered) pages; however, for these pages
+the optional \meta{left} argument is used instead if it is present. For
+two column text the relevent argument is put into the `outer' margin with 
+respect to the column.
+
+\begin{syntax}
+\cmd{\sideparswitchtrue} \cmd{\sideparswitchfalse} \\
+\cmd{\reversesidepartrue} \cmd{\reversesideparfalse} \\
+\end{syntax}
+\glossary(ifsideparswitch)%
+  {\cs{ifsideparswitch}}%
+  {Depending on the class one/two side option specifies the margin for
+   \cs{sidepar}s.}
+\glossary(ifreversesidepar)%
+  {\cs{ifreversesidepar}}%
+  {If TRUE, reverses the margin for \cs{sidepar}s.}
+    The default placement can be 
+changed\index{side note!specifying the margin} by judicious use of the
+\cs{sideparswitch...} and \cs{reversidepar...} declarations. For two sided
+documents the default is \cmd{\sideparswitchtrue}, which specifies that
+notes should be put into the outer margins; in one sided documents
+the default is \cmd{\sideparswitchfalse} which specifies that notes
+should always be put into the right hand margin. Following the
+declaration \cmd{\reversesidepartrue} notes are put into opposite margin
+than that described above 
+(the default declaration is \cmd{\reversesideparfalse}).
+
+\begin{syntax}
+\cmd{\parnopar} \\
+\end{syntax}
+\glossary(parnopar)%
+  {\cs{parnopar}}%
+  {Forces a new paragraph, but with no apparent break in the text.}
+    When \ltx\  is deciding where to place the side notes it checks whether
+it is on an odd or even page and sometimes TeX doesn't realise that it has just
+moved onto the next page. Effectively TeX typesets paragraph by paragraph 
+(including any side notes) and at the end of each paragraph sees if there
+should have been a page break in the middle of the paragraph. If there was
+it outputs the first part of the paragraph, inserts the page break, and retains
+the second part of the paragraph, without retypesetting it, for eventual
+output at the top of the new page. This means that side notes for any given
+paragraph are in the same margin, either left or right. A side note at the
+end of a paragraph may then end up in the wrong margin. The macro 
+\cmd{\parnopar} forces a new paragraph\index{paragraph break!invisible} 
+but without appearing to (the first
+line in the following paragraph follows immediately after the last element
+in the prior paragraph with no line break). You can use \cmd{\parnopar}
+to make TeX to do its page break calculation when you want it to, by splitting
+what appears to be one paragraph into two paragraphs.
+
+    Bastiaan Veelo\index{Veelo, Bastiaan} has kindly provided example code 
+for another form of a side note, as follows.
+\begin{lcode}
+%% A new command that allows you to note down ideas or annotations in
+%% the margin of the draft. If you are printing on a stock that is wider
+%% than the final page width, we will go to some length to utilise the
+%% paper that would otherwise be trimmed away, assuming you will not be
+%% trimming the draft. These notes will not be printed when we are not
+%% in draft mode.
+\makeatletter
+   \ifdraftdoc
+     \newlength{\draftnotewidth}
+     \newlength{\draftnotesignwidth}
+     \newcommand{\draftnote}[1]{\@bsphack%
+       {%% do not interfere with settings for other marginal notes
+         \strictpagecheck%
+         \checkoddpage%
+         \setlength{\draftnotewidth}{\foremargin}%
+         \addtolength{\draftnotewidth}{\trimedge}%
+         \addtolength{\draftnotewidth}{-3\marginparsep}%
+         \ifoddpage
+           \setlength{\marginparwidth}{\draftnotewidth}%
+           \marginpar{\flushleft\textbf{\textit{\HUGE !\ }}\small #1}%
+         \else
+           \settowidth{\draftnotesignwidth}{\textbf{\textit{\HUGE\ !}}}%
+           \addtolength{\draftnotewidth}{-\draftnotesignwidth}%
+           \marginpar{\raggedleft\makebox[0pt][r]{%% hack around
+               \parbox[t]{\draftnotewidth}{%%%%%%%%% funny behaviour
+                 \raggedleft\small\hspace{0pt}#1%
+               }}\textbf{\textit{\HUGE\ !}}%
+           }%
+         \fi
+       }\@esphack}
+   \else
+     \newcommand{\draftnote}[1]{\@bsphack\@esphack}
+   \fi
+\makeatother
+\end{lcode}
+
+    Bastiaan also noted that it provided an example of using the
+\lnc{\foremargin} length.
+    If you want to try it out, either put the code in your preamble,
+or put it into a package (i.e., \file{.sty} file) without the 
+\cs{makeat...} commands. 
+
+
+\section{Sidebars}
+
+    Sidebars\index{sidebar} are typeset in the margin and usually 
+contain material that is ancilliary to the main text. They may be long 
+and extend for more than one page.\footnote{Donald 
+Arseneau's\index{Arseneau, Donald} help has been invaluable in getting
+the sidebar code to work.}
+
+
+\begin{syntax}
+\cmd{\sidebar}\marg{text} \\
+\end{syntax}
+\glossary(sidebar)%
+  {\cs{sidebar}\marg{text}}%
+  {Typesets \meta{text} in a sidebar.}
+The \cmd{\sidebar} command is like \cmd{\marginpar} in that it sets
+the \meta{text} in the margin. However, unlike \cmd{\marginpar} the
+\meta{text} will start near the top of the page, and may continue onto
+later pages if it is too long to go on a single page. If multiple
+\cmd{\sidebar} commands are used on a page, the several \meta{text}s
+are set one after the other.
+
+\begin{syntax}
+\piif{ifsidebaroneside} \\
+\cmd{\sidebarmargin}\marg{margin} \\
+\end{syntax}
+\glossary(ifsidebaroneside)%
+  {\cs{ifsidebaroneside}}%
+  {If \ptrue\ then sidebars are set in the right margin.}
+\glossary(sidebarmargin)%
+  {\cs{sidebarmargin}\marg{margin}}%
+  {Specifies the \meta{margin}(s) for sidebars.}
+    On two column pages sidebars\index{sidebar!location} are put in the 
+margin next to the column. On one column pages sidebars are put into
+the right hand margin when \piif{ifsidebaroneside} is \ptrue. When it
+is \pfalse\ the margin is controlled by the \cmd{\sidebarmargin}, the
+argument to which may be \texttt{left}, \texttt{right}, \texttt{inner}
+or \texttt{outer} with the obvious meanings (\verb?\sidebarmargin{right}?
+and \verb?\sidebarmargintrue? are equivalent).
+
+\begin{syntax}
+\cmd{\sidebarfont} \cmd{\sidebarform} \\
+\end{syntax}
+\glossary(sidebarfont)%
+  {\cs{sidebarfont}}%
+  {Font used for sidebars.}
+\glossary(sidebarform)%
+  {\cs{sidebarform}}%
+  {Form (e.g., \cs{raggedright}) used for sidebars.}
+The sidebar \meta{text} is typeset using the \cmd{\sidebarfont}, whose initial
+definition is
+\begin{lcode}
+\newcommand{\sidebarfont}{\normalfont}
+\end{lcode}
+Sidebars\index{sidebar!styling} are normally narrow so the text is 
+set raggedright\index{raggedright} to 
+reduce hyphenation\index{hyphenation}
+problems and stop items in environments like \Ie{itemize} from overflowing. 
+More accurately, the text is set according to \cmd{\sidebarform} which is 
+defined as:
+\begin{lcode}
+\newcommand{\sidebarform}{\rightskip=\z@ \@plus 2em}
+\end{lcode}
+which is ragged right but with less raggedness than \cmd{\raggedright}
+would allow. As usual, you can change \cmd{\sidebarform}, for example:
+\begin{lcode}
+\renewcommand{\sidebarform}{}            % justified text
+\end{lcode}
+
+    You may run into problems if the \cmd{\sidebar} command comes near 
+a pagebreak, or if the sidebar text gets typeset alongside main text that
+has non-uniform line spacing (like around a \cmd{\section}). Further,
+the contents of sidebars may not be typeset if they are too near to the
+end of the document.
+
+\begin{syntax}
+\lnc{\sidebarwidth} \lnc{\sidebarhsep} \lnc{\sidebarvsep} \\
+\end{syntax}
+\glossary(sidebarwidth)%
+  {\cs{sidebarwidth}}%
+  {Width of sidebars.}
+\glossary(sidebarhsep)%
+  {\cs{sidebarhsep}}%
+  {Space between the edge of the main text and sidebars.}
+\glossary(sidebarvsep)%
+  {\cs{sidebarvsep}}%
+  {Vertical space between sidebars that fall on the same page.}
+The \meta{text} of a \cmd{\sidebar} is typeset in a column of width 
+\lnc{\sidebarwidth} and there is a horizontal gap of \lnc{\sidebarhsep}
+between the main text and the sidebar. The length \lnc{\sidebarvsep}
+is the vertical gap between sidebars that fall on the same page; it also
+has a role in controlling the start of sidebars with respect to the
+top of the page.
+
+\begin{syntax}
+\lnc{\sidebartopsep} \\
+\cmd{\setsidebarheight}\marg{height} \\
+\end{syntax}
+\glossary(sidebartopsep)%
+  {\cs{sidebartopsep}}%
+  {Controls the vertical position of a sidebar. The default is 0pt which
+   aligns the tops of the typeblock and the sidebar.}
+\glossary(setsidebarheight)%
+  {\cs{setsidebarheight}\marg{height}}%
+  {Sets the height of sidebars. The default is \cs{textheight}.}
+The length \lnc{\sidebartopsep} controls the vertical position of the top
+of a sidebar. The default is 0pt which aligns it with the top of the
+typeblock.
+The command \cmd{\setsidebarheight} sets the height of sidebars to
+\meta{height}, without making any allowance for \lnc{\sidebartopsep}.
+The \meta{length} argument should be equivalent to an integral number 
+of lines. For example:
+\begin{lcode}
+\setsidebarheight{15\onelineskip}
+\end{lcode}
+The default is the \lnc{\textheight}.
+
+    Perhaps you would like sidebars to start two lines below the top of
+the typeblock but still end at the bottom of the typeblock? If so, and
+you are using the \Lpack{calc} package~\cite{CALC}, then the following
+will do the job:
+\begin{lcode}
+\setlength{\sidebartopskip}{2\onelineskip}
+\setsidebarheight{\textheight-\sidebartopskip}
+\end{lcode}
+
+
+    The alignment of the text in a sidebar with the main text may not
+be particularly good and you may wish to do some experimentation
+(possibly through a combination of \lnc{\sidebarvsep} and 
+\cmd{\setsidebarheight}) to improve matters.
+
+    Although you can set the parameters for your sidebars individually it
+is more efficient to use the \cmd{\setsidebars} command; it \emph{must} be 
+used if you change the font and/or the height.
+\begin{syntax}
+\cmd{\setsidebars}\marg{hsep}\marg{width}\marg{vsep}\marg{topsep}\marg{font}\marg{height} \\
+\end{syntax}
+\glossary(setsidebars)%
+  {\cs{setsidebars}\marg{hsep}\marg{width}\marg{vsep}\marg{topsep}\marg{font}\marg{height}}%
+  {Sets the several sidebar parameters.}
+
+The \cmd{\setsidebars} command can be used to set the sidebar parameters.
+\lnc{\sidebarhsep} is set to \meta{hsep}, \lnc{\sidebarwidth} is set to
+\meta{width}, \lnc{\sidebarvsep} is set to \meta{vsep}, \lnc{\sidebartopsep}
+is set to \meta{topsep}, \cmd{\sidebarfont} is set to \meta{font}, 
+and finally \cmd{\setsidebarheight} is used to set the height to \meta{height}.
+The default is:
+\begin{lcode}
+\setsidebars{\marginparsep}{\marginparwidth}{2\onelineskip}%
+            {0pt}{}{\textheight}
+\end{lcode}
+The empty \meta{font} argument means that the normal body font will be used.
+Any, or all, of the arguments can be a \verb?*?, in which case the parameter
+corresponding to that argument is unchanged. Repeating the above example of 
+changing the topskip and the height, assuming that the other defaults are 
+satisfactory except that the width should be 3cm and an italic font should 
+be used:
+\begin{lcode}
+\setsidebars{*}{3cm}{*}{2\onelineskip}{\itshape}%
+            {\textheight-\sidebartopsep}
+\end{lcode}
+
+   Changing the marginpar parameters, for example with \cmd{\setmarginnotes},
+will not affect the sidebar parameters.
+
+   Note that \cmd{\checkandfixthelayout} neither checks nor fixes any of
+the sidebar parameters. This means, for instance, that if you change the
+\lnc{\textheight} from its default value and you want sidebars to have 
+the same height then after changing the \lnc{\textheight} you have to 
+call \cmd{\checkandfixthelayout}  and then call \cmd{\setsidebars} with
+the (new) \lnc{\textheight}. For instance:
+\begin{lcode}
+...
+\settypeblocksize{40\baselineskip}{5in}{*}
+...
+\checkandfixthelayout
+\setsidebars{...}{...}{...}{...}{...}{\textheight}
+\end{lcode}
+
+    Unfortunately if a sidebar is on a double column page that either includes
+a double column float or starts a new chapter then the top of the sidebar
+comes below the float or the chapter title. I have been unable to eliminate 
+this `feature'.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% start membook
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+%%%%% end membook
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+%%%\pagestyle{companion}
+%%\chapterstyle{companion}
+\defaultsecnum
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Decorative text} \label{chap:signposts}
+
+
+\newcommand{\tepi}[2]{\epigraph{#1}{#2}}
+
+% \tepi{My soul, seek not the life of immortals; but enjoy to the full
+%       the resources that are within your reach}
+%      {\textit{Pythian Odes \\ Pindar}}
+\tepi{Too servile a submission to the books and opinions of the ancients
+      has spoiled many an ingenious man, and plagued the world with an
+      abundance of pedants and coxcombs.}
+     {James Puckle (1677?--1724)}
+
+
+    By now we have covered most aspects of typesetting. As far as
+the class is concerned this chapter describes the slightly more fun 
+task of typesetting epigraphs\index{epigraph}.
+
+     Some authors like to add an interesting quotation\index{quotation} 
+at either the start or end of a chapter. The class provides commands
+to assist in the typesetting of a single epigraph. Other authors like to 
+add many such quotations\index{quotation} and the class provides 
+environments to cater for these as well.
+Epigraphs can be typeset at either the left, the center or the right of 
+the typeblock\index{typeblock}. A few example epigraphs are exhibited here, and
+others can be found in an article by
+Christina Thiele~\cite{TTC199} where she reviewed the \Lpack{epigraph}
+package~\cite{EPIGRAPH} which is included in the class.
+
+ \section{Epigraphs} 
+\index{epigraph|(}
+
+% \tepi{The whole is more than the sum of the parts.}
+%      {\textit{Metaphysica \\ Aristotle}}
+
+ %\subsection{The \texttt{epigraph} command}
+
+  The original inspiration for \cmd{\epigraph} was Doug Schenck's
+ for the epigraphs in our book~\cite{EBOOK}. That was hard wired for
+ the purpose at hand. The version here provides much more flexibility.
+
+
+\begin{syntax}
+\cmd{\epigraph}\marg{text}\marg{source} \\
+\end{syntax}
+\glossary(epigraph)%
+  {\cs{epigraph}\marg{text}\marg{source}}%
+  {Typesets the \meta{text} and \meta{source} of an epigraph.}
+ The command \cmd{\epigraph}  typesets
+ an epigraph using \meta{text} as the main text of the epigraph and
+ \meta{source} being the original author (or book, article, etc.)
+ of the quoted text. By default the epigraph is placed at the right hand 
+ side of the typeblock\index{typeblock}, and the \meta{source} is typeset at the bottom
+ right of the \meta{text}.
+
+
+\begin{syntax}
+\senv{epigraphs}  \\
+  \cmd{\qitem}\marg{text}\marg{source} \\
+  ... \\
+\eenv{epigraphs} \\
+\end{syntax}
+\glossary(epigraphs)%
+  {\senv{epigraphs}}%
+  {Environment for several epigraphs.}
+\glossary(qitem)%
+  {\cs{qitem}\marg{text}\marg{source}}%
+  {Typesets the \meta{text} and \meta{source} of an epigraph in an 
+   \texttt{epigrpahs} environment.}
+ The \Ie{epigraphs} environment typesets a list of epigraphs, and by default
+ places them at the right hand side of the typeblock\index{typeblock}.
+  Each epigraph in an \Ie{epigraphs} environment is specified by a 
+ \cmd{\qitem} (analagous to the \cmd{\item}
+ command in ordinary list environments).
+ By default, the \meta{source} is typeset at the bottom right of the
+ \meta{text}. 
+
+ 
+ \section{General}
+
+ \tepi{Example is the school of mankind, and they will learn at no other.}
+      {\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}}
+
+   The commands described in this section apply to both the \cmd{\epigraph}
+command and the \Ie{epigraphs} environment. But first of all, note that an
+epigraph immediately after a heading\index{heading} will cause the 
+first paragraph\index{paragraph!indentation}
+of the following text to be indented. If you want the initial paragraph
+to have no indentation, then start it with the \cmd{\noindent} command.
+
+\begin{syntax}
+  \lnc{\epigraphwidth} \\
+ \cmd{\epigraphposition}\marg{flush} \\
+\end{syntax}
+\glossary(epigraphwidth)%
+  {\cs{epigraphwidth}}%
+  {Textwidth for epigraphs.}
+\glossary(epigraphposition)%
+  {\cs{epigraphposition}\marg{flush}}%
+  {Sets the horizontal placement of epigraphs.}
+  The epigraphs are typeset in a minipage of width \lnc{\epigraphwidth}. 
+The default value for this can be changed using the \cmd{\setlength} command. 
+Typically,  epigraphs are typeset in a measure much less than the width of 
+the typeblock\index{typeblock}. The horizontal position of an epigraph
+in relation to the main typeblock is controlled by 
+the \meta{flush} argument to the \cmd{\epigraphposition} declaration.
+The default value is \texttt{flushright}, so that epigraphs are set
+at the right hand side of the typeblock. This can be changed
+to \texttt{flushleft} for positioning at the left hand side or to
+\texttt{center} for positioning at the center of the 
+typeblock\index{typeblock}.
+
+\begin{syntax}
+\cmd{\epigraphtextposition}\marg{flush} \\
+\end{syntax}
+\glossary(epigraphtextposition)%
+  {\cs{epigraphtextposition}\marg{flush}}
+  {Sets the justification for epigraph text.}
+ In order to avoid bad line breaks, the epigraph \meta{text} is normally 
+typeset raggedright. 
+    The \meta{flush} argument to the \cmd{\epigraphtextposition} 
+declaration controls the \meta{text} typesetting style. By default this is 
+\texttt{flushleft} (which produces raggedright text). The sensible values
+are \texttt{center} for centered text, \texttt{flushright} for raggedleft
+text, and \texttt{flushleftright} for normal justified text.
+
+    If by any chance you want the \meta{text} to be typeset in some
+other layout style, the easiest
+way to do this is by defining a new environment which sets the paragraphing
+parameters to your desired values. For example, as the \meta{text} is
+typeset in a minipage, there is no paragraph indentation. If you
+want the paragraphs to be indented and justified then define
+a new environment like:
+\begin{lcode}
+\newenvironment{myparastyle}{\setlength{\parindent}{1em}}{}
+\end{lcode}
+ and use it as: 
+\begin{lcode}
+\epigraphtextposition{myparastyle}
+\end{lcode}
+
+\begin{syntax}
+ \cmd{\epigraphsourceposition}\marg{flush} \\
+\end{syntax}
+\glossary(epigraphsourceposition)%
+  {\cs{epigraphsourceposition}\marg{flush}}%
+  {Sets the placement of the source within an epigraph.}
+ The \meta{flush} argument to the \cmd{\epigraphsourceposition}
+declaration controls the position 
+of the \meta{source}.
+ The default value is \texttt{flushright}. It can be changed to
+ \texttt{flushleft}, \texttt{center} or \texttt{flushleftright}.
+
+ For example, to have epigraphs centered with the \meta{source} at the left,
+ add the following to your document.
+ \begin{lcode}
+ \epigraphposition{center}
+ \epigraphsourceposition{flushleft}
+ \end{lcode}
+
+\begin{syntax}
+\cmd{\epigraphfontsize}\marg{fontsize} \\
+\end{syntax}
+\glossary(epigraphfontsize)%
+  {\cs{epigraphfontsize}\marg{fontsize}}%
+  {Font size to be used for epigraphs.}
+ Epigraphs are often typeset in a smaller font than the main text. The
+\meta{fontsize} argument to the \cmd{\epigraphfontsize}
+declaration sets the font size to be used.
+ If you don't like the default value (\cmd{\small}), you can easily change
+it to, say \cmd{\footnotesize} by:
+\begin{lcode}
+\epigraphfontsize{\footnotesize}
+\end{lcode}
+		
+\begin{syntax}
+ \lnc{\epigraphrule} \\
+\end{syntax}
+\glossary(epigraphrule)%
+  {\cs{epigraphrule}}%
+  {Thickness of the rule drawn between the text and source of an epigraph.}
+ By default, a rule is drawn between the \meta{text} and \meta{source},
+ with the rule thickness being given by the value of \lnc{\epigraphrule}.
+ The value can be changed by using \cmd{\setlength}.
+ A value of \texttt{0pt} will eliminate the rule. Personally, I dislike
+ the rule in the list environments.
+
+\begin{syntax}
+ \lnc{\beforeepigraphskip} \\
+ \lnc{\afterepigraphskip} \\
+\end{syntax}
+\glossary(beforeepigraphskip)%
+  {\cs{beforeepigraphskip}}%
+  {Vertical space before an epigraph.}
+\glossary(afterepigraphskip)%
+  {\cs{afterepigraphskip}}%
+  {Vertical space after an epigraph.}
+ The two \verb?...skip? commands specify the amount of vertical space inserted
+ before and after typeset epigraphs. Again, these can be changed by
+ \cmd{\setlength}. It is desireable that the sum of their values should be an 
+ integer multiple of the \lnc{\baselineskip}.
+
+ Note that you can use normal LaTeX commands in the \meta{text} and
+ \meta{source} arguments. You may wish to use different fonts for the
+ \meta{text} (say roman) and the \meta{source} (say italic).
+
+ The epigraph at the start of this section was specified as:
+ \begin{lcode}
+ \epigraph{Example is the school of mankind,
+           and they will learn at no other.}
+  {\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}}
+ \end{lcode}
+
+ \section{Epigraphs before chapter headings}
+
+\begingroup
+ \epigraphsourceposition{flushleft}
+ \tepi{If all else fails, immortality can always be assured by spectacular
+       error.}
+      {\textsf{John Kenneth Galbraith}}
+\endgroup
+
+    The \cmd{\epigraph} command and the \Ie{epigraphs} environment typeset
+ an epigraph at the point in the text where they are placed. The
+ first thing that a \cmd{\chapter} command does is to start off a new page,
+ so another mechanism is provided for placing an epigraph just before
+ a chapter heading\index{heading!chapter}.
+    
+\begin{syntax}
+ \cmd{\epigraphhead}\oarg{distance}\marg{text} \\
+\end{syntax}
+\glossary(epigraphhead)%
+  {\cs{epigraphhead}\oarg{distance}\marg{text}}%
+  {Stores \meta{text} for printing at \meta{distance} below the page header.}
+  The \cmd{\epigraphhead} macro  stores \meta{text} 
+ for printing at \meta{distance} below the header\index{header} on a page.
+ \meta{text} can be ordinary text or, more likely, can be either an
+ \cmd{\epigraph} command or an \Ie{epigraphs} environment. By default, the 
+ epigraph will be typeset at the righthand margin\index{margin!right}.
+ If the command is immediately preceded by a \cmd{\chapter} or \cmd{\chapter*} 
+ command, the epigraph is typeset on the chapter title page.
+
+    The default value for the optional \meta{distance} argument is set so
+ that an \cmd{\epigraph} consisting of a single line of 
+quotation\index{quotation} and a single
+line denoting the source is aligned with the bottom of the `Chapter X'
+line produced by the \cmd{\chapter} command using the \cstyle{default} 
+chapterstyle. In other cases you will
+have to experiment with the \meta{distance} value. The value for
+\meta{distance} can be either a integer or a real number. The units
+are in terms of the current value for \lnc{\unitlength}. A typical value
+for \meta{distance} for a single line quotation\index{quotation} and 
+source for a \cmd{\chapter*} might be about 70 (points). A positive value
+of \meta{distance} places the epigraph below the page heading and a negative
+value will raise it above the page heading.
+
+    Here's some example code:
+ \begin{lcode}
+ \chapter*{Celestial navigation}
+ \epigraphhead[70]{\epigraph{Star crossed lovers.}{\textit{The Bard}}}
+ \end{lcode}
+ The \meta{text} argument is put into a minipage of width \lnc{\epigraphwidth}.
+ If you use something other than \cmd{\epigraph} or \Ie{epigraphs} for the
+ \meta{text} argument, you may have to do some positioning of the text
+ yourself so that it is properly located in the minipage. For example
+ \begin{lcode}
+ \chapter{Short}
+ \renewcommand{\epigraphflush}{center}
+ \epigraphhead{\centerline{Short quote}}
+ \end{lcode}
+
+ The \cmd{\epigraphhead} command changes the page style for the page on
+ which it is specified, so there should be no text between the
+\cmd{\chapter} and the \cmd{\epigraphhead} commands. The page style
+is identical to the \pstyle{plain} page style except for the inclusion of
+the epigraph.
+    If you want a more fancy style for epigraphed chapters you will have
+to do some work yourself.
+
+\begin{syntax}
+\cmd{\epigraphforheader}\oarg{distance}\marg{text} \\
+\cmd{\epigraphpicture} \\
+\end{syntax}
+\glossary(epigraphforheader)%
+  {\cs{epigraphforheader}\oarg{distance}\marg{text}}%
+  {Puts \meta{text} into a zero-sized picture (\cs{epigraphpicture})
+   at the coordinate position (0, -meta{distance}).}
+\glossary(epigraphpicture)%
+  {\cs{epigraphpicture}}%
+  {A zero-sized picture holding the result of \cs{epigraphforheader}.}
+The \cmd{\epigraphforheader} macro takes the same arguments as
+\cmd{\epigraphhead} but puts \meta{text} into a zero-sized picture at
+the coordinate position \verb?(0,-<distance>)?; the macro 
+\cmd{\epigraphpicture}
+holds the resulting picture. This can then be used as part of a 
+chapter pagestyle, as in
+\begin{lcode}
+\makepagestyle{mychapterpagestyle}
+...
+\makeoddhead{mychapterpagestyle}{}{}{\epigraphpicture}
+\end{lcode}
+    Of course the \meta{text} argument for \cs{epigraphforheader} need not
+be an \cs{epigraph}, it can be arbitrary text.
+
+\begin{syntax}
+ \cmd{\dropchapter}\marg{length} \\
+ \cmd{\undodrop} \\
+\end{syntax}
+\glossary(dropchapter)%
+  {\cs{dropchapter}\marg{length}}%
+  {Lowers subsequent chapter heads by \meta{length}.}
+\glossary(undodrop)%
+  {\cs{undodrop}}%
+  {Following a \cs{dropchapter} restores subsequent chapter heads to their 
+   normal position.}
+ If a long epigraph is placed before a chapter title it is possible that the
+ bottom of the epigraph may interfere with the chapter title. The command
+ \cmd{\dropchapter} will lower any subsequent chapter titles by 
+ \meta{length}; a negative \meta{length} will raise the titles.
+ The command \cmd{\undodrop} restores subsequent chapter titles to their default
+ positions. For example:
+ \begin{lcode}
+ \dropchapter{2in}
+ \chapter{Title}
+ \epigraphhead{long epigraph}
+ \undodrop
+ \end{lcode}
+
+\index{epigraph|)}
+
+\begin{syntax}
+ \cmd{\cleartoevenpage}\oarg{text} \\
+\end{syntax}
+\glossary(cleartoevenpage)%
+  {\cs{cleartoevenpage}\oarg{text}}%
+  {Clears the current page and moves to the next verso page; the optional
+   \meta{text} is put on the skipped page (if there is one).}
+ On occasions it may be desirable to put something (e.g., an epigraph, a map,
+ a picture) on the page facing the start
+ of a chapter, where the something belongs to the chapter that is about to 
+ start rather than the chapter that has just ended. In order to do this 
+ in a document that is going to be printed
+ doublesided, the chapter must start on an odd numbered page and the 
+ pre-chapter material put on the immediately preceding even numbered page.
+ The \cmd{\cleartoevenpage} command is like \cmd{\cleardoublepage} except
+ that the page following the command will be an even numbered page, and the
+ command takes an optional argument 
+ which is applied to the skipped page (if any).
+
+    Here is an example:
+\begin{lcode}
+ ... end previous chapter.
+ \cleartoevenpage
+ \begin{center}
+ \begin{picture}... \end{picture}
+ \end{center}
+ \chapter{Next chapter}
+\end{lcode}
+ If the style is such that chapter headings\index{heading!chapter} are put at the top of the pages,
+ then it would be advisable to include \verb?\thispagestyle{empty}? 
+(or perhaps \texttt{plain})
+ immediately after \cmd{\cleartoevenpage} to avoid a heading related to the
+ previous chapter from appearing on the page. 
+
+ If the something is like a figure\index{figure} with a numbered caption and the numbering
+ depends on the chapter numbering, then the numbers have to be hand set (unless
+ you define a special chapter command for the purpose). For example:
+\begin{lcode}
+ ... end previous chapter.
+ \cleartoevenpage[\thispagestyle{empty}] % a skipped page to be empty
+ \thispagestyle{plain}
+ \addtocounter{chapter}{1} % increment the chapter number
+ \setcounter{figure}{0}    % initialise figure counter
+ \begin{figure}
+ ...
+ \caption{Pre chapter figure}
+ \end{figure}
+
+ \addtocounter{chapter}{-1} % decrement the chapter number
+ \chapter{Next chapter}     % increments chapter & resets figure numbers
+ \addtocounter{figure}{1}   % to account for pre-chapter figure
+\end{lcode}
+ 
+
+ \subsection{Epigraphs on book or part pages}
+
+\index{epigraph|(}
+
+    If you wish to put an epigraphs on \cmd{\book} or \cmd{\part}
+pages you have to do a little more work than in other cases. This
+is because these division commands do some page flipping before and
+after typesetting the title.
+
+   One method is to put the epigraph into the page header as for epigraphs
+before \cmd{\chapter} titles. By suitable adjustments the epigraph can be
+placed anywhere on the page, independently of whatever else is on the page.
+     A similar scheme may be used for epigraphs on other kinds of pages. 
+ The essential
+ trick is to make sure that the \pstyle{epigraph} pagestyle is used for
+ the page.
+    For an epigraphed bibliography\index{bibliography} 
+or index\index{index}, the macros \cmd{\prebibhook}
+or \cmd{\preindexhook} can be appropriately modified to do this.
+
+    The other method is to subvert the \cmd{\beforepartskip} command 
+for epigraphs before the title, or the \cmd{\afterpartskip} command
+for epigraphs after the title (or the equivalents for \cmd{\book} pages).
+
+    For example:
+\begin{lcode}
+\let\oldbeforepartskip\beforepartskip % save definition
+\renewcommand*{\beforepartskip}{%
+  \epigraph{...}{...}% an epigraph
+  \vfil}
+\part{An epigraphed part}
+...
+\renewcommand*{\beforepartskip}{%
+  \epigraph{...}{...}% another epigraph
+  \vfil}
+\part{A different epigraphed part}
+...
+\let\beforepartskip\oldbeforepartskip % restore definition
+\part{An unepigraphed part}
+...
+\end{lcode}
+
+
+\index{epigraph|)}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage
+%\pagestyle{Ruled}
+%%\chapterstyle{demo}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Poetry} \label{chap:verse}
+
+
+    The typesetting of a poem should ideally be dependent on the
+particular poem. Individual problems do not usually admit of a
+general solution, so this manual and code should be used more
+as a guide towards some solutions rather than providing a ready
+made solution for any particular piece of verse.
+
+    The doggerel used as illustrative material has been taken 
+from~\cite{RUMOUR}.
+
+    Note that for the examples in this section I have made no attempt
+to do other than use the minimal \alltx\ capabilities; in particular
+I have made no attempt to do any special page breaking so some stanzas
+may cross onto the next page --- most undesireable for publication.
+
+\index{verse|(}
+\index{verse!typesetting environments|(}
+
+    The standard \ltx\ classes provide the \Ie{verse} environment which 
+is defined as a particular kind of list. Within the environment you 
+use \cmd{\\}\index{verse!end a line} to end a line, 
+and a blank line will end\index{verse!end a stanza}\index{stanza!end} a 
+stanza. For example, here is the text of a single stanza poem:
+\begin{lcode}
+\newcommand{\garden}{
+I used to love my garden \\
+But now my love is dead \\
+For I found a bachelor's button \\
+In black-eyed Susan's bed.
+}
+\end{lcode}
+\newcommand{\garden}{
+I used to love my garden \\
+But now my love is dead \\
+For I found a bachelor's button \\
+In black-eyed Susan's bed.
+}
+When this is typeset as a normal \ltx\ paragraph\index{paragraph} 
+(with no paragraph indentation), i.e.,
+\begin{lcode}
+\noident\garden
+\end{lcode}
+it looks like: \\[\baselineskip]
+\garden{}
+
+\vspace*{\onelineskip}
+
+   Typesetting it within the \Ie{verse} environment produces:% \\[\baselineskip]
+
+\begin{verse}\index[lines]{I used to love my garden}  
+\garden
+\end{verse}
+
+%\ablankline
+
+The stanza could also be typeset within the \Ie{alltt} environment, defined
+in the standard \Lpack{alltt} package~\cite{ALLTT}, 
+using a normal font and no \cmd{\\} line endings.
+\begin{lcode}
+\begin{alltt}\normalfont
+I used to love my garden 
+But now my love is dead 
+For I found a bachelor's button 
+In black-eyed Susan's bed.
+\end{alltt}
+\end{lcode}
+which produces:
+
+\begin{alltt}\normalfont
+I used to love my garden 
+But now my love is dead 
+For I found a bachelor's button 
+In black-eyed Susan's bed.
+\end{alltt}
+
+The \Ie{alltt} environment is like the \Ie{verbatim} environment except that
+you can use LaTeX macros inside it. 
+   In the \Ie{verse} environment long lines\index{verse!long lines}  
+will be wrapped and indented
+but in the \Ie{alltt} environment there is no indentation. 
+
+Some stanzas have certain lines\index{verse!indent line} indented, 
+often alternate ones. To
+typeset stanzas like this you have to add your own spacing. For
+instance:
+\begin{lcode}
+\begin{verse}
+There was an old party of Lyme \\
+Who married three wives at one time. \\
+\hspace{2em} When asked: `Why the third?' \\
+\hspace{2em} He replied: `One's absurd, \\
+And bigamy, sir, is a crime.'
+\end{verse}
+\end{lcode}
+is typeset as: 
+\begin{verse}\index[lines]{There was an old party of Lyme}
+There was an old party of Lyme \\
+Who married three wives at one time. \\
+\hspace{2em} When asked: `Why the third?' \\
+\hspace{2em} He replied: `One's absurd, \\
+And bigamy, sir, is a crime.'
+\end{verse}
+\vspace{\onelineskip}
+
+Using the \Ie{alltt} environment you can put in the spacing via ordinary
+spaces. That is, this:
+\begin{lcode}
+\begin{alltt}\normalfont
+There was an old party of Lyme
+Who married three wives at one time.
+      When asked: `Why the third?' 
+      He replied: `One's absurd, 
+And bigamy, sir, is a crime.'
+\end{alltt}
+\end{lcode}
+is typeset as
+
+\begin{alltt}
+\normalfont
+There was an old party of Lyme
+Who married three wives at one time.
+      When asked: `Why the third?' 
+      He replied: `One's absurd, 
+And bigamy, sir, is a crime.'
+\end{alltt}
+
+More exotically you could use the TeX \cmd{\parshape} 
+command\footnote{See the \btitle{\tx book} for how to use this.}:
+\begin{lcode}
+\parshape = 5 0pt \linewidth 0pt \linewidth 
+              2em \linewidth 2em \linewidth 0pt \linewidth
+\noindent There was an old party of Lyme \\
+Who married three wives at one time. \\
+When asked: `Why the third?' \\
+He replied: `One's absurd, \\
+And bigamy, sir, is a crime.' \par
+\end{lcode}
+which will be typeset as:
+
+\vspace*{\onelineskip}
+
+\parshape = 5 0pt \linewidth 0pt \linewidth 
+              2em \linewidth 2em \linewidth 0pt \linewidth
+\noindent There was an old party of Lyme \\
+Who married three wives at one time. \\
+When asked: `Why the third?' \\
+He replied: `One's absurd, \\
+And bigamy, sir, is a crime.' \par
+
+
+\vspace*{\onelineskip}
+
+   This is about as much assistance as standard \alltx\ provides, except
+to note that in the \Ie{verse} environment the \cmd{\\*} version of \cmd{\\}
+will prevent\index{verse!prevent page break} a following page break. 
+You can also make judicious use
+of the \cmd{\needspace} macro to keep things together.
+
+\index{verse!typesetting environments|)}
+
+   Some books of poetry, and especially anthologies, have two or more
+indexes\index{index}\index{verse!multiple indexes}, one, say for the 
+poem titles and another for the 
+first lines, and maybe even a third for the poets' names. 
+If you are not using \Lclass{memoir} then 
+the \Lpack{index}~\cite{INDEX} and \Lpack{multind}~\cite{MULTIND}
+packages provide support for multiple indexes\index{index!multiple} 
+in one document.
+
+%\clearpage
+\section{Classy verse} 
+
+    The code provided by the \Lclass{memoir} class is meant to help
+with some aspects of typesetting poetry but does not, and cannot,
+provide a comprehensive solution to all the requirements that
+will arise.
+
+    The main aspects of typesetting poetry that differ from typesetting
+plain text are:
+\begin{itemize}
+\item Poems are usually visually centered\index{verse!centering} on the page.
+\item Some lines\index{verse!indent line} are indented, and often there 
+      is a pattern\index{verse!indent pattern} to the indentation.
+\item When a line is too wide\index{verse!long line} for the page it is 
+      broken and the
+      remaining portion indented with respect to the original start
+      of the line.
+\end{itemize}
+These are the ones that the class attempts to deal with.
+
+\begin{syntax}
+\senv{verse}\oarg{length} ... \eenv{verse} \\
+\lnc{\versewidth} \\
+\end{syntax}
+\glossary(verse)%
+  {\senv{verse}\oarg{length}}%
+  {Environment for typesetting verse; if given the midpoint of \meta{length}
+   is placed at the center of the typeblock measure.}
+\glossary(versewidth)%
+  {\cs{versewidth}}%
+  {Scratch length, typically for use in verse typesetting.}
+The \Ie{verse} environment provided by the class is an extension
+of the usual LaTeX environment. The environment takes one optional
+parameter, which is a length; for example \verb?\begin{verse}[4em]?.
+You may have noticed that the earlier verse examples are all
+near the left margin\index{margin!left}, whereas verses usually look better 
+if they
+are typeset about the center of the page. The length parameter,
+if given, should be about the length of an average line, and then
+the entire contents\index{verse!centering} will be typeset with the mid 
+point of the length centered horizontally on the page.
+
+The length \lnc{\versewidth} is provided as a convenience. It may be used,
+for example, to calculate the length of a line of text for use
+as the optional argument to the \Ie{verse} environment: 
+\begin{lcode}
+\settowidth{\versewidth}{This is the average line,}
+\begin{verse}[\versewidth]
+\end{lcode}
+
+\begin{syntax}
+\lnc{\vleftmargin} \\
+\end{syntax}
+\glossary(vleftmargin)%
+  {\cs{vleftmargin}}%
+  {General verse indent from the left of the typeblock.}
+In the basic \ltx\ \Ie{verse} environment the body of the verse is indented
+from the left of the typeblock by an amount \lnc{\leftmargini}, as is the
+text in many other environments based on the basic \ltx\ \Ie{list}
+environment. For the class's version of \Ie{verse} the default indent
+is set by the length \lnc{\vleftmargin} (which is initially set to
+\lnc{leftmargini}). For poems with particularly long 
+lines\index{verse!long line} it could perhaps be
+advantageous to eliminate any general indentation by:
+\begin{lcode}
+\setlength{\vleftmargin}{0em}
+\end{lcode}
+If necessary the poem could even be moved into the left margin by giving
+\lnc{\vleftmargin} a negative length value, such as -1.5em.
+
+\begin{syntax}
+\lnc{\stanzaskip} \\
+\end{syntax}
+\glossary(stanzaskip)%
+  {\cs{stanzaskip}}%
+  {Vertical space between verse stanzas.}
+    The vertical space\index{stanza!space} between stanzas is the 
+length \lnc{\stanzaskip}. It can be changed by the usual methods.
+
+\begin{syntax}
+\cmd{\vin} \\
+\lnc{\vgap} \\
+\lnc{\vindent} \\
+\end{syntax}
+The command \cmd{\vin} is shorthand for \verb?\hspace*{\vgap}? for use
+at the start of an indented\index{verse!indent space} line of verse. 
+The length \lnc{\vgap}
+(initially 1.5em) can be changed by \cmd{\setlength} or \cmd{\addtolength}.
+When a verse line\index{verse!long line} is too long to fit within the 
+typeblock\index{typeblock} it is wrapped\index{verse!wrapped line indent} 
+to the next line with an initial indent given by the value of the length
+\lnc{vindent}. Its initial value is twice the default value of \lnc{\vgap}.
+
+\begin{syntax}
+\cmd{\\}\oarg{length} \\
+\cmd{\\*}\oarg{length} \\
+\cmdprint{\\!}\oarg{length} \\
+\end{syntax}
+\glossary(\\)%
+  {\Vprint{\\}\oarg{length}}%
+  {Ends a verse line, and adds \meta{length} vertical space.}
+\glossary(\\*)%
+  {\Vprint{\\*}\oarg{length}}%
+  {Ends a line while preventing a pagebreak, and adds \meta{length} vertical space.}
+\glossary(\\!)
+  {\Vprint{\\!}\oarg{length}}%
+  {Ends a verse stanza, and adds \meta{length} vertical space.}
+
+Each line in the \Ie{verse} environment, except possibly for the last line
+in a stanza\index{stanza!last line}, 
+must be ended by \cmd{\\}, which comes in several variants. In each variant
+the optional \meta{length} is the vertical space to be left before the next
+line. The \cmd{\\*} form prohibits a page 
+break\index{stanza!prevent page break} after the line. 
+The \pixslashbang\ form is to be used only for the last 
+line\index{stanza!last line!numbering} in a stanza
+when the lines are being numbered; this is because the line 
+numbers\index{line number} are incremented by the \cmd{\\} macro. 
+It would normally be followed by a blank line.
+
+\begin{syntax}
+\cmd{\verselinebreak}\oarg{length} \\
+\cmdprint{\\>}\oarg{length} \\
+\end{syntax}
+\glossary(verselinebreak)
+  {\cs{verselinebreak}\oarg{length}}%
+  {Makes a break in a verse line, indenting the next part by twice \cs{vgap},
+   or by \meta{length} if it is given.}
+\glossary(\\>)
+  {\Vprint{\\>}\oarg{length}}%
+  {Shorthand for \cs{verselinebreak}.}
+Using \cmd{\verselinebreak} will cause later\index{stanza!line break}
+text in the line to be typeset 
+indented\index{stanza!line break!indent} on the following line. 
+If the optional \meta{length} is not given
+the indentation is twice \lnc{\vgap}, otherwise it is \meta{length}.
+The broken line will count as a single line as far as the \Ie{altverse}
+and \Ie{patverse} environments are concerned. The macro \cmd{\\>} is
+shorthand for \cmd{\verselinebreak}, and unlike other members of the \cmd{\\}
+family the optional \meta{length} is the indentation of the following 
+partial\index{stanza!line break!indent} line, not a vertical skip. 
+Also, the \cmd{\\>} macro does not increment any 
+line number\index{line number}.
+
+\begin{syntax}
+\cmd{\vinphantom}\marg{text} \\
+\end{syntax}
+\glossary(vinphantom)%
+  {\cs{vinphantom}\marg{text}}%
+  {Leaves a space as wide as \meta{text}.}
+Verse lines are sometimes indented according to the space taken by
+the text on the previous line. The macro \cmd{\vinphantom} can be used
+at the start of a line\index{verse!indent space} to give an indentation 
+as though the
+line started with \meta{text}. For example here are a few lines from
+the portion of \textit{Fridthjof's Saga} where Fridthjof and Ingeborg part:
+\begin{egsource}{eg:fridthjof}
+\settowidth{\versewidth}{Nay, nay, I leave thee not, 
+                         thou goest too}
+\begin{verse}[\versewidth]
+\ldots \\* 
+His judgement rendered, he dissolved the Thing. \\*
+\flagverse{Ingeborg} And your decision? \\*
+\flagverse{Fridthjof} \vinphantom{And your decision?} 
+                      Have I ought to choose? \\*
+Is not mine honour bound by his decree? \\*
+And that I will redeem through Angantyr \\*
+His paltry gold doth hide in Nastrand's flood. \\*
+Today will I depart. \\*
+\flagverse{Ingeborg} \vinphantom{Today will I depart.} 
+                     And Ingeborg leave? \\*
+\flagverse{Fridthjof} Nay, nay, I leave thee not, 
+                      thou goest too. \\*
+\flagverse{Ingeborg} Impossible! \\*
+\flagverse{Fridthjof} \vinphantom{Impossible!} 
+                      O! hear me, ere thou answerest.
+\end{verse}
+\end{egsource}
+
+\begin{egresult}[Phantom text in verse]{eg:fridthjof}%
+\settowidth{\versewidth}{Nay, nay, I leave thee not, 
+                         thou goest too}%
+\begin{verse}[\versewidth]
+\ldots\index[lines]{His judgement rendered, he dissolved the Thing} \\*
+His judgement rendered, he dissolved the Thing. \\*
+\flagverse{Ingeborg} And your decision? \\*
+\flagverse{Fridthjof} \vinphantom{And your decision?} 
+                      Have I ought to choose? \\*
+Is not mine honour bound by his decree? \\*
+And that I will redeem through Angantyr \\*
+His paltry gold doth hide in Nastrand's flood. \\*
+Today will I depart. \\*
+\flagverse{Ingeborg} \vinphantom{Today will I depart.} 
+                      And Ingeborg leave? \\*
+\flagverse{Fridthjof} Nay, nay, I leave thee not, 
+                      thou goest too. \\*
+\flagverse{Ingeborg} Impossible! \\*
+\flagverse{Fridthjof} \vinphantom{Impossible!} 
+                       O! hear me, ere thou answerest.
+\end{verse}
+\end{egresult}
+
+    Use of \cmd{\vinphantom} is not restricted to the start of verse lines ---
+it may be used anywhere in text to leave some some 
+blank\index{blank space} space.
+For example, compare the two lines below, which are produced by this code:
+\begin{lcode}
+   \noindent Come away with me and be my love --- Impossible. \\
+Come away with me \vinphantom{and be my love} --- Impossible.
+\end{lcode}
+\noindent Come away with me and be my love --- Impossible. \\
+          Come away with me \vinphantom{and be my love} --- Impossible.
+
+\begin{syntax}
+\cmd{\vleftofline}\marg{text} \\
+\end{syntax}
+\glossary(vleftofline)%
+  {\cs{vleftofline}\marg{text}}%
+  {`Hanging left' \meta{text} at the start of a verse line.}
+A verse line may start with something, for example open quote marks, 
+where it is desireable that it is ignored as far as the alignment of the
+rest of the line is concerned\footnote{Requested by Matthew 
+Ford\index{Ford, Matthew} who also provided the example text.} --- a sort
+of `hanging left punctuation'. When it is put at the start of a line
+in the \Ie{verse} environment the \meta{text} is typeset but ignored as 
+far as horizontal indentation is concerned.
+Compare the two examples.
+
+\begin{egsource}{eg.joel1}
+\noindent ``No, this is what was spoken by the prophet Joel:
+\begin{verse}
+``\,`\,``In the last days,'' God says, \\
+``I will pour out my spirit on all people. \\
+Your sons and daughters will prophesy, \\
+\ldots \\
+And everyone who calls \ldots ''\,'
+\end{verse}
+\end{egsource}
+
+\begin{egresult}[Verse with regular quote marks]{eg.joel1}
+\noindent ``No, this is what was spoken by the prophet Joel:
+\begin{verse}
+``\,`\,``In the last days,'' God says, \\
+``I will pour out my spirit on all people. \\
+Your sons and daughters will prophesy, \\
+\ldots \\
+And everyone who calls \ldots ''\,'
+\end{verse}
+\end{egresult}
+
+\begin{egsource}{eg.joel2}
+\noindent ``No, this is what was spoken by the prophet Joel:
+\begin{verse}
+\vleftofline{``\,`\,``}In the last days,'' God says, \\
+\vleftofline{``}I will pour out my spirit on all people. \\
+Your sons and daughters will prophesy, \\
+\ldots \\
+And everyone who calls \ldots ''\,'
+\end{verse}
+\end{egsource}
+
+\begin{egresult}[Verse with hanging left quote marks]{eg.joel2}
+\noindent ``No, this is what was spoken by the prophet Joel:
+\begin{verse}
+\vleftofline{``\,`\,``}In the last days,'' God says, \\
+\vleftofline{``}I will pour out my spirit on all people. \\
+Your sons and daughters will prophesy, \\
+\ldots \\
+And everyone who calls \ldots ''\,'
+\end{verse}
+\end{egresult}
+
+
+
+\subsection{Indented lines}
+
+Within the \Ie{verse} environment stanzas are normally separated by a 
+blank line in the input. 
+
+\begin{syntax}
+\senv{altverse} ... \eenv{altverse} \\
+\end{syntax}
+\glossary(altverse)%
+  {\senv{altverse}}%
+  {Alternate lines in the stanza are indented.}
+Individual stanzas within \Ie{verse} may, however, 
+be enclosed in the \Ie{altverse}\index{stanza!indent alternate lines} 
+environment. This has the effect of
+indenting the 2nd, 4th, etc., lines of the stanza by the length \lnc{\vgap}.
+
+\begin{syntax}
+\senv{patverse} ... \eenv{patverse} \\
+\senv{patverse*} ... \eenv{patverse*} \\
+\cmd{\indentpattern}\marg{digits} \\
+\end{syntax}
+\glossary(patverse)%
+  {\senv{patverse}}%
+  {Stanza lines are indented according to the \cs{indentpattern};
+   lines after the pattern is completed are not indented.}
+\glossary(patverse*)%
+  {\senv{patverse*}}%
+  {Like \Pe{patverse} except that the pattern will keep repeating.}
+\glossary(indentpattern)%
+  {\cs{indentpattern}\marg{digits}}%
+  {Stanza lines in \Pe{patverse} environment are indented according to
+   the \meta{digits} pattern.}
+As an alternative to the \Ie{altverse} environment, 
+individual stanzas within the \Ie{verse} environment may be enclosed
+in the \Ie{patverse} environment. Within this environment the indentation
+of each line is specified by an indentation\index{stanza!indent pattern} 
+pattern, which consists
+of an array of digits, \(d_{1}\) to \(d_{n}\), and the \(n\)th line is
+indented by \(d_{n}\) times \lnc{\vgap}. However, the first line is
+not indented, irrespective of the value of \(d_{1}\).
+
+    The indentation pattern for a \Ie{patverse} or \Ie{patverse*}
+environment is specified
+via the \cmd{\indentpattern} command, where \meta{digits} is a string
+of digits (e.g., \texttt{3213245281}). With the \Ie{patverse}
+environment, if the pattern is
+shorter than the number of lines in the stanza, the trailing lines will
+not be indented. However, in the \Ie{patverse*} environment the pattern
+keeps repeating until the end of the stanza.
+
+\subsection{Numbering}
+
+\begin{syntax}
+\cmd{\flagverse}\marg{flag} \\
+\lnc{\vleftskip} \\
+\end{syntax}
+\glossary(flagverse)%
+  {\cs{flagverse}\marg{flag}}%
+  {Used at the start of a verse line to put \meta{flag} distance
+  \cs{vleftskip} before the start of the line.}
+\glossary(vleftskip)%
+  {\cs{vleftskip}}%
+  {Space between the argument to \cs{flageverse} and \cs{flagverse}.}
+Putting \cmd{\flagverse} at the start of a line will typeset \meta{flag},
+for example the stanza\index{stanza!number} number,
+ending at a distance \lnc{\vleftskip} before the line. The default for
+\lnc{\vleftskip} is 3em.
+
+The lines in a poem may be numbered.
+
+\begin{syntax}
+\cmd{\linenumberfrequency}\marg{nth} \\
+\cmd{\setverselinenums}\marg{first}\marg{startat} \\
+\end{syntax}
+\glossary(setverselinenums)%
+  {\cs{setverselinenums}\marg{first}\marg{startat}}%
+  {The first line of the following verse is number \marg{first} and the
+   first printed line number should be \meta{startat}.}
+The declaration \cmd{\linenumberfrequency}\marg{nth} will cause every 
+\meta{nth} line\index{line number!frequency} 
+of succeeding verses to be numbered. 
+For example, 
+\verb?\linenumberfrequency{5}?
+will number every fifth line. The default is \verb?\linenumberfrequency{0}? 
+which prevents any numbering. The \cmd{\setverselinenums} macro can be
+used to specify that the number of the first line of the following \Ie{verse}
+shall be \meta{first} and the first printed number shall be \meta{startat}.
+For example, perhaps you are quoting part of a numbered poem. The original
+numbers every tenth line but if your extract starts with line 7, then
+\begin{lcode}
+\linenumberfrequency{10}
+\setverselinenums{7}{10}
+\end{lcode}
+is what you will need.
+
+\begin{syntax}
+\cmd{\thepoemline} \\
+\cmd{\linenumberfont}\marg{font-decl} \\
+\end{syntax}
+\glossary(thepoemline)%
+  {\cs{thepoemline}}%
+  {The numeric representation of verse line numbers (default arabic).}
+    The \Icn{poemline} counter is used in numbering the lines, so the
+number repesentation is \cmd{\thepoemline}, which defaults to 
+arabic numerals, and they are typeset using the font 
+specified\index{line number!font}
+via \cmd{\linenumberfont}; the default is 
+\begin{lcode}
+\linenumberfont{\small\rmfamily}
+\end{lcode}
+for small numbers in the roman font. 
+
+\begin{syntax}
+\cmd{\verselinenumbersright} \\
+\cmd{\verselinenumbersleft} \\
+\lnc{\vrightskip} \\
+\end{syntax}
+\glossary(verselinenumbersright)%
+  {\cs{verselinenumbersright}}%
+  {Following this declaration verse line numbers are set at the right of the
+   verse lines.}
+\glossary(verselinenumbersleft)%
+  {\cs{verselinenumbersleft}}%
+  {Following this declaration verse line numbers are set at the left of the
+   verse lines.}
+\glossary(vrightskip)
+  {\cs{vrightskip}}%
+  {Verse line numbers are set distance \cs{vrightskip} into the margin.}
+Following the declaration
+\cmd{\verselinenumbersright}, which is the default, any verse line numbers
+will be set\index{line number!position} in the righthand margin. 
+The \cmd{\verselinenumbersleft}
+declaration will set any subsequent line numbers to the left of the lines.
+The numbers are set at a distance
+\lnc{\vrightskip} (default 1em) into the margin. 
+
+
+\section{Titles}
+
+    The \cmd{\PoemTitle} command is provided for typesetting titles
+of poems.
+
+\begin{syntax}
+\cmd{\PoemTitle}\oarg{fortoc}\oarg{forhead}\marg{title} \\
+\cmd{\NumberPoemTitle} \\
+\cmd{\PlainPoemTitle} \\
+\cmd{\thepoem} \\
+\end{syntax}
+\glossary(PoemTitle)%
+  {\cs{PoemTitle}\oarg{fortoc}\oarg{forhead}\marg{title}}%
+  {Typesets the title for a poem and puts it into the ToC.}
+\glossary(NumberPoemTitle)%
+  {\cs{NumberPoemTitle}}%
+  {Declaration for \cs{PoemTitle} to be numbered.}
+\glossary(PlainPoemTitle)%
+  {\cs{PlainPoemTitle}}%
+  {Declaration for \cs{PoemTitle} to be unnumbered.}
+\glossary(thepoem)%
+  {\cs{thepoem}}%
+  {Typeset the current Poem Title number}%
+The \cmd{\PoemTitle} command takes the same arguments as the 
+\cmd{\chapter} command; it typesets the title for a poem\index{poem title} 
+and adds it to the ToC\index{poem title!in ToC}. 
+Following the declaration \cmd{\NumberPoemTitle}
+the title is numbered but there is no numbering after the
+\cmd{\PlainPoemTitle} declaration. 
+
+\begin{syntax}
+\cmd{\poemtoc}\marg{sec} \\
+\end{syntax}
+\glossary(poemtoc)%
+  {\cs{poemtoc}}%
+  {Kind of entry for a \cs{PoemTitle} in the ToC.}
+The kind of entry made in the \toc\ by\index{poem title!in ToC} 
+\cmd{\PoemTitle} is defined by \cmd{\poemtoc}. The initial definition is: 
+\begin{lcode}
+\newcommand{\poemtoc}{section}
+\end{lcode}
+for a section-like \toc\ entry. This can be changed to, say, \texttt{chapter}
+or \texttt{subsection} or \ldots.
+
+\begin{syntax}
+\cmd{\poemtitlemark}\marg{forhead} \\
+\cmd{\poemtitlepstyle} \\
+\end{syntax}
+\glossary(poemtitlemark)%
+  {\cs{poemtitlemark}\marg{forhead}}%
+  {Used to set marks for a \cs{PoemTitle}.}
+\glossary(poemtitlepstyle)%
+  {\cs{poemtitlepstyle}}%
+  {Page style for a \cs{PoemTitle}.}
+    The macro \cmd{\poemtitlemark}
+is called with the argument \meta{forhead} so that it may be used
+to set marks for use in a page header via the normal mark process. 
+The \cmd{\poemtitlepstyle}
+macro, which by default does nothing, is provided as a hook so that,
+for example, it can be redefined to specify a particular pagestyle that should
+be used. For example:
+\begin{lcode}
+\renewcommand*{\poemtitlemark}[1]{\markboth{#1}{#1}}
+\renewcommmand*{\poemtitlepstyle}{%
+  \pagestyle{headings}%
+  \thispagestyle{empty}}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\PoemTitle*}\oarg{forhead}\marg{title} \\
+\cmd{\poemtitlestarmark}\marg{forhead} \\
+\cmd{\poemtitlestarpstyle} \\
+\end{syntax}
+\glossary(PoemTitle*)%
+  {\cs{PoemTitle*}\oarg{fortoc}\oarg{forhead}\marg{title}}%
+  {Typesets an unnumbered title for a poem but does not add it to the ToC.}
+\glossary(poemtitlestarmark)%
+  {\cs{poemtitlestarmark}\marg{forhead}}%
+  {Used to set marks for a \cs{PoemTitle*}.}
+\glossary(poemtitlestarpstyle)%
+  {\cs{poemtitlestarpstyle}}%
+  {Page style for a \cs{PoemTitle*}.}
+
+    The \cmd{\PoemTitle*} command produces an unnumbered title that is
+not added to the ToC. Apart from that it operates in the same manner
+as the unstarred version. The \cmd{\poemtitlestarmark} and 
+\cmd{\poemtitlestarpstyle} can be redefined to set marks and pagestyles.
+
+\subsection{Main Poem Title layout parameters}
+
+\begin{syntax}
+\cmd{\PoemTitleheadstart} \\
+\cmd{\printPoemTitlenonum} \\
+\cmd{\printPoemTitlenum} \\
+\cmd{\afterPoemTitlenum} \\
+\cmd{\printPoemTitletitle}\marg{title} \\
+\cmd{\afterPoemTitle} \\
+\end{syntax}
+\glossary(PoemTitleheadstart)%
+  {\cs{PoemTitleheadstart}}%
+  {Called at the start of typesetting a \cs{PoemTitle}.}
+\glossary(printPoemTitlenum)%
+  {\cs{printPoemTitlenum}}%
+  {Typesets the number for a \cs{PoemTitle}.}
+\glossary(printPoemTitlenonum)%
+  {\cs{printPoemTitlenonum}}%
+  {Used instead of \cs{printPoemTitlenum} for an unnumbered \cs{PoemTitle}.}
+\glossary(afterPoemTitlenum)%
+  {\cs{afterPoemTitlenum}}%
+  {Called after printing the number of a \cs{PoemTitle}.}
+\glossary(printPoemTitletitle)%
+  {\cs{printPoemTitletitle}\marg{title}}%
+  {Typesets the title of a \cs{PoemTitle}.}
+\glossary(afterPoemTitle)%
+  {\cs{afterPoemTitle}}%
+  {Called after printing the title of a \cs{PoemTitle}.}
+
+
+    The essence of the code used to typeset a numbered \meta{title} from
+a \cmd{\PoemTitle} is:
+\begin{lcode}
+\PoemTitleheadstart
+\printPoemTitlenum
+\afterPoemTitlenum
+\printPoemTitletitle{title}
+\afterPoemTitle
+\end{lcode}
+If the title is unnumbered then \cmd{\printPoemTitlenonum} is used
+instead of the \cmd{\printPoemTitlenum} and 
+\cmd{\afterPoemTitlenum} pair of macros.
+
+    The various elements of this can be modified to change the layout.
+By default the number is centered above the title, which is also typeset 
+centered, and all in a \cmd{\large} font.
+
+    The elements are detailed in the next section.
+
+\subsection{Detailed Poem Title layout parameters}
+
+\begin{syntax}
+\lnc{\beforePoemTitleskip} \\
+\cmd{\PoemTitlenumfont} \\
+\lnc{\midPoemTitleskip} \\
+\cmd{\PoemTitlefont} \\
+\lnc{\afterPoemTitleskip} \\
+\end{syntax}
+\glossary(beforePoemTitleskip)%
+  {\cs{beforePoemTitleskip}}%
+  {Vertical space before a poem title.}
+\glossary(midPoemTitleskip)%
+  {\cs{midPoemTitleskip}}%
+  {Vertical space between the number and text of a poem title.}
+\glossary(afterPoemTitleskip)%
+  {\cs{afterPoemTitleskip}}%
+  {Vertical space after a poem title}
+\glossary(PoemTitlenumfont)%
+  {\cs{PoemTitlenumfont}}%
+  {Font for the number of a poem title}
+\glossary(PoemTitlefont)%
+  {\cs{PoemTitlefont}}%
+  {Font for the text of a poem title}
+
+
+As defined, \cmd{\PoemTitleheadstart} inserts vertical space 
+before a poem title. The default definition is:
+\begin{lcode}
+\newcommand*{\PoemTitleheadstart}{\vspace{\beforePoemTitleskip}}
+\newlength{\beforePoemTitleskip}
+  \setlength{\beforePoemTitleskip}{1\onelineskip}
+\end{lcode}
+
+\cmd{\printPoemTitlenum} typesets the number for a poem title.
+The default definition, below, prints the number centered and in
+a large font.
+\begin{lcode}
+\newcommand*{\printPoemTitlenum}{\PoemTitlenumfont \thepoem}
+\newcommand*{\PoemTitlenumfont}{\normalfont\large\centering}
+\end{lcode}
+
+The definition of \cmd{\printPoemTitlenonum}, which is used
+when there is no number, is simply
+\begin{lcode}
+\newcommand*{\printPoemTitlenonum}{}
+\end{lcode}
+
+\cmd{\afterPoemTitlenum} is called between setting the number 
+and the title. It ends a paragraph (thus making sure any previous
+\cmd{\centering} is used) and then may add some vertical
+space. The default definition is:
+\begin{lcode}
+\newcommand*{\afterPoemTitlenum}{\par\nobreak\vskip \midPoemTitleskip}
+\newlength{\midPoemTitleskip}
+  \setlength{\midPoemTitleskip}{0pt}
+\end{lcode}
+
+The default definition of \cmd{\printPoemTitletitle} is below.
+It typesets the title centered and in a large font.
+\begin{lcode}
+\newcommand*{\printPoemTitletitle}[1]{\PoemTitlefont #1}
+\newcommand*{\PoemTitlefont}{\normalfont\large\centering}
+\end{lcode}
+
+The macro \cmd{\afterPoemTitle} finishes off the title 
+typesetting. The default definition is:
+\begin{lcode}
+\newcommand*{\afterPoemTitle}{\par\nobreak\vskip \afterPoemTitleskip}
+\newlength{\afterPoemTitleskip}
+  \setlength{\afterPoemTitleskip}{1\onelineskip}
+\end{lcode}
+
+
+
+%\clearpage
+\section{Examples}
+
+   Here are some sample verses using the class facilities.
+
+First a Limerick, but titled\index{poem title} and centered:
+\begin{lcode}
+\renewcommand{\poemtoc}{subsection}
+\PlainPoemTitle
+\PoemTitle{A Limerick}
+\settowidth{\versewidth}{There was a young man of Quebec}
+\begin{verse}[\versewidth]
+There was a young man of Quebec \\
+Who was frozen in snow to his neck. \\
+\vin When asked: `Are you friz?' \\
+\vin He replied: `Yes, I is, \\
+But we don't call this cold in Quebec.'
+\end{verse}
+\end{lcode}
+which gets typeset as below. The \cmd{\poemtoc} is redefined
+to \texttt{subsection} so that the \cmd{\poemtitle} titles
+are entered\index{poem title!in ToC} into the \toc\ as 
+subsections. The titles will not be numbered because of the
+\cmd{\PlainPoemTitle} declaration.
+
+\renewcommand{\poemtoc}{subsection}
+\PlainPoemTitle
+\PoemTitle{A Limerick}
+\settowidth{\versewidth}{There was a young man of Quebec}
+\begin{verse}[\versewidth] \index[lines]{There was a young man of Quebec}
+There was a young man of Quebec \\
+Who was frozen in snow to his neck. \\
+\vin When asked: `Are you friz?' \\
+\vin He replied: `Yes, I is, \\
+But we don't call this cold in Quebec.'
+\end{verse}
+
+\vspace{\onelineskip}
+%\ablankline
+
+    Next is the Garden verse within the \Ie{altverse} environment. Unlike
+earlier renditions this one is titled\index{poem title} and centered. 
+\begin{lcode}
+\settowidth{\versewidth}{But now my love is dead}
+\PoemTitle{Love's lost}
+\begin{verse}[\versewidth]
+\begin{altverse}
+\garden
+\end{altverse}
+\end{verse}
+\end{lcode}
+Note how the alternate lines\index{stanza!indent alternate lines} 
+are automatically indented in the typeset result below.
+
+\settowidth{\versewidth}{But now my love is dead}
+\PoemTitle{Love's lost}
+\begin{verse}[\versewidth]\index[lines]{I used to love my garden}
+\begin{altverse}
+\garden
+\end{altverse}
+\end{verse}
+
+\vspace{\onelineskip}
+% \ablankline
+
+It is left up to you how you might want to add information about
+the author\index{poem!author} of a poem. Here is one example of a 
+macro for this:
+\begin{lcode}
+\newcommand{\attrib}[1]{%
+   \nopagebreak{\raggedleft\footnotesize #1\par}}
+\end{lcode}
+\providecommand{\attrib}[1]{%
+   \nopagebreak{\raggedleft\footnotesize #1\par}}
+
+   This can be used as in the next bit of doggerel.
+\begin{lcode}
+\PoemTitle{Fleas}
+\settowidth{\versewidth}{What a funny thing is a flea}
+\begin{verse}[\versewidth]
+What a funny thing is a flea. \\
+You can't tell a he from a she. \\
+But he can. And she can. \\
+Whoopee!
+\end{verse}
+\attrib{Anonymous}
+\end{lcode}
+
+\PoemTitle{Fleas}
+\settowidth{\versewidth}{What a funny thing is a flea}
+\begin{verse}[\versewidth]\index[lines]{What a funny thing is a flea}
+What a funny thing is a flea. \\
+You can't tell a he from a she. \\
+But he can. And she can. \\
+Whoopee!
+\end{verse}
+\attrib{Anonymous}
+
+\vspace{\onelineskip}
+%\ablankline
+
+The next example demonstrates the automatic line wrapping for 
+overlong\index{stanza!long line} lines.
+\begin{lcode}
+\PoemTitle{In the beginning}
+\settowidth{\versewidth}{And objects at rest tended to 
+                         remain at rest}
+\begin{verse}[\versewidth]
+Then God created Newton, \\
+And objects at rest tended to remain at rest, \\
+And objects in motion tended to remain in motion, \\
+And energy was conserved
+   and momentum was conserved
+   and matter was conserved \\
+And God saw that it was conservative.
+\end{verse}
+\attrib{Possibly from \textit{Analog}, circa 1950}
+\end{lcode}
+
+%%\enlargethispage{\baselineskip}
+\PoemTitle{In the beginning}
+\settowidth{\versewidth}{And objects at rest tended to remain at rest}
+\begin{verse}[\versewidth]\index[lines]{Then God created Newton}
+Then God created Newton, \\
+And objects at rest tended to remain at rest, \\
+And objects in motion tended to remain in motion, \\
+And energy was conserved
+   and momentum was conserved
+   and matter was conserved \\
+And God saw that it was conservative.
+\end{verse}
+\attrib{Possibly from \textit{Analog}, circa 1950}
+
+\vspace{\onelineskip}
+%\ablankline
+
+The following verse demonstrates the use of a forced\index{stanza!line break} 
+linebreak; I have
+used the \cmd{\\>} command instead of the more descriptive,
+but discursive, \cmd{\verselinebreak}. It also
+has a slightly different title\index{poem title!styling} style.
+\begin{lcode}
+\renewcommand{\PoemTitlefont}{%
+              \normalfont\large\itshape\centering}
+\poemtitle{Mathematics}
+\settowidth{\versewidth}{Than Tycho Brahe, or Erra Pater:}
+\begin{verse}[\versewidth]
+In mathematics he was greater \\
+Than Tycho Brahe, or Erra Pater: \\
+For he, by geometric scale, \\
+Could take the size of pots of ale;\\ 
+\settowidth{\versewidth}{Resolve by}%
+Resolve, by sines \\>[\versewidth] and tangents straight, \\
+If bread or butter wanted weight; \\
+And wisely tell what hour o' the day \\
+The clock does strike, by Algebra.
+\end{verse}
+\attrib{Samuel Butler (1612--1680)}
+\end{lcode}
+
+%%\clearpage
+
+\renewcommand{\PoemTitlefont}{\normalfont\large\itshape\centering}
+\PoemTitle{Mathematics}
+\settowidth{\versewidth}{Than Tycho Brahe, or Erra Pater:}
+\begin{verse}[\versewidth]\index[lines]{In mathematics he was greater}
+In mathematics he was greater \\
+Than Tycho Brahe, or Erra Pater: \\
+For he, by geometric scale, \\
+Could take the size of pots of ale;\\ 
+\settowidth{\versewidth}{Resolve by}%
+Resolve, by sines \\>[\versewidth] and tangents straight, \\
+If bread or butter wanted weight; \\
+And wisely tell what hour o' the day \\
+The clock does strike, by Algebra.
+\end{verse}
+\attrib{Samuel Butler (1612--1680)}
+
+\vspace{\onelineskip}
+%\ablankline
+%\clearpage
+
+Another limerick, but this time taking advantage of 
+the \Ie{patverse}\index{verse!indent pattern}
+environment. If you are typesetting a series of limericks 
+a single \cmd{\indentpattern} will do for all of them.
+\begin{lcode}
+\settowidth{\versewidth}{There was a young lady of Ryde}
+\indentpattern{00110}
+\needspace{7\onelineskip}
+\PoemTitle{The Young Lady of Ryde}
+\begin{verse}[\versewidth]
+\begin{patverse}
+There was a young lady of Ryde \\
+Who ate some apples and died. \\
+The apples fermented \\
+Inside the lamented \\
+And made cider inside her inside.
+\end{patverse}
+\end{verse}
+\end{lcode}
+Note that I used the \cmd{\needspace} command to ensure that 
+the limerick will not get broken across a page.
+
+\settowidth{\versewidth}{There was a young lady of Ryde}
+\indentpattern{00110}
+\needspace{7\onelineskip}
+\PoemTitle{The Young Lady of Ryde}
+\begin{verse}[\versewidth]\index[lines]{There was a young lady of Ryde}
+\begin{patverse}
+There was a young lady of Ryde \\
+Who ate some apples and died. \\
+The apples fermented \\
+Inside the lamented \\
+And made cider inside her inside.
+\end{patverse}
+\end{verse}
+
+\vspace{\onelineskip}
+
+
+    The next example is a song you may have head of. This uses 
+\cmd{\flagverse} for labelling\index{stanza!number} the stanzas, 
+and because the lines are numbered\index{line number} they can be referred to. 
+
+\begin{lcode}
+\settowidth{\versewidth}{In a cavern, in a canyon,}
+\PoemTitle{Clementine}
+\begin{verse}[\versewidth]
+\linenumberfrequency{2}
+\begin{altverse}
+\flagverse{1.} In a cavern, in a canyon, \\
+Excavating for a mine, \\
+Lived a miner, forty-niner, \label{vs:49} \\
+And his daughter, Clementine. \\!
+\end{altverse}
+
+\begin{altverse}
+\flagverse{\textsc{chorus}} Oh my darling, Oh my darling, \\
+Oh my darling Clementine. \\
+Thou art lost and gone forever, \\
+Oh my darling Clementine.
+\end{altverse}
+\linenumberfrequency{0}
+\end{verse}
+The `forty-niner' in line~\ref{vs:49} of the song
+refers to the gold rush of 1849.
+\end{lcode}
+
+\settowidth{\versewidth}{In a cavern, in a canyon,}
+\PoemTitle{Clementine}
+\begin{verse}[\versewidth]\index[lines]{In a cavern, in a canyon}
+\linenumberfrequency{2}
+\begin{altverse}
+\flagverse{1.} In a cavern, in a canyon, \\
+Excavating for a mine, \\
+Lived a miner, forty-niner, \label{vs:49} \\
+And his daughter, Clementine. \\!
+\end{altverse}
+
+\begin{altverse}
+\flagverse{\textsc{chorus}} Oh my darling, Oh my darling, \\
+Oh my darling Clementine. \\
+Thou art lost and gone forever, \\
+Oh my darling Clementine.
+\end{altverse}
+\linenumberfrequency{0}
+\end{verse}
+
+\vspace{\onelineskip}
+
+The `forty-niner' in line~\ref{vs:49} of the song
+refers to the gold rush of 1849.
+
+%\ablankline
+
+ The last example is a much more ambitious use\index{stanza!indent pattern} 
+of \cmd{\indentpattern}. In
+this case it is defined as: 
+\begin{lcode}
+\indentpattern{0135554322112346898779775545653222345544456688778899}
+\end{lcode}
+and the result is shown on the next page.
+
+
+\clearpage
+\PoemTitle{Mouse's Tale}
+\settowidth{\versewidth}{a mouse that morning}
+\indentpattern{0135554322112346898779775545653222345544456688778899}
+\begin{verse}[\versewidth]\index[lines]{Fury said to}
+\setlength{\vgap}{1em}
+\begin{patverse}
+\large Fury said to \\
+  a mouse, That \\
+  he met \\
+  in the \\
+  house, \\
+\normalsize `Let us \\
+  both go \\
+  to law: \\
+  \emph{I} will \\
+  prosecute \\
+  \textit{you.} --- \\
+  Come, I'll \\
+\small take no \\
+  denial; \\
+  We must \\
+  have a \\
+  trial: \\
+  For \\
+\footnotesize really \\
+  this \\
+  morning \\
+  I've \\
+  nothing \\
+  to do.' \\
+  Said the \\
+  mouse to \\
+\scriptsize the cur, \\
+  Such a \\
+  trial, \\
+  dear sir, \\
+  With no \\
+  jury or \\
+  judge, \\
+  would be \\
+  wasting \\
+  our breath.' \\
+\tiny  `I'll be \\
+  judge, \\
+  I'll be \\
+  jury.' \\
+  Said \\
+  cunning \\
+  old Fury; \\
+  `I'll try \\
+  the whole \\
+  cause \\
+  and \\
+  condemn \\
+  you \\
+  to \\
+  death.'  \par
+\end{patverse}
+\end{verse}
+\attrib{Lewis Carrol, \textit{Alice's Adventures in Wonderland}, 1865}
+
+
+\index{verse|)}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%% membook
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Boxes, verbatims and files} \label{chap:bvf}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+    The title of this chapter indicates that it deals with three 
+disconnected topics, but there is method in the seeming peculiarity.
+By the end of the chapter you will be able to to write \ltx\ code that
+lets you put things in your document source at one place and have them
+typeset at a different place, or places. For example, if you are writing
+a text book that includes questions and answers then you could write 
+a question and answer together yet have the answer typeset at the
+end of the book. 
+
+    Writing in one place and printing in another is based on outputting
+stuff to a file\index{file!write} and then inputting 
+it\index{file!read} for processing at another place 
+or time. This is just how \ltx\ produces the \toc. It is often important
+when writing to a file that \ltx\ does no processing of any macros, which
+implies that we need to be able to write verbatim. One use of verbatim
+in \ltx\ is to typeset computer code or the like, and to clearly
+distinguish the code from the main text it is often typeset within a box.
+Hence the chapter title.
+
+    The class extends the kinds of boxes\index{box} normally provided, 
+extends the default verbatims\index{verbatim}, and provides a simple means 
+of writing\index{file!write} and reading\index{file!read} files.
+
+    One problem with verbatims\index{verbatim!in argument} is that they 
+can not be used as part of
+an argument to a command. For example to typeset something in a 
+framed\index{frame!minipage}
+\Ie{minipage} the obvious way is to use the \Ie{minipage} as the argument
+to the \cmd{\fbox} macro:
+\begin{lcode}
+\fbox{\begin{minipage}{6cm} 
+      Contents of framed minipage 
+      \end{minipage}}
+\end{lcode}
+This works perfectly well until the contents includes some verbatim
+material, whereupon you will get nasty 
+error\index{\cs{verb} illegal in command argument} messages. However this 
+particular conundrum is solvable, even if the solution is not particularly
+obvious. Here it is.
+
+    We can put things into a box, declared via \cmd{\newsavebox}, and typeset
+the contents of the box later via \cmd{\usebox}. The most common way
+of putting things into a save box is by the \cmd{\sbox} or \cmd{\savebox}
+macros, but as the material for saving is one of the arguments to these 
+macros this approach fails. But, \Ie{lrbox} is an environment form of
+\cmd{\sbox}, so it can handle verbatim material. The code below,
+after getting a new save box, defines a new \Ie{framedminipage} 
+environment\index{frame!minipage!verbatim} which is used just 
+like the standard \Ie{minipage}. 
+The \Ie{framedminipage} 
+starts an \Ie{lrbox} environment and then
+starts a \Ie{minipage} environment, after which comes the contents.
+At the end it closes the two environments and calls \cmd{\fbox} with its
+argument being the contents of the saved box \emph{which have already been
+typeset}.
+\begin{lcode}
+\newsavebox{\minibox}
+\newenvironment{framedminipage}[1]{%
+  \begin{lrbox}{\minibox}\begin{minipage}{#1}}%
+  {\end{minipage}\end{lrbox}\fbox{\usebox{\minibox}}}
+\end{lcode}
+
+\vspace{\onelineskip}
+\noindent\textbf{Question 1.} Can you think of any improvements to
+  the definition of the \Ie{framedminipage} environment?
+
+\vspace{\onelineskip}
+\noindent\textbf{Question 2.} An answer to question 1 is at the end of this
+  chapter. Suggest how it was put there.
+
+
+
+\section{Boxes}
+
+\index{box!framed|(}
+\index{frame!box|(}
+
+    \ltx\ provides some commands to put a box round some text. The class
+extends the available kinds of boxes.
+
+
+\begin{syntax}
+\senv{framed} text \eenv{framed} \\
+\senv{shaded} text \eenv{shaded} \\
+\senv{snugshaded} text \eenv{snugshaded} \\
+%%%%%\cmd{\frameasnormaltrue} \cmd{\frameasnormalfalse} \\
+\end{syntax}
+\glossary(framed)%
+  {\senv{framed}}%
+  {Put a ruled box around the contents of the environment; the box can include
+   pagebreaks.}
+\glossary(shaded)%
+  {\senv{shaded}}%
+  {Put a colored background behind the contents of the environment, which
+   can include pagebreaks. The color extends into the margins a little.}
+\glossary(snugshade)%
+  {\senv{snugshade}}%
+  {Like \Pe{shaded} but does not bleed into the margins.}
+The \Ie{framed}, \Ie{shaded}, and \Ie{snugshade}  
+environments, which were created by Donald Arseneau\index{Arseneau, Donald} 
+as part of his \Lpack{framed} package~\cite{FRAMED},
+put their contents
+into boxes\index{box!include pagebreak} that break across pages. 
+The \Ie{framed} environment delineates
+the box by drawing a rectangular frame. If there is a pagebreak in
+the middle of the box, frames are drawn on both pages.
+
+    The \Ie{shaded} environment typesets the box with a 
+shaded\index{box!shaded background} or
+colored background. This requires the use of the \Lpack{color} 
+package~\cite{COLOR}, which is one of the required \ltx\ packages,
+or the \Lpack{xcolor} package~\cite{XCOLOR}.
+The shading color is \texttt{shadecolor}, which you have to define before
+using the environment. For
+example, to have a light gray background:
+\begin{lcode}
+\definecolor{shadecolor}{gray}{0.9}
+\end{lcode}
+For complete information on this see the documentation for the
+\Lpack{color} or \Lpack{xcolor} packages, or one of the \ltx\ books like the
+\textit{Graphics Companion}~\cite{GCOMPANION}.
+In the \Ie{snugshaded} environment the box clings more closely to its
+contents than it does in the \Ie{shaded} environment.
+
+%%    Following the declaration \cmd{\frameasnomaltrue}, which is the
+%default, normal paragraphing is used for the framed text. On the
+%%other hand, following the declaration \cmd{\frameasnormalfalse}
+%the paragraphing follows the \Ie{minipage} style layout (i.e.,
+%%no indentation of the first line).
+
+    Be aware that these boxes are somewhat delicate; they do not work
+in all circumstances. For example they will not work with the
+\Lpack{multicol} package~\cite{MULTICOL}, and any floats or footnotes
+in the boxes will disappear.
+
+\begin{syntax}
+\lnc{\FrameRule} \lnc{\FrameSep} \lnc{\FrameHeightAdjust} \\
+\end{syntax}
+\glossary(FrameRule)%
+  {\cs{FrameRule}}%
+  {Thickness of the rules around an \Pe{framed} environment.}
+\glossary(FrameSep)%
+  {\cs{FrameSep}}%
+  {Separation between the surrounding box and text in a \Pe{framed} or
+   \Pe{shaded} environment.}
+\glossary(FrameHeightAdjust)%
+  {\cs{FrameHeightAdjust}}%
+  {Height of the top of a frame in a \Pe{framed} environment
+  above the baseline at the top of a page.}
+The \Ie{framed} environment puts the text into an `\cmd{\fbox}' with
+the settings:
+\begin{lcode}
+\setlength{\FrameRule}{\fboxsep}
+\setlength{\FrameSep}{3\fboxsep}
+\end{lcode}
+The length \lnc{\FrameHeightAdjust} is the height of the top of the frame
+above the baseline at the top of a page; its default value is 0.6em.
+
+\index{frame!box!styling}
+\begin{syntax}
+\cmd{\MakeFramed}\marg{settings} \cmd{\endMakeFramed} \\
+\cmd{\FrameCommand} \cmd{\FrameRestore} \\
+\end{syntax}
+\glossary(MakeFramed)%
+  {\cs{MakeFramed}\marg{settings}}%
+  {The \Pe{MakeFramed} environment is the workhorse for the
+   \Pe{framed}, \Pe{shaded}, etc., environments.
+   The \meta{settings} argument controls the final appearance and
+   should include a \cs{FrameRestore} to reset things back to normal.}
+\glossary(endMakeFramed)%
+  {\cs{endMakeFramed}}%
+  {Ends the \Pe{MakeFramed} environment.}
+\glossary(FrameCommand)%
+  {\cs{FrameCommand}}%
+  {Draws a `frame'.}
+\glossary(FrameRestore)%
+  {\cs{FrameRestore}}%
+  {Restores settings after a `frame'.}
+Internally, the environments are specified using the \Ie{MakeFramed}
+environment. The \meta{setting} should contain any adjustments to the 
+text width
+(applied to \lnc{\hsize} and using the \lnc{\width} of the frame itself)
+and a `restore' command, which is normally the provided \cmd{\FrameRestore}
+macro. The frame itself is drawn via the 
+\cmd{\FrameCommand}, which can be changed to obtain other boxing styles. The
+default definition equates to an \cmd{\fbox} and is:
+\begin{lcode}
+\newcommand*{\FrameCommand}{%
+  \setlength{\fboxrule}{\FrameRule}\setlength{\fboxsep}{\FrameSep}%
+  \fbox}
+\end{lcode}
+For example, the \Ie{framed}, \Ie{shaded} and \Ie{snugshade} environments 
+are defined as
+\begin{lcode}
+\newenvironment{framed}{% % uses default \FrameCommand
+  \MakeFramed{\advance\hsize -\width \FrameRestore}}%
+  {\endMakeFramed}
+\newenvironment{shaded}{% % redefines \FrameCommand as \colorbox
+  \def\FrameCommand{\fboxsep=\FrameSep \colorbox{shadecolor}}%
+  \MakeFramed{\FrameRestore}}%
+  {\endMakeFramed}
+\newenvironment{snugshade}{% A tight version of shaded
+  \def\FrameCommand{\colorbox{shadecolor}}%
+  \MakeFramed{\FrameRestore\@setminipage}}%
+  {\par\unskip\endMakeFramed}
+\end{lcode}
+
+    If you wanted a narrow, centered, framed\index{frame!narrow box} 
+environment you could do something like this:
+\begin{lcode}
+\newenvironment{narrowframed}{%
+  \MakeFramed{\setlength{\hsize}{22pc}\FrameRestore}}%
+  {\endMakeFramed}
+\end{lcode}
+where \texttt{22pc} will be the width of the new framed environment.
+
+
+\begin{syntax}
+\senv{leftbar} text \eenv{leftbar} \\
+\end{syntax}
+\glossary(leftbar)%
+  {\senv{leftbar}}%
+  {Draws a thick vertical line in the left margin alongside the contents 
+   of the environment.}
+
+The \Ie{leftbar} environment draws a thick vertical line at the 
+left\index{rule!in margin} of the text. It is defined as
+\begin{lcode}
+\newenvironment{leftbar}{%
+  \def\FrameCommand{\vrule width 3pt \hspace{10pt}}%
+  \MakeFramed{\advance\hsize -\width \FrameRestore}}%
+  {\endMakeFramed}
+\end{lcode}
+
+    By changing the \meta{setting} for \cmd{\MakeFramed} and the
+definition of \cmd{\FrameCommand} you can obtain a variety of framing
+styles. For instance, to have rounded corners to the 
+frame\index{frame!rounded corners} instead of
+the normal sharp ones, you can use the \Lpack{fancybox} 
+package~\cite{FANCYBOX} and the following code:
+\begin{lcode}
+\usepackage{fancybox}
+\newenvironment{roundedframe}{%
+  \def\FrameCommand{%
+    \cornersize*{20pt}%
+    \setlength{\fboxsep}{5pt}%
+    \ovalbox}%
+  \MakeFramed{\advance\hsize-\width \FrameRestore}}%
+  {\endMakeFramed}
+\end{lcode}
+
+\index{frame!title|(}
+     A framed environment is normally used to distinguish its contents
+from the surrounding text. A title for the environment may be useful, and
+if there was a pagebreak in the middle, a title on the continuation could
+be desireable. Doing this takes a bit more work than I have shown so far.
+This first part is from a posting to \ctt\ by 
+Donald Arseneau\index{Arseneau, Donald}.\footnote{On 2003/10/24 in the thread
+\textit{framed.sty w/heading?}}.
+
+\begin{lcode}
+\newcommand{\FrameTitle}[2]{%
+  \fboxrule=\FrameRule \fboxsep=\FrameSep
+  \fbox{\vbox{\nobreak \vskip -0.7\FrameSep
+    \rlap{\strut#1}\nobreak\nointerlineskip% left justified
+    \vskip 0.7\FrameSep
+    \hbox{#2}}}}
+\newenvironment{framewithtitle}[2][\FrameFirst@Lab\ (cont.)]{%
+  \def\FrameFirst@Lab{\textbf{#2}}%
+  \def\FrameCont@Lab{\textbf{#1}}%
+  \def\FrameCommand##1{%
+    \FrameTitle{\FrameCurrent@Lab}{##1}%
+    \global\let\FrameCurrent@Lab\FrameNext@Lab
+    \global\let\FrameNext@Lab\FrameCont@Lab
+  }%
+  \global\let\FrameCurrent@Lab\FrameFirst@Lab
+  \global\let\FrameNext@Lab\FrameFirst@Lab
+  \MakeFramed{\advance\hsize-\width \FrameRestore}}%
+  {\endMakeFramed}
+\end{lcode}
+The \Ie{framewithtitle} environment, which is the end goal of this
+exercise, acts like the \Ie{framed} environment except that it puts
+a left-justified title just after the top of the frame box and before the
+regular contents.
+\begin{syntax}
+\senv{framewithtitle}\oarg{cont-title}\marg{title} text \\
+ \eenv{framewithtitle} \\
+\end{syntax}
+The \meta{title} is set in a bold font. If the optional \meta{cont-title}
+argument is given then \meta{cont-title} is used as the title on
+any suceeding pages, otherwise the phrase `\meta{title} (cont.)' is used
+for the continuation title.
+
+    If you would like the titles centered, replace the line 
+marked `left justified' in the code for \cmd{FrameTitle} with the line:
+\begin{lcode}
+\rlap{\centerline{\strut#1}}\nobreak\nointerlineskip% centered
+\end{lcode}
+
+    If you would prefer to have the title at the top outside the frame the 
+above code needs adjusting.
+\begin{lcode}
+\newcommand{\TitleFrame}[2]{%
+  \fboxrule=\FrameRule \fboxsep=\FrameSep
+  \vbox{\nobreak \vskip -0.7\FrameSep
+    \rlap{\strut#1}\nobreak\nointerlineskip% left justified
+    \vskip 0.7\FrameSep
+    \noindent\fbox{#2}}}
+\newenvironment{titledframe}[2][\FrameFirst@Lab\ (cont.)]{%
+  \def\FrameFirst@Lab{\textbf{#2}}%
+  \def\FrameCont@Lab{\textbf{#1}}%
+  \def\FrameCommand##1{%
+    \TitleFrame{\FrameCurrent@Lab}{##1}
+    \global\let\FrameCurrent@Lab\FrameNext@Lab
+    \global\let\FrameNext@Lab\FrameCont@Lab
+  }%
+  \global\let\FrameCurrent@Lab\FrameFirst@Lab
+  \global\let\FrameNext@Lab\FrameFirst@Lab
+  \MakeFramed{\hsize\textwidth
+              \advance\hsize -2\FrameRule
+              \advance\hsize -2\FrameSep
+              \FrameRestore}}%
+  {\endMakeFramed}
+\end{lcode}
+
+\begin{syntax}
+\senv{titledframe}\oarg{cont-title}\marg{title} text \eenv{titledframe} \\
+\end{syntax}
+The \Ie{titledframe} environment is identical to \Ie{framewithtitle}
+except that the title is placed just before the frame. Again, if
+you would like a centered title, replace the line marked `left justified'
+in \cmd{TitleFrame} by
+\begin{lcode}
+\rlap{\centerline{\strut#1}}\nobreak\nointerlineskip% centered
+\end{lcode}
+
+    You can adjust the code for the \Ie{framewithtitle} and \Ie{titledframe}
+environments to suit your own purposes, especially as they are not 
+part of the class so you would have to type them in yourself anyway
+if you wanted to use them, using whatever names you felt suitable.
+
+\index{frame!title|)}
+
+    The class provides two further environments in addition to those
+from the \Lpack{framed} package.
+\begin{syntax}
+\senv{qframe} text \eenv{qframe} \\
+\senv{qshade} text \eenv{qshade} \\
+\end{syntax}
+
+   When used within, say, a \Ie{quotation} environment, the \Ie{framed}
+and \Ie{shaded} environments do not closely box the indented text. The
+\Ie{qframe} and \Ie{qshade} environments do provide close 
+boxing.\footnote{Donald Arseneau has said that he may put something similar
+in a later version the the \Ie{framed} package.}
+The difference can be seen in the following \Ie{quotation}.
+
+\begin{quotation}
+This is the start of a \Ie{quotation} environment. It forms the basis showing
+the difference between the \Ie{framed} and \Ie{qframe} environments.
+
+\begin{qframe}
+This is the second paragraph in the \Ie{quotation} environment and in turn it 
+is within the \Ie{qframe} environment.
+\end{qframe}
+
+\begin{framed}
+This is the third paragraph in the \Ie{quotation} environment and in turn it 
+is within the \Ie{framed} environment.
+\end{framed}
+
+This is the fourth and final paragraph within the \Ie{quotation} environment
+and is not within either a \Ie{qfame} or \Ie{framed} environment.
+\end{quotation}
+
+    If you want to put a frame inside an \Ie{adjustwidth} environment
+then you may well find that \Ie{qframe} or \Ie{qshade} meet your
+expections better than \Ie{framed} of \Ie{shaded}. Of course, it does
+depend on what your expectations are.
+
+\index{frame!box|)}
+\index{box!framed|)}
+
+\section{Long comments}
+
+    The \% comment character can be used to comment out (part of) a
+line of \tx\ code, but this gets tedious if you need to comment out
+long chunks of code.
+
+\begin{syntax}
+\senv{comment} text to be skipped over \eenv{comment} \\
+\end{syntax}
+\glossary(comment)%
+  {\senv{comment}}%
+  {Skip over the environment.}
+\index{comment out text}
+As an extreme form of font changing, although it doesn't actually work that 
+way, anything in a \Ie{comment} environment will not appear in the
+document; effectively, \ltx\ throws it all away. This can be useful
+to temporarily discard chunks of stuff instead of having to mark each line
+with the \% comment character. 
+
+\begin{syntax}
+\cmd{\newcomment}\marg{name} \\
+\cmd{\commentsoff}\marg{name} \\
+\cmd{\commentson}\marg{name} \\
+\end{syntax}
+\glossary(newcomment)%
+  {\cs{newcomment}\marg{name}}%
+  {Define a new comment environment called \meta{name}.}
+\glossary(commentsoff)%
+  {\cs{commentsoff}\marg{name}}%
+  {Process contents of the \meta{name} comment environment.}
+\glossary(commentson)%
+  {\cs{commentson}\marg{name}}%
+  {Skip contents of the \meta{name} comment environment.}
+The class lets you define your own comment environment via the 
+\cmd{\newcomment} command which defines a comment environment called
+\meta{name}. In fact the class itself uses \verb?\newcomment{comment}? to
+define the \Ie{comment} environment. A comment environment \meta{name}
+may be switched off so that its contents are not ignored by using the
+\cmd{\commentsoff} declaration. It may be switched on later by the
+\cmd{\commentson} declaration. In either case \meta{name} must have
+been previously declared as a comment environment via \cmd{\newcomment}.
+
+    Suppose, for example, that you are preparing a draft document for 
+review by some others and you want to include some notes for the reviewers.
+Also, you want to include some private comments in the source for yourself.
+You could use the \Ie{comment} environment for your private comments and
+create another environment for the notes to the reviewers. These notes
+should not appear in the final document. Your source might then look like:
+\begin{lcode}
+\newcomment{review}
+\ifdraftdoc\else
+  \commentsoff{review}
+\fi
+...
+\begin{comment}
+Remember to finagle the wingle!
+\end{comment}
+...
+\begin{review}
+\textit{REVIEWERS: Please pay particular attention to this section.}
+\end{review}
+...
+\end{lcode}
+
+    Comment environments cannot be nested, nor can they overlap. 
+The environments in the code below will not work in the manner that might
+be expected:
+\begin{lcode}
+\newcomment{acomment} \newcomment{mycomment}
+\begin{comment}
+  \begin{acomment} %% comments cannot be nested
+  ...
+  \end{acomment}
+  ...
+  \begin{mycomment}
+  ...
+\end{comment}
+...
+  \end{mycomment}  %% comments cannot overlap
+\end{lcode}
+
+    More encompassing \Ie{comment} environments are available if you
+use Victor Eijkhout's \Lpack{comment} package~\cite{COMMENT}.
+
+
+\section{Verbatims}
+
+\index{verbatim|(}
+
+    Standard \ltx\ defines the \cmd{\verb} and \cmd{\verb*} commands
+for typesetting short pieces of text verbatim, short because they
+cannot include a linebreak. For longer verbatim texts the
+\Ie{verbatim} or \Ie{verbatim*} environments can be used. The star forms
+indicate spaces in the verbatim text by outputing a \verb*? ? mark for 
+each space. The class extends the standard verbatims in various ways.
+
+\index{verbatim!short}
+    If you have to write a lot of \cmd{\verb} text, as I have had to do for
+this book, it gets tedious to keep on typing this sort of thing:
+\verb?\verb!verbatim text!?. Remember that the character immediately after
+the \cmd{\verb}, or \cmd{\verb*}, ends the verbatim processing.
+\begin{syntax}
+\cmd{\MakeShortVerb}\marg{backslash-char} \\
+\cmd{\DeleteShortVerb}\marg{backslash-char} \\
+\end{syntax}
+\glossary(MakeShortVerb)%
+  {\cs{MakeShortVerb}\marg{backslash-char}}%
+  {Makes \meta{char} a shorthand for \cs{verb}\meta{char}.}
+\glossary(DeleteShortVerb)%
+  {\cs{DeleteShortVerb}\marg{backslash-char}}%
+  {Returns \meta{char} to its normal meaning instead of being a shorthand 
+   for \cs{verb}\meta{char}.}
+The \cmd{\MakeShortVerb} macro takes a character preceded by a backslash
+as its argument, say \verb?\!?, and makes that character equivalent to 
+\verb?\verb!?. Using the character a second time will stop the verbatim 
+processing.
+Doing, for example \verb?\MakeShortVerb{\!}?, lets you then use 
+\verb?!verbatim text!?
+instead of the longer winded \verb?\verb!verbatim text!?. 
+
+    You have to pick
+as the short verb character one that you are unlikely to use; a good choice
+is often the \verb?|? bar character as this rarely used in normal text.
+This choice, though may be unfortunate if you want to have any tabulars with
+vertical lines, as the bar character is used to specify those. The
+\cmd{\DeleteShortVerb} macro is provided for this contingency; give it the
+same argument as an earlier \cmd{\MakeShortVerb} and it will restore
+the short verb character to its normal state.
+
+    The \cmd{\MakeShortVerb} and \cmd{\DeleteShortVerb} macros come from the
+\Lpack{shortvrb} package which is part of the \ltx\ base system, but I 
+have found them so convenient that I added them to the class.
+
+\begin{syntax}
+\cmd{\setverbatimfont}\marg{font-declaration} \\
+\end{syntax}
+\glossary(setverbatimfont)%
+  {\cs{setverbatimfont}\marg{fontspec}}%
+  {Sets the font to be used for verbatim text.}
+The default font\index{verbatim!changing font} for verbatims is the normal 
+sized monospaced font. The
+\cmd{\setverbatim} declaration can be used to specify a different font.
+The class default is 
+\begin{lcode}
+\setverbatimfont{\normalfont\ttfamily}
+\end{lcode}
+To use a smaller version simply say 
+\begin{lcode}
+\setverbatimfont{\normalfont\ttfamily\small}
+\end{lcode}
+
+    A monospaced font is normally chosen as verbatim text is often used 
+to present program code or typewritten text. If you want a more exotic
+font, try this
+\begin{lcode}
+\setverbatimfont{\fontencoding{T1}\fontfamily{cmss}\selectfont}
+\end{lcode}
+and your verbatim text will then look like %%
+\setverbatimfont{\fontencoding{T1}\fontfamily{cmss}\selectfont}
+\begin{verbatim}
+We are no longer using the boring old typewriter font
+for verbatim text. We used the T1 encoding 
+to make sure that characters that are often ligatures
+like ``, or '', or ---, or <, or >, print as expected.
+After this we will switch back to the default verbatim font via
+\setverbatimfont{\normalfont\ttfamily}
+\end{verbatim}
+\setverbatimfont{\normalfont\ttfamily}
+In the normal way of things with an OT1 fontencoding, 
+typesetting the ligatures mentioned above
+in the sans font produces: 
+{\fontencoding{OT1}\fontfamily{cmss}\selectfont ligatures like ``, or '', or ---, or <, or >}, 
+which is not what happens in the \cmd{\verbatim} environment.
+
+
+\begin{syntax}
+\senv{verbatim} anything \eenv{verbatim} \\
+\senv{verbatim*} anything \eenv{verbatim*} \\
+\end{syntax}
+\glossary(verbatim)%
+  {\senv{verbatim}}%
+  {Typeset the contents verbatim.}
+In the \Ie{verbatim} environment\footnote{This version of the \Ie{verbatim}
+environment is heavily based on the \Lpack{verbatim} package~\cite{VERBATIM}
+but does provide some extensions.}
+ you can write anything you want (except
+\eenv{verbatim}), and it will be typeset exactly as written. The \Ie{verbatim*}
+environment is similar except, like with \cmd{\verb*}, spaces will be
+indicated with a \verb*? ? mark.
+
+\begin{syntax}
+\cmd{\tabson}\oarg{number} \\
+\cmd{\tabsoff} \\
+\end{syntax}
+\glossary(tabson)%
+  {\cs{tabson}\oarg{number}}%
+  {Set \meta{number} of spaces in a verbatim for a TAB character;
+   default 4.}
+\glossary(tabsoff)%
+  {\cs{tabsoff}}%
+  {Ignore extra TAB spaces in a verbatim.} 
+\index{verbatim!with tab spaces}
+The standard \Ie{verbatim} environment ignores any TAB characters; with
+the class's environment after calling the \cmd{\tabson} declaration 
+the environment will handle TAB characters. By default 4 spaces are used
+to represent a TAB; the optional \meta{number} argument to the declaration
+will set the number of spaces for a TAB to be \meta{number}.
+Some folk like to use 8 spaces for a TAB, in which case they would need
+to declare \verb?\tabson[8]?. Unremarkably, the declaration \cmd{\tabsoff}
+switches off TABs. The class default is \cmd{\tabsoff}.
+
+\begin{syntax}
+\cmd{\wrappingon} \\
+\cmd{\wrappingoff} \\
+\lnc{\verbatimindent} \\
+\cmd{\verbatimbreakchar}\marg{char} \\
+\end{syntax}
+\glossary(wrappingon)%
+  {\cs{wrappingon}}%
+  {Wrap overlong verbatim lines.}
+\glossary(wrappingoff)%
+  {\cs{wrappingoff}}%
+  {The normal behaviour of not wrapping overlong verbatim lines.}
+\glossary(verbatimindent)%
+  {\cs{verbatimindent}}%
+  {Indent for wrapped overlong verbatim lines.}
+\glossary(verbatimbreakchar)%
+  {\cs{verbatimbreakchar}\marg{char}}%
+  {Character indicating a verbatim line is being wrapped.}
+As noted, whatever is written in a \Ie{verbatim} environment is output
+just as written, even if lines are too long\index{verbatim!wrap long lines} 
+to fit on the page. The
+declaration \cmd{\wrappingon} lets the environment break lines so that they
+do not overflow. The declaration \cmd{\wrappingoff} restores the normal
+behaviour.
+
+    The following is an example of how a wrapped verbatim line looks. In
+the source the contents of the \Ie{verbatim} was written as a single line.
+\wrappingon
+\begin{verbatim}
+This is an example of line wrapping in the verbatim environment. It is a single line in the source and the \wrappingon declaration has been used.
+\end{verbatim}
+\wrappingoff
+
+   The wrapped portion of verbatim lines are indented from the left margin
+by the length \lnc{\verbatimindent}. The value can be changed by the usual
+length changing commands. The end of each line that has been wrapped is marked
+with the \meta{char} character of the \cmd{\verbatimbreakchar} macro.
+The class default is \verb?\verbatimbreakchar{\char`\%}?, so that lines are 
+marked with \verb?%?.
+To put a `/' mark at the end of wrapped lines you can do
+\begin{lcode}
+\setverbatimbreak{\char'\/}
+\end{lcode}
+or similarly if you would like another character. Another possibility
+is
+\begin{lcode}
+\setverbatimchar{\char'\/\char'\*}
+\end{lcode}
+which will make `/*' the end marker.
+
+\subsection{Boxed verbatims}
+
+    Verbatim environments are often used to present program code or, as
+in this book, \ltx\ code. For such applications it can be useful to
+put the code in a box, or to number the code lines, or perhaps both.
+
+\begin{syntax}
+\senv{fboxverbatim} anything \eenv{fboxverbatim} \\
+\end{syntax}
+\glossary(fboxverbatim)%
+  {\senv{fboxverbatim}}%
+  {Puts a frame around the verbatim material. Page breaks are not allowed.}
+The \Ie{fboxverbatim} environment\index{frame!verbatim}\index{verbatim!frame} 
+typesets its contents verbatim and
+puts a tightly fitting frame around the result; in a sense it is similar
+to the \cmd{\fbox} command.
+
+\begin{syntax}
+\senv{boxedverbatim} anything \eenv{boxedverbatim} \\
+\senv{boxedverbatim*} anything \eenv{boxedverbatim*} \\
+\end{syntax}
+\glossary(boxedverbatim)%
+  {\senv{boxedverbatim}}%
+  {May put a box around the verbatim material; lines may be numbered and page
+   breaks are allowed.}
+\glossary(boxedverbatim*)%
+  {\senv{boxedverbatim*}}%
+  {May put a box around the verbatim* material; lines may be numbered and page
+   breaks are allowed.}
+The \Ie{boxedverbatim} and \Ie{boxedverbatim*} environments are like
+the \Ie{verbatim} and \Ie{verbatim*} environments except that a box,
+allowing page breaks, may be put around the verbatim text and the lines
+of text\index{line number} may be numbered.\index{boxed verbatim}\index{numbered lines}
+The particular format of the output can be 
+controlled as described below.
+\begin{syntax}
+\cmd{\bvbox} \cmd{\bvtopandtail} \cmd{\bvsides} \cmd{\nobvbox} \\
+\lnc{\bvboxsep} \\
+\end{syntax}
+\glossary(bvbox)%
+  {\cs{bvbox}}%
+  {Rectangular boxes will be drawn for \Pe{boxedverbatim} environments.}
+\glossary(nobvbox)%
+  {\cs{nobvbox}}%
+  {\Pe{boxedverbatim} environments will not be framed in any way.}
+\glossary(bvtopandtail)%
+  {\cs{bvtopandtail}}%
+  {Draw horizontal rules before and after \Pe{boxedverbatim} environments.}
+\glossary(bvsides)%
+  {\cs{bvsides}}%
+  {Draw vertical rules on each side of \Pe{boxedverbatim} environments.}
+\glossary(bvboxsep)%
+  {\cs{bvboxsep}}%
+  {Separation between text and framing in \Pe{boxedverbatim} environments.}
+Four styles of boxes are provided and you can extend these. Following
+the \cmd{\bvbox} declaration, a box is drawn round the verbatim text, breaking
+at page boundaries if necessary; this is the default style. Conversely,
+no boxes are drawn after the \cmd{\nobvbox} declaration. With the
+\cmd{\bvtopandtail} declaration horizontal lines are drawn at the start and 
+end of the verbatim text, and with the \cmd{\bvsides} declarations, vertical
+lines are drawn at the left and right of the text. The separation between
+the lines and the text is given by the length \lnc{\bvboxsep}.
+
+    The following hooks are provided to set your own 
+boxing\index{frame!verbatim!styling}\index{verbatim!frame!styling} style.
+\begin{syntax}
+\cmd{\bvtoprulehook} \cmd{\bvtopmidhook} \cmd{\bvendrulehook} \\
+\cmd{\bvleftsidehook} \cmd{\bvrightsidehook} \\
+\end{syntax}
+\glossary(bvtoprulehook)%
+  {\cs{bvtoprulehook}}%
+  {Called at the start of a \Pe{boxedverbatim} environment and after a pagebreak.}
+\glossary(bvtopmidhook)%
+  {\cs{bvtopmidhook}}%
+  {Called after \cs{bvtoprulehook} at the start of a \Pe{boxedverbatim} environment.}
+\glossary(bvendrulehook)%
+  {\cs{bvendrulehook}}%
+  {Called at the end of a \Pe{boxedverbatim} environment, and before a pagebreak.}
+\glossary(bvleftsidehook)%
+  {\cs{bvleftsidehook}}%
+  {Called before each line in a \Pe{boxedverbatim} environment.}
+\glossary(bvrightsidehook)%
+  {\cs{bvrightsidehook}}%
+  {Called after each line in a \Pe{boxedverbatim} environment.}
+The macros \cmd{\bvtoprulehook} and \cmd{\bvendrulehook} are called at
+the start and end of the \Ie{boxedverbatim} environment, and before and after
+page breaks. The macros
+\cmd{\bvleftsidehook} and \cmd{\bvrightsidehook} are called at the start
+and end of each verbatim line. The macro \cmd{\bvtopmidhook} is
+called after \cmd{\bvtoprulehook} at the start of the environment.
+It can be used to add some space if \cmd{\bvtoprulehook} is empty.
+
+\begin{syntax}
+\cmd{\bvperpagetrue} \cmd{\bvperpagefalse} \\
+\cmd{\bvtopofpage}\marg{text} \cmd{\bvendofpage}\marg{text} \\
+\end{syntax}
+\glossary(bvperpagetrue)%
+  {\cs{bvperpagetrue}}%
+  {Visibly break a \Pe{boxedverbatim} at a page break using \cs{bvtopofpage}
+   and \cs{bvendofpage}.}
+\glossary(bvperpagefalse)%
+  {\cs{bvperpagefalse}}%
+  {Do not mark page breaks in a \Pe{boxedverbatim}.}
+\glossary(bvtopofpage)%
+  {\cs{bvtopofpage}\marg{text}}%
+  {Use \meta{text} as the \Pe{boxedverbatim} page break marker at the top of 
+   a page.}
+\glossary(bvendofpage)%
+  {\cs{bvendofpage}\marg{text}}%
+  {Use \meta{text} as the \Pe{boxedverbatim} page break marker at the bottom 
+   of a page.}
+The command \cmd{\bvperpagetrue} indicates
+that a box should be visibly broken at a pagebreak, while there should
+be no visible break for \cmd{\bvperpagefalse}. 
+If the box continues on to another page then it may be advantageous
+to place some sort of heading before the verbatim continues. Following
+the declaration \cmd{\bvperpagetrue} the \meta{text} argument to
+\cmd{\bvtopofpage} will be typeset after any pagebreak. For example you
+could set:
+\begin{lcode}
+\bvtopofpage{continued}
+\end{lcode}
+to print `continued' in the normal text font. 
+
+By default, the class sets
+\begin{lcode}
+\bvendofpage{\hrule\kern-.4pt}
+\end{lcode}
+which causes the \cmd{\hrule} to be drawn at the end of a page as the
+visible break (the rule is 0.4pt thick and the kern backs up
+that amount after the rule, so it effectively takes no vertical space).
+This is not always suitable. For instance, if there will be
+a `continued' message at the top of the following page it may seem odd
+to draw a line at the bottom of the previous page. In this case, setting
+\begin{lcode}
+\bvendofpage{}
+\end{lcode}
+will eliminate the rule.
+
+As examples of the use of
+these hooks, here is how some of the boxed verbatim styles are defined.
+
+The default style is \cmd{\bvbox}, 
+which puts separate full boxes on each page. 
+\begin{lcode}
+\newcommand{\bvbox}{%
+  \bvperpagetrue
+  \renewcommand{\bvtoprulehook}{\hrule \nobreak \vskip-.1pt}%
+  \renewcommand{\bvleftsidehook}{\vrule}%
+  \renewcommand{\bvrightsidehook}{\vrule}%
+  \renewcommand{\bvendrulehook}{\hrule}%
+  \renewcommand{\bvtopmidhook}{\rule{0pt}{2\fboxsep} \hss}%
+}
+\end{lcode}
+The \cmd{\nobvbox} turns off all boxing, and is defined as
+\begin{lcode}
+\newcommand{\nobvbox}{%
+  \bvperpagefalse
+  \renewcommand{\bvtoprulehook}{}%
+  \renewcommand{\bvleftsidehook}{}%
+  \renewcommand{\bvrightsidehook}{}%
+  \renewcommand{\bvendrulehook}{}%
+  \renewcommand{\bvtopmidhook}{\rule{0pt}{2\fboxsep} \hss}%
+}
+\end{lcode}
+The definitions of the other styles, \cmd{\bvtopandtail} and \cmd{\bvsides},
+are intermediate between \cmd{\bvbox} and \cmd{\nobvbox} in the obvious
+manner.
+
+
+\begin{syntax}
+\cmd{\linenumberfrequency}\marg{nth} \\
+\cmd{\resetbvlinenumber} \\
+\cmd{\setbvlinenums}\marg{first}\marg{startat} \\
+\cmd{\linenumberfont}\marg{font declaration} \\
+\end{syntax}
+\glossary(linenumberfrequency)%
+  {\cs{linenumberfrequency}\marg{nth}}%
+  {Number every \meta{nth} line in a \Pe{boxedverbatim} or a \Pe{verse}.}
+\glossary(resetbvlinenumber)%
+  {\cs{resetbvlinenumber}}%
+  {Resets the \Pe{boxedverbatim} line number to zero.}
+\glossary(setbvlinenums)%
+  {\cs{setbvlinenums}\marg{first}\marg{startat}}%
+  {The first line of the following \Pe{boxedverbatim} is number \marg{first} 
+   and the
+   first printed line number should be \meta{startat}.}
+\glossary(linenumberfont)%
+  {\cs{linenumberfont}\marg{fontspec}}%
+  {Specify the font for line numbers.}
+
+The command \cmd{\linenumberfrequency} controls the 
+numbering\index{line number!frequency} of lines in
+a \Ie{boxedverbatim} --- every \meta{nth} line will be numbered. 
+If \meta{nth} is 0 or less, 
+then no lines are numbered, if \meta{nth} is 1 then each line is numbered,
+and if \meta{nth} is \texttt{n}, where \texttt{n} is 2 or more, then 
+only every \texttt{n}th line is numbered. Line numbering is continuous 
+from one instance
+of the \Ie{boxedverbatim} environment to the next. Outside the environment
+the line numbers\index{line number!reset} can be reset at any time by the 
+command \cmd{\resetbvlinenumber}.
+
+The \cmd{\setbvlinenums} macro can be
+used to specify that the number of the first line of the following 
+\Ie{boxedverbatim}
+shall be \meta{first} and the first printed number shall be \meta{startat}.
+
+The \cmd{\linenumberfont} declaration sets
+\meta{font declaration} as the font\index{line number!font} for the 
+line numbers. The default specification for this is:
+\begin{lcode}
+\linenumberfont{\footnotesize\rmfamily}
+\end{lcode}
+Line numbers\index{line number!position} are always set at the left of 
+the lines because there
+is no telling how long a line might be and it might clash with a line number
+set at the right.
+\begin{syntax}
+\cmd{\bvnumbersinside} \\
+\cmd{\bvnumbersoutside} \\
+\end{syntax}
+\glossary(bvnumbersinside)%
+  {\cs{bvnumbersinside}}%
+  {Line numbers typeset inside a \Pe{boxedverbatim} box.}
+\glossary(bvnumbersoutside)%
+  {\cs{bvnumbersoutside}}%
+  {Line numbers typeset outside a \Pe{boxedverbatim} box.}
+Line numbers are typeset inside the box after the declaration 
+\cmd{\bvnumberinside} and are typeset outside the box after the
+declaration \cmd{\bvnumbersoutside}. The default is to print
+the numbers inside the box.
+
+    Verbatim tabbing, but not wrapping, applies to the \Ie{boxedverbatim}
+environment.
+
+\subsection{New verbatims}
+
+\index{verbatim!new|(}
+    The class implementation of verbatims lets you define your
+own kind of verbatim environment. Unfortunately this is not quite
+as simple as saying
+\begin{lcode}
+\newverbatim{myverbatim}{...}{...} 
+\end{lcode}
+as you can for defining normal environments. Instead, the general scheme
+is
+\begin{lcode}
+\newenvironment{myverbatim}%
+{<non-verbatim stuff> \verbatim <more non-verbatim stuff>}%
+{\endverbatim}
+\end{lcode}
+In particular, you cannot use either the \cmd{\begin} or \cmd{\end}
+macros inside the definition of the new verbatim environment. For example,
+the following code will not work
+\begin{lcode}
+\newenvironment{badverbatim}%
+  {NBG\begin{verbatim}}{\end{verbatim}}
+\end{lcode}
+and this won't work either
+\begin{lcode}
+\newenvironment{badverbatim}%
+  {\begin{env}\verbatim}{\endverbatim\end{env}}
+\end{lcode}
+And, as with the standard \Ie{verbatim} environment, you cannot use
+the new one in the definition of a new command.
+
+    For an example of something that does work, this next little piece of 
+typesetting was done in a new verbatim environment I have called 
+\texttt{verbexami}, which starts and ends with a horizontal rule, and it
+shows the definition of \texttt{verbexami}.
+\newenvironment{verbexami}%
+  {\par\noindent\hrule The verbexami environment \verbatim}%
+  {\endverbatim\hrule}
+
+\vspace{0.5\onelineskip}
+\begin{verbexami}
+\newenvironment{verbexami}%
+  {\par\noindent\hrule The verbexami environment \verbatim}%
+  {\endverbatim\hrule}
+\end{verbexami}
+\vspace{0.5\onelineskip}
+
+    And this is a variation on the theme, with the environment again being
+enclosed by horizontal rules.
+\newenvironment{verbexamii}%
+  {\vspace{0.5\baselineskip}\hrule 
+   \vspace{0.2\baselineskip} Verbexamii \verbatim \textsc{Is this fun?}}%
+  {\endverbatim\hrule\vspace{0.3\baselineskip}}
+
+\vspace{0.5\onelineskip}
+\begin{verbexamii}
+\newenvironment{verbexamii}%
+  {\vspace{0.5\baselineskip}\hrule \vspace{0.2\baselineskip}
+    Verbexamii \verbatim \textsc{Is this fun?}}%
+  {\endverbatim\hrule\vspace{0.3\baselineskip}}
+\end{verbexamii}
+\vspace{0.5\onelineskip}
+
+    As no doubt you agree, these are not memorable examples of
+the typesetter's art but do indicate that you can define your own
+verbatim environments and may need to take a bit of care to get something
+that passes muster.
+
+    I will give some more useful examples, but mainly based on environments
+for writing verbatim files as I think that these provide a broader
+scope. 
+
+
+\subsection{Example: the \texttt{lcode} environment}
+
+    In this manual all the example \ltx\ code has been typeset in
+the \Ie{lcode} environment; this is a verbatim environment defined
+especially for the purpose. Below I describe the
+code for defining my \Ie{lcode} environment, but first here 
+is a simple definition of a verbatim environment, which I will 
+call \texttt{smallverbatim},
+that uses the \cmd{\small} font\index{verbatim!font} instead of the 
+normalsize font.
+\begin{lcode}
+\newenvironment{smallverbatim}%
+  {\setverbatimfont{\normalfont\ttfamily\small}%
+   \verbatim}%
+  {\endverbatim}
+\end{lcode}
+
+    The \Ie{verbatim} environment is implemented as a kind of \Ie{trivlist},
+and lists usually have extra vertical space before and after them. For
+my environment I did not want any extra spacing\index{list!spaces} 
+so I defined the
+macro \cmd{\@zeroseps} to zero the relevant list spacings. I also wanted
+the code lines to be inset a little, so I defined a new length
+called \lnc{\gparindent} to use as the indentation.
+\begin{lcode}
+\makeatletter
+\newcommand{\@zeroseps}{\setlength{\topsep}{\z@}%
+                        \setlength{\partopsep}{\z@}%
+                        \setlength{\parskip}{\z@}}
+\newlength{\gparindent} \setlength{\gparindent}{\parindent}
+\setlength{\gparindent}{0.5\parindent}
+% Now, the environment itself
+\newenvironment{lcode}{\@zeroseps
+  \renewcommand{\verbatim@startline}{%
+                \verbatim@line{\hskip\gparindent}}
+  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
+  {\endverbatim
+   \vspace{-\baselineskip}%
+  \noindent
+ }
+\makeatother
+\end{lcode}
+
+    Unless you are intimately familiar with the inner workings of the
+\Ie{verbatim} processing you deserve an explanation of the \Ie{lcode}
+definition.
+
+    Extremely roughly, the code for \cmd{\verbatim} looks like this:
+\begin{lcode}
+\def\verbatim{%
+  \verbatim@font
+  % for each line, until \end{verbatim}
+    \verbatim@startline 
+    % collect the characters in \verbatim@line 
+    \verbatim@processline{\the\verbatim@line\par}
+    % repeat for the next line
+}
+\end{lcode}
+The code first calls \cmd{\verbatim@font} to set the font to be used.
+Then, for each line it does the following:
+\begin{itemize}
+\item Calls the macro \cmd{\verbatim@startline} to start
+      off the output version of the line.
+\item Collects all the characters comprising the line 
+      as a single token called \cmd{\verbatim@line}.
+\item If the characters are the string `\verb?\end{verbatim}?' it finishes
+      the verbatim environment.
+\item Otherwise it calls the the macro \cmd{\verbatim@processline} whose 
+      argument is the characters in the 
+      line, treated as a paragraph. It then starts all over again with
+      the next line.
+\end{itemize}
+
+    I configured the \cmd{\verbatim@startline}
+macro to indent the line of text using a horizontal skip of \lnc{\gparindent}.
+The rest of the initialisation code, before calling \cmd{\verbatim}
+to do the real processing, just sets up the vertical spacing. 
+
+
+\index{verbatim!new|)}
+
+\index{verbatim|)}
+
+
+
+
+\section{Files}
+
+\index{file|(}
+
+    \ltx\ reads and writes various files as it processes a document.
+Obviously it reads the document source file, or files, and it writes
+the \pixfile{log} file recording what it has done. It also reads and writes
+the \pixfile{aux} file, and may read and write other files like a 
+\pixfile{toc} file. 
+
+    On occasions it can be useful to get \ltx\ to read and/or write 
+other files of your own choosing. Unfortunately standard \ltx\ does
+not provide any easy method for doing this. The \Mname\ class
+tries to rectify this.
+
+\begin{syntax}
+\cmd{\jobname} \\
+\end{syntax}
+\glossary(jobname)%
+  {\cs{jobname}}%
+  {The name of the document's main source file.}
+When you run \ltx\ on your source file, say \texttt{fred.tex}, \ltx\
+stores the name of this file (\texttt{fred}) in the macro \cmd{\jobname}.
+\ltx\ uses this to name the various files that it writes out --- the
+\pixfile{dvi} or \pixfile{pdf} file, the \pixfile{log} file, the
+\pixfile{aux} file, etc.
+
+\index{stream|(}
+
+    \tx\ can read from 16 input streams\index{stream!limited number} 
+and can write to 16 output
+streams. Normally an input stream\index{stream!input} is allocated for each 
+kind of file that will be read\index{file!read} and an 
+output\index{stream!output} stream for each kind of file that will
+be written\index{file!write}. On the input side, then, at least two 
+streams are allocated, one for the source \pixfile{tex} file and 
+one for the \pixfile{aux} file. 
+On the output side again at least two streams are allocated, one for 
+the \pixfile{log} file and one for the \pixfile{aux} file. 
+When \pixfile{toc} and other similar
+files are also part of the \ltx\ process you can see that many of the
+16 input and output streams may be allocated before you can get to use one
+yourself.
+
+\begin{syntax}
+\cmd{\newoutputstream}\marg{stream} \\
+\cmd{\newinputstream}\marg{stream} \\
+\end{syntax}
+\glossary(newoutputstream)%
+  {\cs{newoutputstream}\marg{stream}}%
+  {Creates a new output stream called \meta{stream}.}
+\glossary(newinputstream)%
+  {\cs{newinputstream}\marg{stream}}%
+  {Creates a new input stream called \meta{stream}.}
+The macros \cmd{\newoutputstream} and \cmd{\newinputstream} respectively
+create a new output\index{stream!new output} and input\index{stream!new input} 
+stream called \meta{stream}, where \meta{stream}
+should be a string of alphabetic characters, like \texttt{myout} or 
+\texttt{myin}.
+The \meta{stream} names must be unique, you cannot use the same name 
+for two streams even if one is a input stream and the other is an output 
+stream. If all the 16 streams of the given type have already been allocated
+\tx\ will issue a message telling you about this, of the form:%
+\index{No room for a new write}\index{No room for a new read}
+\begin{lcode}
+No room for a new write   % for an output stream
+No room for a new read    % for an input stream
+\end{lcode}
+
+    The two \cs{new...stream} commands also provide two empty macros called
+\verb?\atstreamopen<stream>? and \verb?\atstreamclose<stream>?. 
+If these macros already exist then they are left undisturbed. 
+For example if you do:
+\begin{lcode}
+\newcommand{\atstreamopenmyout}{...}
+\newoutputstream{myout}
+\newinputstream{myin}
+\end{lcode}
+Then you will find that three new commands have been created like:
+\begin{lcode}
+\newcommand{\atstreamclosemyout}{}
+\newcommand{\atstreamopenmyin}{}
+\newcommand{\atstreamclosemyin}{}
+\end{lcode}
+You can use \cmd{\renewcommand} to change the definitions of these if you
+wish.
+
+\begin{syntax}
+\cmd{\IfStreamOpen}\marg{stream}\marg{true-code}\marg{false-code} \\
+\end{syntax}
+\glossary(IfStreamOpen)%
+  {\cs{IfStreamOpen}\marg{stream}\marg{yes}\marg{no}}%
+  {If \meta{stream} is open then the \meta{yes} argument is processed
+   otherwise the \meta{no} argument is processed.}
+The macro \cmd{\IfStreamOpen} checks whether or not the \meta{stream}
+stream\index{stream!check open} is open. If it is then 
+the \meta{true-code} argument is processed,
+while when it is not open the \meta{false-code} argument is processed.
+
+\subsection{Writing to a file}
+
+\index{file!write|(}
+
+    One stream may be used for writing to several different files, although not
+simultaneously.
+
+\begin{syntax}
+\cmd{\openoutputfile}\marg{filename}\marg{stream} \\
+\cmd{\closeoutputstream}\marg{stream} \\
+\end{syntax}
+\glossary(openoutputfile)%
+  {\cs{openoutputfile}\marg{filename}\marg{stream}}%
+  {Attaches the file \meta{filename} to the output \meta{stream}.}
+\glossary(closeoutputstream)%
+  {\cs{closeoutputstream}\marg{stream}}%
+  {Detaches and closes the file associated with the output \meta{stream}.}
+The command \cmd{\openoutputfile} opens\index{file!open} the file 
+called \meta{filename},
+either creating it if it does not exist, or emptying it if it already exists.
+It then attaches the file to the output\index{stream!output} 
+stream called \meta{stream} so that
+it can be written to, and then finally calls the macro 
+named \verb?\atstreamopen<stream>?. 
+
+    The command \cmd{\closeoutputstream} firstly calls the macro named
+\verb?\atstreamclose<stream>? then closes\index{stream!close output} the
+output stream \meta{stream}, and finally detaches and 
+closes\index{file!close} the associated file.
+
+\begin{syntax}
+\cmd{\addtostream}\marg{stream}\marg{text} \\
+\end{syntax}
+\glossary(addtostream)%
+  {\cs{addtostream}\marg{stream}\marg{text}}%
+  {Adds \meta{text} to the file associated with the output \meta{stream}.}
+The \cmd{\addtostream} command writes \meta{text} to the output stream
+\meta{stream}, and hence to whatever file is currently attached to the
+stream. The \meta{stream} must be open. Any commands within the \meta{text}
+argument will be processed before being written. To prevent command
+expansion, precede the command in question with \cmd{\protect}.
+
+    Writing\index{file!write!verbatim} verbatim text to a file is 
+treated specially as it is likely
+to be the most common usage.
+\begin{syntax}
+\senv{verbatimoutput}\marg{file} anything \eenv{verbatimoutput} \\
+\senv{writeverbatim}\marg{stream} anything \eenv{writeverbatim} \\
+\end{syntax}
+\glossary(verbatimoutput)%
+  {\senv{verbatimoutput}\marg{file}}%
+  {The contents of the environment are written verbatim to the \meta{file} 
+   file, overwriting anything previously in the file.}
+\glossary(writeverbatim)%
+  {\senv{writeverbatim}\marg{stream}}%
+  {The contents of the environment are written verbatim to the \meta{stream} 
+   stream.}
+The text within a \Ie{verbatimoutput} environment is written verbatim
+to the \meta{file} file. Alternatively, the contents of the
+\Ie{writeverbatim} environment are written verbatim to the \meta{stream} 
+stream. 
+
+    Specifically, \Ie{verbatimoutput} opens the specified file, writes
+to it, and then closes the file. This means that if \Ie{verbatimoutput}
+is used more than once to write to a given
+file, then only the contents of the last of these outputs is captured 
+in the file.
+On the other hand, you can use \Ie{writeverbatim} several times to write
+to the file attached to the stream and, providing the stream has not
+been closed in the meantime, all will be captured.
+
+\index{file!write|)}
+
+\subsection{Reading from a file}
+
+\index{file!read|(}
+
+   One stream may be used for reading from several files, although not
+simultaneously.
+
+\begin{syntax}
+\cmd{\openinputfile}\marg{filename}\marg{stream} \\
+\cmd{\closeinputstream}\marg{stream} \\
+\end{syntax}
+\glossary(openinputfile)%
+  {\cs{openinputfile}\marg{filename}\marg{stream}}%
+  {Attaches the file \meta{filename} to the input \meta{stream}.}
+\glossary(closeinputstream)%
+  {\cs{closeinputstream}\marg{stream}}%
+  {Detaches and closes the file associated with the input \meta{stream}.}
+The command \cmd{\openinputfile} opens\index{file!open} the file 
+called \meta{filename}
+and attaches it to the input\index{stream!input} stream called 
+\meta{stream} so that
+it can be read from. Finally it calls the macro named 
+\verb?\atstreamopen<stream>?.
+It is an error if \meta{filename} can not be found.
+
+    The command \cmd{\closeinputstream} calls the macro named
+\verb?\atstreamclose<stream>?, closes\index{stream!close input} the
+output stream \meta{stream}, and then detaches and closes\index{file!close} 
+the associated file.
+
+\begin{syntax}
+\cmd{\readstream}\marg{stream} \\
+\end{syntax}
+\glossary(readstream)%
+  {\cs{readstream}\marg{stream}}%
+  {Reads the entire contents of the file associated with the input \meta{stream}.}
+The command \cmd{\readstream} reads the entire contents of the file
+currently associated with the input stream \meta{stream}. This
+provides the same functionality as \cmd{\input}\marg{filename}.
+
+\begin{syntax}
+\cmd{\readline}\marg{stream} \\
+\end{syntax}
+\glossary(readline)%
+  {\cs{readline}\marg{stream}}%
+  {Reads a single line from the file associated with the input \meta{stream}.}
+The \cmd{\readline} reads\index{file!read!single line} what \tx\ 
+considers to be one line from
+the file that is currently associated with the input stream \meta{stream}.
+
+Multiple lines can be read by calling \cmd{\readline} multiple times.
+A warning is issued if there are no more lines to be read (i.e., the
+end of the file has been reached).
+
+Just as for writing, reading files\index{file!read!verbatim} 
+verbatim is treated specially.
+\begin{syntax}
+\cmd{\verbatiminput}\marg{file} \cmd{\verbatiminput*}\marg{file} \\
+\cmd{\boxedverbatiminput}\marg{file} \cmd{\boxedverbatiminput*}\marg{file} \\
+\cmd{\readverbatim}\marg{stream} \cmd{\readverbatim*}\marg{stream} \\
+\cmd{\readboxedverbatim}\marg{stream} \cmd{\readboxedverbatim*}\marg{stream} \\
+\end{syntax}
+\glossary(verbatiminput)%
+  {\cs{verbatiminput}\marg{file}}%
+  {Acts like \Pe{verbatim} except the contents is read from the \meta{file} file.}
+\glossary(verbatiminput*)%
+  {\cs{verbatiminput*}\marg{file}}%
+  {Acts like \Pe{verbatim*} except the contents is read from the \meta{file} file.}
+\glossary(boxedverbatiminput)%
+  {\cs{boxedverbatiminput}\marg{file}}%
+  {Acts like \Pe{boxedverbatim} except the contents is read from the \meta{file} file.}
+\glossary(boxedverbatiminput*)%
+  {\cs{boxedverbatiminput*}\marg{file}}%
+  {Acts like \Pe{boxedverbatim*} except the contents is read from the \meta{file} file.}
+\glossary(readverbatim)%
+  {\cs{readverbatim}\marg{stream}}%
+  {Acts like \Pe{verbatim} except the contents is read from the file 
+   associated with the input \meta{stream}.}
+\glossary(readverbatim*)%
+  {\cs{readverbatim*}\marg{stream}}%
+  {Acts like \Pe{verbatim*} except the contents is read from the file 
+   associated with the input \meta{stream}.}
+\glossary(readboxedverbatim)%
+  {\cs{readboxedverbatim}\marg{stream}}%
+  {Acts like \Pe{boxedverbatim} except the contents is read from the file 
+   associated with the input \meta{stream}.}
+\glossary(readboxedverbatim*)%
+  {\cs{readboxedverbatim*}\marg{stream}}%
+  {Acts like \Pe{boxedverbatim*} except the contents is read from the file 
+   associated with the input \meta{stream}.}
+The commands \cmd{\verbatiminput} and 
+\cmd{\boxedverbatiminput},\index{frame!verbatim}\index{verbatim!frame} 
+ and their
+starred versions, act like the \Ie{verbatim} and \Ie{boxedverbatim}
+environments, except that they get their text from the \meta{file} file.
+It is an error if \meta{file} cannot be found.
+Similarly, \cmd{\readverbatim} and \cmd{\readboxedverbatim} get their
+text from the file currently attached to the \meta{stream} input stream.
+It is an error if \meta{stream} is not open for input.
+
+\index{file!read|)}
+
+\subsection{Example: endnotes}
+
+\index{endnotes|(}
+
+    Books like biographies often quote sources for quotations by the subject,
+or sources for statements of fact and so on, at the end of the book or chapter.
+These are often like a collected set of footnotes. The example shows
+a somewhat rough and ready approach to implementing endnotes.
+
+    Typically endnotes come in one of two forms: they are like a normal
+footnote, except that the note text is on another page, or; there is
+no mark in the body of the text and the note is identified via a small
+quote from the text and its page number. 
+The example is for the footnote-like form and for endnotes collected
+at the end of the document, with an appropriate heading to distinguish
+notes from different chapters.
+
+     We have to be careful in choosing names for the macros we will be
+defining for endnotes. Remember, you cannot use \cmd{\newcommand}
+to define a new command whose name starts \cs{end...}, so \cs{endnote} 
+appears to be out.
+However, the \tx\ primitive \cmd{\def} command does let you define
+a command starting with \cs{end...}. The syntax of the \cmd{\def} command, 
+like 
+that of many of \tx\ macros, looks strange to \ltx\ eyes. The major
+disadvantage in using \cmd{\def} is that it will merrily overwrite any
+previous definition with the same name (the \ltx\ \cmd{\newcommand} won't
+let you do that). I could use \cmd{\def} for an \cs{endnote} macro, like
+\begin{lcode}
+\long\def\endnote#1{...}
+\end{lcode}
+I won't do that, though, as there is at least one \ltx\ class that includes
+a \texttt{note} environment and that means that \cs{endnote} is already defined
+in that class. To avoid potential pitfalls like that I'll use \cs{enote}
+rather than the more evocative \cs{endnote}.
+
+    We need a new counter for the endnotes, starting afresh with each chapter,
+and to print in arabic numerals. 
+\begin{lcode}
+\newcounter{enote}[chapter]
+  \renewcommand{\theenote}{\arabic{enote}}
+\end{lcode}
+And we need a macro to typeset the text of the note. This will take two
+arguments, the number of the note, and the text.
+\begin{lcode}
+\DeclareRobustCommand{\enotetext}[2]{%
+  \par\noindent \textsuperscript{#1} #2\par
+      \vspace{\baselineskip}}
+\end{lcode}
+This makes sure that it starts a new non-indented paragraph, then typesets
+the first argument (the number) as a superscript and then processes the
+second argument (the text of the note). After that it makes sure that 
+any paragraph is ended and puts some vertical space in case there is
+another note following.
+
+    The basic idea is to define a command, \cs{enote}\marg{text}, like
+\cmd{\footnote}, that will write \meta{text} to a file\index{file!write} 
+which will be read in later to typeset the \meta{text}. 
+
+    To this end, we need an output stream, and we will use a file with 
+extension \pixfile{ent}, the first
+part of the file name being the name of the \ltx\ source file; this is
+available via the \cmd{\jobname} macro.
+\begin{lcode}
+\newoutputstream{notesout}
+  \openoutputfile{\jobname.ent}{notesout}
+\newcommand{\printendnotes}{%
+  \closeoutputstream{notesout}%
+  \input{\jobname.ent}}
+\end{lcode}
+The \cmd{\printendnotes} macro can be called at the appropriate place in the
+document to print any endnotes. It closes the output file and 
+then inputs it\index{file!read} to print the endnotes.
+
+    As well as putting the notes into the file we are also going to
+add a heading indicating the chapter. Rather than invent a completely
+new kind of heading I'll simply use \cmd{\subsection*} --- the starred
+form so that there will be no \prtoc{} entry.
+\begin{lcode}
+\DeclareRobustCommand{\enotehead}[1]{%
+  \subsection*{Notes for chapter #1}}
+\end{lcode}
+The argument to the \cs{enotehead} macro is the number of a chapter. Also
+needed is a method for determining when this heading should be added to 
+the endnote file. One simple way is using a counter holding the chapter
+number. Initialise the counter to something that is an invalid
+chapter number.
+\begin{lcode}
+\newcounter{savechap}
+  \setcounter{savechap}{-1000}
+\end{lcode}
+
+    We have the pieces ready, and all that remains is to define
+the \cs{enote} macro, which will take one argument --- the text of the
+note.
+\begin{lcode}
+\newcommand{\enote}[1]{%
+  \refstepcounter{enote}%      increment the counter
+  \textsuperscript{\theenote}% typeset it as a superscript
+  \ifnum\value{savechap}=\value{chapter}\else % in a new chapter
+    \setcounter{savechap}{\value{chapter}%      save the number
+    \addtostream{notesout}{\enotehead{\thechapter}}% the heading
+  \fi
+  \addtostream{notesout}{\enotetext{\theenote}{#1}}}
+\end{lcode}
+\cs{enote}, which is used just like \cmd{\footnote}, increments the 
+counter for endnotes, typesets that as a superscript, and then writes
+the \cs{enotetext} command to the endnotes file. Entries in the \pixfile{ent}
+file will look like:
+\begin{lcode}
+...
+\enotehead{3}     % for chapter 3
+\enotetext{1}{First end note in chapter 3.}
+\enotetext{2}{The next end note.}
+...
+\end{lcode}
+
+    You can try this, perhaps changing the definition of \cs{enotetext}
+to give a better looking presentation of an endnote. There is, however,
+a caveat if you use \cs{enote}. 
+
+\vspace{\onelineskip}
+\noindent\textbf{Question 3.} What is the caveat?
+
+If you can't
+think what it might be, don't worry as it will be dealt with in another
+example. 
+
+\index{endnotes|)}
+
+\subsection{Example: end floats}
+
+\index{end floats|(}
+
+    There are some documents where all figures are required to be grouped
+in one place, for instance at the end of the document or perhaps at the
+end of each chapter. Grouping at the end of a document with 
+chapters is harder, so we'll tackle that one.
+
+   The basic idea is to write out verbatim\index{verbatim!write} 
+each figure environment and then read them all back in at the end. 
+We will use a stream,\index{stream} let's call
+it \texttt{tryout}, and call our file for figures \file{tryout.fig}.
+\begin{lcode}
+\newoutputstream{tryout}
+\openoutputfile{tryout.fig}{tryout}
+\end{lcode}
+
+    If all were simple, in the document we could then just do
+\begin{lcode}
+\begin{writeverbatim}{tryout}
+\begin{figure} ... \end{figure}
+\end{writeverbatim}
+...
+\closeoutputstream{tryout}
+\input{tryout.fig}
+\end{lcode}
+
+    So, what's the problem?
+
+    By default figure captions are numbered per chapter, and are preceeded
+by the chapter number; more precisely, the definition of a figure number
+is 
+\begin{lcode}
+\thechapter.\arabic{figure}
+\end{lcode}
+If we simply lump all the figures at 
+the end, then they
+will all be numbered as if they were in the final chapter. 
+For the sake of argument assume that the last chapter is number 10.
+The nth figure will then be numbered 10.n.
+One thing that we
+can do rather simply is to change the definition of the figure by using
+another counter, let's call it \texttt{pseudo}, instead of the chapter.
+\begin{lcode}
+\newcounter{pseudo}
+  \renewcommand{\thepseudo}{\arabic{pseudo}}
+\renewcommand{\thefigure}{\thepseudo.\arabic{figure}}
+\end{lcode}
+Now, all we should have to do is arrange that the proper value of 
+\texttt{pseudo}
+is available before each figure is typeset at the end. The code around
+the \Ie{figure} environments might then look like this
+\begin{lcode}
+\addtostream{tryout}{\protect\setcounter{pseudo}{\thechapter}}
+\begin{writeverbatim}{tryout}
+\begin{figure}...
+\end{lcode}
+and a part of the file might then look like
+\begin{lcode}
+...
+\setcounter{pseudo}{4}
+\begin{figure}...
+\end{lcode}
+The \cmd{\protect} before the \cmd{\setcounter} command will stop it
+from expanding before it is written to the file, while the \cmd{\thechapter}
+command \emph{will} be expanded to give the actual number of the current 
+chapter. This looks better as now at least the figure will be numbered 4.n 
+instead of 10.n.
+
+    There is one last snag --- figure numbers are reset at the start of each
+chapter --- but if we just dump the figures at the end of the document
+then although the chapter part of the number will alter appropriately
+because of the \texttt{pseudo} process,
+the second part of the number will just increase continuously. It looks
+as though we should write out a change to the chapter counter at the start
+of each chapter. If we do that, then we should be able to get rid of the
+\texttt{pseudo} counter, which sounds good. But, and this is almost the 
+last but,
+what if there are chapters after we have read in the figure file? To
+cater for this the chapter number of the last chapter before the file must
+be saved, and then restored after the figures have been processed.
+
+    Finally, wouldn't it be much better for the user if everything was
+wrapped up in an environment that handled all the messy stuff?
+
+    Here is the final code that I am going to produce which, by the way,
+is displayed in the \Ie{boxedverbatim} environment\index{line number} 
+with line numbers and the following settings, just in case there is
+a page break in the middle of the box.
+\begin{lcode}
+\nobvbox
+\bvperpagetrue
+\bvtopofpage{\begin{center}\normalfont%
+             (Continued from previous page)\end{center}}
+\bvendofpage{}
+\resetbvlinenumber
+\linenumberfrequency{1}
+\bvnumbersoutside
+\linenumberfont{\footnotesize\rmfamily}
+\begin{boxedverbatim}
+...
+\end{lcode}
+
+\nobvbox
+\bvperpagetrue
+\bvtopofpage{\begin{center}\normalfont%
+             (Continued from previous page)\end{center}}
+\bvendofpage{}
+\resetbvlinenumber
+\linenumberfrequency{1}
+\bvnumbersoutside
+\linenumberfont{\footnotesize\rmfamily}
+\begin{boxedverbatim}
+\newoutputstream{tryout}
+\openoutputfile{\jobname.fig}{tryout}
+\newcounter{pseudo}
+\renewcommand{\thefigure}{\thepseudo.\arabic{figure}}
+\newenvironment{writefigure}{%
+  \ifnum\value{chapter}=\value{pseudo}\else
+    \setcounter{pseudo}{\value{chapter}}
+    \addtostream{tryout}{\protect\stepcounter{chapter}}
+    \addtostream{tryout}{\protect\addtocounter{chapter}{-1}}
+    \addtostream{tryout}{%
+      \protect\setcounter{pseudo}{\thechapter}}
+  \fi
+  \addtostream{tryout}{\protect\begin{figure}}
+  \writeverbatim{tryout}}%
+ {\endwriteverbatim\finishwritefigure}
+\newcommand{\finishwritefigure}{%
+  \addtostream{tryout}{\protect\end{figure}}}
+\newcommand{\printfigures}{%
+  \closeoutputstream{tryout}%
+  \input{\jobname.fig}%
+}
+\end{boxedverbatim}
+\linenumberfrequency{0}
+    The above code should be either put in the preamble\index{preamble} 
+or in a separate package\index{package} file.
+
+   The first four lines of the code perform the initial settup described
+earlier. Lines 1 and 2 set up for outputting\index{file!write} to a file 
+\verb?\jobname.fig?, which
+is where the figures will be collected. Lines 3 and 4 create the 
+new counter\index{new!counter}
+we need and change the construction of the figure number. The rest of the code
+defines a new environment\index{new!environment} \Ie{writefigure} 
+which is to be used instead 
+of the \Ie{figure} environment. It writes its content out to the 
+\texttt{tryout} stream.
+
+    In line 6 a check is made to see if the current values of the 
+\Icn{chapter} and \Icn{pseudo} counters are the same; 
+nothing is done if they are. If they are
+different, it means that this is the first figure in the chapter and we have
+to put appropriate information into the figure file. Line 7 sets the
+\Icn{pseudo} counter to the value of the \Icn{chapter} counter 
+(if there is another \Ie{writefigure} in the chapter it will then 
+skip over the code in lines 7 to 11).
+The next lines put (where N is the number of the current chapter):
+\begin{lcode}
+\stepcounter{chapter}
+\addtocounter{chapter}{-1}
+\setcounter{pseudo}{N}
+\end{lcode}
+into the figure file. Stepping the chapter number (by one) resets the 
+following figure number, and then subtracting one from the stepped number
+returns the chapter number to its original value. 
+Finally the counter \Icn{pseudo} is set to the number of the 
+current chapter.
+
+    Line 13 puts
+\begin{lcode}
+\begin{figure}
+\end{lcode}
+into the figure file, and line 14 starts the 
+\Ie{writeverbatim}\index{verbatim!write} environment.
+
+    For the end of the \Ie{writefigure} environment (line 15), the 
+\Ie{writeverbatim} environment is ended and after that the 
+\cmd{\finishwritefigure} macro
+is called. This is defined in lines 16 and 17, and simply writes
+\begin{lcode}
+\end{figure}
+\end{lcode}
+out to the figure file. The \cmd{\endwriteverbatim}, and any other kind of
+\cs{end...verbatim}, command is very sensitive to anything that follows it,
+and in this case did not like to be immediately followed by an
+\verb?\addtostream{...}?, but did not mind it being wrapped up in the
+the \cmd{\finishwritefigure} macro.
+
+    The \cmd{\printfigures} macro defined in the last three lines of the code
+simply closes the output stream\index{stream!output} and then inputs the 
+figures\index{file!read} file.
+
+    As an example of how this works, if we have the following source code:
+\begin{lcode}
+\chapter{The fifth chapter}
+...
+\begin{writefigure}
+%% illustration and caption
+\end{writefigure}
+...
+\begin{writefigure}
+%% another illustration and caption
+\end{writefigure}
+\end{lcode}
+then the figure file will contain the following (shown verbatim in the 
+\Ie{fboxverbatim}\index{framed!verbatim} environment).
+
+\begin{fboxverbatim}
+\stepcounter{chapter}
+\addtocounter{chapter}{-1}
+\setcounter{pseudo}{5}
+\begin{figure}
+%% illustration and caption
+\end{figure}
+\begin{figure}
+%% another illustration and caption
+\end{figure}
+\end{fboxverbatim}
+
+\index{end floats|)}
+
+
+\subsection{Example: questions and answers}
+
+\index{questions and answers|(}
+
+    Text books often have questions at the end of a chapter. Sometimes answers
+are also provided at the end of the book, or in a separate teachers guide.
+During the draft stages of such a book it is useful to keep the
+questions and answers together in the source and paper drafts, only removing
+or repositioning the answers towards the end of the writing process.
+
+    This example provides an outline for meeting these desires. For 
+pedagogical purposes I use a \cmd{\label} and \cmd{\ref} technique although
+there are better methods. The example also shows that not
+everything works as expected --- it is a reasonably accurate rendition
+of the process that I actually went through in designing it.
+
+    First we need a counter for the questions and we'll use an 
+environment\index{environment!new}
+for questions as these may be of any complexity. The environment takes one
+argument --- a unique key to be used in a \cmd{\label}.
+\begin{lcode}
+\newcounter{question} \setcounter{question}{0}
+\renewcommand{\thequestion}{\arabic{question}}
+\newenvironment{question}[1]%
+  {\refstepcounter{question}
+   \par\noindent\textbf{Question \thequestion:}\label{#1}}%
+  {\par}
+\end{lcode}
+I have used \cmd{\refstepcounter} to increment\index{counter!increment} 
+the counter so that
+the \cmd{\label} will refer to it, and not some external counter.
+
+    We will use a file, called \verb?\jobname.ans? to collect the answers
+and this will be written\index{file!write} to by a stream.\index{stream} 
+There is also a convenience
+macro, \cmd{\printanswers}, for the user to call to print the answers.
+\begin{lcode}
+\newoutputstream{ansout}
+\end{lcode}
+
+
+    A matching environment\index{environment!new} for answers is required. 
+The argument to the environment is the key of the question.
+
+   In \Lopt{draft} mode it is simple, just typeset the answer and no need to
+bother with any file printing (remember that \piif{ifdraft} is \ptrue\ for a 
+\Lopt{draft} mode document). 
+\begin{lcode}
+\ifdraft                          % when in draft mode
+\newenvironment{answer}[1]%
+  {\par\noindent\textbf{Answer \ref{#1}:}}%
+  {\par}
+\newcommand{\printanswers}{}
+\else                             % when not in draft mode
+\end{lcode}
+
+   In \Lopt{final} mode the \Ie{answer} environment must write its contents 
+verbatim to the \pixfile{ans} file for printing by \cmd{\printanswers}.
+Dealing with these in reverse order, this is the definition of
+\cmd{\printanswer} when not in \Lopt{draft} mode.
+\begin{lcode}
+\newcommand{\printanswers}{%
+  \closeoutputstream{ansout}
+  \input{\jobname.ans}}
+\end{lcode}
+ 
+    Now for the tricky bit, the \Ie{answer} environment. First define an
+environment\index{environment!new} that makes sure our 
+output\index{stream!output} stream is open, and which then
+writes the answer title to the stream.
+\begin{lcode}
+\newenvironment{@nswer}[1]{\@bsphack
+  \IfStreamOpen{ansout}{}{%
+    \openoutputfile{\jobname.ans}{ansout}%
+  }%
+  \addtostream{ansout}{\par\noindent\textbf{Answer \ref{#1}:}}%
+  }{\@esphack}
+\end{lcode}
+The macros \cmd{\@bsphack} and \cmd{\@esphack} are \ltx\ kernel macros
+that will gobble\index{space!gobble} extraneous spaces around the 
+environment. In other words,
+this environment will take no space in the typeset result. The
+\cmd{\IfStreamOpen} macro is used to test whether or not the stream is open, 
+and if it isn't then it opens it. The answer title is then written
+out to the stream. Now we can define the \Ie{answer} environment so that
+its contents get written out\index{write!verbatim} verbatim.
+\begin{lcode}
+\newenvironment{answer}[1]%
+  {\@bsphack\@nswer{#1}\writeverbatim{ansout}}%
+  {\par\endwriteverbatim\end@nswer\@esphack}
+\fi                               % end of \ifdraft ...\else ...
+\end{lcode}
+
+    When I was testing this code I had a surprise as I got nasty error messages
+from \ltx\ the first time around, but it worked fine when I processed the
+source a second time! The problem lies in the code line
+\begin{lcode}
+\addtostream{ansout}{\par\noindent\textbf{Answer \ref{#1}:}}%
+\end{lcode}  
+
+    The first time around, \ltx\ processed the \cmd{\ref} command and of
+course it was undefined. In this case \cmd{\ref} gets replaced by the
+code to print the error message, which involves macros that have \texttt{@}
+in their names, which \ltx\ only understands under special circumstances.
+The second time around \cmd{\ref} gets replaced by the question number
+and all is well. I then remembered that some commands need 
+protecting\index{protect}
+when they are written out, so I tried (I've wrapped the line to fit)
+\begin{lcode}
+\addtostream{ansout}{\par\noindent
+  \protect\makeatletter\textbf{Answer 
+  \protect\ref{#1}:}\protect\makeatother}%
+\end{lcode}  
+which did work but seemed very clumsy.
+
+    I then took another line of attack, and looked at the definition
+of \cmd{\ref} to see if I could come up with something that didn't
+expand into \texttt{@} names. The result of this was
+\begin{lcode}
+\addtostream{ansout}{\par\noindent\textbf{Answer 
+                                          \quietref{#1}:}}%
+\end{lcode}  
+In the kernel file \file{ltxref.dtx} I found the definition of \cmd{\ref}
+and it used a macro \cmd{\@setref} (shown below) to do its work.
+My \cmd{\quietref} locally changes the definition of \cmd{\@setref} 
+and then calls \cmd{\ref}, which will then use the modified \cmd{\@setref}.
+\begin{lcode}
+\def\@setref#1#2#3{%        %% kernel definition
+  \ifx#1\relax
+    \protect\G@refundefinedtrue
+    \nfss@text{\reset@font\bfseries ??}%
+    \@latex@warning{Reference `#3' on page \thepage \space
+                    undefined}%
+  \else
+    \expandafter#2#1\null
+  \fi}
+
+\DeclareRobustCommand{\quietref}[1]{\begingroup
+  \def\@setref##1##2##3{%
+    \ifx##1\relax ??\else
+      \expandafter##2##1\null
+    \fi
+  \ref{#1}\endgroup}
+\end{lcode}
+
+    Having gone all round the houses, the simplest solution was actually
+one that I had skipped over
+\begin{lcode}
+\addtostream{ansout}{\par\noindent\textbf{Answer 
+                                          \protect\ref{#1}:}}%
+\end{lcode}  
+
+    The advantage of using the \cmd{\label} and \cmd{\ref} mechanism is that
+a question and its answer need not be adjacent in the source; I think that
+you have seen some of the disadvantages. Another disadvantage is that it
+is difficult to use, although not impossible, if you want the answers in
+a separate document.
+
+    The real answer to all the problems is force an answer to come immediately
+after the question in the source and to use the \Icn{question} counter
+directly, as in the endnotes\index{endnote} example. In the traditional manner,
+this is left as an exercise for the 
+reader.
+
+\index{questions and answers|)}
+
+\index{stream|)}
+
+\index{file|)}
+
+\section{Answers}
+
+\noindent\textbf{Question 1.} As a convenience, the 
+argument\index{argument!optional} to the 
+environment could be made optional, defaulting, say, to the current
+line width. If the default width is used the frame will be wider
+than the line width, so we really ought to make the width argument
+specify the width of the frame instead of the minipage. This 
+means calculating a reduced width for the minipage based on
+the values of \lnc{\fboxsep} and \lnc{\fboxrule}.
+\begin{lcode}
+\newsavebox{\minibox}
+\newlength{\minilength}
+\newenvironment{framedminipage}[1][\linewidth]{%
+  \setlength{\minilength}{#1}
+  \addtolength{\minilength}{-2\fboxsep} 
+  \addtolength{\minilength}{-2\fboxrule}
+  \begin{lrbox}{\minibox}\begin{minipage}{\minilength}}%
+  {\end{minipage}\end{lrbox}\fbox{\usebox{\minibox}}}
+\end{lcode}
+
+
+\vspace{\onelineskip}
+\noindent\textbf{Question 2.} There are at least three reasonable answers.
+In increasing or decreasing order of probability (your choice) they are:
+\begin{itemize}
+\item I took Sherlock Holmes' advice and followed the methods outlined
+   in the chapter;
+\item I used a package, such as the \Lpack{answer} package which is designed
+  for the purpose;
+\item I just wrote the answers here.
+\end{itemize}
+
+\vspace{\onelineskip}
+\noindent\textbf{Question 3.} If \ltx\ writes text out to an external
+file which will be read by \ltx\ at some time, any 
+fragile\index{fragile} commands 
+in the text must be \cmd{\protect}ed.\index{protect}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%% mbook
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Cross referencing} \label{chap:xref}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\section{Introduction}
+
+    A significant aspect of \ltx\ is that it provides a variety of
+cross referencing\index{cross reference} methods, many of 
+which are automatic. An example
+of an automatic\index{cross reference!automatic} cross reference is the way in which a \cmd{\chapter}
+command automatically adds its title and page number to the \toc,
+or where a \cmd{\caption} adds itself to a \listofx.
+
+    Some cross references have to be 
+specifically\index{cross reference!specified} specified, such as
+a reference in the text to a particular chapter number, and for
+these \ltx\ provides a general mechanism that does not require you
+to remember the particular number and more usefully does not require
+you to remember to change the reference if the chapter number is later 
+changed.
+
+\section{Labels and references} \label{sec:lab&ref}
+
+\index{reference!by number|(}
+
+    The general \ltx\ cross reference method uses a pair of macros.
+\begin{syntax}
+\cmd{\label}\marg{labstr} \\
+ \cmd{\ref}\marg{labstr} \cmd{\pageref}\marg{labstr} \\
+\end{syntax}
+\glossary(label)%
+  {\cs{label}\marg{labstr}}%
+  {Associates the current (section, caption, \ldots) number, and page number,
+   to \meta{labstr}.}
+\glossary(ref)%
+  {\cs{ref}\marg{labstr}}%
+  {Prints the (section, or other) number associated with \meta{labstr}
+   from a \cs{label}.}
+\glossary(pageref)%
+  {\cs{pageref}\marg{labstr}}%
+  {Prints the page number associated with \meta{labstr}
+   from a \cs{label}.}
+You can put a \cmd{\label} command where you want to label\index{label} 
+some numbered
+element in case you might want to refer to the number from elsewhere in
+the document. The \meta{labstr} argument is a sequence of letters, digits, 
+and punctuation symbols; upper and lower case letters are different.
+The \cmd{\ref} macro prints the number\index{reference!to label} 
+associated with \meta{labstr}. 
+The \cmd{\pageref} macro prints the number of the 
+page\index{reference!to page} where the
+\cmd{\label} specifying the \meta{labstr} was placed.
+
+    The \cmd{\label} and \cmd{\ref} mechanism is simple to use and
+works well but
+on occasions you might be surprised\index{reference!unexpected result}  
+at what \cmd{\ref} prints.
+
+    \ltx\ maintains a current \textit{ref} 
+value\index{reference!current value} which is 
+set\index{reference!set current value} by
+the \cmd{\refstepcounter} command. This command is used by the sectioning
+commands, by \cmd{\caption}, by numbered environments like
+\Ie{equation}, by \cmd{\item} in an \Ie{enumerate} environment, and
+so on. The \cmd{\label} command\index{label} writes an entry in the 
+\pixfile{aux} file consisting of the \meta{labstr}, the current 
+\textit{ref} value\index{reference!current value} and the curent 
+page\index{page!current number} number. 
+A \cmd{\ref} command picks up the \textit{ref}
+value for \meta{labstr} and prints it. Similarly \cmd{\pageref} prints
+the page number for \meta{labstr}.
+
+    The critical point is that the \cmd{\label} command picks up the
+value set by the \emph{most recent} visible\footnote{Remember, a
+change within a group, such as an environment, is not visible
+outside the group.}  \cmd{\refstepcounter}. 
+\begin{itemize}
+\item A \cmd{\label} after a \cmd{\section} picks up the \cmd{\section}
+      number, not the \cmd{\chapter} number.
+\item A \cmd{\label} after a \cmd{\caption} picks up the caption number.
+\item A \cmd{\label} \emph{before} a \cmd{\caption} picks up the surrounding
+      sectional number.
+\end{itemize}
+If you are defining your own macro that sets a counter, the counter value
+will be invisible to any \cmd{\label} unless it is 
+set\index{reference!set current value} using \cmd{\refstepcounter}. 
+
+
+
+\begin{syntax}
+\cmd{\fref}\marg{labstr} \cmd{\figurerefname} \\
+\cmd{\tref}\marg{labstr} \cmd{\tablerefname} \\
+\cmd{\pref}\marg{labstr} \cmd{\pagerefname} \\
+\end{syntax}
+\glossary(fref)%
+  {\cs{fref}\marg{labstr}}%
+  {Prints a named (\cs{figurerefname}) reference to a \cs{label}ed figure.}
+\glossary(figurerefname)%
+  {\cs{figurerefname}}%
+  {Name for a figure used by \cs{fref}.}
+\glossary(tref)%
+  {\cs{tref}\marg{labstr}}%
+  {Prints a named (\cs{tablerefname}) reference to a \cs{label}ed table.}
+\glossary(tablerefname)%
+  {\cs{tablerefname}}%
+  {Name for a table used by \cs{tref}.}
+\glossary(pref)%
+  {\cs{pref}\marg{labstr}}%
+  {Prints a named (\cs{pagerefname}) reference to a \cs{label} page reference.}
+\glossary(pagerefname)%
+  {\cs{pagerefname}}%
+  {Name for a page used by \cs{pref}.}
+    The class provides these more particular named\index{reference!to figure} 
+references to a figure\index{figure!reference},
+table\index{table!reference}\index{reference!to table} or 
+page\index{page!reference}\index{reference!to page}. For example the 
+default definitions of \cmd{\fref} and 
+\cmd{\pref} are
+\begin{lcode}
+\newcommand{\fref}[1]{\figurerefname~\ref{#1}}
+\newcommand{\pref}[1]{\pagerefname~\pageref{#1}}
+\end{lcode}
+and can be used as 
+\begin{lcode}
+\ldots footnote parameters are shown in~\fref{fig:fn} 
+on~\pref{fig:fn}.
+\end{lcode}
+which in this document prints as: 
+\begin{syntax}
+\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}. \\
+\end{syntax}
+
+\begin{syntax}
+\cmd{\Aref}\marg{labstr} \cmd{\appendixrefname} \\
+\cmd{\Bref}\marg{labstr} \cmd{\bookrefname} \\
+\cmd{\Pref}\marg{labstr} \cmd{\partrefname} \\
+\cmd{\Cref}\marg{labstr} \cmd{\chapterrefname} \\
+\cmd{\Sref}\marg{labstr} \cmd{\sectionrefname} \\
+\end{syntax}
+\glossary(Aref)%
+  {\cs{Aref}\marg{labstr}}%
+  {Prints a named (\cs{appendixrefname}) reference to a \cs{label}ed appendix.}
+\glossary(appendixrefname)%
+  {\cs{appendixrefname}}%
+  {Name for an appendix used by \cs{Aref}.}
+\glossary(Bref)%
+  {\cs{Bref}\marg{labstr}}%
+  {Prints a named (\cs{bookrefname}) reference to a \cs{label}ed book.}
+\glossary(bookrefname)%
+  {\cs{bookrefname}}%
+  {Name for a book used by \cs{Bref}.}
+\glossary(Pref)%
+  {\cs{Pref}\marg{labstr}}%
+  {Prints a named (\cs{partrefname}) reference to a \cs{label}ed part.}
+\glossary(partrefname)%
+  {\cs{partrefname}}%
+  {Name for a part used by \cs{Pref}.}
+\glossary(Cref)%
+  {\cs{Cref}\marg{labstr}}%
+  {Prints a named (\cs{chapterrefname}) reference to a \cs{label}ed chapter.}
+\glossary(chapterrefname)%
+  {\cs{chapterrefname}}%
+  {Name for a chapter used by \cs{Cref}.}
+\glossary(Sref)%
+  {\cs{Sref}\marg{labstr}}%
+  {Prints a named (\cs{sectionrefname}) reference to a \cs{label}ed section.}
+\glossary(sectionrefname)%
+  {\cs{sectionrefname}}%
+  {Name for a section used by \cs{Sref}.}
+Similarly, specific commands are supplied for referencing sectional 
+divisions; \cmd{\Aref}\index{reference!to appendix} for \appendixrefname,
+\cmd{\Bref}\index{reference!to book} for \bookrefname,
+\cmd{\Pref}\index{reference!to part} for \partrefname, 
+\cmd{\Cref}\index{reference!to chapter} for \chapterrefname,
+and \cmd{\Sref}\index{reference!to section} for divisions 
+below \chapterrefname. For example:
+\begin{lcode}
+This is \Sref{sec:lab&ref} in \Cref{chap:xref}.
+\end{lcode}
+This is \Sref{sec:lab&ref} in \Cref{chap:xref}.
+
+\index{reference!by number|)}
+
+\section{Reference by name} \label{sec:nxref}
+
+\index{reference!by name|(}
+
+    In technical works it is common to reference a chapter, say, by its
+number. In non-technical works such cross references are likely to be
+rare, and when they are given it is more likely that the chapter title
+would be used instead of the number, as in:
+\begin{lcode}
+The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
+\end{lcode}
+The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
+
+    There are two packages, \Lpack{nameref}~\cite{NAMEREF} and 
+\Lpack{titleref}~\cite{TITLEREF},
+ that let you refer to things by name instead of number.
+
+    Name references were added to the class as a consequence of adding
+a second optional argument to the sectioning commands. I found
+that this broke the \Lpack{nameref} package, and hence the
+\Lpack{hyperref} package as well, so they had to be fixed. The change 
+also broke Donald Arseneau's \Lpack{titleref} package, and it turned out
+that \Lpack{nameref} also clobbered \Lpack{titleref}. The class also
+provides titles, like \cmd{\poemtitle}, that are not recognised by
+either of the packages. From my viewpoint the most efficient
+thing to do was to enable the class itself to provide name 
+referencing.
+
+
+\begin{syntax}
+\cmd{\titleref}\marg{labstr} \\
+\end{syntax}
+\glossary(titleref)%
+  {\cs{titleref}\marg{labstr}}%
+  {Prints the (section, or other) title of the number associated 
+   with \meta{labstr} from a \cs{label}.}
+The macro \cmd{\titleref} is a class addition to the usual set of
+cross referencing commands. Instead of printing a number it typesets
+the title associated with the labelled number. This is really only useful
+if there \emph{is} a title, such as from a \cmd{\caption} or
+\cmd{\section} command. For example, look at this code 
+and its result.
+
+\begin{egsource}{eg:sec:nxref:1}
+Labels may be applied to:
+\begin{enumerate}
+\item Chapters, sections, etc.            \label{sec:nxref:1}
+...
+\item Items in numbered lists, etc. \ldots \label{sec:nxref:5}
+\end{enumerate}
+Item \ref{sec:nxref:1} in section \textit{\titleref{sec:nxref}} 
+mentions sections while item \titleref{sec:nxref:5}, on page 
+\pageref{sec:nxref:5} in the same section, mentions things like
+items in enumerated lists that should not be referenced 
+by \verb?\titleref?.
+\end{egsource}
+
+\begin{egresult}[Named references should be to titled elements]{eg:sec:nxref:1}
+Labels may be applied to:
+\begin{enumerate}
+\item Chapters, sections, etc.            \label{sec:nxref:1}
+\item Captions
+\item Legends
+\item Poem titles
+\item Items in numbered lists, etc. \ldots \label{sec:nxref:5}
+\end{enumerate}
+Item \ref{sec:nxref:1} in section \textit{\titleref{sec:nxref}} 
+mentions sections while item\index{reference!unexpected result} 
+\titleref{sec:nxref:5}, on page 
+\pageref{sec:nxref:5} in the same section, mentions things like
+items in enumerated lists 
+that should not be referenced by \verb?\titleref?.
+\end{egresult}
+
+\begin{syntax}
+\cmd{\headnameref} \cmd{\tocnameref} \\
+\cmd{\namerefon} \cmd{\namerefoff} \\
+\end{syntax}
+\glossary(headnameref)%
+  {\cs{headnameref}}%
+  {Use header title for sectional title references.}
+\glossary(tocnameref)%
+  {\cs{tocnameref}}%
+  {Use \prtoc{} title for sectional title references.}
+\glossary(namerefon)%
+  {\cs{namerefon}}%
+  {Makes \cs{titleref} operative.}
+\glossary(namerefoff)%
+  {\cs{namerefoff}}%
+  {Makes \cs{titleref} inoperative.}
+There can be three possibilities for the name of a sectional division;
+the full name, the name in the \toc, and the name in the page header.
+As far as \cmd{\titleref} is concerned it does not use the fullname, 
+and so the choice simplifies to the \toc{} or page header. Following
+the declaration \cmd{\headnameref} it uses the page header name.
+Following the opposite declaration \cmd{\tocnameref}, which is the
+default, it uses the \toc\ name.
+
+    The capability for referencing by name has one potentially
+unfortunate side effect --- it causes some arguments, such as that
+for \cmd{\legend}, to be moving\index{moving argument} arguments 
+and hence any fragile\index{fragile} command
+in the argument will need \cmd{\protect}ing. However, not every document
+will require the use of \cmd{\titleref} and so the declaration
+\cmd{\namerefoff} is provided to switch it off (the argument to
+\cmd{\legend} would then not be moving). The declaration
+\cmd{\namerefon}, which is the default, enables name referencing.
+
+\index{reference!by name|)}
+
+\chapter{\prBackmatter} \label{chap:backmatter}
+
+The \pixbackmatter\ consists of reference and supportive elements for 
+the \pixmainmatter;
+things like bibliographies, indexes, glossaries, endnotes, and other
+material. The class provides some features of such matter that
+is not in the standard classes.
+
+\section{Bibliography} \label{sec:xref:bibliography}
+
+\index{bibliography|(}
+
+Just as a reminder the bibliography is typeset within the 
+\Ie{thebibliography} environment.
+\begin{syntax}
+\cmd{\bibname} \\
+\senv{thebibliography}\marg{exlabel} \\
+\cmd{\bibitem} ... \\
+\eenv{thebibliography} \\
+\end{syntax}
+\glossary(bibname)%
+  {\cs{bibname}}%
+  {The title for a bibliography}
+\glossary(thebibliography)%
+  {\senv{thebibliography}\marg{exlabel}}%
+  {Environment for typesetting a bibliography. \meta{exlabel} is an arbitrary
+    piece of text as wide as the widest label for the bibliographic items.}
+\glossary(bibitem)%
+  {\cs{bibitem}}%
+  {Starts a new bibliographic entry in a \Pe{thebibliography} listing.}
+The environment takes one required argument, \meta{exlabel}, which is a 
+piece of text
+as wide as the widest label in the bibliography. The value of 
+\cmd{\bibname} (default `Bibliography') is used
+as the title. 
+
+\begin{syntax}
+\cmd{\bibintoc} \cmd{\nobibintoc} \\
+\end{syntax}
+\glossary(bibintoc)%
+  {\cs{bibintoc}}%
+  {Title of \Pe{thebibliography} will be added to the \prtoc.}
+\glossary(nobibintoc)%
+  {\cs{nobibintoc}}%
+  {Title of \Pe{thebibliography} is not added to the \prtoc.}
+The declaration \cmd{\bibintoc} will cause the \Ie{thebibliography}
+environment to add the title\index{bibliography!title in ToC} to 
+the \toc, while the declaration
+\cmd{\nobibintoc} ensures that the title is not added to the \toc. 
+The default is \cmd{\bibintoc}.
+
+\begin{syntax}
+\cmd{\cite}\oarg{detail}\marg{labstr-list} \\
+\end{syntax}
+\glossary(cite)%
+  {\cs{cite}\oarg{detail}\marg{labstr-list}}%
+  {Citation in the text to bibliographic items specified in the 
+   \meta{labstr-list} of comma-separated bibliographic identifiers;
+  optional information, e.g., page number, is supplied via \meta{detail}.}
+Within the text you call out a bibliographic\index{cite bibliographic item} 
+reference using the
+\cmd{\cite} command, where \meta{labstr-list} is a comma-separated
+list of identifiers for the cited works; there must be no spaces in this 
+list. The optional \meta{detail} argument is for any additional
+information regarding the citation such as a chapter or page number;
+this is printed after the main reference. 
+
+    Various aspects of a bibliography can be changed and at this point
+it may be helpful to look at some of the internals of the \Ie{thebibliography}
+environment, which is defined like this
+\begin{lcode}
+\newenvironment{thebibliography}[1]{%
+  \bibsection
+  \begin{bibitemlist}{#1}}%
+  {\end{bibitemlist}\postbibhook}
+\end{lcode}
+The bibliographic entries are typeset as a list, the \Ie{bibitemlist}.
+
+\begin{syntax}
+\cmd{\bibsection} \\
+\end{syntax}
+\glossary(bibsection)%
+  {\cs{bibsection}}%
+  {Initialises the bibliography and typesets the title.}
+The macro \cmd{\bibsection} defines the heading\index{bibliography!heading} 
+for the \Ie{thebibliography}
+environment; that is, everything before the actual list of items.
+It is effectively defined as
+\begin{lcode}
+\newcommand{\bibsection}{%
+  \chapter*{\bibname}
+  \bibmark
+  \ifnobibintoc\else
+    \phantomsection
+    \addcontentsline{toc}{chapter}{\bibname}
+  \fi
+  \prebibhook}
+\end{lcode}
+If you want to change the heading, redefine \cmd{\bibsection}. For example,
+to have the bibliography as a numbered section instead of an unnumbered
+chapter, redefine it like
+\begin{lcode}
+\renewcommand{\bibsection}{%
+  \section{\bibname}
+  \prebibhook}
+\end{lcode}
+If you use the \Lpack{natbib}~\cite{NATBIB} and/or the 
+\Lpack{chapterbib}~\cite{CHAPTERBIB} packages with the \Lopt{sectionbib}
+option, then they change \cmd{\bibsection} appropriately to typeset the
+heading as a numbered section.
+
+\begin{syntax}
+\cmd{\bibmark} \\
+\end{syntax}
+\glossary(bibmark)%
+  {\cs{bibmark}}%
+  {Can be used in pagestyles for page headers in a bibliography.}
+\cs{bibmark} may be used in pagestyles for page headers in a bibliography.
+Its default definition is: 
+\begin{lcode}
+\newcommand*{\bibmark}{}
+\end{lcode}
+but could be redefined like, say,
+\begin{lcode}
+\renewcommand*{\bibmark}{\markboth{\bibname}{}}
+\end{lcode}
+
+
+\begin{syntax}
+\cmd{\prebibhook} \cmd{\postbibhook} \\
+\end{syntax}
+\glossary(prebibhook)%
+  {\cs{prebibhook}}%
+  {Called between typesetting the title of a bibliography and starting
+   the list of bibliographic entries.}
+\glossary(postbibhook)%  
+  {\cs{postbibhook}}%
+  {Called after typesetting the list of of bibliographic entries.}
+The commands \cmd{\prebibhook} and \cmd{postbibhook} are called after 
+typesetting the title of the bibliography and after typesetting the list of
+entries, respectively. By default, they are defined to do nothing. You may
+wish to use one or other of these to provide some general 
+information\index{bibliography!explanatory text} about
+the bibliography. For example:
+\begin{lcode}
+\renewcommand{\prebibhook}{%
+CTAN is the Comprehensive \tx\ Archive Network and URLS for the 
+several CTAN mirrors can be found at \url{http://www.tug.org}.}
+\end{lcode}
+
+\index{bibliography!list styling|(}
+
+\begin{syntax}
+\cmd{\biblistextra} \\
+\end{syntax}
+\glossary(biblistextra)%
+  {\cs{biblistextra}}%
+  {Called immediately after the \Pe{bibitemlist} is set up.}
+Just at the end of setting up the \Ie{bibitemlist} the \cmd{\biblistextra}
+command is called. By default this does nothing by you may change it to
+do something useful. For instance, it can be used to change
+the list parameters so that the entries are 
+typeset flushleft.\index{bibliography!flushleft entries}
+\begin{lcode}
+\renewcommand*{\biblistextra}{%
+  \setlength{\leftmargin}{0pt}%
+  \setlength{\itemindent}{\labelwidth}%
+  \addtolength{\itemindent}{\labelsep}}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\setbiblabel}\marg{style} \\
+\end{syntax}
+\glossary(setbiblabel)%
+  {\cs{setbiblabel}\marg{style}}%
+  {Define the look of the bibliographic entry identifiers.}
+The style of the labels\index{bibliography!label styling} marking the 
+bibliographic entries can be set
+via \cmd{\setbiblabel}. The default definition is
+\begin{lcode}
+\setbiblabel{[#1]\hfill}
+\end{lcode}
+where \verb?#1? is the citation mark position, which generates flushleft 
+marks enclosed in square brackets. To have marks just
+followed by a dot
+\begin{lcode}
+\setbiblabel{#1.\hfill}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\bibitem}\oarg{label}\marg{labstr} \\
+\cmd{\newblock} \\
+\end{syntax}
+\glossary(bibitem)%
+  {\cs{bibitem}\oarg{label}\marg{labstr}}%
+  {Introduces an entry in the bibliography. The \meta{labstr} argument
+   corresponds to a \cs{cite}'s \meta{labstr} argument. The optional
+   \meta{label} overides the default numerical printed entry label.}
+\glossary(newblock)%
+  {\cs{newblock}}%
+  {Used in a bibliography to indicate a convenient place in an entry to
+   have a pagebreak.}
+Within the \Ie{bibitemlist} environment the entries are introduced
+by \cmd{\bibitem} instead of the more normal \cmd{\item} macro.
+The required \meta{labstr} argument is the identifier for the citation and
+corresponds to a \meta{labstr} for \cmd{\cite}. The items in the list
+are normally labelled numerically but this can be overriden by using
+the optional \meta{label} argument. The \cmd{\newblock} command can be used
+at appropriate places in the entry for encouraging a linebreak (this is
+used by the \Lopt{openbib} option).
+
+\begin{syntax}
+\lnc{\bibitemsep} \\
+\end{syntax}
+\glossary(bibitemsep)%
+  {\cs{bibitemsep}}%
+  {Vertical space between entries in a bibliography.}
+In the listing the vertical space between entries is controlled by the
+length \lnc{\bibitemsep}, which by default is set to the normal 
+\lnc{\itemsep} value. The vertical space is 
+\texttt{(\lnc{\bibitemsep} + \lnc{\parsep})}. If you wish to eliminate
+the space between items do
+\begin{lcode}
+\setlength{\bibitemsep}{-\parsep}
+\end{lcode}
+
+\index{bibliography!list styling|)}
+
+\subsection{BibTex}
+
+     Often the \Lbibtex\ program~\cite{BIBTEX} is used to generate the 
+bibliography list from database(s) of 
+bibliographic\index{bibliographic database} data. For \Lbibtex\ 
+a bibliographic data base is a \pixfile{bib} file containing information
+necessary to produce entries in a bibliography. \Lbibtex\ 
+extracts the raw data from the files for each citation in the text and 
+formats it for typesetting according to a particular style.
+
+
+\begin{syntax}
+\cmd{\bibliography}\marg{bibfile-list} \\
+\end{syntax}
+\glossary(bibliography)%
+  {\cs{bibliography}\marg{bibfile-list}}%
+  {Print the bibliography having used \Pbibtex\ to extract entries from
+   the \meta{bibfile-list} of comma-separated names of \file{bib} files.}
+    The bibliography will be printed at the location of the \cmd{\bibliography}
+command. Its argument is a comma-separated list of \Pbibtex\ \pixfile{bib} files 
+which will be searched by \Lbibtex\ to generate the bibliography.
+Only the file name(s) should be supplied, the extension must not be given.
+
+
+\begin{syntax}
+\cmd{\nocite}\marg{labstr} \verb?\nocite{*}? \\
+\end{syntax}
+\glossary(nocite)%
+  {\cs{nocite}\marg{labstr}}%
+  {Add entry \meta{labstr} to the bibliography, but with no in-text citation.}
+The command \cmd{\nocite} causes \Lbibtex\ to make an entry 
+in the bibliography but no citatation will appear in the text. The special
+case \verb?\nocite{*}? causes \emph{every} entry in the database to be
+listed in the bibliography.
+
+\begin{syntax}
+\cmd{\bibliographystyle}\marg{style} \\
+\end{syntax}
+\glossary(bibliographystyle)%
+  {\cs{bibliographystyle}\marg{style}}%
+  {Typeset the bibliographic entries according to \meta{style}.}
+Many different \Pbibtex\ styles\index{BibTeX style?\Pbibtex\ style}
+are available and the particular one to be used is specified
+by calling \cmd{\bibliographystyle} before the bibliography itself.
+The `standard' bibliography \meta{style}s follow the general schemes
+for mathematically oriented papers and are:
+\begin{itemize}
+\item[\texttt{plain}]\index{BibTeX style?\Pbibtex\ style!plain?\texttt{plain}} 
+     The entry format is similar to one suggested by
+     Mary-Claire van Leunen~\cite{LEUNEN92}, and entries are sorted
+     alphabetically and labelled with numbers.
+\item[\texttt{unsrt}]\index{BibTeX style?\Pbibtex\ style!unsrt?\texttt{unsrt}} 
+     The format is the same as \texttt{plain} but
+     that entries are ordered by the citation order in the text.
+\item[\texttt{alpha}]\index{BibTeX style?\Pbibtex\ style!alpha?\texttt{alpha}} 
+     The same as \texttt{plain} but entries are 
+     labelled like `Wil89', formed from the author and publication date.
+\item[\texttt{abbrv}]\index{BibTeX style?\Pbibtex\ style!abbrv?\texttt{abbrv}} 
+     The same as \texttt{plain} except that some elements, like month 
+     names, are abbreviated.
+\end{itemize}
+There are many other styles available, some of which are used
+in collaboration with a package, one popular one being 
+Patrick Daly's \Lpack{natbib}~\cite{NATBIB} package for the kinds of 
+author-year citation styles used in the natural sciences. 
+Another package is \Lpack{jurabib}~\cite{JURABIB} for citation styles
+used in legal documents where the references are often given in footnotes
+rather than listed at the end of the document.
+
+    I assume you know how to 
+generate\index{running BibTeX?running \Pbibtex} a bibliography using \Lbibtex,
+so this is just a quick reminder. You first run \ltx\
+on your document, having specified the bibliography style, cited
+your reference material and listed the relevant \Lbibtex\ database(s). 
+You then run \Lbibtex, and after running \ltx\ twice more the
+bibliography should be complete. After a change to your citations you have to
+run \ltx\ once, \Lbibtex\ once, and then \ltx\ twice more to get an 
+updated set of references.
+
+    The format and potential contents of a \Pbibtex\
+database\index{BibTeX database?\Pbibtex\ database} file 
+(a \pixfile{bib} file) are specified in detail in Lamport~\cite{LAMPORT94} 
+and the first of the \btitle{Companions}~\cite{COMPANION}. 
+Alternatively
+there is the documentation by Oren Patashnik~\cite{BIBTEX} who wrote the
+\Lbibtex\ program.
+
+\index{BibTeX style?\Pbibtex\ style!changing|(}
+
+    A \Pbibtex\ style, specified in a \pixfile{bst} file, is written 
+using an anonymous stack based language
+created specifically for this purpose. If you can't find a 
+\Pbibtex\ style\index{BibTeX style?\Pbibtex\ style}
+that provides what you want you can either use the 
+\Lpack{makebst}~\cite{MAKEBST} package
+which leads you through creating your own style via a question and answer
+session, or you can directly write your own. If you choose the latter
+approach then Patashnik's \textit{Designing BibTeX files}~\cite{BIBTEXHACK}
+is essential reading. As he says, it is best to take an existing style and
+modify it rather than starting from scratch. 
+
+\begin{comment}
+
+This is what I did for the
+style for this book, as all I wanted was a slight change and extension
+to the standard 
+\texttt{alpha}\index{BibTeX style?\Pbibtex\ style!alpha?\texttt{alpha}}  
+style, which is in \file{alpha.bst}\ixfile{bst}.
+
+    There were three things that I wanted to do:
+\begin{itemize}
+\item Add an `isbn' field to the entries so an ISBN\index{ISBN} number 
+      could be easily quoted;
+\item Add an `annote' field so that I could perhaps provide an 
+      annotated\index{bibliography!annotated}
+      bibliography;
+\item Use the modern \cmd{\emph} command instead of the deprecated \cmd{\em}
+      command for titles;
+\end{itemize}
+
+    If you aren't interested in how I did it, skip the next part, 
+but if you are you might find it easier to follow if you have a copy 
+of the \pixfile{alpha.bst} file to hand. 
+
+This is what I did, although not in this order as I kept flitting
+back and forth in order to resolve the problems that arose.
+\begin{itemize}
+\item Copied the \pixfile{alpha.bst} file to a new file I called 
+      \pixfile{typo.bst} as my new style was to be called \texttt{typo}.
+
+\item Near the start of the file are some lines:
+\begin{lcode}
+ENTRY
+  { address
+    author
+    ...
+    year
+    isbn
+    annote
+  }
+\end{lcode}
+at the end of which I added the \texttt{isbn} and \texttt{annote}. These are
+the fields that may apear in an entry. Later I have to describe how these
+fields are to be dealt with.
+
+\item
+    Shortly after the \texttt{ENTRY} list there is a set of \texttt{FUNCTION}
+specifications, the 17th of which is called \texttt{emphasize}. This is the 
+only place in the file where the \cmd{\em} macro appears, so this is what I 
+have to modify so that the \texttt{typo} style will use \cmd{\emph} instead
+of \cmd{\em}. My revised definition is:
+\begin{lcode}
+FUNCTION {emphasize}
+{ duplicate$ empty$ 
+    { pop$ "" }
+%%    { "{\em " swap$ * "}" * }  % original, change to
+    { "\emph{ " swap$ * "}" * }  % PW mod
+  if$
+}
+\end{lcode}
+I didn't (and still don't) know just how the function operated but my
+modification worked.
+
+\item
+    After this were a lot of functions of the form \verb?{format.something}?
+which I took to be the formatting instructions for the fields. Looking
+at the various functions I added the following ones.
+\begin{lcode}
+%% PW added format.isbn
+FUNCTION {format.isbn}
+{ isbn empty$
+  { "" }
+  { new.block " ISBN " isbn * }
+    if$
+}
+
+%% PW added format.annote
+{ annote empty$
+  { "" }
+  { " \begin{quotation}\noindent " annote * 
+    " \end{quotation} " * }
+    if$
+}
+
+%% PW added fin.annote
+{ annote empty$
+  {  }
+  { newline$ }
+    if$
+}
+\end{lcode}
+%$
+
+\item
+    The last thing that I had to do was to get the entries to write
+out the new \texttt{annote} and \texttt{isbn} fields. As an example, here 
+is the revised function for a \texttt{booklet} entry, which is one of the
+shorter ones.
+\begin{lcode}
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  format.isbn output    %% PW added
+  new.block
+  note output
+  fin.entry
+  format.annote write$  %% PW added
+  fin.annote            %% PW added
+}
+\end{lcode}
+%$
+
+I added similar lines to all the other entry functions except, for example, 
+the \texttt{article} function where I only added the \texttt{annote}
+lines as I assumed that an article would not have an ISBN\index{ISBN}.
+
+\end{itemize}
+
+    It took me three or four attempts to make it all work as I didn't 
+really know what I was doing. I basically copied something that looked
+close to what I might need, changed some names, and tried it out. If it
+didn't work then I tried something a bit different until it did.
+For someone who knew what they were doing it would have been a trivial
+task and they would probably have used a more elegant solution, but
+it works and didn't take too long.
+\end{comment}
+
+\index{BibTeX style?\Pbibtex\ style!changing|)}
+
+
+\index{bibliography|)}
+
+\section{Index} \label{sec:xref:index}
+
+
+   It is time to take a closer look at indexing. The class allows 
+multiple indexes\index{index!multiple} and an index may be typeset as a 
+single\indextwo{index}{single column} or a 
+double\indextwo{index}{double column} column.
+
+    The general process is to put indexing commands into your source text, 
+and \ltx\ will write this raw indexing data to an \pixfile{idx} file. 
+The raw index data is then processed, not by \ltx\ but by yourself if you 
+have plenty of spare time on your hands, or more usually by a separate 
+program, to create a sorted list of indexed items in a second file (usually
+an \pixfile{ind} file). This can then be input to \ltx\ to print the sorted
+index data.
+
+\subsection{Printing an index}
+\index{index!printing|(}
+
+\begin{syntax}
+\cmd{\makeindex}\oarg{file} \\
+\cmd{\printindex}\oarg{file} \\
+\end{syntax}
+\glossary(makeindex)%
+  {\cs{makeindex}\oarg{file}}%
+  {Preamble command to collect raw index information. By default this
+   is written to file \cs{jobname}\texttt{.idx}. If the optional argument
+   is used it may be written to file \meta{file}\texttt{.idx}.}
+\glossary(printindex)%
+  {\cs{printindex}\oarg{file}}%
+  {Print the sorted index. By default this is read from file 
+   \cs{jobname}\texttt{.ind}. If the optional argument is given
+   it will read the data from file \meta{file}\texttt{.ind}.}
+In order to make \ltx\ collect indexing information the declaration 
+\cmd{\makeindex} must be put in the preamble\index{preamble}. By default
+the raw index data is put into the \file{jobname.idx}\ixfile{idx} file. If
+the optional \meta{file} argument is given then index data can be
+output to \file{file.idx}. Several \cmd{\makeindex} declarations
+can be used provided they each call for a different file.
+
+    The \cmd{\printindex} command will print\index{index!print} an index 
+where by default the indexed items are assumed to be in a file called 
+\pixfile{jobname.ind}\ixfile{ind}. If the optional \meta{file} argument 
+is given
+then the indexed items are read from the file called \file{file.ind}.
+
+%    The typical method of generating an \pixfile{ind} file containing
+%the sorted index entries from the raw index data in an
+%\pixfile{idx} file is to use the \Lmakeindex\ program~\cite{CHEN88}.
+
+
+\begin{syntax}
+\senv{theindex} entries \eenv{theindex} \\
+\cmd{\onecolindex} \cmd{\twocolindex} \\
+\cmd{\indexname} \\
+\end{syntax}
+\glossary(theindex)%
+  {\senv{theindex}}%
+  {Environment for typesetting an index}
+\glossary(onecolindex)%
+  {\cs{onecolindex}}%
+  {Typeset index in one column.}
+\glossary(twocolindex)%
+  {\cs{twocolindex}}%
+  {Typeset index in two columns (the default).}
+\glossary(indexname)%
+  {\cs{indexname}}%
+  {Name used for the the index title.}
+The index entries are typeset within the \Ie{theindex} 
+environment. By default it is typeset with two 
+columns\indextwo{double column}{index}
+but following the \cmd{\onecolindex} declaration the environment
+uses a single\indextwo{index}{single column} column. 
+The default two column behaviour is restored
+after the \cmd{\twocolindex} declaration.
+The index\indextwo{index}{name} title is given by the current value of 
+\cmd{\indexname} (default `Index').
+
+\begin{syntax}
+\cmd{\indexintoc} \cmd{\noindexintoc} \\
+\end{syntax}
+\glossary(indexintoc)%
+  {\cs{indexintoc}}%
+  {Add the index title to the \prtoc\ (the default).}
+\glossary(noindexintoc)%
+  {\cs{noindexintoc}}%
+  {Do not add the index title to the \prtoc.}
+The declaration \cmd{\indexintoc} will cause the \Ie{theindex}
+environment to add the title\index{index!title in ToC} to the \toc, 
+while the declaration
+\cmd{\noindexintoc} ensures that the title is not added to the \toc. 
+The default is \cmd{\indexintoc}.
+
+\begin{syntax}
+\lnc{\indexcolsep} \\
+\lnc{\indexrule} \\
+\end{syntax}
+\glossary(indexcolsep)%
+  {\ls{indexcolsep}}%
+  {Width of the gutter in two column indexes.}
+\glossary(indexrule)%
+  {\ls{indexrule}}%
+  {Width of the inter-column rule in two column indexes.}
+The length \lnc{\indexcolsep} is the width of the gutter between the two
+index columns\index{index!double column!gutter}
+The length \lnc{\indexrule}, default
+value 0pt, is the thickness of a vertical rule separating the two columns.
+
+
+\begin{syntax}
+\cmd{\preindexhook} \\
+\end{syntax}
+\glossary(preindexhook)%
+  {\cs{preindexhook}}%
+  {Called between typesetting an index's title and the start of the list.}
+    The macro \cmd{\preindexhook}\index{index!explanatory text} 
+is called after the title is typeset and
+before the index listing starts. By default it does nothing but
+can be changed. For example
+\begin{lcode}
+\renewcommand{\preindexhook}{Bold page numbers are used 
+  to indicate the main reference for an entry.}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\indexmark} \\
+\end{syntax}
+\glossary(indexmark)%
+  {\cs{indexmark}}%
+  {Can be used in pagestyles for page headers in an index.}
+\cs{indexmark} may be used in pagestyles for page headers in an index.
+Its default definition is: 
+\begin{lcode}
+\newcommand*{\indexmark}{}
+\end{lcode}
+but could be redefined like, say,
+\begin{lcode}
+\renewcommand*{\indexmark}{\markboth{\indexname}{\indexname}}
+\end{lcode}
+
+
+
+
+\begin{syntax}
+\cmd{\ignorenoidxfile} \\
+\cmd{\reportnoidxfile} \\
+\end{syntax}
+\glossary(ignorenoidxfile)%
+  {\cs{ignorenoidxfile}}%
+  {Do not report attempts to use an \file{idx} file that has not been
+   declared by \cs{makeindex}.}
+\glossary(reportnoidxfile)%
+  {\cs{reportnoidxfile}}%
+  {Report attempts to use an \file{idx} file that has not been
+   declared by \cs{makeindex}.}
+Following the declaration \cmd{\ignorenoidxfile}, which is the default,
+LaTeX will silently pass over attempts to use an \ixfile{idx} file which has
+not been declared via \cmd{\makeindex}. After the declaration
+\cmd{\reportnoidxfile} LaTeX will whinge about any attempts to 
+write to an unopened file.
+
+\index{index!printing|)}
+
+\subsection{Preparing an index}
+
+\index{index!preparation|(}
+
+    It it is easy for a computer to provide a list of all the words you
+have used, and where they were used. This is called a 
+concordance\index{concordance}. 
+Preparing an index, though, is not merely a gathering of words but 
+is an intellectual
+process that involves recognising and naming concepts, constructing a
+logical hierarchy of these and providing links between related concepts.
+No computer can do that for you though it can help with some tasks, such as
+sorting things into alphabetical order, eliminating duplicates, and so forth.
+
+    Several iterations may be required before you have an acceptable index.
+Generally you pick out the important words or phrases used on the first pass.
+Part of the skill of indexing is finding appropriate words to describe things
+that may not be obvious from the text. If there are several ways of describing
+something they may all be included using a `see' 
+reference\index{index!see reference} to the most
+obvious of the terms, alternatively you could 
+use `see also'\index{index!see also reference} references
+between the items. Entries should be broken down into subcategories so
+that any particular item will not have a long string of page numbers and
+your reader is more likely to quickly find the relevant place. After having 
+got the first index you will most probably have to go back and correct
+all the sins of ommission and commission, and start the cycle again.
+
+    I found that indexing this manual was the most difficult part of preparing
+it. It was easy to index the names of all the macros, environments, and so on
+as I had commands that would simultaneously print and index these. It was
+the concepts that was difficult. I inserted \cmd{\index} commands as I went
+along at what seemed to be appropriate places but turned out not to be.
+I would use slightly different words for the same thing, and what was worse
+the same word for different things. It took a long time to improve it to 
+its present rather pitiful state.
+
+\begin{syntax}
+\cmd{\index}\oarg{file}\marg{stuff} \\
+\end{syntax}
+\glossary(index)%
+  {\cs{index}\oarg{file}\marg{stuff}}%
+  {Add \meta{stuff} and the current page number to the raw index data. 
+   By default this is written to
+   file \cs{jobname}\texttt{.idx}. If the optional argument
+   is given it will be written to file \meta{file}\texttt{.idx}.}
+The \cmd{\index} macro specifies that \meta{stuff} is to appear in
+an index. By default the raw index data --- the \meta{stuff} and the 
+page number --- will be output
+to the \pixfile{jobname.idx}\ixfile{idx} file, but if the optional \meta{file}
+argument is given then output will be to the \file{file.idx} file.
+
+    This book has two\index{index!multiple} indexes. 
+The main index uses the default indexing
+commands, while the second index does not. They are set up like this:
+\begin{lcode}
+% in preamble
+\makeindex
+\makeindex[lines]
+% in body
+...\index{main} ...\index[lines]{First line} ...
+...
+% at the end
+\clearpage
+% main index
+\pagestyle{Index}
+\renewcommand{\preindexhook}{%
+The first page number is usually, but not always,
+the primary reference to the indexed topic.\vskip\onelineskip}
+\printindex
+
+% second index
+\clearpage
+\pagestyle{ruled}
+\renewcommand{\preindexhook}{}
+\renewcommand{\indexname}{Index of first lines}
+\onecolindex
+\printindex[lines]
+\end{lcode}
+
+
+\begin{syntax}
+\cmd{\specialindex}\marg{file}\marg{counter}\marg{stuff} \\
+\end{syntax}
+\glossary(specialindex)%
+  {\cs{specialindex}\marg{file}\marg{counter}\marg{stuff}}%
+  {Add \meta{stuff} and the current value of \meta{counter}
+   to the raw index data file \meta{file}\texttt{.idx}.}
+The \cmd{\index} command uses the page number\index{reference!to page} 
+as the reference for 
+the indexed item. In contrast the \cmd{\specialindex} command uses
+the \meta{counter} as the reference\index{reference!to counter} 
+for the indexed \meta{stuff}.
+It writes \meta{stuff} to the \file{file.idx} file, and also writes
+the page number (in parentheses) and the value of the \meta{counter}.
+This means that indexing can be with respect to something other than page 
+numbers. However, if the \Lpack{hyperref} package is used the special
+index links will be to pages even though they will appear to be with 
+respect to the \meta{counter}; for example, if figure numbers are used
+as the index reference the hyperref link will be to the page where the
+figure caption appears and not to the figure itself.
+
+
+\begin{syntax}
+\cmd{\showindexmarks} \cmd{\hideindexmarks} \\
+\cmd{\indexmarkstyle} \\
+\end{syntax}
+\glossary(showindexmarks)%
+  {\cs{showindexmarks}}%
+  {The \meta{stuff} argument to \cs{index} and \cs{specialindex} will
+   be printed in the margin (for use in noting what has been indexed where).}
+\glossary(hideindexmarks)%
+  {\cs{hideindexmarks}}%
+  {The \meta{stuff} argument to \cs{index} and \cs{specialindex} will
+   not be printed in the margin (the default).}
+\glossary(indexmarkstyle)%
+  {\cs{indexmarkstyle}}%
+  {Font style for printing index marks in the margin.}
+The declaration \cmd{\showindexmarks} causes the argument to practically 
+any \cmd{\index} and \cmd{\specialindex} to be 
+printed\index{index!show indexed items} in the margin of the
+page where the indexing command was issued. The argument is printed using
+the \cmd{\indexmarkstyle} which is initially specified as
+\begin{lcode}
+\indexmarkstyle{\normalfont\footnotesize\ttfamily}
+\end{lcode}
+For reasons I don't fully understand, spaces in the argument are displayed
+as though it was typeset using the starred version of \cmd{\verb}.
+The \cmd{\hideindexmarks}, which is the default, turns off 
+\cmd{\showindexmarks}.
+
+    The standard classes just provide the plain \cmd{\index} command with
+no optional \meta{file} argument. In those classes the contents of the
+\file{jobname.idx} file is limited to the index entries actually seen in 
+the document. In particular, if you are using \cmd{\include} for
+some parts of the document and \cmd{\includeonly} to exclude one or more
+files, then any \cmd{\index} entries in an excluded file will not appear
+in the \file{jobname.idx} file. The new implementation of indexing eliminates 
+that potential problem.
+
+\begin{syntax}
+\cmd{\item} \cmd{\subitem} \cmd{\subsubitem} \\
+\end{syntax}
+\glossary(item)%
+  {\cs{item}}%
+  {Introduces a main index entry.}
+\glossary(subitem)%
+  {\cs{subitem}}%
+  {Introduces a subsidiary index entry.}
+\glossary(subsubitem)%
+  {\cs{subsubitem}}%
+  {Introduces a third level index entry.}
+The \Ie{theindex} environment\index{index!entry levels} supports 
+three levels of entries.
+A \cmd{\item} command
+flags a main\index{index!main entry} entry; a subentry\index{index!subentry} 
+of a main entry is indicated by
+\cmd{\subitem} and a subentry\index{index!subentry!subsubentry} 
+of a subentry is flagged by 
+\cmd{\subsubitem}. For example a portion of an index might look like:
+\egstart[-2em]
+\begin{lcode}
+\item bridge, 2,3,7
+\subitem railway, 24
+\subsubitem Tay, 37
+\end{lcode}
+\egmid
+bridge, 2, 3, 7\\
+\hspace*{2em} railway, 24 \\
+\hspace*{4em} Tay, 37
+\egend
+\noindent if the Tay Bridge\footnote{A railway (railroad) bridge in Scotland
+that collapsed in 1879 killing 90 people. The disaster lives for ever in
+the poem \textit{The Tay Bridge Disaster} by William McGonagall (1830--?), 
+the first verse of which goes:
+\begin{verse}
+Beautiful Railway Bridge of the Silv'ry Tay!\index[lines]{Beautiful 
+  Railway Bridge of the Silv'ry Tay} \\
+Alas! I am very sorry to say \\
+That ninety lives have been taken away \\
+On the last Sabbath day of 1879, \\
+Which will be remember'd for a very long time.
+\end{verse}}
+was mentioned on page 37.
+
+
+\subsection{MakeIndex}
+
+    It is possible, but time consuming and error prone, to create your
+index by hand from the output of the \cmd{\index} commands you have scattered
+throughout the text. Most use the \Lmakeindex\ program to do this
+for them; there is also the \Lprog{xindy} program~\cite{XINDY} 
+but this is much less known. 
+
+
+\begin{syntax}
+\cmd{\xindyindex} \\
+\end{syntax}
+It turns out that \Lprog{xindy} cannot handle a \Mname\ 
+hyperindex\index{hyperindex} (which
+can be obtained with the aid of the \Lpack{hyperref} package), although
+\Lmakeindex\ can do so.\footnote{This deficiency in \Pprog{xindy}
+was discovered by Frederic Connes\index{Connes, Frederic}, who also provided
+the \cs{xindyindex} command.}
+If you are going to use \Lprog{xindy} to process
+the raw index data put \cmd{\xindyindex} in the preamble, which will prevent
+hyperindexing\index{hyperindex}.
+
+%%\index{MakeIndex?\Pmakeindex!raw data|(}
+\Iprogsub{MakeIndex}{raw data|(}%
+
+   \Lmakeindex\ reads an \pixfile{idx} file containg the raw index
+data (which may include some commands to \Lmakeindex\ itself), sorts
+the data, and then outputs an \pixfile{ind} file containing the sorted data,
+perhaps with some \ltx\ commands to control the printing.
+\Lmakeindex\ was created as a general purpose index processing program
+and its operation can be controlled by a 
+`makeindex configuration file'%
+%%\index{MakeIndex?\Pmakeindex!configuration file}%
+\Iprogsub{MakeIndex}{configuration file}%
+\index{configuration file!MakeIndex?\Pmakeindex} 
+(by default this is an \pixfile{ist} file). Such a file consists of two 
+parts. The first
+part specifies \Pmakeindex\ commands that can be included in the
+\meta{stuff} argument to \cmd{\index}. The second part controls how the
+the sorted index data is to be output.
+
+    I will only describe the most common elements of what you can put in 
+an \pixfile{ist} file; consult the \Pmakeindex\
+manual~\cite{CHEN88}, or the \btitle{Companion}~\cite{COMPANION}, for all 
+the details.
+
+You can embed commands, in the form of single characters,
+in the argument to \cmd{\index} that guide 
+\Lmakeindex\ in converting the raw \pixfile{idx} file into an 
+\pixfile{ind} file for final typesetting. The complete set of these
+is given in \tref{tab:configin}. They all have defaults and you can modify
+these via a \Lmakeindex\ configuration file.
+
+\newcommand*{\kwd}[1]{\texttt{#1}}
+\newcommand*{\kty}[1]{\textit{(#1)}}
+
+\begin{table}
+\centering
+\caption{\Pmakeindex\ configuration file input parameters} \label{tab:configin}
+\begin{tabular}{llp{0.5\textwidth}}\toprule
+\multicolumn{1}{c}{Keyword} & \multicolumn{1}{c}{Default} & \multicolumn{1}{c}{Description} \\ \midrule
+\kwd{keyword} \kty{s} & \verb?"\\indexentry"? & 
+  The argument to this command is a \Pmakeindex{} index entry \\
+\kwd{arg\_open} \kty{c} & \verb?'{'? &
+  Argument start delimeter \\
+\kwd{arg\_close} \kty{c} & \verb?'}'? &
+  Argument end delimeter \\
+\kwd{range\_open} \kty{c} & \verb?'('? &
+  Start of an explicit page range \\
+\kwd{range\_close} \kty{c} & \verb?')'? &
+  End of an explicit page range \\
+\kwd{level} \kty{c} & \verb?'!'? &
+  Character denoting a new subitem level \\
+\kwd{actual} \kty{c} & \verb?'@'? &
+  Character denoting that the following text is to appear in the
+  actual index file \\
+\kwd{encap} \kty{c} & \verb?'|'? &
+  Character denoting that the rest of the argument is to be used as
+  an encapsulating command for the page number \\
+\kwd{quote} \kty{c} & \verb?'"'? &
+  Character that escapes the following character \\
+\kwd{escape} \kty{c} & \verb?'\\'? &
+  Symbol with no special meaning unless followed by the \kwd{quote}
+  character, when both characters will be printed. The \kwd{quote}
+  and \kwd{escape} characters must be different. \\
+\kwd{page\_compositor} \kty{s} & \verb?"-"? &
+  Composite number separator \\
+\bottomrule
+\multicolumn{3}{c}{\kty{s} of type string, \kty{c} of type character} 
+\end{tabular}
+\end{table}
+
+    In the simplest case you just use the name of the index item as the 
+argument to the \cmd{\index} command. However, spaces are significant as far
+as \Lmakeindex\ is concerned. The following three uses of \cmd{\index}
+will result in three different entries in the final index \\
+\verb*?\index{ entry}? \verb*?\index{entry}? \verb*?\index{entry }?
+
+\begin{figure}
+\centering
+\begin{small}
+\begin{tabular}{ll|l}
+p. v: & \verb?\index{Alf}? & \verb?\indexentry{Alf}{v}? \\
+p. 1:  & \verb?\index{Alf}? & \verb?\indexentry{Alf}{1}? \\
+p. 2:  & \verb?\index{Alf}? & \verb?\indexentry{Alf}{2}? \\
+p. 3:  & \verb?\index{Alf}? & \verb?\indexentry{Alf}{3}? \\
+p. 5: & \verb?\index{Alfabet|see{Bet}}? & \verb?\indexentry{Alfabet|see{Bet}}{5}? \\
+p. 7: & \verb?\index{Alf@\textit{Alf}}? & \verb?\indexentry{Alf@\textit{Alf}}{7}? \\
+         & \verb?\index{Bet|textbf}? & \verb?\indexentry{Bet|textbf}{7}? \\
+p. 8:  & \verb?\index{Alf!Bet!Con}? & \verb?\indexentry{Alf!Bet!Con}{8}? \\
+p. 9: & \verb?\index{Alf!Dan}? & \verb?\indexentry{Alf!Dan}{9}? \\
+\end{tabular}\par
+\end{small}
+\caption{Raw indexing: (left) index commands in the source text; (right)
+         \file{idx} file entries}
+\end{figure}
+
+\begin{figure}
+\centering
+\egstart
+\begin{lcode}
+\begin{theindex}
+\item Alf, v, 1-3
+  \subitem Bet
+    \subsubitem Con, 8
+  \subitem Dan, 9
+\item \textit{Alf}, 7
+\item Alfabet, \see{Bet}{5}
+\indexspace
+\item Bet, \textbf{7}
+\end{theindex}
+\end{lcode}
+\egmid
+Alf, v, 1-3 \\
+\hspace*{2em} Bet \\
+\hspace*{4em} Con, 8 \\
+\hspace*{2em} Dan, 9 \\
+\textit{Alf}, 7 \\
+Alfabet, \textit{see} Bet \\[0.5\onelineskip]
+Bet, \textbf{7}
+\egend
+\caption{Processed index: (left) alphabeticized \file{ind} file;
+         (right) typeset index}
+\end{figure}
+
+\subsubsection{The \texttt{!} character}
+
+    The \texttt{level} specifier starts a new minor level, or subitem,
+with a maximum of two sub-levels. The default \texttt{level} specifier
+is the special character \texttt{!}\index{"! (ls)?\texttt{"!} (level specifier)}. For example:
+\begin{lcode}
+\index{item!sub item!sub sub item}
+\end{lcode}
+
+\subsubsection{The \texttt{@} character}
+
+    An indexable item may be represented in two portions, separated
+by the \texttt{actual} specifier, which by default is the
+\texttt{@} character\index{@ (as)?\texttt{@} (actual specifier)}. 
+The portion before the \texttt{@} is used
+when \Lmakeindex\ sorts the raw index data, and the portion after
+the \texttt{@} is used as the entry text. For example:
+\begin{lcode}
+\index{MakeIndex@\textit{MakeIndex}}
+\end{lcode}
+will result in the final index entry of \verb?\textit{MakeIndex}? in the 
+alphabetic position accorded to \verb?MakeIndex?. 
+The same treatment can be applied for subitems:
+\begin{lcode}
+\index{program!MakeIndex@\textit{MakeIndex}!commands}
+\end{lcode}
+
+\subsubsection{The \texttt{|} character}
+
+    Anything after the \texttt{encap} specifier, which by default
+is the \texttt{|} character\index{"| (es)?\texttt{"|} (encap specifier)}, 
+is treated as applying to the page number. In general
+\begin{lcode}
+\index{...|str}
+\end{lcode}
+will produce a page number, say n, in the form
+\begin{lcode}
+\str{n}
+\end{lcode}
+For example, if you wanted the page number of one particular entry
+to be in a bold font, say to indicate that this is where the entry
+is defined, you would do
+\begin{lcode}
+\index{entry|textbf}
+\end{lcode}
+
+    As a special case, if you want an index item to to have a page range 
+put the two
+characters \verb?|(? at the end of the the argument on the first page, and 
+the character pair \verb?|)? at the end of the argument on the last page.
+For example:
+\begin{lcode}
+... \index{range|(} pages about range  \index{range|)} ...
+\end{lcode}
+The two arguments must match exactly except for the final \verb?(? 
+and \verb?)?. You can also do
+\begin{lcode}
+\index{...|(str}
+\end{lcode}
+which will produce a page range of the form
+\begin{lcode}
+\str{n-m}
+\end{lcode}
+In this case, if the range is only a single page, the result is simply
+\begin{lcode}
+\str{n}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\see}\marg{text}\marg{page} \cmd{seename} \\
+\cmd{\seealso}\marg{text}\marg{page} \cmd{alsoname} \\
+\end{syntax}
+\glossary(see)%
+  {\cs{see}}%
+  {\textit{see} entry in an index using \cs{seename} for the wording.} 
+\glossary(seename)%
+  {\cs{seename}}%
+  {Wording for a \textit{see} index entry.}
+\glossary(seealso)%
+  {\cs{seealso}}%
+  {\textit{see also} entry in an index using \cs{alsoname} for the wording.} 
+\glossary(alsoname)%
+  {\cs{alsoname}}%
+  {Wording for a \textit{see also} index entry.}
+The macros \cmd{\see}\index{index!see reference} and 
+\cmd{\seealso}\index{index!see also reference} are specifically for use in
+an \cmd{\index} command after the \texttt{|}. The \cmd{\see} command
+replaces the page number by the phrase `\textit{see} \meta{text}', 
+while the \cmd{\seealso} command adds `\textit{see also} \meta{text}' 
+to the entry. 
+For example, in the source for this manual I have
+\begin{lcode}
+\index{chapter!style|see{chapterstyle}}
+\index{figure|seealso{float}}
+\end{lcode}
+A \cmd{\see} or \cmd{\seealso}
+should be used once only for a particular entry. The `see' texts for 
+\cmd{\see} and \cmd{\seealso} are stored in \cmd{\seename}
+and \cmd{\alsoname}, whose default definitions are:
+\begin{lcode}
+\newcommand*{\seename}{see}
+\newcommand*{alsoname}{see also}
+\end{lcode}
+
+\subsubsection{The \texttt{"} and \texttt{\bs} characters}
+
+    If, for some reason, you want to index something that includes one
+of the \texttt{!}, \texttt{@}, \texttt{|} or \texttt{"} characters there
+is the difficulty of persuading \Lmakeindex\ to ignore the special
+meaning. This is solved by the \texttt{quote} specifier, which is
+normally the \texttt{"} character\index{\" (qs)?\texttt{"} (quote specifier)}. 
+The character
+immediately after \texttt{"} is treated as non-special. For example,
+if you needed to index the \texttt{@} and \texttt{!} characters:
+\begin{lcode}
+\index{"@ (commercial at)}
+\index{"! (exclamation)}
+\end{lcode}
+The leading \texttt{"} is stripped off before entries are alphabetized.
+
+    The \texttt{escape} specifier is used to strip the special meaning
+from the \texttt{quote} specifier. This is usually the \texttt{\bs}
+character\index{"\ (es)?\texttt{\bs} (escape specifier)}. 
+So, to index the double quote character itself:
+\begin{lcode}
+\index{\" (double quote)}
+\end{lcode}
+
+\subsubsection{Example of using the special characters}
+
+    Here is a short example of indexing the special characters. Given an
+input like this in the document
+\begin{lcode}
+\index{exclamation mark ("!)}
+\index{vicious|see{circle}}
+\index{atsign@\texttt{"@} sign|\textbf}
+\index{quote!double ("")}
+\index{circle|see{vicious}}
+\end{lcode}
+then an index could eventually be produced that looks like:
+\begin{quote}
+\texttt{@} sign, \textbf{30}\\
+circle, \textit{see} vicious\\
+exclamation mark (!), 21 \\
+quote \\
+\hspace*{1.5em} double ("), 47 \\
+vicious, \textit{circle}
+\end{quote}
+
+
+%%\index{MakeIndex?\Pmakeindex!raw data|)}
+\Iprogsub{MakeIndex}{raw data|)}%
+
+\subsection{Controlling MakeIndex output}
+
+%%\index{MakeIndex?\Pmakeindex!output styling|(}
+\Iprogsub{MakeIndex}{output styling|(}%
+
+Table~\ref{tab:configout} lists the parameters that control \Pmakeindex's
+output, except for the keywords that control the setting of page numbers. 
+The special characters and strings are not fixed within the
+\Lmakeindex\ program. The program will read an \pixfile{ist} file
+in which you can redefine all of \Lmakeindex's defaults.
+
+\begin{table}
+\begin{adjustwidth}{-1.5cm}{-1.5cm}
+\centering
+\caption{\Pmakeindex\ configuration file output parameters} \label{tab:configout}
+\begin{tabular}{llp{0.5\textwidth}}\toprule
+\multicolumn{1}{c}{Keyword} & \multicolumn{1}{c}{Default} & \multicolumn{1}{c}{Description} \\ \midrule
+\kwd{preamble} \kty{s} & \verb?"\\begin{theindex}\n"? &
+  Text for the start of the output file \\
+\kwd{postamble} \kty{s} & \verb?"\n\n\\end{theindex}\n"? &
+  Text at the end of the output file \\          \midrule
+%\kwd{setpage\_prefix} \kty{s} & \verb?"\n\\setcounter{page}{"? &
+%  Prefix for the command setting the page number \\ 
+%\kwd{setpage\_suffix} \kty{s} & \verb?"}\n"? &
+%  Suffix for the command setting the page number \\  \midrule
+\kwd{group\_skip} \kty{s} & \verb?"\n\n\\indexspace\n"? &
+  Vertical space before a new letter group \\
+\kwd{heading\_prefix} \kty{s} & \verb?""? &
+  Prefix for heading for a new letter group \\
+\kwd{heading\_suffix} \kty{s} & \verb?""? &
+  Suffix for heading for a new letter group \\
+\kwd{headings\_flag} \kty{n} & \verb?0? &
+  A value $= 0$ inserts nothing between letter groups. 
+  A value $>0$ includes an uppercase instance of the new symbol,
+  while a value $<0$ includes a lowercase instance, all
+  within \kwd{heading\_prefix} and \kwd{heading\_suffix} \\ \midrule
+\kwd{item\_0} \kty{s} & \verb?"\n\item "? &
+  Command inserted in front of a level 0 entry \\
+\kwd{item\_1} \kty{s} & \verb?"\n \subitem "? &
+  As above for a level 1 entry \\
+\kwd{item\_2} \kty{s} & \verb?"\n  \subsubitem "? &
+  As above for a level 2 entry \\
+\kwd{item\_01} \kty{s} & \verb?"\n \subitem "? &
+  Command inserted in front of a level 1 entry starting at level 0 \\
+\kwd{item\_12} \kty{s} & \verb?"\n  \subsubitem "? &
+  Command inserted in front of a level 2 entry starting at level 1 \\
+\kwd{item\_x1} \kty{s} & \verb?"\n \subitem "? &
+  Command inserted in front of a level 1 entry when the parent level
+  has no page numbers \\
+\kwd{item\_x2} \kty{s} & \verb?"\n \subitem "? &
+  As above for a level 2 entry \\                  \midrule
+\kwd{delim\_0} \kty{s} & \verb?", "? &
+  Delimiter between level 0 entry and first page number \\
+\kwd{delim\_1} \kty{s} & \verb?", "? &
+  As above for level 1 entry \\
+\kwd{delim\_2} \kty{s} & \verb?", "? &
+  As above for level 2 entry \\
+\kwd{delim\_n} \kty{s} & \verb?", "? &
+  Delimiter between page numbers \\
+\kwd{delim\_r} \kty{s} & \verb?"-"? &
+  Designator for a page range \\                  \midrule
+\kwd{encap\_prefix} \kty{s} & \verb?"\\"? &
+  Prefix in front of a page encapsulator \\
+\kwd{encap\_infix} \kty{s} & \verb?"{"? &
+  Infix for a page encapsulator \\
+\kwd{encap\_suffix} \kty{s} & \verb?"}"? &
+  Suffix for a page encapsulator \\                \midrule
+\kwd{page\_precedence} \kty{s} & \verb?"rnaRA"? &
+  Page number precedence for sorting. 
+  \texttt{r} and \texttt{R} are lower- and uppercase roman;
+  \texttt{a} and \texttt{A} are lower- and uppercase alphabetic;
+  \texttt{n} is numeric \\                         \midrule
+\kwd{line\_max} \kty{n} & \verb?"72"? &
+  Maximum length of an output line  \\
+\kwd{indent\_space} \kty{s} & \verb?"\t\t"? &
+  Indentation commands for wrapped lines  \\
+\kwd{indent\_length} \kty{n} & \verb?"16"? &
+  Indentation length for wrapped lines  \\
+\bottomrule
+\multicolumn{3}{c}{\kty{s} of type string, \kty{n} of type number,
+   \texttt{"\bs n"} and \texttt{"\bs t"} are newline and tab.} 
+\end{tabular}
+\end{adjustwidth}
+\end{table}
+
+    I have used a file called \file{memman.ist} for configuring
+\Lmakeindex\ for this manual. Here it is:
+\begin{lcode}
+% MakeIndex style file  memman.ist
+
+% @ is a valid character in some entries, use ? instead
+actual '?'
+
+% output main entry <entry> as: \item \idxmark{<entry>}, 
+item_0  "\n\\item \\idxmark{"
+delim_0 "}, "
+% not forgetting the subitem case
+item_x1 "} \n \\subitem "
+
+% Wrap and uppercase head letters
+headings_flag 1
+heading_prefix "\\doidxbookmark{"
+heading_suffix "}"
+\end{lcode}
+
+    Many items that I need to index include \texttt{@} as part of their
+names, which is one of the special characters.
+The \texttt{actual} line says that the character \texttt{?} performs 
+the same function as the default \texttt{@} (and by implication, \texttt{@}
+is not a special character as far as \Lmakeindex\ is concerned).
+
+    The \verb?item_0? line says that a main entry in the generated index
+starts 
+\begin{lcode}
+\item \idxmark{
+\end{lcode}
+and the \verb?delim_0? and \verb?item_x1? lines say that the main entry ends
+\begin{lcode}
+}, % or
+}
+    \subitem
+\end{lcode}
+Thus, main entries will appear in an \pixfile{ind} file like
+\begin{lcode}
+\item \idxmark{a main entry}, <list of page numbers> 
+\item \idxmark{a main entry with no page numbers}
+    \subitem subitem, <list of page numbers>
+\end{lcode}
+
+%%\index{MakeIndex?\Pmakeindex!output styling|)}
+\Iprogsub{MakeIndex}{output styling|)}%
+
+
+ Read the \Lmakeindex\ manual~\cite{CHEN88} for full details
+on how to get \Lmakeindex\ to do what you want.
+
+
+\subsection{Indexing and the \Lpack{natbib} package}
+
+    The \Lpack{natbib} package~\cite{NATBIB} will make an index 
+of citations if
+\cmd{\citeindextrue} is put in the preamble after the \Lpack{natbib}
+package is called for.
+
+\begin{syntax}
+\cmd{\citeindexfile} \\
+\end{syntax}
+\glossary(citeindexfile)%
+  {\cs{citeindexfile}}%
+  {File name for the citation index.}
+The name of the file for the citation index is stored in the
+macro \cmd{\citeindexfile}. This is initially defined as:
+\begin{lcode}
+\newcommand{\citeindexfile}{\jobname}
+\end{lcode}
+That is, the citation entries will be written to the default 
+\ixfile{idx} file.
+This may be not what you want so you can change this, for example to:
+\begin{lcode}
+\renewcommand{\citeindexfile}{names}
+\end{lcode}
+If you do change \cmd{\citeindexfile} then you have to put
+\begin{lcode}
+\makeindex[\citeindexfile]
+\end{lcode}
+\emph{before}
+\begin{lcode}
+\usepackage[...]{natbib}
+\end{lcode}
+
+    So, there are effectively two choices, either along the lines of
+\begin{lcode}
+\renewcommand{\citeindexfile}{authors} % write to authors.idx
+\makeindex[\citeindexfile]
+\usepackage{natbib}
+\citeindextrue
+...
+\renewcommand{\indexname}{Index of citations}
+\printindex[\citeindexfile]
+\end{lcode}
+or along the lines of
+\begin{lcode}
+\usepackage{natbib}
+\citeindextrue
+\makeindex
+...
+\printindex
+\end{lcode}
+
+\section{Glossaries}
+
+    Unlike indexes, \ltx\ provides less than minimal support for 
+glossaries. It provides a \cmd{\makeglossary} command for initiating a glossary
+and a \cmd{\glossary} command which puts its argument, plus the page number,
+into a \file{glo} file, and that's it. \Mname, combined with the
+\Lmakeindex\ program~\cite{CHEN88}, enables you to generate 
+and print a glossary in 
+your document. The commands for creating a glossary are similar to those
+for indexes.
+
+\begin{syntax}
+\cmd{\makeglossary}\oarg{file} \\
+\end{syntax}
+\glossary(makeglossary)%
+  {\cs{makeglossary}\oarg{file}}%
+  {Opens file \cs{jobname.glo}, or \cs{file.glo}, for glossary entries}%
+
+You have to put \cmd{\makeglossary} in your preamble if you want a glossary.
+This opens a file called by default \verb?\jobname.glo?. If you use the 
+optional \meta{file} argument the file \verb?file.glo? will be opened.
+A glossary \file{glo} file is analagous to an index \file{idx} file.
+
+\begin{syntax}
+\cmd{\printglossary}\oarg{file} \\
+\end{syntax}
+\glossary(printglossary)%
+  {\cs{printglossary}\oarg{file}}%
+  {Prints the glossary from file \cs{jobname.gls}, or \cs{file.gls}}%
+To print a glossary call \cmd{\printglossary} which will print the glossary
+from file \verb?\jobname.gls?, or from \verb?file.gls? if the optional 
+argument is used. A glossary \file{gls} file is analagous to an
+index \file{ind} file.
+
+\begin{syntax}
+\cmd{\glossary}\oarg{file}\parg{key}\marg{term}\marg{desc} \\
+\end{syntax}
+\glossary(glossary)%
+  {\cs{glossary}\oarg{file}\parg{key}\marg{term}\marg{description}}%
+  {Adds \meta{term} and its description, \meta{desc}, to a glossary file ---
+   \cs{jobname.glo} by default or to \cs{file.glo}. The optional argument
+   \meta{key} can be used to provide a different sort key for \meta{term}.}
+
+Use the \cmd{\glossary} command to add a \meta{term} and its description,
+\meta{desc},
+to a glossary file. By default this will be \verb?\jobname.glo? but if the
+optional \meta{file} argument is given then the information will be written
+to \verb?file.glo?. The \parg{key} argument is optional. If present then
+\meta{key} will be added to the file to act as a sort key for the \meta{term},
+otherwise \meta{term} will be used as the sort key.
+
+    By using the optional \meta{file} arguments you can have several 
+glossaries, subject to \tx's limitations on the number of files that can
+be open at any one time.
+
+   A simple glossary entry might be:
+\begin{lcode}
+\glossary{glossary}{A list of terms and their descriptions.}
+\end{lcode}
+
+    The glossary facilites are designed so that the \Lmakeindex\ program
+can be used to convert the raw glossary data in a \file{glo} file into
+the printable glossary in a \file{gls} file.
+
+\begin{syntax}
+\senv{theglossary} entry list \eenv{theglossary} \\
+\end{syntax}
+\glossary(theglossary)%
+  {\senv{theglossary}}%
+  {Environment for typesetting a glossary.}%
+
+Glossary entries are typeset in a \Ie{theglossary} environment. It is assumed
+that a \file{gls} file will contain a complete \Ie{theglossary} environment,
+from \senv{theglossary} all the way through to \eenv{theglossary}.
+
+\begin{syntax}
+\cmd{\glossitem}\marg{term}\marg{desc}\marg{ref}\marg{num} \\
+\end{syntax}
+\glossary(glossitem)%
+  {\cs{glossitem}\marg{term}\marg{desc}\marg{ref}\marg{num}}%
+  {Glossary entry used in a \Pe{theglossary} environment}%
+
+A \cmd{\glossitem} is a glossary entry within a \Ie{theglossary} environment
+for a \meta{term} with \meta{description}. The \meta{num} argument is the
+page or section where the corresponding \cmd{\glossary} was issued. The
+\meta{ref} argument, if not empty, might be the section or page number 
+corresponding to the \meta{num} page or section number. The default definition
+is
+\begin{lcode}
+\newcommand{\glossitem}[4]{#1 #2 #3 #4}
+\end{lcode}
+which is not very exciting. You may well prefer to use your own definition.
+
+\subsection{Controlling the glossary}
+
+\subsubsection{Setting up makeindex}
+
+    If you just run \Lmakeindex\ on a \file{glo} file you will get lots
+of errors; \Lmakeindex\ has to be configured to read a \file{glo}
+file and generate a useful \file{gls} file as by default it expects to read
+an index \file{idx} file and produce an index \file{ind} file. A configuration
+file like an index \file{ist} file will be needed. There is no recommended
+extension for such a file but I have come to favour \file{gst}. The
+command line for \Lmakeindex\ to create a sorted glossary from the raw
+data in a \file{glo} file, say \texttt{fred.glo}, using a configuration 
+file called, say \texttt{basic.gst}, is
+\begin{lcode}
+makeindex -s basic.gst -o fred.gls fred.glo
+\end{lcode}
+For other jobs just change the file names appropriately.
+
+    So, what is in a \file{gst} file? The potential contents were described
+earlier, but at a minimum you need this:
+\begin{lcode}
+%%% basic.gst basic makindex glossary style file 
+%%% Output style parameters
+preamble "\\begin{theglossary}"
+postamble "\n\\end{theglossary}\n"
+item_0    "\n\\glossitem"
+delim_0   "{\\memglonum{"
+encap_suffix "}}}"
+%%% Input style parameters
+keyword "\\glossaryentry"
+\end{lcode}
+
+The \verb?keyword? line says that each entry in an input (\file{glo}) file
+will be of the form:
+\begin{lcode}
+\glossaryentry{entry text}{number}
+\end{lcode}
+and by a miracle of coding, this is what \Pclass{memoir} will put in a 
+\file{glo} file for each \cmd{\glossary} command.
+
+    The \verb?preamble? and \verb?postamble? lines tell the program to start
+and end its output file with \senv{theglossary} and \eenv{theglossary},
+respectively.
+The \verb?item_0? tells the program to start each output entry with
+\cmd{\glossitem}. The \verb?delim_0? says that \verb?{\memglonum{?
+sould be put between the end of the entry text and the (page) number. Finally
+\verb?encap_suffix? requests \verb?}}}? to be put after any `encapsulated'
+(page) number.
+
+    A complete listing of the possible entries in a configuration file,
+also called a style file, for \Lmakeindex{} is in 
+\tablerefname~\ref{tab:configin} and~\ref{tab:configout} with the exception
+of the output file page number setting keywords.
+
+\subsubsection{Raw input data}
+
+\begin{syntax}
+\cmd{\@@wrglom@m}\marg{file}\marg{key}\marg{term}\marg{desc}\marg{ref}\marg{num}\\
+\end{syntax}
+The \cmd{\glossary} macro writes its arguments to the \file{aux} file
+in the form of arguments to the \cmd{\@@wrglom@m} internal macro. In turn 
+this calls a series of other macros that eventually write the data
+to the \meta{file} \file{glo} file 
+in the format (where \verb+@+ is the actual flag):
+\begin{lcode}
+\glossaryentry{key@{\memgloterm{term}} {\memglodesc{desc}}{\memgloref{ref}}
+               |memglonumf}{num}
+\end{lcode}
+which \Lmakeindex\ then effectively converts into
+\begin{lcode}
+\glossitem{\memgloterm{term}}{\memglodesc{desc}}{\memgloref{ref}}
+           {\memglonum{\memglonumf{num}}}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\memgloterm}\marg{term} \\
+\cmd{\memglodesc}\marg{desc} \\
+\cmd{\memgloref}\marg{ref} \\
+\cmd{\memglonum}\marg{num} \\
+\end{syntax}
+\glossary(memgloterm)%
+  {\cs{memgloterm}\marg{term}}%
+  {Wrapper round a glossary term.}%
+\glossary(memglodesc)%
+  {\cs{memglodesc}\marg{desc}}%
+  {Wrapper round a glossary description.}%
+\glossary(memgloref)%
+  {\cs{memgloref}\marg{ref}}%
+  {Wrapper round a glossary ref.}%
+\glossary(memglonum)%
+  {\cs{memglonum}\marg{num}}%
+  {Wrapper round glossary numbers.}%
+These macros can be redefined to format the various parts of a glossary entry.
+Their default definitions are simply
+\begin{lcode}
+\newcommand{\memgloterm}[1]{#1}
+\newcommand{\memglodesc}[1]{#1}
+\newcommand{\memgloref}[1]{#1}
+\newcommand{\memglonum}[1]{#1}
+\end{lcode}
+For example, if you wanted the term in bold, the description in italics,
+ and no numbers:
+\begin{lcode}
+\renewcommand{\memgloterm}[1]{\textbf{#1}}
+\renewcommand{\memglodesc}[1]{\textit{#1}}
+\renewcommand{\memglonum}[1]{}
+\end{lcode}
+
+   There are several macros that effect a glossary entry 
+but which must not be directly modified (the \cs{memglonumf} shown above
+as part of the \cmd{\glossaryentry} is one of these).
+Each of the following \cs{changegloss...} macros takes an optional \meta{file}
+argument. The changes to the underlying macro apply only to the 
+glossary of that particular \meta{file} (or the \cs{jobname} file
+if the argument is not present.
+\begin{syntax}
+\cmd{\changeglossactual}\oarg{file}\marg{char} \\
+\cmd{\changeglossref}\oarg{file}\marg{thecounter} \\
+\cmd{\changeglossnum}\oarg{file}\marg{thecounter} \\
+\cmd{\changeglossnumformat}\oarg{file}\marg{format} \\
+\end{syntax}
+\glossary(changeglossactual)%
+  {\cs{changeglossactual}\oarg{file}\marg{char}}%
+  {Specifies \meta{char} as the \texttt{actual} character for 
+   glossary \meta{file}.}%
+\glossary(changeglossref)%
+  {\cs{changeglossref}\oarg{file}\marg{thecounter}}%
+  {Specifies \meta{thecounter} as the \meta{ref} for 
+   glossary \meta{file}.}%
+\glossary(changeglossnum)%
+  {\cs{changeglossnum}\oarg{file}\marg{thecounter}}%
+  {Specifies \meta{thecounter} as the \meta{num} for 
+   glossary \meta{file}.}%
+\glossary(changeglossnumformat)%
+  {\cs{changeglossnumformat}\oarg{file}\marg{format}}%
+  {Specifies \meta{format} as the format for \meta{num} for 
+   glossary \meta{file}.}%
+
+\cmd{\changeglossactual} sets \meta{char} as the \texttt{actual} character
+for the \meta{file} glossary. It is initially \verb+@+. This must match 
+with the \texttt{actual} specified for the \file{gst} file that will 
+be applied.
+
+\cmd{\changeglossref} specifies that \meta{thecounter} should be used
+to generate the \meta{ref} for the \meta{file} glossary. It is
+initially nothing.
+
+\cmd{\changeglossnum} specifies that \meta{thecounter} should be used
+to generate the \meta{num} for the \meta{file} glossary. It is
+initially \cs{thepage}.
+
+\cmd{\changeglossnumformat} specifies that \meta{format} should be used
+to format the \meta{num} for the \meta{file} glossary. The format
+of \meta{format} is \verb?|form?, where \verb?|? is the \texttt{encap}
+character specified in the \file{gst} file, and \verb?form? is a
+formatting command, taking one argument (the number), without any backslash. 
+For example
+\begin{lcode}
+\changeglossnumformat{|textbf}
+\end{lcode}
+ to get bold numbers. It is
+initially set as \verb?|memjustarg?, where this is defined as:
+\begin{lcode}
+\newcommand{\memjustarg}[1]{#1}
+\end{lcode}
+There must be a format defined for the \meta{num} otherwise the arguments
+to \cmd{\glossitem} will not be set correctly.
+
+
+    The \cmd{\makeglossary} command uses the \cs{change...}
+commands to define the initial versions, so only use the \cs{change...}
+macros \emph{after} \cmd{\makeglossary}.
+In this document an early version of the glossary was set up by
+\begin{lcode}
+\makeglossary
+\changeglossactual{?}
+\makeatletter 
+\changeglossnum{\@currentlabel} 
+\makeatother
+\changeglossnum{\thepage}
+\end{lcode}
+The first call of \cmd{\changeglossnum} makes the number the current 
+numbered chapter, or numbered section, or numbered \ldots. I didn't 
+like that when I tried it, so the second call resets the number to 
+the page number.
+
+\subsubsection{The listing}
+
+    The final glossary data in the \file{gls} file is typeset in the
+\Ie{theglossary} environment, which is much like the \Ie{theindex}
+and \Ie{thebibliography} environments.
+
+    The environment starts off with a chapter-style unnumbered title.
+There are several macros for specifying what happens after that.
+
+\begin{syntax}
+\cmd{\glossaryname} \\
+\cmd{\glossarymark} \\
+\cmd{\glossaryintoc} \cmd{\noglossaryintoc} \\
+\end{syntax}
+\glossary(glossaryname)%
+  {\cs{glossaryname}}%
+  {Name for a glossary.}%
+\glossary(glossarymark)%
+  {\cs{glossarymark}}%
+  {Redefine to specify marks for headers.}%
+\glossary(glossaryintoc)%
+  {\cs{glossaryintoc}}%
+  {Declaration to add glossary title to the ToC.}%
+\glossary(noglossaryintoc)%
+  {\cs{noglossaryintoc}}%
+  {Declaration to prohibit adding glossary title to the ToC.}%
+
+The title for the glossary is \cmd{\glossaryname} whose initial definition
+is 
+\begin{lcode}
+\newcommand*{\glossaryname}{Glossary}
+\end{lcode}
+\cmd{\glossarymark}, which by default does nothing, can be redefined to
+set marks for headers. The glossary title will be added to the ToC
+if the \cmd{\glossaryintoc} declaration is in force, but will not be
+added to the ToC following the \cmd{\noglossaryintoc}.
+
+\begin{syntax}
+\cmd{\preglossaryhook} \\
+\end{syntax}
+\glossary(preglossaryhook)%
+  {\cs{preglossaryhook}}%
+  {Vacuous macro called after a glossary title is typeset.}
+The macro \cmd{\preglossaryhook} is called after the glossary title 
+has been typeset. By default it does nothing, but you could redefine
+it to, for example, add some explanatory material before the entries
+start.
+
+\begin{syntax}
+\cmd{\onecolglossary} \cmd{\twocolglossary} \\
+\lnc{\glossarycolsep} \lnc{\glossaryrule} \\
+\end{syntax}
+\glossary(onecolglossary)%
+  {\cs{onecolglossary}}%
+  {Declaration for a single column glossary.}%
+\glossary(onecolglossaryfalse)%
+  {\cs{twocolglossary}}%
+  {Declaration for a two column glossary.}%
+\glossary(glossarycolsep)%
+  {\cs{glossarycolsep}}%
+  {Columns separation in a two column glossary.}%
+\glossary(glossaryrule)%
+  {\cs{glossaryrule}}%
+  {Width of inter-column rule in a two column glossary.}%
+
+The glossary can be typeset in two columns (\cmd{\twocolglossary})
+but by default (\cmd{\onecolglossary}) it is set in one column.
+When two columns are used, the length \lnc{\glossarycolsep} is the
+distance between the columns and the length \lnc{\glossaryrule} is
+the width (default 0) of a vertical rule between the columns.
+
+\begin{syntax}
+\cmd{\begintheglossaryhook} \\
+\cmd{\atendtheglossaryhook} \\
+\end{syntax}
+\glossary(begintheglossaryhook)%
+  {\cs{begintheglossaryhook}}%
+  {Vacuous macro called as the last thing by \senv{theglossary}.}
+\glossary(atendtheglossaryhook)%
+  {\cs{atendtheglossaryhook}}%
+  {Vacuous macro called as the first thing by \eenv{theglossary}.}
+
+The last thing that \senv{theglossary} does is call 
+\cmd{\begintheglossaryhook}. Similarly, the first thing that is done at
+the end of the environment is to call \cmd{\atendtheglossaryhook}.
+By default these macros do nothing but you can redefine them.
+
+    For example, if you wanted the glossary in the form of a description
+list, the following will do that.
+\begin{lcode}
+\renewcommand*{\begintheglossaryhook}{\begin{description}}
+\renewcommand*{\atendtheglossaryhook}{\end{description}}
+\renewcommand{\glossitem}[4]{\item[#1:] #2 #3 #4}
+\end{lcode}
+
+\subsubsection{The glossary for this document}
+
+    The following is the code I have used to produce the glossary
+in this document.
+
+This is the code in the \file{sty} file that I used.
+\begin{lcode}
+\makeglossary
+\changeglossactual{?}
+\changeglossnum{\thepage}
+\changeglossnumformat{|hyperpage}%% for hyperlinks
+\renewcommand*{\glossaryname}{Command summary}
+\renewcommand*{\glossarymark}{\markboth{\glossaryname}{\glossaryname}}
+\renewcommand{\glossitem}[4]{%
+  \sbox\@tempboxa{#1 \space #2 #3 #4}%
+  \par\hangindent 2em
+  \ifdim\wd\@tempboxa<0.8\linewidth
+    #1 \space #2 #3 \dotfill #4\relax
+  \else
+    #1 \dotfill #4\\
+    #2 #3
+  \fi}
+\end{lcode}
+
+    The redefinition of \cmd{\glossitem} works as follows (it is similar
+to code used in the setting of a \cmd{\caption}):
+\begin{enumerate}
+\item Put the whole entry into a temporary box.
+\item Set up a hanging paragraph with 2em indentation after the first line.
+\item Check if the length of the entry is less than 80\% of the linewidth.
+\item For a short entry set the name, description, and any reference then
+      fill the remainder of the line with dots with the number at the right
+      margin.
+\item For a longer entry, set the title and number on a line, separated
+      by a line of dots, then set the description (and reference) on
+      the following lines.
+\end{enumerate}
+
+    The \file{gst} file I have used for this document has a few more items
+than the basic one.
+\begin{lcode}
+%%% memman.gst makindex glossary style file for memman and friends
+%%% Output style parameters
+preamble "\\begin{theglossary}"
+postamble "\n\\end{theglossary}\n"
+group_skip "\n\\glossaryspace\n"
+item_0    "\n\\glossitem"
+delim_0   "{\\memglonum{"
+encap_suffix "}}}"
+indent_space "\t"
+indent_length 2
+%%% Input style parameters
+keyword "\\glossaryentry"
+actual '?'
+page_compositor "."
+\end{lcode}
+
+The \verb?group_skip? line asks that \verb?\glossaryspace? be put between the 
+last entry for one letter and the first for the next letter. 
+The \verb?indent_space? and \verb?indent_length? give a smaller indent for
+continuation lines in the output than the default.
+
+    The \verb?actual? entry says that the input file will use \verb+?+ instead
+of the default \verb+@+ as the flag for separating a key from the start of 
+the real entry. The \verb?page_compositor? indicates that any compound numbers
+will be like \verb?1.2.3? instead of the default \verb?1-2-3?.
+
+In the document the raw data is collected by the \cmd{\glossary} commands 
+in the body of the text. For instance, although I have not actually used
+the first two:
+\begin{lcode}
+\glossary(cs)%
+  {\cs{cs}\marg{name}}%
+  {Typesets \texttt{name} as a macro name with preceding backslash,
+   e.g., \cs{name}.}%
+\glossary(gmarg)%
+  {\cs{gmarg}\marg{arg}}%
+  {Typesets \texttt{arg} as a required argument, e.g., \marg{arg}.}
+\glossary(glossaryname)%
+  {\cs{glossaryname}}%
+  {Name for a glossary}%
+\glossary(memgloterm)%
+  {\cs{memgloterm}\marg{term}}%
+  {Wrapper round a glossary term.}%
+\end{lcode}
+
+    Any change to the glossary entries will be reflected in the
+\file{glo} produced from that LaTeX run. \Lmakeindex\ has to be run
+the \file{glo} file using the appropriate \file{gst} configuration file, 
+and then LaTeX run again to get the corrected, sorted and formatted result
+printed by \cmd{\printglossary}.
+
+    In particular, for this document, which also includes an index so that
+can be processed when the glossary is processed.
+\begin{lcode}
+pdflatex memman
+makeindex -s memman.gst -o memman.gls memman.glo
+makeindex -s memman.ist memman     %%% for the index
+makeindex lines                    %%% for the index of first lines
+pdflatex memman
+\end{lcode} 
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Endnotes}
+
+    Endnotes are often used instead of footnotes so as not to interrupt the
+flow of the main text. Although endnotes are normally put at the end of 
+the document, they may instead be put at the end of each chapter.
+
+    The \Lpack{endnotes} package already uses the command \cmd{\endnote} for
+an endnote, so the class uses \cmd{\pagenote} for an endnote so as not 
+to clash if you prefer to use the package. The following was originally 
+supplied as the \Lpack{pagenote} package~\cite{PAGENOTE}.
+
+\begin{syntax}
+\cmd{\makepagenote} \\
+\cmd{\pagenote}\oarg{id}\marg{text} \\
+\cmd{\printpagenotes} \cmd{\printpagenotes*} \\
+\end{syntax}
+\glossary(makepagenote)%
+  {\cs{makepagenote}}%
+  {Preamble command for enabling page/end notes.}%
+\glossary(printpagenotes)%
+  {\cs{printpagenotes}}%
+  {Input the pagenote \file{ent} file for printing, then close it to any 
+   more notes.}%
+\glossary(printpagenotes*)%
+  {\cs{printpagenotes*}}%
+  {Input the pagenote \file{ent} file for printing, then empty it ready for 
+   further notes.}%
+
+   The general principle is that notes are written out to a file which
+is then input at the place where the notes are to be printed. The note 
+file has an \ixfile{ent} extension, like the table of contents file
+has a \ixfile{toc} extension.
+
+    You have to put \cmd{\makepagenote} in your preamble if you want 
+endnotes. This will open the \ixfile{ent} note file which is called
+\verb?\jobname.ent?.
+
+   In the body of the text use use \cmd{\pagenote} to create an endnote, just
+as you would use \cmd{\footnote} to create a footnote. In the books that I have
+checked there are two common methods of identifying an endnote:
+\begin{enumerate}
+\item Like a footnote, put a number in the text at the location 
+of the note and use the same number to identify the note when it
+finally gets printed.\label{pagenote:id1}
+\item Put no mark in the text, but when it is finally printed use a few 
+words from the text to identify the origin of the note. The page number
+is often used as well with this method.\label{pagenote:id2}
+\end{enumerate}
+The \meta{text} argument of \cmd{\pagenote} is the contents of the note and
+if the optional \meta{id} argument is not used the
+result is similar to having used \cmd{\footnote} --- a number in the main text
+and the corresponding number in the endnotes listing (as 
+in \ref{pagenote:id1} above). For the second reference style 
+(\ref{pagenote:id2} above) use the 
+optional \meta{id} argument for the `few words', and no mark will be put
+into the main text but \meta{id} will be used as the identification in
+the listing.
+
+   For one set of endnotes covering the whole document put 
+\cmd{\printpagenotes} where you want them printed, typically before
+any bibliography or index. The \cmd{\printpagenotes} macro inputs the
+\ixfile{ent} endnote file for printing and then closes it to any further
+notes.
+
+For notes
+at the end of each chapter put \cmd{\printpagenotes*}, which inputs
+the \ixfile{ent} file for printing then empties it ready for more notes,
+at the end of each chapter.
+
+   The simple use is like this:
+\begin{lcode}
+\documentclass[...]{memoir}
+...
+\makepagenote
+...
+\begin{document}
+\chapter{One}
+...\pagenote{An end note.} ...
+...\pagenote{Fascinating information.}
+...
+\chapter{Last}% chapter 9
+...\pagenote{Another note.}% 30th note
+...
+...
+\printpagenotes
+...
+\end{document}
+\end{lcode}
+This will result in an endnote listing looking like \fref{fig:endnote}.
+
+\begin{figure}
+\centering
+\begin{minipage}{0.8\textwidth}
+\begin{framed}
+\noindent{\bfseries\Large Notes}\\[\baselineskip]
+{\bfseries Chapter 1 One} \\[\baselineskip]
+1. An end note \\
+2. Fascinating information. \\
+.............. \\[\baselineskip]
+{\bfseries Chapter 9 Last} \\[\baselineskip]
+1. Another note \\[\baselineskip]
+\end{framed}
+\end{minipage}
+\caption{Example endnote listing}\label{fig:endnote}
+\end{figure}
+
+For notes at the end of each chapter:
+\begin{lcode}
+\documentclass[...]{memoir}
+...
+\makepagenote
+...
+\begin{document}
+\chapter{One}
+...\pagenote{An end note.} ...
+...
+\printpagenotes*
+\chapter{Last}
+...\pagenote{Another note.} ...
+...
+\printpagenotes*
+%%% no more chapters
+...
+\end{document}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\continuousnotenums} \\
+\cmd{\notepageref} \\
+\end{syntax}
+\glossary(continuousnotenums)%
+  {\cs{continuousnotenums}}%
+  {Declaration to make the numbering of endnotes continuous throughout the
+   document.}%
+\glossary(notepageref)%
+  {\cs{notepageref}}%
+  {Declaration that page numbers are available to notes in the endnote listing.}
+   The \Icn{pagenote} counter is used for the notes. By default the endnotes 
+are numbered per chapter. If you want the numbering
+to be continuous throughout the document use the \cmd{\continuousnotenums}
+declaration. Normally the information on which page a note was created is
+discarded but will be made available to notes in the endnote listing
+following the \cmd{\notepageref} declaration.  These declarations should 
+be put in your preamble. 
+
+    Because of how TeX writes information to files, when the \cmd{\notepageref}
+declaration is used there must be no notes on the page where
+\cmd{\printnotes} or \cmd{\printnotes*} closes the \ixfile{ent} file. 
+If necessary, a \cmd{\clearpage} or similar must be used before the 
+print command.
+
+\begin{syntax}
+\cmd{\notesname} \\
+\cmd{\notedivision} \\
+\end{syntax}
+\glossary(notesname)%
+  {\cs{notesname}}%
+  {Name for endnotes, default \texttt{Notes}.}%
+\glossary(notedivision)%
+  {\cs{notedivision}}%
+  {Heading printed by the \cs{printnotes} and \cs{printnotes*} macros.}
+
+When \cmd{\printnotes} (or \cmd{\printnotes*}) is called the first thing 
+it does is call the macro \cmd{\notedivision}. By default this is defined
+as:
+\begin{lcode}
+\newcommand*{\notesname}{Notes}
+\newcommand*{\notedivision}{\chapter{\notesname}}
+\end{lcode}
+In other words, it will print out a heading for the notes that will be read
+from the \file{ent} file. \verb?\print...? then closes the \ixfile{ent} file 
+for writing and after this \verb?\input?s it to get and process the notes.
+
+
+\subsection{Changing the appearance}
+
+\begin{syntax}
+\cmd{\notenumintext}\marg{num} \\
+\cmd{\notenuminnotes}\marg{num} \\
+\end{syntax}
+\glossary(notenumintext)%
+  {\cs{notenumintext}\marg{num}}%
+  {Typesets the number \meta{num} of a page note in the main text.}%
+\glossary(notenuminnotes)%
+  {\cs{notenuminnotes}\marg{num}}%
+  {Typesets the number \meta{num} of a page note in the note listing.}%
+The \Icn{pagenote} counter is used for pagenotes. The macro
+\cmd{\notenumintext} is called by \cmd{\pagenote} with the value of the
+\Icn{pagenote} counter as the \meta{num} argument to print the
+value of the \Icn{pagenote} counter in the main text. By default it is 
+printed as a 
+superscript, but this can be changed, or even eliminated.
+In the note listing \cmd{\notenuminnotes} is used to print the number
+of a note. The default definitions are:
+\begin{lcode}
+\newcommand*{\notenumintext}[1]{\textsuperscript{#1}}
+\newcommand*{\notenuminnotes}[1]{\normalfont #1.\space}
+\end{lcode}
+  
+
+\begin{syntax}
+\cmd{\noteentry}\marg{notenum}\marg{id}\marg{text}\marg{pagenum} \\
+\cmd{\prenoteinnotes} \\
+\cmd{\postnoteinnotes} \\
+\end{syntax}
+\glossary(noteentry)%
+  {\cs{noteentry}\marg{notenum}\marg{id}\marg{text}\marg{pagenum}}%
+  {Typesets a pagenote with number \meta{notenum}, identifier \meta{id},
+   contents \meta{text}, created on page \meta{pagenum}.}
+\glossary(prenoteinnotes)%
+  {\cs{prenoteinnotes}}%
+  {Called by \cs{noteentry} to initialise the printing of an endnote.}
+\glossary(postnoteinnotes)%
+  {\cs{postnoteinnotes}}%
+  {Called by \cs{noteentry} to finish the printing of an endnote.}
+The \cmd{\pagenote} macro writes \cmd{\noteentry}, with the appropriate 
+values for the arguments, to the \ixfile{ent} file, 
+where \meta{notenum} is the note number (from the \Icn{pagenote} counter),
+\meta{id} and \meta{text} are as supplied to
+\cmd{\pagenote}, and if the \cmd{\notepageref} declaration option is used, 
+\meta{pagenum} is the page number, otherwise it is empty. 
+The \cmd{\noteentry} macro controls the typesetting of the note.
+
+The default definition of \cmd{\noteentry} is
+\begin{lcode}
+\newcommand{\notentry}[4]{%
+  \prenoteinnotes
+  \noteidinnotes{#1}{#2}\pageinnotes{#4}\noteinnotes{#3}%
+  \postnoteinnotes}
+\end{lcode}
+and the definitions of other macros are:
+\begin{lcode}
+\newcommand{\prenoteinnotes}{\par\noindent}
+\newcommand{\postnoteinnotes}{\par}
+\end{lcode}
+so that (the first paragraph of) each note is printed as a non-indented 
+paragraph.
+
+    If you would prefer, say, hanging paragraphs try:
+\begin{lcode}
+\renewcommand{\prenoteinnotes}{\par\noindent\hangindent 2em}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\noteidinnotes}\marg{notenum}\marg{id} \\
+\cmd{\idtextinnotes}\marg{id} \\
+\cmd{\notenuminnotes}\marg{num} \\
+\end{syntax}
+\glossary(noteidinnotes)%
+  {\cs{noteidinnotes}\marg{notenum}\marg{id}}%
+  {Prints an endnote's number or id in the endnote listing.}%
+\glossary(idtextinnotes)%
+  {\cs{idtextinnotes}\marg{id}}%
+  {Prints an endnote's \meta{id} text}%
+The \cmd{\noteidinnotes} calls \cmd{\idtextinnotes} to print the note \meta{id}
+if it was given as the optional argument to \cmd{pagenote}, 
+otherwise it calls \cmd{\notenuminnotes} to print the note number.
+These are defined respectively as:
+\begin{lcode}
+\newcommand*{\idtextinnotes}[1]{[#1]\space}
+\newcommand*{\notenuminnotes}[1]{\normalfont #1.\space}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\pageinnotes}\marg{pagenum} \\
+\cmd{\printpageinnotes}\marg{pagenum} \\
+\end{syntax}
+\glossary(pageinnotes)%
+  {\cs{pageinnotes}\marg{pagenum}}%
+  {Controls the printing of an endnote's page reference number.}%
+\glossary(printpageinnotes)%
+  {\cs{printpageinnotes}\marg{pagenum}}%
+  {Prints an endnote's page reference number.}%
+The macro \cmd{\pageinnotes} controls the printing of a note's page 
+reference. If the
+\cmd{\notepageref} declaration has been used it calls
+\cmd{\printpageinnotes} to do the actual printing. Its definition is:
+\begin{lcode}
+\newcommand*{\printpageinnotes}[1]{%
+  (\pagerefname\ #1)\space}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\noteinnotes}\marg{text} \\
+\end{syntax}
+\glossary(noteinnotes)%
+  {\cs{noteinnotes}\marg{text}}%
+  {Prints the text of an endnote.}%
+The macro \cmd{\noteinnotes}\marg{text} is simply:
+\begin{lcode}
+\newcommand{\noteinnotes}[1]{#1}
+\end{lcode}
+and is used to print the text of a note.
+
+\begin{syntax}
+\cmd{\addtonotes}\marg{text} \\
+\end{syntax}
+\glossary(addtonotes)%
+  {\cs{addtonotes}\marg{text}}%
+  {Inserts \meta{text} into the endnotes \file{ent} file.}%
+The macro \cmd{\addtonotes} inserts \meta{text} into the \ixfile{ent}
+file. For example, before the first note in a chapter, \cmd{\addtonotes} is
+used to write the \cmd{\pagenotesubhead} command to the file.
+
+\textbf{Note:} As the argument to \cmd{\pagenote} and \cmd{\addtonotes} 
+is moving you may have
+to \cmd{\protect} any fragile commands. If you get strange error messages, try
+using \cmd{\protect} and see if they go away.
+
+\begin{syntax}
+\cmd{\pagenotesubhead}\marg{chapapp}\marg{num}\marg{title} \\
+\cmd{\pnchap} \cmd{\pnschap} \\
+\end{syntax}
+\glossary(pagenotesubhead)%
+  {\cs{pagenotesubhead}\marg{chapapp}\marg{num}\marg{title}}%
+  {Typesets a subheading for notes from chapter or appendix \meta{chapapp} 
+   \meta{num} called \meta{title}.}%
+\glossary(pnchap)%
+  {\cs{pnchap}}%
+  {Chapter title for \cs{pagenotesubhead}. Defaults to the ToC entry.}
+\glossary(pnschap)%
+  {\cs{pnschap}}%
+  {Starred chapter title for \cs{pagenotesubhead}. Defaults to the regular title.}
+
+    The macro \cmd{\pagenotesubhead} typesets the subheadings in an endnote
+list. It is inserted into the \ixfile{ent} file via \cmd{\addtonotes}.
+The \meta{chapapp} argument is normally \cmd{\chaptername} but if the
+notes are from an appendix then \cmd{\appendixname} is used instead. \meta{num}
+is the number of the chapter, or blank if there is no number. Lastly,
+\meta{title} is \cmd{\pnchap} for regular chapters which defaults to the
+ToC entry, or \cmd{\pnschap} for starred chapters which defaults to the normal
+title. The default definition of \cmd{\pagenotesubhead} is very simply:
+\begin{lcode}
+\newcommand*{\pagenotesubhead}[3]{%
+  \section*{#1 #2 #3}}
+\end{lcode}
+
+    The scheme is set up under the assumption that notes will only be
+printed at the end of the document. If you intend to put them at the
+end of each chapter, then you will probably want to change the definitions
+of the \cmd{\notedivision} and \cmd{\pagenotesubhead} macros. For example:
+\begin{lcode}
+\renewcommand*{\notedivision}{\section*{\notesname}}
+\renewcommand*{\pagenotesubhead}[3]{}
+\end{lcode}
+and remember to use \cmd{\printnotes*} at each place you want the current set
+of notes to be printed.
+
+\begin{syntax}
+\cmd{\foottopagenote} \cmd{\pagetofootnote} \\
+\end{syntax}
+\glossary(foottopagenote)%
+  {\cs{foottopagenote}}%
+  {Declaration which turns \cs{footnote}s into \cs{pagenote}s.}%
+\glossary(pagetofootnote)%
+  {\cs{pagetofootnote}}%
+  {Declaration which turns \cs{pagenote}s into \cs{footnote}s.}%
+You can have both footnotes and endnotes in the same document. However you
+may start with all footnotes and later decide you would have preferred endnotes
+ instead, or \emph{vice-versa}. The \cmd{\foottopagenote} declaration
+makes \cmd{\footnote}s behave as \cmd{\pagenote}s, and \cmd{\pagetofootnote}
+has the opposite effect. In either conversion the optional argument will be
+ignored as for \cmd{\pagenote} it can be arbitrary text whereas for
+\cmd{\footnote} it must be a number.
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%\clearpage
+%\pagestyle{Ruled}
+%%\chapterstyle{demo}
+%\chapterstyle{veelo}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\chapter{Miscellaneous} \label{chap:misc}
+
+\setlength{\prechapterprecisshift}{-\onelineskip}
+
+\chapterprecis{In which we talk of many things, but not shoes
+               or ships or sealing wax, nor cabbages and kings.}
+
+\noindent    This chapter started with the \cmd{\chapterprecis} command to add
+the above text, which is also added to the \prtoc.
+
+    The class provides a miscellany of minor facilities, which are described
+here.
+
+\section{Draft documents}
+
+  The \Lopt{draft} option marks any overfull lines with black rectangles,
+otherwise the appearance is the same as for a \Lopt{final} document.
+
+\begin{syntax}
+\piif{ifdraftdoc} \\
+\end{syntax}
+\glossary(ifdraftdoc)%
+  {\cs{ifdraftdoc}}%
+  {\ptrue\ if the \Popt{draft} class option has been used.}
+The \piif{ifdraftdoc} macro is provided so that you can add extra
+things that you might want to happen when processing a draft; for example
+you might want to have each page header\index{header} (or footer\index{footer}) include the word `DRAFT'.
+The code to do this can be put into a construct like the following:
+\begin{lcode}
+\ifdraftdoc
+  % special things for a draft document
+\else
+  % perhaps special things for a non-draft document
+\fi
+\end{lcode}
+
+
+\section{Change marks}
+
+    When preparing a manuscript it normally goes through several iterations.
+The macros described in this section can be used to identify changes made to 
+a document throughout its lifecycle.
+
+   The commands below implement a simplified version of the change
+marking in the \Lclass{iso} class~\cite{ISOCLASS}.
+
+\begin{syntax}
+\cmd{\changemarks} \cmd{\nochangemarks} \\
+\end{syntax}
+\glossary(changemarks)%
+  {\cs{changemarks}}%
+  {Print change marks.}
+\glossary(nochangemarks)%
+  {\cs{nochangemarks}}%
+  {Do not print change marks.}
+The change marking macros only work properly when the \Lopt{draft} class
+option is used. Additionaly, the marks are only printed when the 
+\cmd{\changemarks} declaration is in effect. Using \cmd{\nochangemarks}
+switches off any marking.
+
+\begin{syntax}
+\cmd{\added}\marg{change-id} \\
+\cmd{\deleted}\marg{change-id} \\
+\cmd{\changed}\marg{change-id} \\
+\end{syntax}
+\glossary(added)%
+  {\cs{added}\marg{change-id}}%
+  {Change mark for someting added; \meta{change-id} is put in the margin.}
+\glossary(deleted)%
+  {\cs{deleted}\marg{change-id}}%
+  {Change mark for someting deleted; \meta{change-id} is put in the margin.}
+\glossary(changed)%
+  {\cs{changed}\marg{change-id}}%
+  {Change mark for someting changed; \meta{change-id} is put in the margin.}
+Each of these macros puts a symbol and \meta{change-id} into the 
+margin\index{margin} near
+where the command is given. The \cmd{\added} macro indicates that something
+has been added to the manuscript and uses $\oplus$ as its symbol. The
+\cmd{\deleted} macro is for indicating that something has been deleted and uses
+the $\neq$ symbol. The macro \cmd{\changed} uses the $\Leftrightarrow$ symbol
+to indicate that something has been changed.
+
+    These marking commands should be attached to some word or punctuation
+mark in the text otherwise extraneous spaces may creep into the typeset
+document.
+
+\section{Trim marks}
+
+    When the class \Lopt{showtrims} option is used, trim
+marks can be placed on each page, usually to indicate where the stock should
+be trimmed to obtain the planned page size.
+
+\begin{syntax}
+\cmd{\showtrimsoff} \cmd{\showtrimeson} \\
+\end{syntax}
+\glossary(showtrimsoff)%
+  {\cs{showtrimsoff}}%
+  {Switch off any trim marks.}
+\glossary(showtrimson)%
+  {\cs{showtrimson}}%
+  {If the \Popt{showtrims} option has been used, switch on any trim marks 
+  (this is the default).}
+If the \Lopt{showtrims} class option has been used then the \cmd{\showtrimsoff}
+declaration switches off the trim marks; the \cmd{\showtrimson} declaration,
+which is the default, switches on the trim marks. These declarations do
+nothing if the \Lopt{showtrims} option has not been used.
+
+    Trim marks can be placed at each corner of the (trimmed) page, and also
+at the middle of each side of the page.
+
+\begin{syntax}
+\cmd{\trimXmarks} \\
+\cmd{\trimLmarks} \\
+\cmd{\trimFrame} \\
+\cmd{\trimNone} \\
+\end{syntax}
+\glossary(trimXmarks)%
+  {\cs{trimXmarks}}%
+  {Trim marks of crosses at the four corners of the trimmed page.}
+\glossary(trimLmarks)%
+  {\cs{trimLmarks}}%
+  {Trim marks of `L' shapes at the four corners of the trimmed page.}
+\glossary(trimFrame)%
+  {\cs{trimFrame}}%
+  {Trim mark of a frame drawn round the trimmed page boundary.}
+\glossary(trimNone)%
+  {\cs{trimNone}}%
+  {No trim marks.}
+
+Some predefined trimming styles are provided. After the declaration
+\cmd{\trimXmarks} marks in the shape of a cross are placed at the four
+corners of the page. The declaration \cmd{\trimLmarks} calls for corner marks
+in the shape of an `L', in various orientations depending on the particular
+corner. After \cmd{\trimFrame} a frame will be drawn around each page, 
+coinciding with the page boundaries. The declaration \cmd{\trimNone}
+disables all kinds of trim marking.
+
+\begin{syntax}
+\cmd{\trimmarks} \\
+\cmd{\tmarktl} \cmd{\tmarktr} \cmd{\tmarkbr} \cmd{\tmarkbl} \\
+\cmd{\tmarktm} \cmd{\tmarkmr} \cmd{\tmarkbm} \cmd{\tmarkml} \\
+\end{syntax}
+\glossary(trimmarks)%
+  {\cs{trimmarks}}%
+  {Displays 8 (in)visible trim marks round the boundary of the trimmed page.}
+\glossary(tmarktl)%
+  {\cs{tmarktl}}%
+  {Trim mark for top left of trimmed page.}
+\glossary(tmarktm)%
+  {\cs{tmarktm}}%
+  {Trim mark for top middle of trimmed page.}
+\glossary(tmarktr)%
+  {\cs{tmarktr}}%
+  {Trim mark for top right of trimmed page.}
+\glossary(tmarkmr)%
+  {\cs{tmarkmr}}%
+  {Trim mark for middle right of trimmed page.}
+\glossary(tmarkbr)%
+  {\cs{tmarkbr}}%
+  {Trim mark for bottom right of trimmed page.}
+\glossary(tmarkbm)%
+  {\cs{tmarkbm}}%
+  {Trim mark for bottom middle of trimmed page.}
+\glossary(tmarkbl)%
+  {\cs{tmarkbl}}%
+  {Trim mark for bottom left of trimmed page.}
+\glossary(tmarkml)%
+  {\cs{tmarkml}}%
+  {Trim mark for middle left of trimmed page.}
+\glossary(tmarktl)%
+  {\cs{tmarktl}}%
+  {Trim mark for top left of trimmed page.}
+The \cmd{\trimmarks} macro is responsible for displaying up to 8 marks. The
+marks are defined as zero-sized pictures which are placed strategically
+around the borders of the page. 
+
+    The command \cmd{\trimmarks} places the pictures \cmd{\tmarktl}, 
+\cmd{\tmarktr},
+\cmd{\tmarkbl}, and \cmd{\tmarkbr} at the top left, top right,
+bottom right and bottom left corners of the page. The pictures
+\cmd{\tmarktm}, \cmd{\tmarkmr}, \cmd{\tmarkbm}, and \cmd{\tmarkml} are placed
+at the top middle, middle right, bottom middle and middle left of the
+edges of the page. All these \verb?\tmark..? macros should expand to zero-sized
+pictures.
+
+\begin{syntax}
+\cmd{\trimmark} \\
+\end{syntax}
+\glossary(trimmark)%
+  {\cs{trimmark}}%
+  {Cross mark used by \cs{trimXmarks}.}
+The declaration \cmd{\trimXmarks} uses \cmd{\trimmark} for the corner 
+crosses. This is defined as
+\begin{lcode}
+\newcommand{\trimmark}{%
+  \begin{picture}(0,0)
+    \setlength{\unitlength}{1cm}\thicklines
+    \put(-2,0){\line(1,0){4}}
+    \put(0,-2){\line(0,1){4}}
+  \end{picture}}
+\end{lcode}
+which produces a zero-sized picture of a 4cm cross. Then \cmd{\trimXmarks}
+is defined as:
+\begin{lcode}
+\newcommand*{\trimXmarks}{%
+  \let\tmarktl\trimmark
+  \let\tmarktr\trimmark
+  \let\tmarkbr\trimmark
+  \let\tmarkbl\trimmark}
+\end{lcode}
+
+
+    As an example, to draw short lines marking the half-height of the page, 
+try this:
+\begin{lcode}
+\providecommand*{\tmarkml}{}
+\renewcommand*{\tmarkml}{%
+  \begin{picture}(0,0){%
+    \unitlength 1mm
+    \thinlines
+    \put(-2,0){\line(-1,0){10}}
+  \end{picture}}}
+\providecommand*{\tmarkmr}{}
+\renewcommand*{\tmarkmr}{%
+  \begin{picture}(0,0){%
+    \unitlength 1mm
+    \thinlines
+    \put(2,0){\line(1,0){10}}
+  \end{picture}}}
+\end{lcode}
+Thin horizontal lines of length 10mm will be drawn at the middle left and
+middle right of the page, starting 2mm outside the page boundary.
+
+\begin{syntax}
+\cmd{\quarkmarks} \\
+\cmd{\registrationColour}\marg{mark} \\
+\end{syntax}
+\glossary(quarkmarks)%
+  {\cs{quarkmarks}}%
+  {Trim marks in the style of Quark Xpress registration marks, typeset with
+   \cs{registrationColour}.}
+\glossary(registrationColour)%
+  {\cs{registrationColour}\marg{mark}}%
+  {Typesets \cs{quarkmarks}.}
+Following the declaration \cmd{\quarkmarks} and trim marks will be in
+the style of Quark Xpress registration marks.\footnote{The code for this
+was donated by William Adams\index{Adams, William}.} The marks will be
+typeset using \cmd{\registrationColour}. The default definition is simply
+\begin{lcode}
+\newcommand*{\RegistrationColour}[1]{#1}
+\end{lcode}
+but you can change that to, say, print the marks in particular color.
+
+
+
+\section{Sheet numbering}
+
+    One purpose of trim marks is to show a printer where the stock
+should be trimmed. In this application it can be useful to also note the
+sheet number on each page, where the sheet number is 1 for the first page 
+and increases by 1 for each page thereafter. The sheet number is independent
+of the page number.
+
+\begin{syntax}
+\Icn{sheetsequence} \\
+\cmd{\thesheetsequence} \\
+\end{syntax}
+\glossary(sheetsequence)%
+  {\Pcn{sheetsequence}}%
+  {Counter for sheets (similar to \Pcn{page} for pages).}
+\glossary(thesheetsequence)%
+  {\cs{thesheetsequence}}%
+  {Typesets the current sheet sequence number.}
+The macro \cmd{\thesheetsequence} typesets the current sheet sequence number
+and is analogous to the \cmd{\thepage} macro.
+
+\begin{syntax}
+\Icn{lastsheet} \\
+\Icn{lastpage} \\
+\end{syntax}
+\glossary(lastsheet)%
+  {\Pcn{lastsheet}}%
+  {Counter holding the number of sheets processed during the \emph{previous}
+   \ltx\ run.}
+\glossary(lastpage)%
+  {\Pcn{lastpage}}%
+  {Counter holding the number of the last page processed during the \emph{previous}
+   \ltx\ run.}
+The counter \Icn{lastsheet} holds the number of sheets processed during
+the \emph{previous} run of LaTeX. Similarly, the counter \Icn{lastpage}
+holds the number of the last page processed during the previous run.
+Note that the last page number is not necessarily the same as the last
+sheet number. For example: \\
+\textit{In this document this is 
+        sheet \thesheetsequence\ of \thelastsheet\ sheets, 
+        and page \thepage\ of \thelastpage.}
+
+The previous sentence was the result of processing the following
+code 
+\begin{lcode}
+\textit{In this document this is 
+        sheet \thesheetsequence\ of \thelastsheet\ sheets, 
+        and page \thepage\ of \thelastpage.}
+\end{lcode}
+
+    You may wish to use the sheet and/or page numbers as part of some
+trim marks. The following will note the sheet numbers above the page.
+\begin{lcode}
+\newcommand*{\trimseqpage}{%
+  \begin{picture}(0,0)
+    \unitlength 1mm
+    \put(0,2){\makebox(0,0)[b]{Sheet: \thesheetsequence\ of \thelastsheet}}
+  \end{picture}}
+\let\tmarktm\trimseqpage
+\end{lcode}
+
+\section{Gatherings or signatures}
+
+    Sometimes publishers request that they be supplied with a total number of
+pages that meet their planned \emph{gatherings}\index{gathering}.\footnote{There
+was a thread on \ctt, \textit{pagenumber mod 4?} about this in 2008.}
+ For instance
+a gathering may consist of 8 leaves, and as there are two pages to a leaf this
+is equivalent to 16 pages. To meet this particular requirement there must be 
+a total of $8N$ leaves, or equivalently $16N$ pages, where $N$ will be 
+the number of gatherings.
+
+\begin{syntax}
+\cmd{\leavespergathering}\marg{num} \\
+\end{syntax}
+\glossary(leavespergathering)%
+  {\cs{leavespergathering}\marg{num}}%
+  {Ensure that the correct number of pages are output to make up gatherings 
+   of \meta{num} leaves each.}
+The command \cmd{\leavespergathering} ensures that there will be exactly the
+right number of pages output to make a complete set of gatherings of \meta{num}
+leaves (2\meta{num} pages) each --- if necessary  blank pages will be output 
+at the end to make up the correct tally. If \meta{num} is less than two (the default)
+then no additional pages will be output.
+
+
+\section{Time}
+
+\begin{syntax}
+\cmd{\printtime} \cmd{\printtime*} \\
+\cmd{\hmpunct} \cmd{\amname} \cmd{\pmname} \\
+\end{syntax}
+\glossary(printtime)%
+  {\cs{printtime}}%
+  {Prints the time of day using a 24 hour clock.}
+\glossary(printtime*)%
+  {\cs{printtime*}}%
+  {Prints the time of day using a 12 hour clock.}
+\glossary(hmpunct)%
+  {\cs{hmpunct}}%
+  {Punctuation between hours and minutes in \cs{printtime} (default :)}
+\glossary(amname)%
+  {\cs{amname}}%
+  {Abbreviation for ante meridiem used in \cs{printtime*} (default am)}
+\glossary(pmname)%
+  {\cs{pmname}}%
+  {Abbreviation for post meridiem used in \cs{printtime*} (default am)}
+
+The \cmd{\printtime} command\footnote{I based the code on a similar macro
+in \btitle{\tx\ for the Impatient}~\cite{IMPATIENT}.} 
+prints the time of day when the document is 
+processed using the 24 hour clock while \cmd{\printtime*} uses a 12
+hour clock. For example, the effect of the 
+next piece of code is shown below.
+\begin{lcode}
+This document was processed on: \today\ at \printtime\ (\printtime*).
+\end{lcode}
+This document was processed on: \today\ at \printtime\ (\printtime*).
+
+    The punctuation between the hours and minutes is \cmd{\hmpunct} which
+defaults to a colon (:). The macros \cmd{\amname} and \cmd{\pmnane} hold 
+the abbreviations for \textit{ante meridiem} and \textit{post meridiem}, 
+respecitively; the defaults are `\amname' and `\pmname'. 
+
+    According to the \btitle{Chicago Manual of Style}~\cite{CMS} there 
+should be no punctuation between the hours and minutes in the 24 hour system.
+For the 12 hour system it recommends that small caps be used for the
+divisions of the day (e.g., \textsc{a.m.} and \textsc{p.m.}) and also
+that the American practice is to use a colon as the separator between
+hours and minutes whereas the English practice is to use a period (known
+to the English as a `full stop'). I don't know what the traditions are
+in other orthographies.
+
+    The \cmd{\quarkmarks} declaration uses \cmd{\printtime}, so be careful
+if you change it.
+
+    Nicola Talbot's \Lpack{datetime} package~\cite{DATETIME} provides
+a much more comprehensive collection of styles for printing the time;
+also for dates.
+
+\section{Page breaks before lists}
+
+   A sentence or two may be used to introduce a list (e.g., \Ie{itemize})
+and it can be annoying if there is a page break between the introductory words
+and the first item.
+\begin{syntax}
+\cmd{\noprelistbreak} \\
+\end{syntax}
+\glossary(noprelistbreak)%
+  {\cs{noprelistbreak}}%
+  {Putting this immediately before an \Pe{itemize} (or \Pe{enumerate}, or \ldots) 
+   environment should prevent a pagebreak.}
+
+Putting \cmd{\noprelistbreak} immediately before the \verb?\begin{itemize}?
+should prevent a page break. Ideally, there sould be no blank lines
+between the end of the introduction and the start of the list. 
+
+\section{Changing counters}
+
+    This is effectively a bundling of the \Lpack{chngcntr} 
+package~\cite{CHNGCNTR}.
+
+\begin{syntax}
+\cmd{\newcounter}\marg{ctr}\oarg{within} \\
+\cmd{\thectr} \\
+\end{syntax}
+\glossary(newcounter)%
+  {\cs{newcounter}\marg{ctr}\oarg{within}}%
+  {Creates a new counter \Pcn{ctr}, optionally reset when counter \Pcn{within}
+   changes.}
+\glossary(thectr)%
+  {\cs{thectr}}%
+  {Typesets the value of the counter \Pcn{ctr}.}
+    In \ltx\ a new counter called, say \Pcn{ctr}, is created by the 
+\cmd{\newcounter} command as \verb?\newcounter{ctr}?. 
+If the optional \meta{within}
+argument is given, the counter \Pcn{ctr} is reset to zero each time the 
+counter called \Pcn{within} is changed; the \Pcn{within} counter 
+must exist before it is used as the optional argument. The command 
+\verb?\thectr? typesets the value
+of the counter \Pcn{ctr}. This is automatically defined for you by the 
+\cmd{\newcounter} command to typeset arabic numerals.
+
+\begin{syntax}
+\cmd{\counterwithin}\marg{ctr}\marg{within} \\
+\cmd{\counterwithin*}\marg{ctr}\marg{within} \\
+\end{syntax}
+\glossary(counterwithin)%
+  {\cs{counterwithin}\marg{ctr}\marg{within}}%
+  {Makes the counter \Pcn{ctr} (created via \cs{newcounter}) act as though 
+   it had been initially defined to be reset by counter \Pcn{within}.
+   It also redefines \cs{thectr} to include \cs{thewithin}.}
+\glossary(counterwithin*)%
+  {\cs{counterwithin*}\marg{ctr}\marg{within}}%
+  {Makes the counter \Pcn{ctr} (created via \cs{newcounter}) act as though 
+   it had been initially defined to be reset by counter \Pcn{within}, leaving
+   the original definition of \cs{thectr}.}
+The \cmd{\counterwithin} macro makes a \meta{ctr} that has been initially
+defined by \verb?\newcounter{ctr}? act as though it had been defined by
+\verb?\newcounter{ctr}[within]?. It also redefines the \cs{thectr} command
+to be \verb?\thewithin.\arabic{ctr}?. The starred version of the command
+does nothing to the original definition of \cs{thectr}.
+
+\begin{syntax}
+\cmd{\counterwithout}\marg{ctr}\marg{within} \\
+\cmd{\counterwithout*}\marg{ctr}\marg{within} \\
+\end{syntax}
+\glossary(counterwithout)%
+  {\cs{counterwithout}\marg{ctr}\marg{within}}%
+  {Makes the counter \Pcn{ctr} (created via 
+   \cs{newcounter}\marg{ctr}\oarg{within}) act as though 
+   it had been initially defined via \cs{newcounter}\marg{ctr}.
+   It also redefines \cs{thectr} to typeset as arabic numerals.}
+\glossary(counterwithout*)%
+  {\cs{counterwithout*}\marg{ctr}\marg{within}}%
+  {Makes the counter \Pcn{ctr} (created via 
+   \cs{newcounter}\marg{ctr}\oarg{within}) act as though 
+   it had been initially defined via \cs{newcounter}\marg{ctr},
+   leaving the original definition of \cs{thectr}.}
+The \cmd{\counterwithout} macro makes the \Pcn{ctr} counter that has been 
+initially
+defined by \verb?\newcounter{ctr}[within]? act as though it had been defined by
+\verb?\newcounter{ctr}?. It also redefines the \cs{thectr} command
+to be \verb?\arabic{ctr}?. The starred version of the command
+does nothing to the original definition of \verb?\thectr?.
+
+    Any number of \verb?\counterwithin{ctr}{...}? and \verb?\counterwithout{ctr}{...}?
+commands can be issued for a given counter \Pcn{ctr} if you wish to toggle
+between the two styles. The current value of \Pcn{ctr} is unaffected by these
+commands. If you want to change the value use \cmd{\setcounter}, and to change
+the typesetting style use \cmd{\renewcommand} on \cs{thectr}.
+
+\section{New new and provide commands}
+
+\begin{syntax}
+\cmd{\newloglike}\marg{cmd}\marg{string} \\
+\cmd{\newloglike*}\marg{cmd}\marg{string} \\
+\end{syntax}
+\glossary(newloglike)%
+  {\cs{newloglike}\marg{cmd}\marg{string}}%
+  {Creates a new log-like function command \meta{cmd} typesetting 
+   \meta{string}.}
+\glossary(newloglike*)%
+  {\cs{newloglike}\marg{cmd}\marg{string}}%
+  {Creates a new log-like function command \meta{cmd} typesetting 
+   \meta{string}, which can take limits.}
+The class provides means of creating new math log-like functions. For
+example you might want to do
+\begin{lcode}
+\newloglike{\Ei}{Ei}
+\end{lcode}
+if you are using the exponential integral function in your work.
+The starred version of the command creates a function that takes limits
+(like the \cmd{\max} function).
+
+    The \ltx\ kernel defines the \cmd{\providecommand} macro that acts
+like \cmd{\newcommand} if the designated macro has not been defined
+previously, otherwise it does nothing. The class adds to that limited
+repetoire.
+
+\begin{syntax}
+\cmd{\provideenvironment}\marg{name}\oarg{numargs}\oarg{optarg}\marg{begindef}\marg{enddef} \\
+\cmd{\providelength}\marg{cmd} \\
+\cmd{\providecounter}\marg{ctr}\oarg{within} \\
+\cmd{\provideloglike}\marg{cmd}\marg{string} \\
+\cmd{\provideloglike*}\marg{cmd}\marg{string} \\
+\end{syntax}
+\glossary(provideenvironment)%
+  {\cs{provideenvironment}\marg{name}\oarg{numarks}\oarg{optarg}\marg{begindef}\marg{enddef}}%
+  {A `provide' version of \cs{(re)newenvironment}.}
+\glossary(providelength)%
+  {\cs{providelength}\marg{cmd}}%
+  {A `provide' version of \cs{newlength}.}
+\glossary(providecounter)%
+  {\cs{providecounter}\marg{ctr}\oarg{within}}%
+  {A `provide' version of \cs{newcounter}.}
+\glossary(provideloglike)%
+  {\cs{provideloglike}\marg{cmd}\marg{string}}%
+  {A `provide' version of \cs{newloglike}.}
+\glossary(provideloglike*)%
+  {\cs{provideloglike*}\marg{cmd}\marg{string}}%
+  {A `provide' version of \cs{newloglike*}.}
+    The macros \cmd{\provideenvironment}, \cmd{\providelength}
+and \cmd{\providecounter} take the same arguments as their \verb?\new...?
+counterparts. If the environment, length or counter has not been defined
+then it is defined accordingly, otherwise the macros do nothing except
+produce a warning message for information purposes.
+
+   The \cmd{\provideloglike} commands are for math log-like functions,
+but they do not produce any warning messages.
+
+\section{Changing macros} \label{sec:addtodef}
+
+     Commands are provided for extending simple macro 
+definitions.\index{extend a macro}\index{add to a macro}
+
+\begin{syntax}
+\cmd{\addtodef}\marg{macro}\marg{prepend}\marg{append} \\
+\cmd{\addtoiargdef}\marg{macro}\marg{prepend}\marg{append} \\
+\end{syntax}
+\glossary(addtodef)%
+  {\cs{addtodef}\marg{macro}\marg{prepend}\marg{append}}%
+  {Inserts \meta{prepend} at the start of the current definition of 
+   \meta{macro} and \meta{append} at the end, treating the result
+   as if it had been defined by \cs{renewcommand}.}
+\glossary(addtoiargdef)%
+  {\cs{addtoiargdef}\marg{macro}\marg{prepend}\marg{append}}%
+  {Inserts \meta{prepend} at the start of the current definition of 
+   \meta{macro} (which takes a single argument) and \meta{append} at the 
+    end, treating the result as if it had been defined by \cs{renewcommand}.}
+The macro \cmd{\addtodef} inserts \meta{prepend} at the start of the
+current definition of \meta{macro} and puts \meta{append} at the end,
+where \meta{macro} is the name of a macro (including the backslash) which 
+takes no arguments. The \cmd{\addtoiargdef} macro is similar except that
+\meta{macro} is the name of a macro that takes one argument.
+
+ For example the following are two equivalent
+definitions of \verb?\mymacro?:
+\begin{lcode}
+\newcommand{\mymacro}[1]{#1 is a violinist in spite of being tone deaf}
+\end{lcode}
+and
+\begin{lcode}
+\newcommand{\mymacro}[1]{#1 is a violinist}
+\addtoiargdef{\mymacro}{}{ in spite of being tone deaf}
+\end{lcode}
+
+    The \cmd{\addtoiargdef} (and \cmd{\addtodef}) commands
+can be applied several times to the same \meta{macro}. Revising the
+previous example we could have
+\begin{lcode}
+\newcommand{\mymacro}[1]{#1 is a violinist}
+\addtoiargdef{\mymacro}{Although somewhat elderly, }%
+                       { in spite of being tone deaf}
+\addtoiargdef{\mymacro}{}{ and a bagpiper}
+\end{lcode}
+which is equivalent to
+\begin{lcode}
+\newcommand{\mymacro}[1]{%
+  Although somewhat elderly, #1 is a violinist
+  in spite of being tone deaf and a bagpiper}
+\end{lcode}
+
+The \meta{prepend} and \meta{append} arguments may include \ltx\ code, 
+as shown in this extract from the class code:
+\begin{lcode}
+\addtoiargdef{\date}{}{%
+  \begingroup
+    \renewcommand{\thanks}[1]{}
+    \renewcommand{\thanksmark}[1]{}
+    \renewcommand{\thanksgap}[1]{}
+    \protected@xdef\thedate{#1}
+  \endgroup}
+\end{lcode}
+Note that in the case of \cmd{\addtoiargdef} an argument can also refer
+to the original argument of the \meta{macro}.
+
+\begin{syntax}
+\cmd{\addtodef*}\marg{macro}\marg{prepend}\marg{append} \\
+\cmd{\addtoiargdef*}\marg{macro}\marg{prepend}\marg{append} \\
+\end{syntax}
+\glossary(addtodef*)%
+  {\cs{addtodef*}\marg{macro}\marg{prepend}\marg{append}}%
+  {Inserts \meta{prepend} at the start of the current definition of 
+   \meta{macro} and \meta{append} at the end, treating the result as if it had
+   been defined by \cs{renewcommand*}.}
+\glossary(addtoiargdef*)%
+  {\cs{addtoiargdef*}\marg{macro}\marg{prepend}\marg{append}}%
+  {Inserts \meta{prepend} at the start of the current definition of 
+   \meta{macro} (which takes a single argument) and \meta{append} at the 
+   end, treating the result as if it had been defined by \cs{renewcommand*}.}
+These starred versions are for use when the original \meta{macro}
+was defined via \cmd{\newcommand*}. Using the starred versions is
+like using \cmd{\renewcommand*} and the unstarred versions are like
+having used \cmd{\renewcommand}. It is the version (starred or unstarred)
+of a sequence of \verb?\addto...? commands that counts when determining whether
+the equivalent \verb?\renew...? is treated as starred or unstarred.
+
+    The \verb?\addto...? macros cannot be used to delete any code from 
+\meta{macro} nor to add anything except at the start and end. Also,
+in general, they cannot be used to change the definition of a macro that
+takes an optional argument, or a starred macro.
+
+\begin{syntax}
+\cmd{\patchcommand}\marg{macro}\marg{start-code}\marg{end-code} \\
+\end{syntax}
+\glossary(patchcommand)%
+  {\cs{patchcommand}\marg{macro}\marg{start-code}\marg{end-code}}%
+  {Inserts \meta{start-code} before the current definition of the 
+   \meta{macro} and \marg{end-code} at the end of the current definition.}%
+
+The \cmd{\patchcommand} is from the late 
+Michael Downes'\index{Downes, Michael}
+\Lpack{patchcmd} package~\cite{PATCHCMD}. 
+It inserts the \meta{start-code} at 
+the start of the current definition of the macro \meta{macro},
+and inserts \meta{end-code} at the end of its current definition.
+The \meta{macro} can have zero to nine parameters. If \meta{macro}
+uses \cmd{\futurelet} (e.g., it is a starred command or takes an
+optional argument) only \meta{start-code} is useful --- 
+\meta{end-code} must be empty otherwise things get messed up. If
+\meta{macro} has any delimited arguments then \cmd{\patchcommand}
+connot be used.
+
+\section{String arguments}
+
+    In the code for the class I have sometimes used macro arguments
+that consist of a `string', like the \texttt{*} arguments in the page layout
+macros (e.g., \cmd{\settypeblocksize}), or the \texttt{flushleft}, 
+\texttt{center} and \texttt{flushright} strings for the 
+\cmd{\makeheadposition} macro.
+
+\begin{syntax}
+\cmd{\nametest}\marg{str1}\marg{str2} \\
+\piif{ifsamename} \\
+\end{syntax}
+\glossary(nametest)%
+  {\cs{nametest}\marg{str1}\marg{str2}}%
+  {Sets \cs{ifsamename} \ptrue\ if \meta{str1} is the same as \meta{str2},
+  otherwise \pfalse.}
+\glossary(ifsamename)%
+  {\cs{ifsamename}}%
+  {Result from \cs{nametest}.}
+The macro \cmd{\nametest} takes two strings 
+as the arguments \meta{str1} and \meta{str2}. It sets \piif{ifsamename}
+\ptrue\ if \meta{str1} is the same as \meta{str2}, otherwise it sets
+\piif{ifsamename} \pfalse. For the purposes of \cmd{\nametest}, a string is a
+sequence of characters which may include spaces and may include
+the \verb?\? backslash character; strings are equal if and only if their
+character sequences are identical.
+
+    Typically, I have used it within macros for checking on argument
+values. For example:
+\begin{lcode}
+\newcommand{\amacro}[1]{%
+  \nametest{#1}{green}
+  \ifsamename
+%    code for green
+  \fi
+  \nametest{#1}{red}
+  \ifsamename
+%    code for red
+  \fi
+  ...
+}
+\end{lcode}
+
+\section{Odd/even page checking}
+
+    It is difficult to check robustly if the current page is odd or even but 
+the class does provide a robust method based on writing out a label and then
+checking the page reference for the label. This requires at least two \ltx\
+runs to stabilise. This has been extracted from the original 
+\Lpack{chngpage} package~\cite{CHNGPAGE}. (The class code and \Lpack{chngpage}
+code is similar but not identical. There is a later package, 
+\Lpack{changepage}~\cite{CHANGEPAGE}
+which contains code that is identical to the class.)
+
+
+\begin{syntax}
+\cmd{\checkoddpage} \\
+\piif{ifoddpage} \\
+\cmd{\strictpagecheck} \cmd{\lazypagecheck} \\
+\end{syntax}
+\glossary(checkoddpage)%
+  {\cs{checkoddpage}}%
+  {Sets \cs{ifoddpage} \ptrue\ if called on an odd-numbered page, otherwise
+   \pfalse.}
+\glossary(ifoddpage)%
+  {\cs{ifoddpage}}%
+  {Result of \cs{checkoddpage}.}
+\glossary(strictpagecheck)%
+  {\cs{strictpagecheck}}%
+  {\cs{checkoddpage} will use an accurate but time and space consuming method
+   for checking for an  odd page number.}
+\glossary(lazypagecheck)%
+  {\cs{lazypagecheck}}%
+  {\cs{checkoddpage} will use a possibly inaccurate but fast method
+   for checking for an  odd page number.}
+The macro \cmd{\checkoddpage} sets \piif{ifoddpage} to \ptrue\ if the current
+page number 
+is odd, otherwise it sets it to \pfalse\ (the page number is even). The robust
+checking method involves writing and reading labels, which is what is done
+after the command \cmd{\strictpagecheck} is issued; it may take more than 
+one run before everything settles down. The simple method 
+is just
+to check the current page number which, because of TeX's asynchronous page
+breaking algorithm, may not correspond to the actual page number where the
+\cmd{\checkoddpage} commmand was issued. The simple, but faster, page checking
+method is used after the \cmd{\lazypagecheck} command is issued.
+
+\begin{syntax}
+\cmd{\cplabel} \\
+\end{syntax}
+\glossary(cplabel)%
+  {\cs{cplabel}}%
+  {Prefix for labels used by \cs{checkoddpage} odd/even page checking.}
+When strict page checking is used the labels consist of a number preceded
+by the value of \cmd{\cplabel}, whose default definition is \verb?^_? (e.g.,
+a label may consist of the characters \verb?^_21?). If this
+might clash with any of your labels, change \cmd{\cplabel} with 
+\cmd{\renewcommand}, but
+the definition of \cmd{\cplabel} must be constant for any given document.
+
+\section{Moving to another page} \label{sec:moving}
+
+   Standard \ltx\ provides the \cmd{\newpage}, \cmd{\clearpage}
+and \cmd{\cleardoublepage} commands for discontinuing the current 
+page and starting a new one. The following is a bundling of the
+\Lpack{nextpage} package~\cite{NEXTPAGE}.
+
+\begin{syntax}
+\cmd{\needspace}\marg{length} \\
+\end{syntax}
+\glossary(needspace)%
+  {\cs{needspace}\marg{length}}%
+  {Starts a new page, leaving the current page short, unless there is 
+   estimated \meta{length} vertical space left on the current page.}
+This macro decides if there is \meta{length} space at the bottom of the 
+current page. If there is, it does nothing, otherwise it starts a new page.
+This is useful if \meta{length} amount of material is to be kept together
+on one page. The \cmd{\needspace} macro 
+depends on penalties for deciding what to do which means that the reserved
+space is an approximation. However, except for the odd occasion, the
+macro gives adequate results. 
+
+\begin{syntax}
+\cmd{\Needspace}\marg{length} \\
+\cmd{\Needspace*}\marg{length} \\
+\end{syntax}
+\glossary(Needspace)%
+  {\cs{Needspace}\marg{length}}%
+  {Starts a new page, leaving the current page short, unless there is 
+   actually at least \meta{length} vertical space left on the current page. }
+\glossary(Needspace*)%
+  {\cs{Needspace*}\marg{length}}%
+  {Starts a new page, leaving the current page short unless \cs{flushbottom} 
+   is in effect, unless there is 
+   actually at least \meta{length} vertical space left on the current page.}
+    Like \cmd{\needspace}, the \cmd{\Needspace} macro checks if there is
+\meta{length} space at the bottom of the current page and if there is not
+it starts a new page. The command should only be used between paragraphs;
+indeed, the first thing it does is to call \cs{par}. The \cmd{\Needspace}
+command checks for the actual space left on the page and is more exacting
+than \cmd{\needspace}.
+
+    If either \cmd{\needspace} or \cmd{\Needspace} produce a short page it
+will be ragged bottom even if \cmd{\flushbottom} is in effect. With
+the starred \cmd{\Needspace*} version, short pages will be flush bottom
+if \cmd{\flushbottom} is in effect and will be ragged bottom
+when \cmd{\raggedbottom} is in effect.
+
+    Generally speaking, use \cmd{\needspace} in preference to \cmd{\Needspace}
+unless it gives a bad break or the pages must be flush bottom.
+
+
+\begin{syntax}
+\cmd{\movetoevenpage}\oarg{text} \\
+\cmd{\cleartoevenpage}\oarg{text} \\
+\end{syntax}
+\glossary(movetoevenpage)%
+  {\cs{movetoevenpage}\oarg{text}}%
+  {Stops the current page to start typesetting on the next even page.
+   The optional \meta{text} is put on the skipped page (if there is one).}
+The \cmd{\movetoevenpage} stops the current page and starts typesetting on the
+next even numbered page. The \verb?\clear...? version flushes out all 
+floats\index{float} before
+going to the next even page. The optional \meta{text} is put on the skipped
+page (if there is one).
+
+\begin{syntax}
+\cmd{\movetooddpage}\oarg{text} \\
+\cmd{\cleartooddpage}\oarg{text} \\
+\end{syntax}
+\glossary(movetooddpage)%
+  {\cs{movetooddpage}\oarg{text}}%
+  {Stops the current page to start typesetting on the next odd page.
+   The optional \meta{text} is put on the skipped page (if there is one).}
+\glossary(cleartoevenpage)%
+  {\cs{cleartooddpage}\oarg{text}}%
+  {Flushes any pending floats to then start typesetting on the next odd page.
+   The optional \meta{text} is put on the skipped page (if there is one).}
+These macros are similar to the \verb?\...evenpage? ones except that they jump
+to the next odd numbered page.
+
+    A likely example for the optional \meta{text} argument is
+\begin{lcode}
+\cleartooddpage[\vspace*{\vfill}THIS PAGE LEFT BLANK\vspace*{\vfill}]
+\end{lcode}
+which will put `THIS PAGE LEFT BLANK' in the centre of any
+potential skipped (empty) even numbered page.
+
+\begin{syntax}
+\cmd{\cleartorecto} \cmd{\cleartoverso} \\
+\end{syntax}
+\glossary(cleartorecto)%
+  {\cs{cleartorecto}}%
+  {Simpler form of \cs{cleartooddpage}.}
+\glossary(cleartoverso)%
+  {\cs{cleartoverso}}%
+  {Simpler form of \cs{cleartoevenpage}.}
+These are slightly simpler forms\footnote{Perhaps more robust.} of
+\cmd{\cleartooddpage} and \cmd{\cleartoevenpage}. For example, if you wanted
+the \toc\ to start on a verso page, like in 
+\btitle{The TeXbook} \cite{TEXBOOK}, then do this:
+\begin{lcode}
+\cleartoverso
+\tableofcontents
+\end{lcode}
+
+\section{Number formatting}
+
+    Several methods are provided for formatting numbers\index{number}. 
+Two classes of number representations\indextwo{number}{representation} 
+are catered for. 
+A `numeric number'\indextwo{numeric}{number} is typeset using arabic 
+digits and a `named number'\indextwo{named}{number} is typeset using
+words.
+
+    The argument to the number formatting macros is a `number'\index{number}, 
+essentially something that resolves to a series of arabic digits. Typical
+arguments might be:
+\begin{itemize}
+\item Some digits, e.g., \verb?\ordinal{123} ->? 
+      \ordinal{123} 
+\item A macro expanding to digits, e.g., \verb?\def\temp{3}\ordinal{\temp} ->? 
+      \begingroup\def\temp{3}\ordinal{\temp}\endgroup % \\
+
+%      Or even, for example, \verb?\ordinal{\pageref{chap:numf}} ->? 
+%      \ordinal{\pageref{chap:numf}}
+\item The value of a counter, e.g., \verb?\ordinal{\value{page}} ->? 
+      \ordinal{\value{page}} 
+\item The arabic representation of a counter, e.g., \verb?\ordinal{\thepage} ->? 
+      \ordinal{\thepage} 
+
+However, if the representation of a counter is not completely in arabic 
+digits, such as \verb?\thesection? which here prints as \thesection, it will 
+produce odd errors or peculiar results if it is used as the argument.
+For instance: \\
+\verb?\ordinal{\thesection} ->? \ordinal{\thesection}
+
+\end{itemize}
+
+\subsection{Numeric numbers}
+\indextwo{numeric}{number}
+
+\begin{syntax}
+\cmd{\cardinal}\marg{number} \\
+\cmd{\fcardinal}\marg{number} \\
+\cmd{\fnumbersep} \\
+\end{syntax}
+\glossary(cardinal)%
+  {\cs{cardinal}\marg{number}}%
+  {Typesets \marg{number} as a cardinal number.}
+\glossary(fcardinal)%
+  {\cs{fcardinal}\marg{number}}%
+  {Typesets \marg{number} as a cardinal number, with \cs{fnumbersep} between
+   each triple of digits.}
+\glossary(fnumbersep)%
+  {\cs{fnumbersep}}%
+  {Separator between digit triples in numbers.}
+The macro \cmd{\fcardinal} prints its \meta{number} argument formatted using
+\cmd{\fnumbersep} between each triple of digits. The default definition
+of \cmd{\fnumbersep} is:
+\begin{lcode}
+\newcommand{\fnumbersep}{,}
+\end{lcode}
+
+    Here are some examples: \\
+\verb?\fcardinal{12} ->? \fcardinal{12} \\
+\verb?\fcardinal{1234} ->? \fcardinal{1234} \\
+\verb?\fcardinal{1234567} ->? \fcardinal{1234567} \\
+\verb?\renewcommand*{\fnumbersep}{\:}\fcardinal{12345678} ->?
+  \renewcommand*{\fnumbersep}{\:}\fcardinal{12345678} \\
+\verb?\renewcommand*{\fnumbersep}{,\:}?
+\renewcommand*{\fnumbersep}{,\:}
+
+    The \cmd{\cardinal} macro is like \cmd{\fcardinal} except that there
+is no separation between any of the digits.
+
+\begin{syntax}
+\cmd{\ordinal}\marg{number} \\
+\cmd{\fordinal}\marg{number} \\
+\cmd{\ordscript}\marg{chars} \\
+\end{syntax}
+\glossary(ordinal)%
+  {\cs{ordinal}\marg{number}}%
+  {Typesets \marg{number} as an ordinal number.}
+\glossary(fordinal)%
+  {\cs{fordinal}\marg{number}}%
+  {Typesets \marg{number} as an ordinal number, with \cs{fnumbersep} between
+   each triple of digits.}
+\glossary(ordscript)%
+  {\cs{ordscript}\marg{chars}}%
+  {Typesets the ordinal characters \meta{chars}.}
+
+The \cmd{\fordinal} macro typesets its \meta{number} argument as a formatted
+ordinal, using \cmd{\fnumbersep} as the separator. The macro \cmd{\ordinal}
+is similar except that there is no separation between any of the digits.
+
+    Some examples are: \\
+\verb?\fordinal{3} ->? \fordinal{3} \\
+\verb?\fordinal{12341} ->? \fordinal{12341} \\
+\verb?\renewcommand{\ordscript}[1]{\textsuperscript{#1}}? \\
+\verb?\fordinal{1234567} ->?
+  \renewcommand{\ordscript}[1]{\textsuperscript{#1}}\fordinal{1234567} \\
+\verb?\ordinal{1234567} ->? \ordinal{1234567} \\
+\verb?This is the \ordinal{\value{chapter}} chapter. ->? 
+  This is the \ordinal{\value{chapter}} chapter.
+
+
+    The characters denoting the ordinal (ordination?) are typeset as 
+the argument of \cmd{\ordscript}, whose default definition is:
+\begin{lcode}
+\newcommand{\ordscript}[1]{#1}
+\end{lcode}
+As the above examples show, this can be changed to give a different
+appearance.
+
+\begin{syntax}
+\cmd{\nthstring} \cmd{\iststring} \cmd{\iindstring} \cmd{\iiirdstring} \\
+\end{syntax}
+\glossary(nthstring)%
+  {\cs{nthstring}}%
+  {Ordinal characters for `th', e.g., as in 6th.}
+\glossary(iststring)%
+  {\cs{iststring}}%
+  {Ordinal characters for `st', e.g., as in 1st.}
+\glossary(iindstring)%
+  {\cs{iindstring}}%
+  {Ordinal characters for `nd', e.g., as in 2nd.}
+\glossary(iiirdstring)%
+  {\cs{iiirdstring}}%
+  {Ordinal characters for `rd', e.g., as in 3rd.}
+The ordinal characters are the values of the macros \cmd{\nthstring}
+(default: th) for most ordinals, \cmd{\iststring} (default: st) for
+ordinals ending in 1 like \ordinal{21}, \cmd{\iindstring} (default: nd)
+for ordinals like \ordinal{22}, and \cmd{\iiirdstring} (default: rd)
+for ordinals like \ordinal{23}.
+
+
+\subsection{Named numbers}
+\indextwo{named}{number}
+
+
+\begin{syntax}
+\cmd{\numtoname}\marg{number} \\
+\cmd{\numtoName}\marg{number} \\
+\cmd{\NumToName}\marg{number} \\
+\end{syntax}
+\glossary(numtoname)%
+  {\cs{numtoname}\marg{number}}%
+  {Typesets \meta{number} as a cardinal using lowercase words.}
+\glossary(numtoName)%
+  {\cs{numtoName}\marg{number}}%
+  {Typesets \meta{number} as a cardinal using lowercase words, but uppercase for the initial
+   letter of the first word.}
+\glossary(NumtoName)%
+  {\cs{NumtoName}\marg{number}}%
+  {Typesets \meta{number} as a cardinal using lowercase words, but uppercase for the initial
+   letter of each word.}
+The macro \cmd{\numtoname} typesets its \meta{number} argument using 
+lowercase words. The other two macros are similar, except that 
+\cmd{\numtoName} uses uppercase for the initial letter of the first word and
+\cmd{\NumToName} uses uppercase for the initial letters of all the words.
+
+    As examples: \\
+\verb?\numtoname{12345} ->? \numtoname{12345} \\
+\verb?\numtoName{12345} ->? \numtoName{12345} \\
+\verb?\NumToName{12345} ->? \NumToName{12345} \\
+\begin{egsource}{eg:minnum}
+The minimum number in TeX is \numtoname{-2147483647}
+(i.e., \fcardinal{-2147483647})
+\end{egsource}
+\begin{egresult}[\tx's minimum number in words (English style)]{eg:minnum}
+  The minimum number in TeX is \numtoname{-2147483647} 
+  (i.e., \fcardinal{-2147483647})
+\end{egresult}
+
+\begin{syntax}
+\cmd{\ordinaltoname}\marg{number} \\
+\cmd{\ordinaltoName}\marg{number} \\
+\cmd{\OrdinalToName}\marg{number} \\
+\end{syntax}
+\glossary(ordinaltoname)%
+  {\cs{ordinaltoname}\marg{number}}%
+  {Typeset \meta{number} as an ordinal using lowercase words.}
+\glossary(ordinaltoName)%
+  {\cs{ordinaltoName}\marg{number}}%
+  {Typeset \meta{number} as an ordinal using lowercase words, but uppercase the
+   initial letter of the first word.}
+\glossary(OrdinaltoName)%
+  {\cs{OrdinaltoName}\marg{number}}%
+  {Typeset \meta{number} as an ordinal using lowercase words, but uppercase the
+   initial letter of each word.}
+These three macros are similar to \cmd{\numtoname}, etc., except that they
+typeset the argument as a wordy ordinal.
+
+    For example: \\
+\verb?This is the \ordinaltoname{\value{chapter}} chapter. ->? 
+  This is the \ordinaltoname{\value{chapter}} chapter.
+
+\begin{syntax}
+\cmd{\namenumberand} \cmd{\namenumbercomma} \cmd{\tensunitsep} \\
+\end{syntax}
+\glossary(namenumberand)%
+  {\cs{namenumberand}}%
+  {The conjunction in named numbers, default ` and '.}
+\glossary(namenumbercomma)%
+  {\cs{namenumbercomma}}%
+  {The `comma' in named numbers, default `, '.}
+\glossary(tensunitsep)%
+  {\cs{tensunitsep}}%
+  {The separator/conjoiner between tens and units in named numbers, default `-'.}
+By default some punctuation and conjunctions are used in the representation
+of named numbers. According to both American and English practice, a hyphen
+should be inserted between a `tens' name (e.g., fifty) and a following 
+unit name (e.g., two). This is represented by the value of \cmd{\tensunitsep}.
+English practice, but not American, is to include commas (the value of
+\cmd{\namenumbercomma}) and conjunctions (the value of \cmd{\namenumberand})
+in strategic positions in the typesetting. These macros are initially
+defined as:
+\begin{lcode}
+\newcommand*{\namenumberand}{ and }
+\newcommand*{\namenumbercomma}{, }
+\newcommand*{\tensunitsep}{-}
+\end{lcode}
+The next example shows how to achieve American typesetting.
+\begin{egsource}{eg:maxnum}
+\renewcommand*{\namenumberand}{ }
+\renewcommand*{\namenumbercomma}{ }
+The maximum number in TeX is \numtoname{2147483647} 
+(i.e., \cardinal{2147483647}).
+\end{egsource}
+\begin{egresult}[\tx's maximum number in words (American style)]{eg:maxnum}
+\renewcommand*{\namenumberand}{ }\renewcommand*{\namenumbercomma}{ }%
+The maximum number in TeX is \numtoname{2147483647} 
+(i.e., \cardinal{2147483647}). 
+\end{egresult}
+\renewcommand*{\namenumberand}{ and }
+\renewcommand*{\namenumbercomma}{, }
+
+\begin{syntax}
+\cmd{\minusname} \cmd{\lcminusname} \cmd{\ucminusname} \\
+\end{syntax}
+\glossary(minusname)%
+  {\cs{minusname}}%
+  {Typeset for `minus' before negative named numbers.}
+\glossary(lcminusname)%
+  {\cs{lcminusname}}%
+  {Lowercase `minus' name, default `minus'.}
+\glossary(ucminusname)%
+  {\cs{ucminusname}}%
+  {Lowercase `minus' name with initial uppercase letter, default `Minus'.}
+    When a named number is negative, \cmd{\minusname} is put before the
+spelled out number. The definitions of the above three comands are:
+\begin{lcode}
+\newcommand*{\lcminusname}{minus }
+\newcommand*{\ucminusname}{Minus }
+\let\minusname\lcminusname
+\end{lcode}
+which means that `minus' is normally all lowercase. To get `minus'
+typeset with an initial uppercase letter simply:
+\begin{lcode}
+\let\minusname\ucminusname
+\end{lcode}
+
+    Only one version of \cmd{\namenumberand} is supplied as I consider that
+it is unlikely that `and' would ever be typeset as `And'. If the initial
+uppercase is required, renew the macro when appropriate.
+
+    There is a group of macros that hold the names for the numbers. To
+typeset named numbers in a language other than English these will have to be
+changed as appropriate. You can find them in the class and patch code. 
+The actual picking and ordering of the names is done by an internal macro
+called \cmd{\n@me@number}. If the ordering is not appropriate for a
+particular language, that is the macro to peruse and modify. Be prepared,
+though, for the default definitions to be changed in a later release in case
+there is a more efficient way of implementing their functions.
+
+    If you want to express numbers that fall outside \tx's range, Edward
+Reingold has produced a set of macros that can write out in words any number
+within the range $-10^{66} to 10^{66}$, that is, up to a thousand 
+vigintillion~\cite{REINGOLD07}.
+
+\subsection{Fractions}
+
+    When typesetting a simple fraction in text there is usually a choice
+of two styles, like 3/4 or $\frac{3}{4}$, which do not necessarily look 
+as though they fit in with their surroundings. These fractions were
+typeset via:
+\begin{lcode}
+... like 3/4 or $\frac{3}{4}$ ...
+\end{lcode}
+
+\begin{syntax}
+\cmd{\slashfrac}\marg{top}\marg{bottom} \\
+\cmd{\slashfracstyle}\marg{num} \\
+\end{syntax}
+\glossary(slashfrac)%
+  {\cs{slashfrac}\marg{top}\marg{bottom}}%
+  {Typesets like \slashfrac{3}{4}, using the \cs{slashfracstyle} font.}
+\glossary(slashfracstyle)%
+  {\cs{slashfracstyle}\marg{num}}%
+  {Typesets \meta{num} in a particular (font, size) style.}
+The class provides the \cmd{\slashfrac} command which typesets its
+arguments like \slashfrac{3}{4}. Unlike the \cmd{\frac} command which
+can only be used in math mode, the \cmd{\slashfrac} command can be
+used in text and math modes.
+
+    The \cmd{\slashfrac} macro calls the \cmd{\slashfracstyle} command to
+reduce the size of the numbers in the fraction. You can also use
+\cmd{\slashfracstyle} by itself.
+\begin{egsource}{eg:fractions}
+In summary, fractions can be typeset like 3/4 or $\frac{3}{4}$
+or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
+are provided.
+\end{egsource}
+\begin{egresult}[Varieties of fractions in text]{eg:fractions}
+In summary, fractions can be typeset like 3/4 or $\frac{3}{4}$
+or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
+are provided.
+\end{egresult}
+
+\begin{syntax}
+\cmd{\textsuperscript}\marg{super} \\
+\cmd{\textsubscript}\marg{sub} \\
+\end{syntax}
+\glossary(textsuperscript)%
+  {\cs{textsuperscript}\marg{super}}%
+  {Typesets \meta{super} as a superscript.}
+\glossary(textsubscript)%
+  {\cs{textsubscript}\marg{sub}}%
+  {Typesets \meta{sub} as a subscript.}
+While on the subject of moving numbers up and down, the kernel provides
+the \cmd{\textsuperscript} macro for typesetting its argument as though it
+is a superscript. The class also provides the \cmd{\textsubscript} macro
+for typesetting its argument like a subscript.
+
+\begin{egsource}{eg:textsupsub}
+In normal text you can typeset superscripts like H\textsuperscript{+} and 
+subscripts like H\textsubscript{2}O without going into math mode.
+\end{egsource}
+\begin{egresult}[Super- and subscripts in text]{eg:textsupsub}
+In normal text you can typeset superscripts like H\textsuperscript{+} and 
+subscripts like H\textsubscript{2}O without going into math mode.
+\end{egresult}
+
+\section{An array data structure}
+
+   The class includes some macros for supporting the \Ie{patverse}
+environment which may be more generally useful. 
+
+\begin{syntax}
+\cmd{\newarray}\marg{arrayname}\marg{low}\marg{high} \\
+\end{syntax}
+\glossary(newarray)%
+  {\cs{newarray}\marg{arrayname}\marg{low}\marg{high}}%
+  {Defines a new indexed array datastructure called \meta{arrayname}
+  with the (integer) index ranging from \meta{low} to \meta{high}.}
+ 
+\cmd{\newarray} defines
+the \meta{arrayname} array, where \meta{arrayname} is a name like
+\texttt{MyArray}. The lowest and highest array indices are set to
+\meta{low} and \meta{high} respectively, where both are integer numbers.
+
+\begin{syntax}
+\cmd{\setarrayelement}\marg{arrayname}\marg{index}\marg{text} \\
+\cmd{\getarrayelement}\marg{arrayname}\marg{index}\marg{result} \\
+\end{syntax}
+\glossary(setarrayelement)%
+  {\cs{setarrayelement}\marg{arrayname}\marg{index}\marg{text}}%
+  {Makes \meta{text} the contents of the \marg{index} location in 
+   array \meta{arrayname}.}
+\glossary(getarrayelement)%
+  {\cs{getarrayelement}\marg{arrayname}\marg{index}\marg{result}}%
+  {Sets the parameterless macro \meta{result} to the contents of 
+   the \marg{index} location in array \meta{arrayname}.}
+
+The \cmd{\setarrayelement} macro
+sets the \meta{index} location in the \meta{arrayname} array to be 
+\meta{text}. Conversely, \cmd{\getarrayelement} sets the parameterless
+macro \meta{result} to the contents of
+the \meta{index} location in the \meta{arrayname} array. 
+For example: 
+\begin{lcode}
+\setarrayelement{MyArray}{23}{$2^{23}$}
+\getarrayelement{MyArray}{23}{\result}
+\end{lcode}
+will result in \verb?\result? being defined as \verb?\def\result{$2^{23}$}?.
+
+\begin{syntax}
+\cmd{\checkarrayindex}\marg{arrayname}\marg{index} \\
+\piif{ifbounderror} \\
+\end{syntax}
+\glossary(checkarrayindex)%
+  {\cs{checkarrayindex}\marg{arrayname}\marg{index}}%
+  {Checks if \meta{index} is a valid index value for the array 
+   \meta{arrayname}. Sets \cs{ifbounderror} \ptrue\ if there is a problemn
+   otherwise \pfalse.}
+\cmd{\checkarrayindex} checks if
+\meta{arrayname} is an array and if \meta{index} is a valid index for
+the array. If both conditions hold then \piif{ifbounderror} is set
+\pfalse, but if either \meta{arrayname} is not an array or, if it is,
+\meta{index} is out of range then \piif{ifbounderror} is set \ptrue.
+
+\begin{syntax}
+\cmd{\stringtoarray}\marg{arrayname}\marg{string} \\
+\cmd{\arraytostring}\marg{arrayname}\marg{result} \\
+\end{syntax}
+\glossary(stringtoarray)%
+  {\cs{stringtoarray}\marg{arrayname}\marg{string}}%
+  {Puts each character from \meta{string} sequentially into array 
+   \meta{arrayname}, starting at index 1.}
+\glossary(arraytostring)%
+  {\cs{arraytostring}\marg{arrayname}\marg{result}}%
+  {Defines the macro \meta{result} to be the sequence of characters
+   in the array \meta{arrayname}.}
+The macro \cmd{\stringtoarray} puts each character
+from \meta{string} sequentially into the \meta{arrayname} array, starting
+at index 1.
+The macro \cmd{\arraytostring} assumes
+that \meta{arrayname} is an array of characters, and defines the macro
+\meta{result} to be that sequence of characters. For example: \\
+\begin{lcode}
+\stringtoarray{MyArray}{Chars}
+\arraytostring{MyArray}{\MyString}
+\end{lcode}
+is equivalent to 
+\begin{lcode}
+\def\MyString{Chars}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\checkifinteger}\marg{num} \\
+\piif{ifinteger} \\
+\end{syntax}
+\glossary(checkifinteger)%
+  {\cs{checkifinteger}\marg{num}}%
+  {If \meta{num} is an integer and not less than zero, sets \cs{ifinteger}
+   \ptrue, otherwise \pfalse.}
+The command \cmd{\checkifinteger} ckecks if \meta{num} is an integer 
+(not less than zero). If it is then \piif{ifinteger} is set \ptrue, 
+otherwise it is set \pfalse.
+
+
+\section{Checking the processor}
+
+\subsection{Checking for pdfLaTeX}
+
+    Both \ltx\ and \pixpdfltx\ can be run on the same document. \ltx\ produces
+a \file{.dvi} file as output, while \pixpdfltx\ can produce either a
+\file{.dvi} or a \file{.pdf} file. 
+    On modern systems \pixpdfltx\ produces a \file{pdf} file by default.
+
+If you want a \file{dvi} file output use \ltx\ and if you want a
+\file{pdf} file use \pdfltx.
+
+\begin{syntax}
+\piif{ifpdf} ... \verb?\fi? \\
+\end{syntax}
+The class provides \piif{ifpdf} which is \ptrue\ when the document is
+being processed by \pixpdfltx\ and \pfalse\ otherwise. You can use it like this:
+\begin{lcode}
+\ifpdf
+  code for pdfLaTeX only 
+\else
+  code for LaTeX only
+\fi
+\end{lcode}
+If there is no \ltx\ specific code then don't write the \verb?\else? part.
+
+\subsection{Checking for etex}
+
+    Modern \ltx\ distributions use \pixetx, which is an extended version
+of \tx, as the underlying engine. \pixetx\ provides some more primitives
+than \tx, which may be useful, but not everybody has \pixetx\ available.
+
+\begin{syntax}
+\piif{ifetex} \\
+\end{syntax}
+\glossary(ifetex)%
+  {\cs{ifetex}}%
+  {\ptrue\ if \etx\ is the underlying engine, otherwise \pfalse.}
+\piif{ifetex} can be used to determine if \pixetx\ is being used as the
+underlying engine; it is analagous to \piif{ifpdf} which tests for
+\pixpdfltx. For example:
+\begin{lcode}
+\ifetex
+  %%% code only processible by etex
+\else
+  \typeout{etex is not available}
+\fi
+\end{lcode}
+
+
+\subsection{Checking for XeTeX}
+
+    You have been able to use \cs{ifpdf} to check if \pixpdfltx\ is being used 
+to process the document.
+
+\begin{syntax}
+\piif{ifxetex} \\
+\end{syntax}
+\glossary(ifxetex)%
+  {\cs{ifxetex}}%
+  {\ptrue\ if \xetx\ is being used to process the document.}
+
+In a similar manner you can use \piif{ifxetex} to check if the document
+is being processed by \pixxetx.
+
+\begin{syntax}
+\cmd{\RequireXeTeX} \\
+\end{syntax}
+\glossary(RequireXeTeX)%
+  {\cs{RequireXeTeX}}%
+  {Generates an error if the document is not being processed by \xetx.}
+The class also provides \cmd{\RequireXeTeX}, which generates an error if
+\pixxetx\ is not being used to process the document.
+
+
+\section{Leading}
+
+    LaTeX automatically uses different leading\index{leading} for different
+font sizes. 
+\begin{syntax}
+\lnc{\baselineskip} \lnc{\onelineskip} \\
+\end{syntax}
+\glossary(onelineskip)%
+  {\ls{onelineskip}}%
+  {Distance between baselines of the document's main font and size.}
+
+At any point in a document the standard LaTeX \lnc{\baselineskip} length
+contains the current value of the leading\footnote{This statement ignores
+any attempts to stretch the baseline.}. The class provides the length
+\lnc{\onelineskip} which contains the initial leading for the normal
+font. This value is useful if you are wanting to specify length values
+in terms of numbers of lines of text.
+
+\section{Minor space adjustment}
+
+    The kernel provides the \cmd{\,} macro for inserting a thin space in both
+text and math mode. There are
+other space adjustment commands, such as \pixabang\ for negative thin space, 
+and \cmd{\:} and \cmd{\;} for medium
+and thick spaces, which can only be used in math mode.
+
+\begin{syntax}
+\cmd{\thinspace} \cmd{\medspace} \cmd{\:} \pixabang \\
+\end{syntax}
+\glossary(thinspace)%
+  {\cs{thinspace}}%
+  {A thin space (3/18 em).}
+\glossary(medspace)%
+  {\cs{medspace}}%
+  {A medium space (4/18 em).}
+\glossary(:)%
+  {\cs{:}}%
+  {A medium space (4/18 em).}
+\glossary(!)%
+  {\cs{!}}%
+  {A negative thin space (-3/18 em).}
+On occasions I have found it useful to be able to tweak spaces in text by some
+fixed amount, just as in math mode. The kernel macro \cmd{\thinspace}
+specifies a thin space, which is 3/18\,em. 
+The class \cmd{\medspace} specifies a medium space of 4/18\,em. 
+As mentioned, the kernel macro \cmd{\:} inserts
+a medium space in math mode. The class version can be used in both math and
+text mode to insert a medium space. Similarly, the class version of 
+\pixabang{}
+can be used to insert a negative thin space in both text and math mode.
+
+    The math thick space is 5/18\,em. 
+To specify this amount of space
+in text mode you can combine spacing commands as:
+\begin{lcode}
+\:\:\!
+\end{lcode}
+which will result in an overall space of 5/18\,em 
+(from $(4 + 4 - 3)/18$).
+
+\begin{comment}
+\section{Cross references}\label{sec:xrefthis}  \label{sec:xref}
+
+    LaTeX supplies the \cmd{\ref} and \cmd{\pageref} commands for cross
+referencing to a label or a page which has a label on it.
+
+\begin{syntax}
+\cmd{\fref}\marg{label} \cmd{\figurerefname} \\
+\cmd{\tref}\marg{label} \cmd{\tablerefname} \\
+\cmd{\pref}\marg{label} \cmd{\pagerefname} \\
+\end{syntax}
+ 
+    The class provides these more particular named references to a figure\index{figure!reference},
+table\index{table!reference} or page\index{page!reference}. For example the default definitions of \cmd{\fref} and 
+\cmd{\pref} are
+\begin{lcode}
+\newcommand{\fref}[1]{\figurerefname~\ref{#1}}
+\newcommand{\pref}[1]{\pagerefname~\pageref{#1}}
+\end{lcode}
+and can be used as 
+\begin{lcode}
+\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}.
+\end{lcode}
+which in this document prints as: 
+\begin{syntax}
+\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}. \\
+\end{syntax}
+
+\begin{syntax}
+\cmd{\Pref}\marg{label} \cmd{\partrefname} \\
+\cmd{\Cref}\marg{label} \cmd{\chapterrefname} \\
+\cmd{\Sref}\marg{label} \cmd{\sectionrefname} \\
+\end{syntax}
+
+    Also provided are named references to labelled 
+Part (\cmd{\Pref}), 
+Chapter (\cmd{\Cref}) and 
+sectional (\cmd{\Sref}) divisions.
+These are all defined like
+\begin{lcode}
+\newcommand{\Sref}[1]{\sectionrefname\ref{#1}}
+\end{lcode}
+with no tie between the name and the \cmd{\ref}. 
+
+    In this document
+\begin{lcode}
+`In \Cref{chap:misc} there is a section 
+(\Sref{sec:xrefthis}) about cross references.' 
+\end{lcode}
+is typeset as: 
+\begin{syntax}
+`In \Cref{chap:misc} there is a section 
+(\Sref{sec:xrefthis}) about cross references.' \\
+\end{syntax}
+ 
+    It can be useful to refer to parts of a document by name rather than
+number, as in
+\begin{lcode}
+The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
+\end{lcode}
+The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
+
+    There are two packages, \Lpack{nameref}~\cite{NAMEREF} and 
+\Lpack{titleref}~\cite{TITLEREF},
+ that let you refer to things by name instead of number.
+
+    Name references were added to the class as a consequence of adding
+a second optional argument to the sectioning commands. I found
+that this broke the \Lpack{nameref} package, and hence the
+\Lpack{hyperref} package as well, so they had to be fixed. The change 
+also broke Donald Arseneau's \Lpack{titleref} package, and it turned out
+that \Lpack{nameref} also clobbered \Lpack{titleref}. The class also
+provides titles, like \cmd{\poemtitle}, that are not recognised by
+either of the packages. From my viewpoint the most efficient
+thing to do was to enable the class itself to provide name 
+referencing.
+
+\begin{syntax}
+\cmd{\label}\marg{key} \cmd{\ref}\marg{key} \cmd{\pageref}\marg{key} \\
+\cmd{\titleref}\marg{key} \\
+\cmd{\headnamereftrue} \cmd{\headnamereffalse} \\
+\end{syntax}
+The macro \cmd{\titleref} is an addition to the usual set of cross referencing
+commands. Instead of typesetting a number it typesets the title associated
+with the labelled number. This is, of course, only useful if there is an
+associated title, such as from a \cmd{\caption} or \cmd{\section} command.
+As a bad example:
+\begin{lcode}
+Labelling for \verb?\titleref? may be applied to:
+\begin{enumerate}
+\item Chapters, sections, etc.       \label{sec:xref:item1}
+...
+\item Items in numbered lists, etc. \ldots \label{sec:xref:item3}
+\end{enumerate}
+Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
+while item \titleref{sec:xref:item3} in the same section 
+\textit{\titleref{sec:xref}} lists other things.
+\end{lcode}
+Labelling for \verb?\titleref? may be applied to:
+\begin{enumerate}
+\item Chapters, sections, etc.       \label{sec:xref:item1}
+\item Captions                       \label{sec:xref:item2}
+\item Legends
+\item Poem titles
+\item Items in numbered lists, etc.  \label{sec:xref:item3}
+\end{enumerate}
+Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
+while item \titleref{sec:xref:item3} in the same section 
+\textit{\titleref{sec:xref}} lists other things.
+
+
+    As the above example shows, you have to be a little careful in using
+\cmd{\titleref}.
+Generally speaking, \cmd{\titleref}\marg{key} produces the last named 
+thing before the \cmd{\label} that defines the \meta{key}. 
+
+    Chapters, and the lower level sectional divisions, may have three
+different title texts --- the main title, the title in the ToC, and a third
+in the page header. By default (\cmd{\headnamereffalse}) the ToC title
+is produced by \cmd{\titleref}. Following the declaration
+\cmd{\headnamereftrue} the text intended for page headers will be produced.
+
+\Note{} Specifically with the \Lclass{memoir} class, 
+do not put a \cmd{\label} command inside an
+argument to a \cmd{\chapter} or \cmd{\section} or \cmd{\caption}, etc.,
+command. Most likely it will either be ignored or referencing it will
+produce incorrect values. This restriction does not apply to the standard
+classes, but in any case I think it is good practice not to embed any 
+\cmd{\label} commands.
+
+\begin{syntax}
+\cmd{\currenttitle} \\
+\end{syntax}
+    If you just want to refer to the current title you can do so with
+\cmd{\currenttitle}. This acts as though there had been a label associated
+with the title and then \cmd{\titleref} had been used to refer to that label.
+For example:
+\begin{lcode}
+This sentence in the section titled `\currenttitle' is an example of the
+use of the command \verb?\currenttitle?.
+\end{lcode}
+This sentence in the section titled `\currenttitle' is an example of the
+use of the command \verb?\currenttitle?.
+
+
+\begin{syntax}
+\cmd{\theTitleReference}\marg{num}\marg{text} \\
+\end{syntax}
+Both \cmd{\titleref} and \cmd{\currenttitle} use the \cmd{\theTitleReference}
+to typeset the title. This is called with two arguments --- 
+the number, \meta{num}, and the text, \meta{text}, of the title. The
+default definition is:
+\begin{lcode}
+\newcommand{\theTitleReference}[2]{#2}
+\end{lcode}
+so that only the \meta{text} argument is printed. You could, for example,
+change the definition to
+\begin{lcode}
+\renewcommand{\theTitleReference}[2]{#1\space \textit{#2}}
+\end{lcode}
+to print the number followed by the title in italics. If you do this, only use
+\cmd{\titleref} for numbered titles, as a printed number for an 
+unnumbered title (a) makes no sense, and (b) will in any case be 
+incorrect.
+
+    The commands \cmd{\titleref}, \cmd{\theTitleReference} and 
+\cmd{\currenttitle} are direct equivalents of those in the \Lpack{titleref}
+package~\cite{TITLEREF}.
+
+\begin{syntax}
+\cmd{\namerefon} \cmd{\namerefoff} \\
+\end{syntax}
+   Implementing name referencing has had an unfortunate side effect of
+turning some arguments into moving ones; the argument to the \cmd{\legend}
+command is one example. If you don't need name referencing you can turn
+it off by the \cmd{\namerefoff} declaration; the \cmd{\namerefon}
+declaration enables name referencing.
+
+\end{comment}
+
+\section{Adding a period}
+
+    Much earlier, when showing the code for the sectional division styles
+for this document, I used the macro \cmd{\addperiod}.
+
+\begin{syntax}
+\cmd{\addperiod}\marg{text} \\
+\end{syntax}
+This puts a period (a full stop) at the end of \meta{text}. I used it to
+add a period at the end of the \cmd{\paragraph} and \cmd{\subparagaph} titles.
+When sectional titles, like \cmd{\paragraph} are run-in, it is customary to
+end them with a period (or occasionally a colon).
+
+
+
+\section{Words and phrases}
+
+    The class provides several macros that expand into English words or 
+phrases. To typeset in another language these need to be changed, or an
+author or publisher may want some changes made to the English versions. 
+Table~\ref{tab:defwordsphrases} lists the macros, their default values, 
+and where they used.
+\begin{comment}
+\begin{itemize}
+\item[\cmd{\abstractname}]     \abstractname\ --- title for \Ie{abstract} environment
+\item[\cmd{\alsoname}]         \alsoname\ --- used by \cmd{\seealso}
+\item[\cmd{\amname}]           \amname\ --- used in printing time of day
+\item[\cmd{\appendixname}]     \appendixname\--- name for an appendix heading
+\item[\cmd{\appendixpagename}] \appendixpagename\ --- name for an \cmd{\appendixpage}
+\item[\cmd{\appendixtocname}]  \appendixtocname\ --- ToC entry announcing appendices
+\item[\cmd{\bibname}]          \bibname\ --- title for \cmd{\thebibliography} title
+\item[\cmd{\bookname}]         \bookname\ --- name for \cmd{\book} heading
+\item[\cmd{\bookrefname}]      \bookrefname\ --- used by \cmd{\Bref}
+     (defined as \verb?\newcommand{\bookrefname}{Book~}?)
+
+\item[\cmd{\chaptername}]      \chaptername\ --- name for \cmd{chapter} heading
+\item[\cmd{\chapterrefname}]   \chapterrefname\ --- used by \cmd{\Cref}
+     (defined as \verb?\newcommand{\chapterrefname}{Chapter~}?)
+\item[\cmd{\contentsname}]     \contentsname\ --- title for \cmd{\tableofcontents}
+
+\item[\cmd{\figurename}]       \figurename\ --- name for figure \cmd{\caption}
+\item[\cmd{\figurerefname}]    \figurerefname\ --- used by \cmd{\fref}
+
+\item[\cmd{\glossaryname}]     Glossary --- title for \cmd{\theglossary}
+
+\item[\cmd{\indexname}]        \indexname\ --- title for \cmd{\theindex}
+
+\item[\cmd{\lcminusname}]      \lcminusname\ --- used in named number formatting
+\item[\cmd{\listfigurename}]   \listfigurename\ --- title for \cmd{\listoffigugres}
+\item[\cmd{\listtablename}]    \listtablename\ --- title for \cmd{\listoftables}
+
+\item[\cmd{\minusname}]        \minusname\ --- used in named number formatting
+
+\item[\cmd{\namenumberand}]    \namenumberand\ --- used in named number formatting
+\item[\cmd{\namenumbercomma}]  \namenumbercomma\ --- used in named number formatting
+\item[\cmd{\notesname}]        \notesname\ --- title of \cmd{\notedivision}
+
+\item[\cmd{\pagename}]         \pagename\ --- for your use
+\item[\cmd{\pagerefname}]      \pagerefname\ --- used by \cmd{\pref}
+\item[\cmd{\partname}]         \partname\ --- name for \cmd{\part} heading
+\item[\cmd{\partrefname}]      \partrefname\ --- used by \cmd{\Pref}
+     (defined as \verb?\newcommand{\partrefname}{Part~}?)
+\item[\cmd{\pmnane}]           \pmname\ --- used in printing time of day
+
+\item[\cmd{\sectionrefname}]   \sectionrefname\ --- used by \cmd{\Sref}
+     (defined as \verb?\newcommand{\sectionrefname}{\S}?)
+\item[\cmd{\seename}]          \seename\ --- used by \cmd{\see}
+
+\item[\cmd{\tablename}]        \tablename\ --- name for table \cmd{\caption}
+\item[\cmd{\tablerefname}]     \tablerefname\ --- used by \cmd{\tref}
+
+\item[\cmd{\ucminusname}]      \ucminusname\ --- used in named number formatting
+
+\end{itemize}
+\end{comment}
+
+\begin{table}
+\centering
+\caption{Defined words and phrases}\label{tab:defwordsphrases}
+\begin{tabular}{lll}\toprule
+Macro & Default & Useage \\ \midrule
+\cmd{\abstractname}     & \abstractname\     & title for \Ie{abstract} environment \\
+\cmd{\alsoname}         & \alsoname\         & used by \cmd{\seealso} \\
+\cmd{\amname}           & \amname\           & used in printing time of day \\
+\cmd{\appendixname}     & \appendixname\     & name for an appendix heading \\
+\cmd{\appendixpagename} & \appendixpagename\ & name for an \cmd{\appendixpage} \\
+\cmd{\appendixtocname}  & \appendixtocname\  & ToC entry announcing appendices \\
+\cmd{\bibname}          & \bibname\          & title for \cmd{\thebibliography} \\
+\cmd{\bookname}         & \bookname\         & name for \cmd{\book} heading \\
+\cmd{\bookrefname}      & \bookrefname\      & used by \cmd{\Bref} \\
+\cmd{\chaptername}      & \chaptername\      & name for \cmd{\chapter} heading \\
+\cmd{\chapterrefname}   & \chapterrefname\   & used by \cmd{\Cref} \\
+\cmd{\contentsname}     & \contentsname\     & title for \cmd{\tableofcontents} \\
+\cmd{\figurename}       & \figurename\       & name for figure \cmd{\caption} \\
+\cmd{\figurerefname}    & \figurerefname\    & used by \cmd{\fref} \\
+\cmd{\glossaryname}     & Glossary           & title for \cmd{\theglossary} \\
+\cmd{\indexname}        & \indexname\        & title for \cmd{\theindex} \\
+\cmd{\lcminusname}      & \lcminusname\      & used in named number formatting \\
+\cmd{\listfigurename}   & \listfigurename\   & title for \cmd{\listoffigugres} \\
+\cmd{\listtablename}    & \listtablename\    & title for \cmd{\listoftables} \\
+\cmd{\minusname}        & \minusname\        & used in named number formatting \\
+\cmd{\namenumberand}    & \namenumberand\    & used in named number formatting \\
+\cmd{\namenumbercomma}  & \namenumbercomma\  & used in named number formatting \\
+\cmd{\notesname}        & \notesname\        & title of \cmd{\notedivision} \\
+\cmd{\pagename}         & \pagename\         & for your use \\
+\cmd{\pagerefname}      & \pagerefname\      & used by \cmd{\pref} \\
+\cmd{\partname}         & \partname\         & name for \cmd{\part} heading \\
+\cmd{\partrefname}      & \partrefname\      & used by \cmd{\Pref} \\
+\cmd{\pmnane}           & \pmname\           & used in printing time of day \\
+\cmd{\sectionrefname}   & \sectionrefname\   & used by \cmd{\Sref} \\
+\cmd{\seename}          & \seename\          & used by \cmd{\see} \\
+\cmd{\tablename}        & \tablename\        & name for table \cmd{\caption} \\
+\cmd{\tablerefname}     & \tablerefname\     & used by \cmd{\tref} \\
+\cmd{\ucminusname}      & \ucminusname\      & used in named number formatting \\
+\bottomrule
+\end{tabular}
+\end{table}
+
+Most, if not all, of the tabulated definitions are simple --- for example
+\begin{lcode}
+\newcommand*{\partname}{Part}
+\newcommand*{\partrefname}{Part~}
+\end{lcode} 
+and so can be also changed simply.
+
+ The definitions of the macros for the names of numbers are more complex 
+--- for example for the number 11 (eleven) 
+\begin{lcode}
+\newcommand*{\nNamexi}{\iflowertonumname e\else E\fi leven}
+\end{lcode}
+That is, each definition includes both a lowercase and an uppercase initial
+letter, so a bit more care has to be taken when changing these. For specifics
+read the documentation of the class code.
+
+\section{Symbols}
+
+    LaTeX lets you typeset an enormous variety of symbols.\index{symbol}
+The class adds
+nothing to the standard LaTeX capabilities in this respect.
+If you want to see what symbols are available then get a copy
+of Scott Pakin's 
+\textit{The Comprehensive LaTeX Symbol List}~\cite{SYMBOLS}.
+You may have to do a little experimentation to get what you want, though.
+
+    For example, the \cmd{\texttrademark} command 
+produces the trademark\index{trademark} symbol\texttrademark,
+but the \cmd{\textregistered} command produces\textregistered.
+When I wanted to use the registered trademark\index{registered trademark}
+ symbol it needed to be 
+typeset like a superscript
+instead of on the baseline. The \cmd{\textsuperscipt} macro typesets
+its argument like a superscript\index{superscript}, so using
+\begin{lcode}
+\textsuperscript{\textregistered}
+\end{lcode}
+gave the required result\textsuperscript{\textregistered}.
+
+
+
+
+\subsection{Two simple macros}
+
+    There are two trivial macros that can be generally useful.
+\begin{syntax}
+\cmd{\memjustarg}\marg{text} \\
+\cmd{\memgobble}\marg{text} \\
+\end{syntax}
+\glossary(memjustarg)%
+  {\cs{memjustarg}\marg{text}}%
+  {Definition is just \meta{text}. Do \emph{not} redefine it.}%
+\glossary(memgobble)%
+  {\cs{memgobble}\marg{text}}%
+  {Gobbles its argument. Do \emph{not} redefine it.}%
+
+    The \cmd{\memjustarg} macro just uses its argument and is defined as:
+\begin{lcode}
+\newcommand*{\memjustarg}[1]{#1}
+\end{lcode}
+
+  The \cmd{\memgobble} macro gobbles down and swallows its argument. 
+Its definition is:
+\begin{lcode}
+\newcommand{\memgobble}[1]{}
+\end{lcode}
+
+    Do \emph{not} redefine either \cmd{\memjustarg} or \cmd{\memgobble}; if
+you do various pieces of code will behave in unexpected ways that you
+will not like.
+
+\subsection{Vertical centering}
+
+\indextwo{vertical}{centering}
+    Earlier there was a description of a method for centering text vertically.
+The \Ie{vplace} environment provides a simpler and more general way.
+\begin{syntax}
+\senv{vplace}\oarg{num} text \eenv{vplace} \\
+\end{syntax}
+\glossary(vplace)%
+  {\senv{vplace}\oarg{num}}%
+  {The contents of this environment are centered vertically. The optional
+  \meta{num} argument can be used to specify the ratio of the upper space 
+   to the lower space.}%
+
+    The contents of the \Ie{vplace} environment are vertically centered. 
+The optional \meta{num} argument can be used to specify the ratio of the 
+upper space to the lower space. You can put other text on the page above
+or below the centered text. The environment may be useful for 
+title pages\index{title page}.
+
+\section{For package writers}
+
+    The facilities described in this section are for anyone to use but
+I suspect that they may be most useful to package developers.
+
+\subsection{Emulating packages}
+
+\begin{syntax}
+\cmd{\EmulatedPackage}\marg{package}\oarg{date} \\
+\cmd{\EmulatedPackageWithOptions}\marg{optionlist}\marg{package}\oarg{date} \\
+\end{syntax}
+\glossary(EmulatedPackage)%
+  {\cs{EmulatedPackage}\marg{package}\oarg{date}}%
+  {Claim that the \meta{package} package has been loaded.}%
+\glossary(EmulatedPackageWithOptions)%
+  {\cs{EmulatedPackageWithOptions}\marg{optionlist}\marg{package}\oarg{date}}%
+  {Claim that the \meta{package} package has been loaded with options
+  \meta{optionlist}.}%
+These commands are for package writers; they are based on a conversation with
+Donald Arseneau\index{Arseneau, Donald} on \ctt. They fool \ltx\ into 
+thinking that the \meta{package} has already been loaded so it won't
+try loading it again. These are probably only useful if your
+package includes the actual code for \meta{package}. 
+
+\Mname\ does include code from several packages and uses
+a similar internal command to ensure that the packages are not
+loaded following some later \cmd{\usepackage} command. The names of the
+emulated packages are written to the \ixfile{log} file. At the time
+of writing the emulated packages are:
+\Lpack{abstract}, \Lpack{appendix}, \Lpack{array}, \Lpack{booktabs}, 
+\Lpack{ccaption}, \Lpack{chngcntr}, \Lpack{crop}, \Lpack{dcolumn}, 
+\Lpack{delarray}, \Lpack{enumerate}, \Lpack{epigraph}, %%%%%% \Lpack{framed}, 
+\Lpack{ifmtarg}, \Lpack{ifpdf}, \Lpack{index}, \Lpack{makeidx}, 
+\Lpack{moreverb}, \Lpack{needspace}, \Lpack{newfile}, \Lpack{nextpage}, 
+\Lpack{pagenote}, \Lpack{patchcmd}, \Lpack{parskip}, \Lpack{setspace}, \Lpack{shortvrb}, \Lpack{showidx}, 
+\Lpack{tabularx}, \Lpack{titleref}, \Lpack{tocbibind}, \Lpack{tocloft}, 
+\Lpack{verbatim}, 
+and
+\Lpack{verse}.
+As well as the emulated packages \Mname\ provides functions 
+equivalent to those in the following packages, although the class does not 
+prevent you from using them:
+\Lpack{fancyhdr}, \Lpack{framed}, \Lpack{geometry}, \Lpack{sidecap}, 
+\Lpack{subfigure}, and \Lpack{titlesec}.
+
+
+\begin{syntax}
+\cmd{\DisemulatePackage}\marg{package} \\
+\end{syntax}
+\glossary(DisemulatePackage)%
+  {\cs{DisemulatePackage}\marg{package}}%
+  {Undo a previous \cs{EmulatedPackage} or \cs{EmulatedPackageWithOptions}
+   for the \meta{package} package.}%
+This command undoes any prior \cmd{\EmulatedPackage} or
+\cmd{\EmulatedPackageWithOptions} for the \meta{package} package. For example,
+if you wish to use the \Lpack{index} package instead of \Mname's
+emulation then put
+\begin{lcode}
+\DisemulatePackage{index}
+\usepackage{index}
+\end{lcode}
+in your preamble.
+
+
+
+\subsection{Inserting code before and after a file, package or class}
+
+    The kernel provides two commands, \cmd{\AtBeginDocument}
+and \cmd{\AtEndDocument} which can only be used in the preamble, 
+for inserting code at the start and end
+of the \Ie{document} environment. 
+
+    The kernel also provides the macros 
+\cmd{\AtEndOfPackage}\marg{code} and \cmd{\AtEndOfClass}\marg{code}
+ for inserting code at the end of the current package or class. More precisely,
+these macros call the \meta{code} after the package or class file has been
+input via \cmd{\InputIfFileExists}.
+
+The class provides a more comprensive set of macros for code 
+insertions, which should be used before the relevant file is called for.
+
+\begin{syntax}
+\cmd{\AtBeginFile}\marg{file}\marg{code} \\
+\cmd{\AtEndFile}\marg{file}\marg{code} \\
+\end{syntax}
+\glossary(AtBeginFile)%
+  {\cs{AtBeginFile}\marg{file}\marg{code}}%
+  {Inserts \meta{code} just before the \meta{file} is input 
+   (or included, etc.).}%
+\glossary(AtEndFile)%
+  {\cs{AtEndFile}\marg{file}\marg{code}}%
+  {Inserts \meta{code} just after the \meta{file} is input 
+   (or included, etc.).}%
+The \cmd{\AtBeginFile} macro inserts \meta{code} just before the \meta{file}
+file is \cmd{\input} (or \cmd{\include}d, etc.). Similarly
+\cmd{\AtEndFile} inserts the \meta{code} immediately after the 
+\meta{file}. The \meta{file} argument must be the same as used in the
+corresponding \cmd{\input} command. If \meta{file} includes an 
+extension, for example \texttt{fred.def}, then that is taken as 
+the complete name, otherwise if there is no extension, 
+for instance \texttt{fred}, then the \texttt{.tex} extension is 
+automatically appended making the full name \texttt{fred.tex}.
+
+    The \cs{At...File} commands 
+must be issued \emph{before} the corresponding \meta{file} is input 
+otherwise nothing will happen.
+
+\begin{syntax}
+\cmd{\AtBeginPackage}\marg{pack}\marg{code} \\
+\cmd{\AtEndPackage}\marg{pack}\marg{code} \\
+\cmd{\RequireAtEndPackage}\marg{pack}\marg{code} \\
+\end{syntax}
+\glossary(AtBeginPackage)%
+  {\cs{AtBeginPackage}\marg{pack}\marg{code}}%
+  {Inserts \meta{code} just before the \meta{pack} package is used.}%
+\glossary(AtEndPackage)%
+  {\cs{AtEndPackage}\marg{pack}\marg{code}}%
+  {Inserts \meta{code} just after the \meta{pack} package is used.}%
+\glossary(RequireAtEndPackage)%
+  {\cs{RequireAtEndPackage}\marg{pack}\marg{code}}%
+  {Inserts \meta{code} just after the \meta{pack} package is used,
+  or immediately if \meta{pack} has already been used.}%
+The \cmd{\AtBeginPackage} command will insert \meta{code} just before the 
+\meta{pack} package is used. Similarly
+\cmd{\AtEndPackage} will insert the \meta{code} immediately after the 
+\meta{pack}. The \meta{pack} argument must be the same as used in the
+corresponding \cmd{\usepackage} command, that is, without any 
+extension. The \cs{At...Package} commands 
+must be issued \emph{before} the corresponding \meta{pack} is used
+otherwise nothing will happen.
+
+    The \cmd{\RequireAtEndPackage} command will, 
+like \cmd{\AtEndPackage}, insert \meta{code} 
+at the end of the \meta{pack} package if it has not yet been used.
+If the package has already been used then the \meta{code} is 
+called immediately.
+
+
+\begin{syntax}
+\cmd{\AtBeginClass}\marg{class}\marg{code} \\
+\cmd{\AtEndClass}\marg{class}\marg{code} \\
+\cmd{\RequireAtEndClass}\marg{class}\marg{code} \\
+\end{syntax}
+\glossary(AtBeginClass)%
+  {\cs{AtBeginClass}\marg{pack}\marg{code}}%
+  {Inserts \meta{code} just before the \meta{class} class is used.}%
+\glossary(AtEndClass)%
+  {\cs{AtEndClass}\marg{class}\marg{code}}%
+  {Inserts \meta{code} just after the \meta{class} class is used.}%
+\glossary(RequireAtEndClass)%
+  {\cs{RequireAtEndClass}\marg{class}\marg{code}}%
+  {Inserts \meta{code} just after the \meta{class} class is used,
+  or immediately if \meta{class} has already been used.}%
+The \cmd{\AtBeginClass} command will insert \meta{code} just before the 
+\meta{class} class is used. Similarly
+\cmd{\AtEndClass} will insert the \meta{code} immediately after the 
+\meta{class}. The \meta{class} argument must be the same as used in the
+corresponding \cmd{\LoadClass} command, that is, without any 
+extension. The \cs{At...Class} commands 
+must be issued \emph{before} the corresponding \meta{class} is used
+otherwise nothing will happen.
+
+    The \cmd{\RequireAtEndClass} command will, 
+like \cmd{\AtEndClass}, insert \meta{code} 
+at the end of the \meta{class} class if it has not yet been used.
+If the class has already been used then the \meta{code} is 
+called immediately.
+
+    There is an unfortunate interaction between the kernel's 
+\cmd{\AtEndOfPackage} and the class's \cmd{\AtEndPackage}, and similarly
+for the \cmd{\AtEndOfClass} and \cmd{\AtEndClass}. I discovered this when
+I tried to automate using the \Lpack{memhfixc} package if \Lpack{hyperref}
+was being used by putting the following into the \Pclass{memoir} code
+\begin{lcode}
+\AtEndPackage{hyperref}{\usepackage{memhfixc}}
+\end{lcode}
+which caused all sorts of problems.
+
+    The kernel scheme scheme looks like this:
+\begin{lcode}
+\newcommand{\usepackage}[1]{%
+  ...
+  \InputIfFileExists{#1}
+<AtEndOfPackage code>}
+\end{lcode}
+
+    The basic mechanism for implementing the class macros is by modifying
+the kernel's \cmd{\InputIfFileExists} macro, which internally uses a form of
+\cs{input} to read in the file, so that the inserted \meta{code} comes 
+immediately before and after the \cs{input}, somewhat like:
+\begin{lcode}
+\renewcommand{\InputIfFileExists}[1]{%
+  ...
+  <before code> \input{#1} <after code>}
+\end{lcode}
+
+    If \cmd{\AtEndPackage} is applied to a package that has an internal
+\cmd{\AtEndOfPackage} then the result can be sketched as:
+\begin{lcode}
+\newcommand{\usepackage}[1]{%
+  ...
+  <before code>
+  \input{#1}
+  <after code>
+  <AtEndOfPackage code>
+}
+\end{lcode}
+In other words the body of the package is read in, the \cmd{\AtEndPackage} code
+is called, and then \emph{after} that the \cmd{\AtEndOfPackage} code is called.
+
+    The \Lpack{hyperref} package internally uses \cmd{\AtEndOfPackage} to read
+some files and \Lpack{memhfixc} had to be input after these. A way to automate
+\Lpack{memhfixc} after \Lpack{hyperref} is:
+\begin{lcode}
+\AtEndPackage{hyperref}{%
+  \AtBeginDocument{\usepackage{memhfixc}}}
+\end{lcode}
+but this seems more trouble than it's worth especially since 
+Heiko\index{Oberdiek, Heiko} Oberdiek has kindly updated \Lpack{hyperref} 
+so that versions after 2006/11/15  will automatically load the 
+\Lpack{memhfixc} package.
+
+
+
+\renewcommand{\memsecinfo}[5]{\edef\Margi{#1}\edef\Margii{#2}%
+                              \edef\Margiii{#3}\edef\Margiv{#4}%
+                              \edef\Margv{#5}}
+\section{Heading hooks}
+
+    On 2nd September 2005 I posted two messages to the 
+\texttt{comp.text.tex} newsgroup
+saying that I was creating a new version of \Pclass{memoir} and
+that I would consider inserting hooks into the class code
+that package writers
+might find useful. I got no requests for any hooks or anything
+else from package writers. I therefore assume that no package
+author sees any problems if a \Pclass{memoir} class document 
+author uses the package.
+
+    However, I have provided macros that that may be useful for those 
+who want to do things with the contents of section headings, 
+captions, and the like. The macros are called within the 
+relevant heading or caption code, and by default are defined 
+to do nothing.
+
+    Hooks for the \cmd{\book} and \cmd{\book*} commands.
+\begin{syntax}
+\cmd{\membookinfo}\marg{thebook}\marg{fortoc}\marg{title} \\
+\cmd{\membookstarinfo}\marg{title} \\
+\end{syntax}
+\glossary(membookinfo)%
+  {\cs{membookinfo}\marg{thebook}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{book}}%
+\glossary(membookstarinfo)%
+  {\cs{membookstarinfo}\marg{title}}%
+  {Code hook into \cs{book*}}%
+
+
+    Hooks for the \cmd{\part} and \cmd{\part*} commands.
+\begin{syntax}
+\cmd{\mempartinfo}\marg{thepart}\marg{fortoc}\marg{title} \\
+\cmd{\mempartstarinfo}\marg{title} \\
+\end{syntax}
+\glossary(mempartinfo)%
+  {\cs{mempartinfo}\marg{thepart}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{part}}%
+\glossary(mempartstarinfo)%
+  {\cs{mempartstarinfo}\marg{title}}%
+  {Code hook into \cs{part*}}%
+
+   In many cases a \verb?\mem...info? macro includes an argument
+related to the heading's number (\meta{thepart} for \cmd{\mempartinfo}). In certain circumstances, such as a \cmd{\chapter} in the
+\cmd{\frontmatter}, there might not be a number even though the
+normal unstarred version of the command is used. In these cases
+the number argument (\meta{thechapter} in the case of
+\cmd{\memchapinfo}) is left empty.
+
+Hooks for the \cmd{\chapter} and \cmd{\chapter*} commands. Note
+that regular chapters and those as appendices are treated 
+differently.
+\begin{syntax}
+\cmd{\memchapinfo}\marg{thechapter}\marg{fortoc}\marg{forhead}\marg{title} \\
+\cmd{\memchapstarinfo}\marg{fortoc}\marg{title} \\
+\cmd{\memappchapinfo}\marg{thechapter}\marg{fortoc}\marg{forhead}\marg{title} \\
+\cmd{\memappchapstarinfo}\marg{fortoc}\marg{title} \\
+\end{syntax}
+\glossary(memchapinfo)%
+  {\cs{memchapinfo}\marg{thechapter}\marg{fortoc}\marg{forhead}\marg{title}}%
+  {Code hook into \cs{chapter}}%
+\glossary(memchapstarinfo)%
+  {\cs{memchapstarinfo}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{chapter*}}%
+\glossary(memappchapinfo)%
+  {\cs{memappchapinfo}\marg{thechapter}\marg{fortoc}\marg{forhead}\marg{title}}%
+  {Code hook into an appendix \cs{chapter}}%
+\glossary(memappchapstarinfo)%
+  {\cs{memappchapstarinfo}\marg{fortoc}\marg{title}}%
+  {Code hook into an appendix \cs{chapter*}}%
+
+Hooks for \cmd{\section}, \cmd{\subsection}, etc., and their
+starred versions. \meta{name} is the type of section (e.g.,
+\texttt{section}, or \texttt{subsection}, or 
+\texttt{subsubsection} or \ldots
+\begin{syntax}
+\cmd{\memsecinfo}\marg{name}\marg{thename}\marg{fortoc}\marg{forhead}\marg{title} \\
+\cmd{\memsecstarinfo}\marg{name}\marg{title} \\
+\end{syntax}
+\glossary(memsecinfo)%
+  {\cs{memsecinfo}\marg{name}\marg{thename}\marg{fortoc}\marg{forhead}\marg{title}}%
+  {Code hook into the \cs{name} section command}%
+\glossary(memsecstarinfo)%
+  {\cs{memsecstarinfo}\marg{name}\marg{title}}%
+  {Code hook into the \cs{name*} section command}%
+
+Hooks for appendix-like page headings.
+\begin{syntax}
+\cmd{\memapppageinfo}\marg{title} \\
+\cmd{\memapppagestarinfo}\marg{title} \\
+\cmd{\memleadpageinfo}\marg{pstyle}\marg{cmdname}\marg{title} \\
+\cmd{\memleadpagestarinfo}\marg{pstyle}\marg{cmdname}\marg{title} \\
+\end{syntax}
+\glossary(memapppageinfo)%
+  {\cs{memapppageinfo}\marg{title}}%
+  {Code hook into \cs{appendixpage}.}%
+\glossary(memapppagestarinfo)%
+  {\cs{memapppagestarinfo}\marg{title}}%
+  {Code hook into \cs{appendixpage*}.}%
+\glossary(memleadpageinfo)%
+  {\cs{memleadpageinfo}\marg{pstyle}\marg{cmdname}\marg{title}}%
+  {Code hook into \cs{newleadpage} and \cs{renewleadpage}.}%
+\glossary(memleadpagestarinfo)%
+  {\cs{memleadpageinfo}\marg{pstyle}\marg{cmdname}\marg{title}}%
+  {Code hook into \cs{newleadpage*} and \cs{renewleadpage*}.}%
+
+Hooks for \cmd{\poemtitle}, \cmd{\PoemTitle}, and their 
+starred versions.
+\begin{syntax}
+\cmd{\mempoeminfo}\marg{title} \\
+\cmd{\mempoemstarinfo}\marg{title} \\
+\cmd{\memPoemTitleinfo}\marg{thepoem}\marg{fortoc}\marg{forhead}\marg{title} \\
+\cmd{\memPoemTitlestarinfo}\marg{fortoc}\marg{title} \\
+\end{syntax}
+\glossary(mempoeminfo)%
+  {\cs{mempoeminfo}\marg{title}}%
+  {Code hook into \cs{poemtitle}}%
+\glossary(mempoemstarinfo)%
+  {\cs{mempoemstarinfo}\marg{title}}%
+  {Code hook into \cs{poemtitle*}}%
+\glossary(memPoemTitleinfo)%
+  {\cs{memPoemTitleinfo}\marg{thepoem}\marg{fortoc}\marg{forhead}\marg{title}}%
+  {Code hook into \cs{PoemTitle}}%
+\glossary(memPoemTitlestarinfo)%
+  {\cs{memPoemTitlestarinfo}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{PoemTitle*}}%
+
+Hooks for the several kinds of \cmd{\caption} and \cmd{\legend}
+commands.
+\begin{syntax}
+\cmd{\memcaptioninfo}\marg{type}\marg{thetype}\marg{fortoc}\marg{title} \\
+\cmd{\memlegendinfo}\marg{title} \\
+\cmd{\memnamedlegendinfo}\marg{fortoc}\marg{title} \\
+\cmd{\membitwonumcaptioninfo}\marg{type}\marg{thetype}\marg{fortoc1}\marg{title1} \\
+\hspace*{1.8in} \marg{name2}\marg{fortoc2}\marg{title2} \\
+\cmd{\membionenumcaptioninfo}\marg{type}\marg{thetype}\marg{fortoc1}\marg{title1} \\ 
+\hspace*{1.8in} \marg{name2}\marg{fortoc2}\marg{title2} \\
+\cmd{\membicaptioninfo}\marg{type}\marg{thetype}\marg{fortoc1}\marg{title1}\marg{name2}\marg{title2} \\
+\end{syntax}
+\glossary(memcaptioninfo)%
+  {\cs{memcaptioninfo}\marg{type}\marg{thetype}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{caption}}%
+\glossary(memlegendinfo)%
+  {\cs{memlegendinfo}\marg{title}}%
+  {Code hook into \cs{legend}}%
+\glossary(memnamedlegendinfo)%
+  {\cs{memnamedlegendinfo}\marg{fortoc}\marg{title}}%
+  {Code hook into \cs{namedlegend}}%
+\glossary(membitwonumcaptioninfo)%
+  {\cs{membitwonumcaptioninfo}\marg{type} \marg{thetype} \marg{fortoc1} 
+   \marg{title1} \marg{name2} \marg{fortoc2} \marg{title2}}%
+  {Code hook into \cs{membitwonumcaption}.}%
+\glossary(membionenumcaptioninfo)%
+  {\cs{membionenumcaptioninfo}\marg{type} \marg{thetype} \marg{fortoc1}
+   \marg{title1} \marg{name2} \marg{fortoc2} \marg{title2}}%
+  {Code hook into \cs{membionenumcaption}.}%
+\glossary(membicaptioninfo)%
+  {\cs{membicaptioninfo}\marg{type} \marg{thetype} \marg{fortoc1} 
+   \marg{title1} \marg{name2} \marg{title2}}%
+  {Code hook into \cs{membicaption}.}%
+
+
+    As an example of how one of these macros might be used, 
+just before the start of this section I put
+\begin{lcode}
+\renewcommand{\memsecinfo}[5]{\edef\Margi{#1}\edef\Margii{#2}%
+                              \edef\Margiii{#3}\edef\Margiv{#4}%
+                              \edef\Margv{#5}}
+\end{lcode}
+and now I'm putting
+\begin{lcode}
+The arguments are: (1) `\Margi', (2) `\Margii', (3) `\Margiii', 
+                   (4) `\Margiv', (5) `\Margv'.
+\end{lcode}
+The arguments are: (1) `\Margi', (2) `\Margii', (3) `\Margiii', 
+                   (4) `\Margiv', (5) `\Margv'.
+  
+\subsection{Documenting \ltx\ commands}
+
+    The class provides a few macros to help you if you want to describe
+\ltx\ commands.
+
+\begin{syntax}
+\cmd{\bs} \cmd{\cs}\marg{name} \cmd{\cmdprint}\marg{cmd} \cmd{\cmd}\marg{cmd} \\
+\end{syntax}
+\glossary(bs)%
+  {\cs{bs}}%
+  {prints \bs.}
+\glossary(cs)%
+  {\cs{cs}\marg{name}}%
+  {prints \cs{name}.}
+\glossary(cmdprint)%
+  {\cs{cmdprint}\marg{cmd}}%
+  {where \meta{cmd} is a macro name like \cs{cmd}, prints \cs{cmd}.}
+\glossary(cmd)%
+  {\cs{cmd}\marg{cmd}}%
+  {where \meta{cmd} is a macro name like \cs{cmd}, prints and indexes \cs{cmd}.}
+
+The macro \cs{bs} simply prints the `\bs' backslash.
+
+The macro \cs{cs} prints its argument, putting a backslash in front of it. For
+example \verb?\cs{name}? prints \cs{name}.
+
+The argument to \cs{cmdprint} should be the name of a macro, including the 
+backslash. It is then printed as is. For instance \verb?\cmdprint{\amacro}?
+prints \cmdprint{\amacro}.
+
+The argument to \cs{cmd} should be the name of a macro, including the 
+backslash. It is then printed, using \cs{cmdprint}, and also added to the 
+index file with the assumption that \verb!?! will be used as the `actual' 
+character (the default is \verb!@! which is not of much use if you are trying
+to index macro names that have \verb!@! as part of their names).
+
+\begin{syntax}
+\cmd{\meta}\marg{arg} \cmd{\marg}\marg{arg} \cmd{\oarg}\marg{arg} \cmd{\parg}\marg{arg} \\
+\end{syntax}
+\glossary(meta)%
+  {\cs{meta}\marg{arg}}%
+  {prints \meta{arg}.}
+\glossary(marg)%
+  {\cs{marg}\marg{arg}}%
+  {prints \marg{arg}.}
+\glossary(oarg)%
+  {\cs{oarg}\marg{arg}}%
+  {prints \oarg{arg}.}
+\glossary(parg)%
+  {\cs{parg}\marg{arg}}%
+  {prints \parg{arg}.}
+
+The macro \cs{meta}\marg{arg} prints \meta{arg} for an argument to a macro.
+
+The macro \cs{marg}\marg{arg} prints \marg{arg} for a required argument.
+
+The macro \cs{oarg}\marg{arg} prints \oarg{arg} for an optional argument.
+
+The macro \cs{parg}\marg{arg} prints \parg{arg} for a parenthesized argument.
+
+
+
+\clearpage
+
+\makeatletter
+\begin{comment}
+%% Bringhurst chapter style
+\makechapterstyle{bringhurst}{%
+  \renewcommand{\chapterheadstart}{}
+  \renewcommand{\printchaptername}{}
+  \renewcommand{\chapternamenum}{}
+  \renewcommand{\printchapternum}{}
+  \renewcommand{\afterchapternum}{}
+  \renewcommand{\printchaptertitle}[1]{%
+    \raggedright\Large\scshape\MakeLowercase{##1}}
+  \renewcommand{\afterchaptertitle}{%
+    \vskip\onelineskip \hrule\vskip\onelineskip}
+}
+\end{comment}
+
+\setsecheadstyle{\raggedright\scshape\MakeLowercase}
+  \setbeforesecskip{-\onelineskip}
+  \setaftersecskip{\onelineskip}
+
+%%\setsubsecheadstyle{\renewcommmand\@hangfrom[1]{\noindent ##1}\raggedright\itshape}
+\setsubsecheadstyle{\sethangfrom{\noindent ##1}\raggedright\itshape}
+  \setbeforesubsecskip{-\onelineskip}
+  \setaftersubsecskip{\onelineskip}
+
+%% Bringhurst page style
+\makepagestyle{bringhurst}
+\makeevenfoot{bringhurst}{\thepage}{}{}
+\makeoddfoot{bringhurst}{}{}{\thepage}
+\setlength{\pwlayi}{\headsep} % \verb?\setlength{\pwlayi}{\headsep}? headsep=\printlength{\headsep}, pwlayi = \printlength{\pwlayi}.
+\addtolength{\pwlayi}{\topskip} % \verb?\addtolength{\pwlayi}{\topskip}? topskip=\printlength{\topskip}, pwlayi=\printlength{\pwlayi}.
+\addtolength{\pwlayi}{7.3\onelineskip} % \verb?\addtolength{\pwlayi}{7.3\onelineskip}? onelineskip=\printlength{\onelineskip}, pwlayi=\printlength{\pwlayi}.
+\newcommand{\bringpicr}[1]{%
+  \setlength{\unitlength}{1pt}
+  \begin{picture}(0,0)
+    \put(\strip@pt\marginparsep, -\strip@pt\pwlayi){%
+      \begin{minipage}[t]{\marginparwidth}
+         \raggedright\itshape #1
+      \end{minipage}}
+  \end{picture}
+}
+
+\setlength{\pwlayii}{\marginparsep} % \verb?\setlength{\pwlayii}{\marginparsep}? marginparsep=\printlength{\marginparsep}, pwlayii=\printlength{\pwlayii}.
+\addtolength{\pwlayii}{\marginparwidth} % \verb?\addtolength{\pwlayii}{\marginparwidth}?  marginparwidth=\printlength{\marginparwidth}, pwlayii=\printlength{\pwlayii}.
+\newcommand{\bringpicl}[1]{%
+  \setlength{\unitlength}{1pt}
+  \begin{picture}(0,0)
+    \put(-\strip@pt\pwlayii, -\strip@pt\pwlayi){%
+      \begin{minipage}[t]{\marginparwidth}
+        \raggedleft\itshape #1
+      \end{minipage}}
+  \end{picture}
+}
+
+\makepsmarks{bringhurst}{%
+  \def\chaptermark##1{\markboth{##1}{##1}}
+  \def\sectionmark##1{\markright{##1}}
+}
+\makeevenhead{bringhurst}{\bringpicl{\rightmark}}{}{}
+\makeoddhead{bringhurst}{}{}{\bringpicr{\leftmark}}
+
+
+\renewcommand{\cftchapterfont}{\normalfont}
+\renewcommand{\cftchapterpagefont}{\normalfont}
+\renewcommand{\cftchapterpresnum}{\bfseries}
+\renewcommand{\cftchapterleader}{}
+\renewcommand{\cftchapterafterpnum}{\cftparfillskip}
+%%%\settocdepth{chapter}
+
+\makeatother
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\cleardoublepage
+\pagestyle{bringhurst}
+%%%\chapterstyle{bringhurst}
+\headstyles{bringhurst}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{An example design} \label{chap:bringhurst}
+
+%unitlength=\printlength{\unitlength}, \\
+%pwlayi=\printlength{\pwlayi}, \\
+%pwlayii=\printlength{\pwlayii}.
+
+\section{Introduction}
+
+    In this chapter I will work through a reasonably complete design
+exercise. Rather than trying to invent something myself I am taking the design
+of Bringhurst's 
+\textit{The Elements of Typographic Style}~\cite{BRINGHURST99}
+as the basis of the
+exercise. This is sufficiently different from the normal LaTeX appearance
+to demonstrate most of the class capabilities, and also it is a design by
+a leading proponent of good typography.
+
+    As much as possible, this chapter is typeset according to the results
+of the exercise to provide both a coding and a graphic example.
+
+\section{Design requirements}
+
+    The \textit{Elements of Typographic Style} is typeset using 
+Minion\index{Minion} as the text font and Syntax\index{Syntax} (a sans font) 
+for the captions. The page layout has been
+shown diagramatically in \fref{fb:1} on \pref{fb:1}, but further details need
+to be described for those not fortunate enough to have a copy of their own.
+
+    The trimmed page size is 23 by 13.3cm. The foredge is 3.1cm and the
+top margin\index{margin!upper} is 1.9cm.
+
+    As already noted, the font for the main text is Minion\index{Minion}, 
+with 12pt leading
+on a 21pc measure with 42 lines per page. For the purposes of this exercise
+I will assume that Minion can be replaced by the font used for this
+manual. The captions to figures\index{figure} and tables\index{table} are 
+unnamed and 
+unnumbered and typeset in Syntax\index{Syntax}. The captions give the 
+appearance of being
+in a smaller font size than the main text, which is often the case. I'll
+assume that the \cmd{\small}\cmd{\sfseries} font will reasonably do for the
+captions. 
+
+    The footer\index{footer} is the same width as the 
+typeblock\index{typeblock} and the folio\index{folio} is placed 
+in the footer\index{footer} at the \foredge. There are two blank lines between 
+the bottom of the typeblock\index{typeblock} and the folio\index{folio}.
+
+    There is no header\index{header} in the usually accepted sense of the 
+term but the chapter title is put on recto pages and section titles are on 
+verso pages. The running titles are placed in the \foredge\ 
+margin\index{margin!foredge?\foredge} 
+level with the seventh line of the text in the typeblock\index{typeblock}. 
+The recto headers\index{header} are typeset raggedright
+and the verso ones raggedleft.
+
+Bringhurst also uses many marginal\index{marginalia} notes,
+their maximum width being about 51pt, and typeset raggedright in a smaller
+version of the textfont.
+
+    Chapter titles are in small caps, lowercase, in a larger font than for 
+the main text, and a rule is placed between the title and the 
+typeblock\index{typeblock}. The total vertical space used by a chapter 
+title is three text lines. Chapters are not numbered in the text but are 
+in the \toc.
+
+    Section titles are again in small caps, lowercase, in the same size as the
+text font. The titles are numbered, with both the chapter and section number.
+
+    A subsection title, which is the lowest subdivision in the book, is in
+the italic form of the textfont and is typeset as a numbered non-indented
+paragraph\index{paragraph}. These are usually multiline as Bringhurst 
+sometimes uses them like an enumerated list, so on occasion there is a 
+subsection title with no following text.
+
+    Only chapter titles are put into the \toc, and these are set raggedright 
+with the page numbers immediately after the titles. There is no \lof\ or
+\lot.
+
+    Note that unlike the normal \ltx\ use of fonts, essentially only three
+sizes of fonts are used --- the textfont size, one a bit larger for the
+chapter titles, and one a bit smaller for marginal\index{marginalia} notes 
+and captions. Also, bold fonts are not used except on special occasions, 
+such as when he is comparing font families and uses large bold
+versions to make the differences easier to see.
+
+\section{Specifying the page and typeblock}
+
+    The first and second things to do are to specify the sizes of the page
+after trimmming and the typeblock\index{typeblock}. The trimmed size is 
+easy as we have the dimensions.
+\begin{lcode}
+\settrimmedsize{23cm}{13.3cm}{*}
+\end{lcode}
+We want 42 lines of text, so that's what we set as the height of the 
+typeblock\index{typeblock}; however, we have to remember to ask for 
+\texttt{lines} as the optional \meta{algorithm} argument when we 
+finally call \cmd{\checkandfixthelayout}.
+\begin{lcode}
+\settypeblocksize{42\onelineskip}{21pc}{*}
+\end{lcode}
+
+    To make life easier, we'll do no trimming of the top of the 
+stock\index{stock}
+\begin{lcode}
+\setlength{\trimtop}{0pt}
+\end{lcode}
+but will trim the \foredge. The next set of calculations first sets the 
+value of the \lnc{\trimedge} to be the \lnc{\stockwidth}; subtracting the
+trimmed \lnc{\paperwidth} then results in \lnc{\trimedge} being the amount
+to trim off the foredge.
+\begin{lcode}
+\setlength{\trimedge}{\stockwidth}
+\addtolength{\trimedge}{-\paperwidth}
+\end{lcode}
+
+    The sizes of the trimmed page and the typeblock\index{typeblock} have 
+now been specified. The typeblock\index{typeblock} is now positioned on 
+the page. The sideways positioning is
+easy as we know the \foredge\ margin\index{margin!foredge!\foredge} 
+to be 3.1cm.
+\begin{lcode}
+\setlrmargins{*}{3.1cm}{*}
+\end{lcode}
+The top margin\index{margin!top} is specified as 1.9cm, which is very 
+close to 
+four and a half lines of text. Just in case someone might want to use a 
+different font size, I'll specify the top margin\index{margin!top} 
+so that it 
+is dependent on the font size. The
+\lnc{\footskip} can be specified now as well (it doesn't particularly matter
+what we do about the header-related lengths as there isn't anything above
+the typeblock\index{typeblock}).
+\begin{lcode}
+\setulmargins{4.5\onelineskip}{*}{*}
+\setheadfoot{\onelineskip}{3\onelineskip}
+\setheaderspaces{\onelineskip}{*}{*}
+\end{lcode}
+
+    Lastly define the dimensions for any marginal\index{marginalia} notes.
+\begin{lcode}
+\setmarginnotes{17pt}{51pt}{\onelineskip}
+\end{lcode}
+
+    If this was for real, the page layout would have to be checked and
+implemented.
+\begin{lcode}
+\checkandfixthelayout[lines]
+\end{lcode}
+
+    It is possible to implement this layout just for this chapter but
+I'm not going to tell you either how to do it, or demonstrate it. Except
+under exceptional circumstances it is not good to make such drastic changes
+to the page layout in the middle of a document. However, the picture on
+\pref{fig:bplayout} illustrates
+how this layout would look on US letterpaper\index{paper!size!letterpaper} 
+stock\index{stock}. Looking at the illustration suggests that the layout 
+would look rather odd unless the stock\index{stock} was trimmed down
+to the page size --- another reason for not switching the layout here.
+
+\begin{figure}
+\captiontitlefont{\small\sffamily}
+\captionstyle{\centerlastline}
+\setstocksize{11in}{8.5in}
+\settrimmedsize{23cm}{13.3cm}{*}
+\settypeblocksize{41\onelineskip}{21pc}{*}
+\setlength{\trimtop}{0pt}
+\setlength{\trimedge}{\stockwidth}
+\addtolength{\trimedge}{-\paperwidth}
+\setlrmargins{*}{3.1cm}{*}
+\setulmargins{4.5\onelineskip}{*}{*}
+\setheadfoot{\onelineskip}{3\onelineskip}
+\setheaderspaces{\onelineskip}{*}{*}
+\setmarginnotes{17pt}{51pt}{\onelineskip}
+\checkandfixthelayout
+\currentstock
+\oddpagelayouttrue
+\twocolumnlayoutfalse
+\drawmarginparstrue
+\drawparametersfalse
+\drawstock
+\legend{An illustration of Bringhurst's page layout style when printed
+on US letter paper stock. Also shown are the values used for the
+page layout parameters for this design.} \label{fig:bplayout}
+\end{figure}
+
+\section{Specifying the sectional titling styles}
+
+\subsection{The chapter style}
+
+    Recapping, chapter titles are in small caps, lowercase, in a larger 
+font than for the main text, and a rule is placed between the title and the 
+typeblock\index{typeblock}.
+The total vertical space used by a chapter title is three text lines.
+Chapters are not numbered in the text but are in the \toc.
+Titles in the \toc\ are in mixed case.
+
+    The definition of the chapterstyle is remarkably simple, as shown below.
+\begin{lcode}
+%% Bringhurst chapter style
+\makechapterstyle{bringhurst}{%
+  \renewcommand{\chapterheadstart}{}
+  \renewcommand{\printchaptername}{}
+  \renewcommand{\chapternamenum}{}
+  \renewcommand{\printchapternum}{}
+  \renewcommand{\afterchapternum}{}
+  \renewcommand{\printchaptertitle}[1]{%
+    \raggedright\Large\scshape\MakeLowercase{##1}}
+  \renewcommand{\afterchaptertitle}{%
+    \vskip\onelineskip \hrule\vskip\onelineskip}
+}
+\end{lcode}
+
+    Most of the specification consists of nulling the majority of the normal
+LaTeX specification, and modifying just two elements. 
+
+The chapter title (via \cmd{\printchaptertitle}) 
+is typeset raggedright using the \cmd{\Large} smallcaps fonts. The 
+\cmd{\MakeLowercase} macro is used to ensure that the entire title is 
+lowercase before typesetting it. Titles are input in mixed case.
+
+    After the title is typeset the \cmd{\afterchaptertitle} macro
+specifies that one line is skipped, a horizontal rule
+is drawn and then another line is skipped.
+
+\subsection{Lower level divisions}
+
+    Section titles are in small caps, lowercase, in the same size as the
+text font. The titles are numbered, with both the chapter and section number.
+
+The specification is:
+\begin{lcode}
+\setsecheadstyle{\raggedright\scshape\MakeLowercase}
+  \setbeforesecskip{-\onelineskip}
+  \setaftersecskip{\onelineskip}
+\end{lcode}
+
+    The macro \cmd{\setsecheadstyle} lowercases the title and typesets it
+small caps. 
+
+The default skips before and after titles are rubber lengths but this does
+not bode well if we are trying to line something up with a particular line
+of text --- the presence of section titles may make slight vertical 
+adjustments to the text lines because of the flexible spacing. So, we have
+to try and have fixed spacings.
+A single blank line is used before (\cmd{\setbeforesecskip)}
+and after (\cmd{\setaftersecskip}) the title text. 
+
+    A subsection title, which is the lowest subdivision in the book, is in
+the italic form of the textfont and is typeset as a numbered non-indented
+paragraph\index{paragraph}. The code for this is below.
+
+\begin{lcode}
+\setsubsecheadstyle{\sethangfrom{\noindent ##1}\raggedright\itshape}
+  \setbeforesubsecskip{-\onelineskip}
+  \setaftersubsecskip{\onelineskip}
+\end{lcode}
+
+    As in the redefinition of the \cmd{\section} style, there are fixed
+spaces before and after the title text. The title is typeset 
+(\cmd{\setsubsecheadstyle}) raggedright in a normal sized italic font.
+The macro \cmd{\sethangfrom} is used to to redefine the internal
+\cmd{\@hangfrom} macro so that the title and number are typeset as a block 
+paragraph\index{paragraph!block} instead of the default hanging 
+paragraph\index{paragraph!hanging} style. Note the use of
+the double \verb?##? mark for denoting the position of the argument to 
+\cmd{\@hangfrom}.
+
+\section{Specifying the pagestyle}
+
+    The pagestyle is perhaps the most interesting aspect of the exercise.
+Instead of the chapter and section titles being put at the top of the
+pages they are put in the margin\index{margin} starting about seven lines 
+below the top of the typeblock\index{typeblock}. The folios\index{folio} 
+are put at the bottom of the page aligned with the outside of the 
+typeblock\index{typeblock}.
+
+    As the folios\index{folio} are easy, we'll deal with those first.
+\begin{lcode}
+%% Bringhurst page style
+\makepagestyle{bringhurst}
+\makeevenfoot{bringhurst}{\thepage}{}{}
+\makeoddfoot{bringhurst}{}{}{\thepage}
+\end{lcode}
+
+    Putting text at a fixed point on a page is typically done by
+first putting the text into a zero width picture (which as far as LaTeX
+is concerned takes up zero space) and then placing the picture at the
+required point on the page. This can be done by hanging it from the
+header\index{header}.
+
+    We might as well treat the titles so that they will align with any 
+marginal\index{marginalia} notes, which are \lnc{\marginparsep} (17pt) 
+into the margin\index{margin} 
+and \lnc{\marginparwidth} (51pt) wide. Earlier in the manual I defined
+two lengths called \lnc{\pwlayi} and \lnc{\pwlayii} which are no longer used.
+I will use these as scratch lengths in 
+performing some of the necessary calculations.
+
+    For the recto page headers\index{header} the picture will be 
+the \meta{right} part of the header\index{header} and for the verso pages 
+the picture will be the \meta{left}
+part of the header\index{header}, all other parts being empty. 
+
+    For the picture on the \meta{right} the text must be 17pt to
+the right of the origin, and some distance below the origin.
+From some experiments, this distance turns out to be the \lnc{\headsep}
+plus the \cmd{\topskip} plus 7.3 lines, which is calculated as follows:
+\begin{lcode}
+\setlength{\pwlayi}{\headsep}
+\addtolength{\pwlayi}{\topskip}
+\addtolength{\pwlayi}{7.3\onelineskip}
+\end{lcode}
+
+    There is a nifty internal LaTeX macro called \cmd{\strip@pt} which you
+probably haven't heard about, and I have only recently come across. What it
+does is strip the `pt' from a following length, reducing it to a plain 
+real number. Remembering that the default \lnc{\unitlength} is 1pt we can
+do the following, while making sure that the current \lnc{\unitlength}
+\emph{is} 1pt:
+\begin{lcode}
+\makeatletter
+\newcommand{\bringpicr}[1]{%
+  \setlength{\unitlength}{1pt}
+  \begin{picture}(0,0)
+    \put(\strip@pt\marginparsep, -\strip@pt\pwlayi){%
+      \begin{minipage}[t]{\marginparwidth}
+        \raggedright\itshape #1
+      \end{minipage}}
+  \end{picture}
+}
+\makeatother
+\end{lcode}
+The new macro \cmd{\bringpicr}\marg{text} puts \meta{text} 
+into a \Ie{minipage} of width \lnc{\marginparwidth}, 
+typeset raggedright in an italic font, and puts the top
+left of the minipage at the position (\lnc{\marginparsep}, -\lnc{\pwlayi}) 
+in a zero width picture.
+
+    We need a different picture for the \meta{left} as the text needs to be
+typeset raggedleft with the right of the text 17pt from the left of the
+typeblock\index{typeblock}. I will use the length \lnc{\pwlayii} 
+to calculate the sum of \lnc{\marginparsep}
+and \lnc{\marginparwidth}. Hence:
+\begin{lcode}
+\makeatletter
+\setlength{\pwlayii}{\marginparsep}
+\addtolength{\pwlayii}{\marginparwidth}
+\newcommand{\bringpicl}[1]{%
+  \setlength{\unitlength}{1pt}
+  \begin{picture}(0,0)
+    \put(-\strip@pt\pwlayii, -\strip@pt\pwlayi){%
+      \begin{minipage}[t]{\marginparwidth}
+        \raggedleft\itshape #1
+      \end{minipage}}
+  \end{picture}
+}
+\makeatother
+\end{lcode}
+The new macro \cmd{\bringpicl}\marg{text} puts \meta{text} 
+into a \Ie{minipage} of width \lnc{\marginparwidth}, 
+typeset raggedleft in an italic font, and puts the top
+left of the minipage at the position 
+(-(\lnc{\marginparsep} + \lnc{\marginparwidth}), -\lnc{\pwlayi}) 
+in a zero width picture.
+
+
+    Now we can proceed with the remainder of the pagestyle specification.
+The next bit puts the chapter and section titles into the \verb?\...mark? 
+macros.
+\begin{lcode}
+\makeatletter
+\makepsmarks{bringhurst}{%
+  \def\chaptermark##1{\markboth{##1}{##1}}
+  \def\sectionmark##1{\markright{##1}}
+}
+\makeatother
+\end{lcode}
+
+    Finally, specify the evenhead using \cmd{\bringpicl} with the section
+title as its argument, and the oddhead using \cmd{\bringpicr} with the
+chapter title as its argument.
+\begin{lcode}
+\makeevenhead{bringhurst}{\bringpicl{\rightmark}}{}{}
+\makeoddhead{bringhurst}{}{}{\bringpicr{\leftmark}}
+\end{lcode}
 
-\index{epigraph|)}
 
-\begin{syntax}
- \cmd{\cleartoevenpage}\oarg{text} \\
-\end{syntax}
- On occasions it may be desirable to put something (e.g., an epigraph, a map,
- a picture) on the page facing the start
- of a chapter, where the something belongs to the chapter that is about to 
- start rather than the chapter that has just ended. In order to do this 
- in a document that is going to be printed
- doublesided, the chapter must start on an odd numbered page and the 
- pre-chapter material put on the immediately preceding even numbered page.
- The \cmd{\cleartoevenpage} command is like \cmd{\cleardoublepage} except
- that the page following the command will be an even numbered page, and the
- command takes an optional argument 
- which is applied to the skipped page (if any).
+\section{Captions and the \prtoc}
 
-    Here is an example:
+    The captions to figures\index{figure} and tables\index{table} are set 
+in a small sans font and are neither named nor numbered, and there is no 
+\lof\ or \lot. Setting the caption titles in the desired font is simple:
 \begin{lcode}
- ... end previous chapter.
- \cleartoevenpage
- \begin{center}
- \begin{picture}... \end{picture}
- \end{center}
- \chapter{Next chapter}
+\captiontitlefont{\small\sffamily}
 \end{lcode}
- If the style is such that chapter headings\index{heading!chapter} are put at the top of the pages,
- then it would be advisable to include |\thispagestyle{empty}| (or |plain|)
- immediately after |\cleartoevenpage| to avoid a heading related to the
- previous chapter from appearing on the page. 
 
- If the something is like a figure\index{figure} with a numbered caption and the numbering
- depends on the chapter numbering, then the numbers have to be hand set (unless
- you define a special chapter command for the purpose). For example:
+    There are two options regarding table\index{table} and figure\index{figure}
+captioning: either
+use the \cmd{\legend} command (which produces an anonymous unnumbered title)
+instead of the \cmd{\caption} command, or
+use the \cmd{\caption} command with a modified definition. Just in case
+the design might change at a later date to required numbered captions, 
+it's probably best to use 
+a modified version of \cmd{\caption}. In this case this is simple, just give
+the \cmd{\caption} command the same definition as the \cmd{\legend} command.
 \begin{lcode}
- ... end previous chapter.
- \cleartoevenpage[\thispagestyle{empty}] % skipped page, if any, to be empty
- \thispagestyle{plain}
- \addtocounter{chapter}{1} % increment the chapter number
- \setcounter{figure}{0}    % initialise figure counter
- \begin{figure}
- ...
- \caption{Pre chapter figure}
- \end{figure}
-
- \addtocounter{chapter}{-1} % decrement the chapter number
- \chapter{Next chapter}     % increments chapter & initialises figure numbers
- \addtocounter{figure}{1}   % to account for pre-chapter figure
+\let\caption\legend
 \end{lcode}
- 
-
- \subsection{Epigraphs on part pages}
 
-\index{epigraph|(}
+    An aside: I initially used the default caption style (block paragraph) for
+the diagram on \pref{fig:bplayout}, but this looked unbalanced so now it
+has the last line centered. As a float\index{float} environment, 
+like any other environment, forms a group, you can make local changes within 
+the float\index{float}. I actually did it like this:
+\begin{lcode}
+\begin{figure}
+\captiontitlefont{\small\sffamily}
+\captionstyle{\centerlastline}
+...
+\legend{...} \label{...}
+\end{figure} 
+\end{lcode}
+For fine typesetting you may wish to change the style of particular captions.
+The default style for a single line caption works well, but for a caption with
+two or three lines either the \texttt{centering} or \texttt{centerlastline}
+style might look better. A very long caption is again probably best done in 
+a block paragraph style.
 
-     The \Lpack{epigraph} package as it stands cannot put an epigraph on the
- same page as a |\part| or |\part*| title page in 
- a \Lclass{book} or \Lclass{report} class. This is because the |\part| command
- internally does some page flipping before and after the title page.
- However, it is easy enough to put epigraphs on part\index{part} pages.
+    Only chapter titles are included in the \toc. To specify this we
+use the \cmd{\settocdepth} command.
+\begin{lcode}
+\settocdepth{chapter}
+\end{lcode}
 
- \begin{itemize}
- \item Create a file called, say, \file{epipart.sty} which looks like this:
- \begin{verbatim}
- % epipart.sty
- \let\@epipart\@endpart
- \renewcommand{\@endpart}{\thispagestyle{epigraph}\@epipart}
- \endinput
- \end{verbatim}
+    The \toc\ is typeset raggedright with no leaders and the page numbers 
+coming immediately after the chapter title. This is specified via:
+\begin{lcode}
+\renewcommand{\cftchapterfont}{\normalfont}
+\renewcommand{\cftchapterpagefont}{\normalfont}
+\renewcommand{\cftchapterpresnum}{\bfseries}
+\renewcommand{\cftchapterleader}{}
+\renewcommand{\cftchapterafterpnum}{\cftparfillskip}
+\end{lcode}
 
- \item Start your document like:
- \begin{verbatim}
- \documentclass[...]{...}
- \usepackage{epigraph}
- \usepackage{epipart}
- \end{verbatim}
+\section{Preamble or package?}
 
- \item Immediately \emph{before} each |\part| command put an 
- |\epigraphhead| command. For example:
- \begin{verbatim}
- \epigraphhead[300]{Epigraph text}
- \part{Part title}
- \end{verbatim}
- The value of the optional argument may need changing to vertically adjust
- the position of the epigraph. If there is any |\part| that does not have an
- epigraph then an empty |\epigraphhead| command (i.e., |\epigraphhead{}|)
- must be placed immediately before the |\part| command.
 
- \end{itemize}
+    When making changes to the document style, or just defining a new
+macro or two, there is the question of where to put the changes --- in
+the preamble\index{preamble} of the particular document or into a separate 
+package\index{package}?
 
-     A similar scheme may be used for epigraphs on other kinds of pages. 
- The essential
- trick is to make sure that the \pstyle{epigraph} pagestyle is used for
- the page.
-    For an epigraphed bibliography\index{bibliography} 
-or index\index{index}, the macros \cmd{\prebibhook}
-or \cmd{\preindexhook} can be appropriately modified to do this.
+    If the same changes/macros are likely to be used in more than one
+document then I suggest that they be put into a package. 
+If just for the single document then the choice remains open.
 
-\index{epigraph|)}
+    I have presented the code in this chapter as though it would be  put
+into the preamble\index{preamble}, hence the use of \cmd{\makeatletter} and 
+\cmd{\makeatother} to surround macros that include the 
+\texttt{@}\idxatincode\ character (\seeatincode). The
+code could just as easily be put into a package\index{package} called, say, 
+\Lpack{bringhurst}. That is, by putting all the code, except for the
+\cmd{\makeatletter} and \cmd{\makeatother} commands, into a file called
+\file{bringhurst.sty}. It is a good idea also to end the code in the file
+with \cmd{\endinput}; LaTeX stops reading the file at that point and 
+will ignore any possible garbage after \cmd{\endinput}.
 
+    You then use the \Lpack{bringhurst} package just like any other by
+putting
+\begin{lcode}
+\usepackage{bringhurst}
+\end{lcode}
+in your document's preamble\index{preamble}.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% revert to the regular styles
 \clearpage
-\pagestyle{Ruled}
-\chapterstyle{demo}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-\chapter{Typesetting verse} \label{chap:verse}
+%%%\memmansecheads
+%%%\chapterstyle{demo3}
+\headstyles{memman}
+\pagestyle{ruled}
+\appendix
+\appendixpage*
+%%\pagestyle{ruled}
 
-    This chapter uses the \cstyle{demo} chapterstyle and the \pstyle{Ruled}
-pagestyle. 
+%%\chapterstyle{normal}
+%%\chapterstyle{section}
+%%\chapterstyle{demo3}
 
-\section{Introduction}
+\chapter{Packages and macros}
 
-    The typesetting of a poem should be really be dependent on the
-particular poem. Individual problems do not usually admit of a
-general solution, so this manual and code should be used more
-as a guide towards some solutions rather than providing a ready
-made solution for any particular piece of verse.
+    The \Mname\ class does not provide for everything that you
+have seen in the manual. I have used some packages that you are very likely
+to have in your \ltx\ distribution, and have supplemented these with some
+additional macros, some of which I will show you.
 
-    The doggerel used as illustrative material has been taken 
-from~\cite{RUMOUR}.
+\section{Packages}
 
-    Note that for the examples in this section I have made no attempt
-to do other than use the minimal (La)TeX capabilities; in particular
-I have made no attempt to do any special page breaking so some stanzas
-may cross onto the next page --- most undesireable for publication.
+    The packages that I have used that you are likely to have, and if
+you do  not have them please consider getting them, are:
+\begin{itemize}
+\item \Lpack{url}~\cite{URL} is for typesetting URL's without worrying
+  about special characters or line breaking.
+\item \Lpack{fixltx2e}~\cite{FIXLTX2E} eliminates some infelicities
+      of the original LaTeX kernel. In particular it maintains the order
+      of floats\index{float} on a twocolumn\index{column!double} page 
+      and ensures the correct marking
+      on a twocolumn\index{column!double} page.
+\item \Lpack{alltt}~\cite{ALLTT} is a basic package which provides a 
+      verbatim-like environment but \verb?\?, \verb?{?, and \verb?}? have their
+      usual meanings (i.e., \ltx\ commands are not disabled).
+\item \Lpack{graphicx}~\cite{GRAPHICX} is a required package for
+      performing various kinds of graphical functions. 
+\item \Lpack{color}~\cite{COLOR} is a required package for using color,
+       or \Lpack{xcolor}~\cite{XCOLOR} is an enhanced version of \Lpack{color}.
+\end{itemize}
 
-    The standard LaTeX classes provide the \Ie{verse} environment which 
-is defined as a particular
-kind of list. Within the environment you use \cmd{\\} to end a line, 
-and a blank line will end a stanza. For example, here is a single
-stanza poem:
+    The package that I used and you most likely do not have is 
+\Lpack{layouts}~\cite{LAYOUTS}. I used it for all the layout diagrams. 
+For example, \fref{fig:displaysechead} and \fref{fig:runsechead} 
+were drawn simply by:
 \begin{lcode}
-\newcommand{\garden}{
-I used to love my garden \\
-But now my love is dead \\
-For I found a bachelor's button \\
-In black-eyed Susan's bed.
-}
-\end{lcode}
-\newcommand{\garden}{
-I used to love my garden \\
-But now my love is dead \\
-For I found a bachelor's button \\
-In black-eyed Susan's bed.
-}
-When this is typeset as a normal LaTeX paragraph\index{paragraph} (with no paragraph
-indentation) it looks like: \\[\baselineskip]
-\garden{}
+\begin{figure}
+\centering
+\setlayoutscale{1}
+\drawparameterstrue
+\drawheading{}
+\caption{Displayed sectional headings} \label{fig:displaysechead}
+\end{figure}
 
-\vspace*{\onelineskip}
+\begin{figure}
+\centering
+\setlayoutscale{1}
+\drawparameterstrue
+\runinheadtrue
+\drawheading{}
+\caption{Run-in sectional headings} \label{fig:runsechead}
+\end{figure}
+\end{lcode}
+The package also lets you try experimenting with different layout 
+parameters and draw diagrams showing what the results would be in a document.
 
-   Typesetting it within the \Ie{verse} environment produces:% \\[\baselineskip]
+    The version of \Lpack{layouts} used for this manual is 
+v2.4 dated 2001/04/30. Earlier versions will fail when attempting
+to draw some figures 
+( e.g., to draw \fref{fig:oddstock}).
 
-\begin{verse}  
-\garden
-\end{verse}
+\section{Macros}
 
-%\ablankline
+    Originally the preamble\index{preamble} of the manual contained many macro 
+definitions, probably more than most documents would because:
+\begin{itemize}
+\item I am having to typeset many \ltx\ commands, which require
+      some sort of special processing;
+\item I have tried to minimize the number of external packages needed
+      to \ltx\ this manual satisfactorily, and so have copied various
+      macros from elsewhere;
+\item I wanted to do some automatic indexing\index{index};
+\item I wanted to set off the syntax specifications and the code examples
+      from the main text.
+\end{itemize}
+I have since put the majority of these into a package file called 
+\file{memsty.sty}. 
+To get the whole glory you will have to read the preamble\index{preamble}, 
+and the \Lpack{memsty} package file but I show a few of the macros below 
+as they may be of more general interest.
 
-The stanza could also be typeset within the \Ie{alltt} environment, defined
-in the standard \Lpack{alltt} package~\cite{ALLTT}, 
-using a normal font and no \cmd{\\} line endings.
+\begin{syntax}
+\cmd{\Ppstyle}\marg{pagestyle} \cmd{\pstyle}\marg{pagestyle} \\
+\end{syntax}
+The command \cmd{\Ppstyle} prints its argument in the font used to indicate
+pagestyles and the command \cmd{\pstyle} prints its pagestyle argument and also
+makes a pagestyle entry in the index\index{index}. Its definition is
 \begin{lcode}
-\begin{alltt}\normalfont
-I used to love my garden 
-But now my love is dead 
-For I found a bachelor's button 
-In black-eyed Susan's bed.
-\end{alltt}
+\newcommand*{\pstyle}[1]{\Ppstyle{#1}%
+  \index{#1 pages?\Ppstyle{#1} (pagestyle)}%
+  \index{pagestyle!#1?\Ppstyle{#1}}}
 \end{lcode}
-which produces:
+The first part prints the argument in the text and the second adds two
+entries to the \file{idx} file. The fragment \verb?#1 pages? is what 
+the \Lmakeindex\ program will use for sorting entries, and the 
+fragment following the \texttt{?} character is what will be put into the 
+index\index{index}.
 
-\begin{alltt}\normalfont
-I used to love my garden 
-But now my love is dead 
-For I found a bachelor's button 
-In black-eyed Susan's bed.
-\end{alltt}
+\begin{syntax}
+\cmd{\Pcstyle}\marg{chapterstyle} \cmd{\cstyle}\marg{chapterstyle} \\
+\end{syntax}
+The command \cmd{\Pcstyle} prints its argument in the font used to indicate
+chapterstyles and \cmd{\cstyle} prints its chapterstyle argument 
+and also makes a chapterstyle entry in the 
+index\index{index}. Its definition is
+\begin{lcode}
+\newcommand*{\cstyle}[1]{\Pcstyle{#1}%
+  \index{#1 chaps?\Pcstyle{#1} (chapterstyle)}%
+  \index{chapterstyle!#1?\Pcstyle{#1}}}
+\end{lcode}
+which is almost identical to \cmd{\pstyle}. 
 
-The \Ie{alltt} environment is like the \Ie{verbatim} environment except that
-you can use LaTeX macros inside it. 
-   In the \Ie{verse} environment long lines will be wrapped and indented
-but in the \Ie{alltt} environment there is no indentation. 
+    There is both a \cstyle{companion} chapterstyle and a \pstyle{companion}
+pagestyle. The strings used for sorting the index\index{index} entries for 
+these are
+\texttt{companion chaps} and \texttt{companion pages} respectively, so 
+the chapterstyle will come before the pagestyle in the index\index{index}. 
+The reason for distinguishing between the string used for sorting and the 
+actual entry is
+partly to distinguish between different kinds of entries for a single name
+and partly to avoid any formatting commands messing up the sorted order.
 
-Some stanzas have certain lines indented, often alternate ones. To
-typeset stanzas like this you have to add your own spacing. For
-instance:
+\begin{syntax}
+\senv{syntax} syntax \eenv{syntax} \\
+\end{syntax}
+The \Ie{syntax} environment is for specifying command and environment
+syntax. Its definition is
 \begin{lcode}
-\begin{verse}
-There was an old party of Lyme \\
-Who married three wives at one time. \\
-\hspace{2em} When asked: `Why the third?' \\
-\hspace{2em} He replied: `One's absurd, \\
-And bigamy, sir, is a crime.'
-\end{verse}
+\newcommand*{\tightcenter}{%
+  \topsep=0.25\onelineskip\trivlist \centering\item\relax}
+\def\endtigthcenter{\endtrivlist}
+\newenvironment{syntax}{\begin{tightcenter}
+                        \begin{tabular}{|p{0.9\linewidth}|} \hline}%
+                       {\hline
+                        \end{tabular}
+                        \end{tightcenter}}
 \end{lcode}
-is typeset as: 
-
-\begin{verse}
-There was an old party of Lyme \\
-Who married three wives at one time. \\
-\hspace{2em} When asked: `Why the third?' \\
-\hspace{2em} He replied: `One's absurd, \\
-And bigamy, sir, is a crime.'
-\end{verse}
+It is implemented in terms of the \Ie{tabular} environment, centered within
+the typeblock, which forms
+a box that will not be broken across a pagebreak. The box frame
+is just the normal horizontal and vertical lines that you can use with
+a \Ie{tabular}. The width is fixed at 90\% of the text width. As it
+is a \Ie{tabular} environment, each line of syntax must be ended with
+\cmd{\\}. Note that normal \ltx\ processing occurs within the \Ie{syntax}
+environment, so you can effectively put what you like inside it.
+The \Ie{center} environment is defined in terms of a \Ie{trivlist} and
+\cmd{\centering}. I wanted to be able to control the space before and
+after the `\cmd{\centering}' so I defined the \Ie{tightcenter} environment 
+which enabled me to do this.
 
-%\ablankline
 
-Using the \Ie{alltt} environment you can put in the spacing via ordinary
-spaces. That is, this:
+\begin{syntax}
+\senv{lcode} LaTeX code \eenv{lcode} \\
+\end{syntax}
+I use the \Ie{lcode} environment for showing examples of \ltx\ code. It
+is a special kind of \Ie{verbatim} environment where the font size is
+\cmd{\small} but the normal \lnc{\baselineskip} is used, and each line
+is indented. 
+
+    At the bottom the environment is defined in terms of a \Ie{list}, 
+although that is not obvious from the code; for details see the 
+class code~\cite{MEMCODE}. I wanted the environment to be a tight list 
+and started off by defining two helper items.
 \begin{lcode}
-\begin{alltt}\normalfont
-There was an old party of Lyme
-Who married three wives at one time.
-      When asked: `Why the third?' 
-      He replied: `One's absurd, 
-And bigamy, sir, is a crime.'
-\end{alltt}
+% \@zeroseps sets list before/after skips to minimum values
+\newcommand*{\@zeroseps}{\setlength{\topsep}{\z@}
+                         \setlength{\partopsep}{\z@}
+                         \setlength{\parskip}{\z@}}
+% \gparindent is relative to the \parindent for the body text
+\newlength{\gparindent} \setlength{\gparindent}{0.5\parindent}
 \end{lcode}
-is typeset as
-
-\begin{alltt}
-\normalfont
-There was an old party of Lyme
-Who married three wives at one time.
-      When asked: `Why the third?' 
-      He replied: `One's absurd, 
-And bigamy, sir, is a crime.'
-\end{alltt}
-
-More exotically you could use the TeX \cmd{\parshape} 
-command\footnote{See the \textit{TeXbook} for how to use this.}:
+The macro \cmd{\@zeroseps} sets the before, after and middle skips in
+a list to 0pt (\cmd{\z@} is shorthand for 0pt). The length \lnc{\gparindent}
+will be the line indentation in the environment.
 \begin{lcode}
-\parshape = 5 0pt \linewidth 0pt \linewidth 
-              2em \linewidth 2em \linewidth 0pt \linewidth
-\noindent There was an old party of Lyme \\
-Who married three wives at one time. \\
-When asked: `Why the third?' \\
-He replied: `One's absurd, \\
-And bigamy, sir, is a crime.' \par
+% Now we can do the new lcode verbatim environment. 
+% This has no extra before/after spacing.
+\newenvironment{lcode}{\@zeroseps
+  \renewcommand{\verbatim@startline}%
+    {\verbatim@line{\hskip\gparindent}}
+  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
+  {\endverbatim
+   \vspace{-\baselineskip}\noindent}
 \end{lcode}
-which will be typeset as:
 
-\vspace*{\onelineskip}
+    The fragment \verb?{\hskip\gparindent}? puts \lnc{\gparindent} space at 
+the start of each line.
 
-\parshape = 5 0pt \linewidth 0pt \linewidth 
-              2em \linewidth 2em \linewidth 0pt \linewidth
-\noindent There was an old party of Lyme \\
-Who married three wives at one time. \\
-When asked: `Why the third?' \\
-He replied: `One's absurd, \\
-And bigamy, sir, is a crime.' \par
+    The fragment \verb?\small\setlength{\baselineskip}{\onelineskip}? sets the
+font size to be \cmd{\small}, which has a smaller \lnc{\baselineskip}
+than the normal font, but this is corrected for by changing the local
+\lnc{\baselineskip} to the normal skip, \lnc{\onelineskip}. At the end
+of the environment there is a negative space of one line to compensate
+for a one line space that LaTeX inserts.
+
+    The two versals in \Sref{sec:versal} were typeset with macros defined
+in \Lpack{memsty}. The poorer of the two used the \cmd{\drop}
+macro which was written for \ltx\ v2.09 by David Cantor and Dominik Wujastyk 
+in 1998. The better used the \cmd{\versal} macro. Now, if you want
+to try your hand at this sort of thing there are some more packages
+on CTAN. I have found that the \Lpack{lettrine} package~\cite{LETTRINE} 
+serves my needs.
 
 
-\vspace*{\onelineskip}
 
-   This is about as much assistance as standard (La)TeX provides, except
-to note that in the \Ie{verse} environment the \cmd{\\*} version of \cmd{\\}
-will prevent a following page break. You can also make judicious use
-of the \cmd{\needspace} macro to keep things together.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{\ltx\ and \tx} \label{appendix:alltex}
 
-   Some books of poetry, and especially anthologies, have two or more
-indexes\index{index}, one, say for the poem titles and another for the first lines.
-The \Lpack{index}~\cite{INDEX} and \Lpack{multind}~\cite{MULTIND}
-packages provide support for multiple indexes\index{index} in one document.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%\clearpage
-\section{Classy verse} 
+    Strictly speaking, \ltx\ is a set of macros built on top of 
+the \tx\ program originally developed by 
+Donald Knuth~\cite{TEXPROGRAM,TEXBOOK} 
+in the early
+1980's. \tx\ is undoubtedly one of the most robust computer programs
+to date. 
 
-    The code provided by the \Lclass{memoir} class is meant to help
-with some aspects of typesetting poetry but does not, and cannot,
-provide a comprehensive solution to all the requirements that
-will arise.
+    Leslie Lamport says that most \tx\ commands can be used with 
+\ltx\ and lists those that cannot be used~\cite[Appendix E]{LAMPORT94}.
+Apart from this he says nothing about any \tx\ commands. I have used
+some \tx\ macros in the code examples and so I need to talk a little
+bit about these.
 
-    The main aspects of typesetting poetry that differ from typesetting
-plain text are:
+    I like to think of the commands and
+macros as falling into one of several groups.
 \begin{itemize}
-\item Poems are usually visually centered on the page.
-\item Some lines are indented, and often there is a pattern to the
-      indentation.
-\item When a line is too wide for the page it is broken and the
-      remaining portion indented with respect to the original start
-      of the line.
+
+\item \tx\ primitives. These are the basic constructs of the \tx\ language.
+
+\item \tx\ commands or macros. These are part of the plain \tx\ system 
+      and are
+      constructed from the \tx\ primitives.
+
+\item \ltx\ kernel commands or macros. These are defined in the \ltx\ kernel
+      and are based on plain \tx\ primitives or commands. In turn, some 
+      higher level kernel macros are constructed from more basic aspects
+      of the kernel. The kernel does redefine some of the plain \tx\ commands.
+      
+
+\item Class command. These are mainly built up on the kernel commands but
+      may use some basic \tx.
+
+\item Package commands. These are similar to the class commands but are
+      less likely to directly use \tx\ macros.
+
+\item User commands. Typically these are limited to the commands
+      provided by the class and any packages that might be called for,
+      but more experienced users will employ some kernel commands,
+      like \cmd{\newcommand}, to make their authoring more efficient.
 \end{itemize}
-These are the ones that the class attempts to deal with.
 
-\begin{syntax}
-\senv{verse}\oarg{length} ... \eenv{verse} \\
-\lnc{\versewidth} \\
-\lnc{\stanzaskip} \\
-\end{syntax}
-The \Ie{verse} environment provided by the class is an extension
-of the usual LaTeX environment. The environment takes one optional
-parameter, which is a length; for example |\begin{verse}[4em]|.
-You may have noticed that the earlier verse examples are all
-near the left margin\index{margin}, whereas verses usually look better if they
-are typeset about the center of the page. The length parameter,
-if given, should be about the length of an average line, and then
-the entire contents will be typeset with the mid point of the length
-centered horizontally on the page.
+    Although \tx\ is designed as a language for typesetting it is
+also a `Turing complete' 
+language\index{Turing complete language}\index{Turing, Alan}
+which means that it can perform any function that can be programmed in
+any familiar programming language. For example, an interpreter for the
+BASIC language has been written in \tx, but writing this kind of program
+using \tx\ is something that only an expert\footnote{Probably also a masochist
+with plenty of time.} might consider.
 
-The length \lnc{\versewidth} is provided as a convenience. It may be used,
-for example, to calculate the length of a line of text for use
-as the optional argument to the \Ie{verse} environment: 
-\begin{lcode}
-\settowidth{\versewidth}{This is the average line,}
+    Nevertheless, you may have to, or wish to, write a typesetting function
+of your own. This chapter presents a few of the programming aspects that
+you may need for this, such as performing some simple arithmetic or comparing
+two lengths. For anything else you will have to read one or more of the 
+\tx\ books or tutorials.
+
+
+
+    In England witnesses at a trial have to swear to `Tell the truth, the
+whole truth, and nothing but the truth'. I will try and tell the truth
+about \tx\ but, to misquote Hamlet \linenumberfrequency{0}
+\settowidth{\versewidth}{There are more things in heaven and TeX, Horatio}
 \begin{verse}[\versewidth]
-\end{lcode}
+There are more things in heaven and \tx, Horatio, \\
+Than are dreamt of in your philosophy.
+\end{verse}
 
-    The vertical space between stanzas is the length \lnc{\stanzaskip}.
-It can be changed by the usual methods.
+\section{The \tx\ process}
 
-\begin{syntax}
-\cmd{\\} \cmd{\\*} \cmd{\\>} \verb?\\!? \\
-\end{syntax}
-Each line in the \Ie{verse} environment, except possibly for the last line
-in a stanza, 
-must be ended with either \cmd{\\} or \cmd{\\*}. The starred
-version prevents a page break before the following line.
-    The \cmd{\\>} command causes a break in the line (see the 
-description of the \cmd{\verselinebreak} macro). 
+    As we are delving deeper than normal and because at the bottom
+it is the \tx\ language that does all the work,  it is useful to 
+have an idea of how \tx\ processes a source file to produce a 
+\pixfile{dvi} file. It is all explained in detail by 
+Knuth~\cite{TEXBOOK} and also perhaps more accessibly by 
+Eijkhout~\cite{TEXBYTOPIC}; 
+the following is a simplified description.
+Basically there are four processes invloved and the output from one 
+process is the input to the following one.
 
-The \pixslashbang{}  macro
-may be used at the end of a line to signal the end of the stanza. This
-would normally be followed by a blank line before the next stanza.
+\begin{description}
+\item[Input] The input process, which Knuth terms the `eyes', reads
+  the source file and converts what it sees into \emph{tokens}\index{token}.
+  There are essentially two kinds of token. A token is either a single
+  character such as a letter or a digit or a punctuation mark, or 
+  a token is a control sequence. 
+  A \emph{control sequence}\index{control sequence} consists of a backslash
+  and either all the alphabetic characters immediately following it, or
+  the single non-alphabetic following it. Control sequence is the general 
+  term for what I have been calling a macro or a command.
+
+\item[Expansion] The expansion processor is what Knuth calls `\tx's mouth'.
+  In this process some of the tokens from the input processor are expanded.
+  Expansion replaces a token by other tokens or sometimes by no token.
+  The expandible tokens include macros, conditionals, and a number of
+  \tx\ primitives. 
+
+\item[Execution] The execution process is \tx's `stomach'. This handles
+  all the tokens output by the expansion processor. Control sequences
+  that are not expandible are termed \emph{executable}, and the execution
+  processor executes the executable tokens. Character tokens are
+  neither expandible nor executable. It handles any macro defintions
+  and also builds horizontal, vertical and mathematical lists.
+
+\item[Layout] The layout processor (\tx's `bowels') breaks horizontal 
+  lists into paragraphs, mathematical lists into formulae, and 
+  vertical lists into pages. The final output is the \pixfile{dvi} file.
 
-    Each of the |\\...| macros take an optional length argument. In the
-case of the \cmd{\\}, \cmd{\\*} and \pixslashbang{} macros it introduces
-the specified amount of vertical space. For \cmd{\\>} it specifies
-a horizontal space.
+\end{description}
 
-\begin{syntax}
-\cmd{\vin} \\
-\lnc{\vgap} \\
-\lnc{\vindent} \\
-\end{syntax}
-The command \cmd{\vin} is shorthand for |\hspace*{\vgap}| for use
-at the start of an indented line of verse. The length \lnc{\vgap}
-(initially 1.5em) can be changed by \cmd{\setlength} or \cmd{\addtolength}.
+    In spite of the sequential nature implied by this description the 
+overall process includes some feedback from a later process to an 
+earlier one which may affect what that does.
+
+    It is probably the expansion processor that needs to be best understood.
+Its input is a sequence of tokens from the input processor and its output
+is a sequence of different tokens.
+
+    In outline, the expansion processor takes each input token in turn
+and sees if it is expandible; if it is not is simply passes it on to the
+output. If the token is expandible then it is replaced by its expansion.
+The most common expandible tokens are control sequences that have been 
+defined as macros. If the macro takes no arguments then the macro's name
+is replaced by its definition. If the macro takes arguments, sufficient 
+tokens are collected to get the values of the arguments, and then the 
+macro name is replaced by the definition. The expansion processor then
+looks at the first token in the replacement, and if that is expandible
+it expands that, and so on. 
+
+    Nominally, the eventual output from the expansion
+processor is a stream of non-expandible tokens. There are ways,
+however of controlling whether or not the expansion processor will actually
+expand an expandible token, and to control the order in which things
+get expanded, but that is where things get rapidly complicated.
+
+    The layout processor works something like this. Ignoring maths,
+\tx\ stores what you type in two kinds of lists, vertical and horizontal.
+As it reads your words it puts them one after another in a horizontal list.
+At the end of a paragraph it stops the horizontal list and adds it to the
+vertical list. At the beginning of the next paragraph it starts a new
+horizontal list and adds the paragraph's words to it. And so on. This
+results in a vertical list of horizontal lists of words, where each 
+horizontal list contains the words of a paragraph.
+
+    It then goes through each horizontal list in turn, breaking it up into
+shorter horizontal lists, one for each line in the paragraph. These are
+put into another vertical list, so conceptually there is a vertical list
+of paragraphs, and each paragraph is a vertical list of lines, and each
+line is a horizontal list of words, or alternatively one vertical list
+of lines. Lastly it chops up the vertical list of lines into page sized 
+chunks and outputs them a page at a time.
+
+    \tx\ is designed to handle arbitrary sized inserts, like those for
+maths, tables, sectional divisions and so forth, in an elegant manner. 
+It does this by allowing
+vertical spaces on a page to stretch and shrink a little so that the
+actual height of the typeblock is constant. If a page consists only of
+text with no widow or orphan then the vertical spacing is regular, otherwise
+it is likely to vary to some extent. Generally speaking, \tx\ is not
+designed to typeset on a fixed grid, but against this
+other systems are not designed
+to produce high quality typeset mathematics. Attempts have been made
+to tweak \ltx\ to typeset on a fixed grid but as far as I know nobody
+has been completely successful.
+
+
+    \tx\ works somewhat more efficiently than I have described. Instead
+of reading the whole document before breaking paragraphs into lines, it 
+does the line breaking at the end of each paragraph. After each paragraph
+it checks to see if it has enough material for a page, and outputs a page
+whenever it is full. However, \tx\ is also a bit lazy. Once it has broken
+a paragraph into lines it never looks at the paragraph again, except perhaps
+to split it at a page break. If you want to change, say, the width of the
+typeblock on a particular page, any paragraph that spills over from a
+previous page will not be reset to match the new measure. This asynchronous
+page breaking\index{page break!asynchronous} also has an unfortunate effect
+if you are trying to put a note in say, the outside margin, as the outside 
+is unknown until after the paragraph has been set, and so the note may end
+up in the wrong margin.
 
-    Verse lines are sometimes indented according to the space taken by
-the text on the previous line.
-\begin{syntax}
-\cmd{\vinphantom}\marg{text} \\
-\end{syntax}
-The macro \cmd{\vinphantom} can be used at the start of a line of verse to
-give an indentation as though the line started with \meta{text}. For example:
-\begin{verse}
-\ldots \\
-Come away with me.
-\end{verse}
-\begin{verse}
-\vinphantom{Come away with me.} Impossible! \\
-\ldots
-\end{verse}
-The above fragment from a poem was typeset by:
-\begin{lcode}
-\begin{verse}
-\ldots \\
-Come away with me.
-\end{verse}
-\begin{verse}
-\vinphantom{Come away with me.} Impossible! \\
-\ldots
-\end{verse}
-\end{lcode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-    \cmd{\vinphantom} may also be used in the middle of any line to 
-leave some blank space. For example, compare the two lines below, 
-which are produced by this code:
-\begin{lcode}
-\noindent Come away with me and be my love --- Impossible. \\
-          Come away with me \vinphantom{and be my love} --- Impossible.
-\end{lcode}
+\section{\ltx\ files} \label{sec:latexfiles}
 
-\noindent Come away with me and be my love --- Impossible. \\
-Come away with me \vinphantom{and be my love} --- Impossible.
+    The \pixfile{aux} file is the way \ltx\ transfers information from one
+run to the next and the process works roughly like this.
+\begin{itemize}
+\item The \pixfile{aux} file is read at the start of the \Ie{document}
+      environment. If \cmd{\nofiles} has not been specified a 
+      new empty \pixfile{aux} file is then created which has the side
+      effect of destroying the original \pixfile{aux} file.
+\item Within the \Ie{document} environment there may be macros that write
+      information to the \pixfile{aux} file, such as the sectioning or
+      captioning commands. However, these macros will not write their
+      information if \cmd{\nofiles} has been specified.
+\item At the end of the \Ie{document} environment the contents
+      of the \pixfile{aux} file are read.
+\end{itemize}
+Under normal circumstances new output files are produced each time \ltx\
+is run, but when \cmd{\nofiles} is specified only the \pixfile{dvi} and
+\pixfile{log} files will be new --- any other files are unchanged.
+
+    In the case of the sectioning commands these write macros into the
+\pixfile{aux} file that in turn write information into a \pixfile{toc}
+file, and the \cmd{\tableofcontents} command reads the \pixfile{toc}
+file which contains the information for the Table of Contents. To make this
+a bit more concrete, as \ltx\ processes a new document through the
+first two runs, the following events occur.
+\begin{enumerate}
+\item Initially there is neither an \pixfile{aux} nor a \pixfile{toc} file.
+      At the start of the \Ie{document} environment a new empty \pixfile{aux}
+      file is created.
+\item During the first run the \cmd{\tableofcontents} typesets the
+      Contents heading and creates a new empty \pixfile{toc}
+      file.
+
+      During
+      the run sectional commands write information into the new 
+      \pixfile{aux} file. At the end of the \Ie{document} environment
+      the \pixfile{aux} file
+      is read. Contents information in the \pixfile{aux} file is written
+      to the \pixfile{toc} file. Lastly all the output files are closed.
+
+\item For the second run the \pixfile{aux} file from the previous run is 
+      read at the start of the \Ie{document} environment; no information can
+      be written to a \pixfile{toc} file because the \pixfile{toc} file
+      is only made available by the \cmd{\tableofcontents} command.
+      The \pixfile{aux} file from the previous run is closed and the new
+      one for this run is created.
+
+        This time the \cmd{\tableofcontents} reads \pixfile{toc} file
+      that was created during the previous run which contains the typesetting
+      instructions for the contents, and then starts a
+      new \pixfile{toc} file.
+
+         And so the process repeats itself.
+\end{enumerate}
 
+    The \pixfile{aux} file mechanism means that, except for the simplest 
+of documents, \ltx\ has to be run at least
+twice in order to have all the information to hand for typesetting. 
+If sections are added or deleted, two runs are necessary afterwards 
+to ensure that everything is up to date. Sometimes three, or even more, 
+runs are necessary to guarantee that things are settled.
 
-When a verse line is too long to fit within the typeblock\index{typeblock} it is
-wrapped onto the next line with a space, given by the value of the
-length \lnc{\vindent}. The initial value of \lnc{\vindent} is twice 
-\lnc{\vgap}.
 
-\begin{syntax}
-\cmd{\verselinebreak}\oarg{length} \\
-\end{syntax}
-Using the command \cmd{\verselinebreak} will cause 
-later text in the
-line of the verse to be typeset indented on the following line.
-If the optional length argument is given then its value is added
-to the normal indentation.
-The broken
-line will count as a single line as far as the \Ie{altverse}, 
-\Ie{patverse}, and \Ie{patverse*} environments are concerned.
-The \cmd{\\>} macro is shorthand for \cmd{\verselinebreak}.
 
-\begin{syntax}
-\senv{altverse} ... \eenv{altverse} \\
-\end{syntax}
-Within the \Ie{verse} environment stanzas are separated by a blank line
-in the input. Individual stanzas within \Ie{verse} may, however, 
-be enclosed in the \Ie{altverse} environment. This has the effect of
-indenting the 2nd, 4th, etc., lines of the stanza by the length \lnc{\vgap}.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\begin{syntax}
-\senv{patverse} ... \eenv{patverse} \\
-\senv{patverse*} ... \eenv{patverse*} \\
-\cmd{\indentpattern}\marg{digits} \\
-\end{syntax}
-As an alternative to the \Ie{altverse} environment, 
-individual stanzas within the \Ie{verse} environment may be enclosed
-in the \Ie{patverse} environment. Within this environment the indentation
-of each line is specified by an indentation pattern, which consists
-of an array of digits, $d_{1}$ to $d_{n}$, and the $n^{th}$ line is
-indented by $d_{n}$ times |\vgap|. The first line is
-not indented, irrespective of the value of $d_{1}$ and if the number of
-lines is greater than the pattern length, the trailing lines are not indented.
-
-    The \Ie{patverse*} environment is similar to \Ie{patverse} except
-that the indentation pattern will keep repeating until the end of the
-environment.
 
-    The indentation pattern for a \Ie{patverse} environment is specified
-via the \cmd{\indentpattern} command, where \meta{digits} is a string
-of digits (e.g., |3213245281|). 
 
-\begin{syntax}
-\cmd{\linenumberfrequency}\marg{nth} \\
-\cmd{\thepoemline} \\
-\cmd{\linenumberfont}\marg{font-decl} \\
-\lnc{\vrightskip} \\
-\end{syntax}
-    The lines in a poem may be numbered. The \cmd{\linenumberfrequency} 
-declaration
-specifies that every \meta{nth} line is to be numbered. If \meta{nth} is
-less than 1 then line numbering is switched off, if \meta{nth} is 1 then 
-every line will be numbered, and if \meta{nth} is, say 5, every fifth
-line will be numbered. The default is |\linenumberfrequency{0}|.
+\section{Syntax}
+
+    The \ltx\ syntax that you normally see is pretty regular. 
+Mandatory arguments are enclosed in curly braces and optional
+arguments are enclosed in square brackets. One exception to this
+rule is in the \Ie{picture} environment where coordinate and direction
+pairs are enclosed in parentheses.
+
+    The \tx\ syntax is not regular in the above sense. For example, if in
+\ltx\ you said
+\begin{lcode}
+\newcommand*{\cmd}[2]{#1 is no. #2 of}
+\cmd{M}{13} the alphabet. % prints: M is no. 13 of the alphabet
+\end{lcode}
+Then in \tx\ you would say
+\begin{lcode}
+\def\cmd#1#2{#1 is no. #2 of}
+\end{lcode}
+and you could then use either of the following calls:
+\begin{lcode}
+\cmd M{13} the alphabet.  % prints: M is no. 13 of the alphabet
+\cmd{M}{13} the alphabet. % prints: M is no. 13 of the alphabet
+\end{lcode}
+
+     A simplistic explanation of the first \tx\ call of \verb?\cmd? is as 
+follows. A control sequence starts with a backslash, followed by either
+a single character, or one or more of what \tx\ thinks of as letters
+(normally the 52 lower- and upper-case alphabetic characters);
+a space or any non-letter, therefore, ends a multiletter control
+sequence. \tx\ and \ltx\ discard any spaces after a macro name. 
+If the macro takes any arguments, and \verb?\cmd? takes two, \tx\ will
+then start looking for the first argument. An argument is either
+something enclosed in braces or a single token. In the example the first
+token is the character `M', so that is the value of the first argument.
+\tx\ then looks for the second argument, which is the `13' enclosed
+in the braces. In the second example, both arguments are enclosed in braces.
+
+    Here are some \tx\ variations.
+\begin{lcode}
+\cmd B{2} the alphabet. % prints: B is no. 2 of the alphabet.
+\cmd B2 the alphabet.   % prints: B is no. 2 of the alphabet.
+\cmd N14 the alphabet.  % prints: N is no. 1 of4 the alphabet.
+\end{lcode}
+The result of \verb?\cmd B{2}? is as expected. The results of \verb?\cmd B2?
+and \verb?\cmd N14? should also be expected, and if not take a moment to
+ponder why. The `B' and 'N' are the first arguments to \verb?\cmd? in the
+two cases because a single character is a token. Having found the first
+argument \tx\ looks for the second one, which again will be a token as
+there are no braces. It will find `2' and `1' as the second arguments
+and will then expand the \verb?\cmd? macro. In the case of \verb?\cmd B2? this
+gives a reasonable result. In the case of \verb?\cmd N14?, \tx\ expands
+\verb?\cmd N1? to produce `N is in position 1 of', then continues printing
+the rest of the text, which is `4 the alphabet', hence the odd looking
+result.
+
+
+\section{\alltx{} commands} \label{sec:alltexcommands}
+
+    I have used some \tx\ commands in the example code and it is now time
+to describe these. Only enough explanation is given to cover my use of
+them. Full explanations would require a doubling in the size of the book 
+and a concomitant increase in the price, so for full details consult
+the \textit{\txbook} which is the definitive source, or one of the \tx\ 
+manuals listed in the Bibliography. I find \textit{\tx\ by Topic}
+particularly helpful.
+
+    I have also used \ltx\ commands that are not mentioned by
+Lamport. \ltx\ uses a convention for command names; any name that
+includes the \texttt{@} character is an `internal' command and may be 
+subject to change, or even deletion. Normal commands are meant to be 
+stable --- the code implementing them may change but their effect will 
+remain unaltered. In the \ltx\ kernel, and in class and package files 
+the character \texttt{@} is automatically
+treated as a letter so it may be used as part of a command name. 
+Anywhere else you have to use 
+\cmd{\makeatletter} to make \texttt{@} be treated as a letter and 
+\cmd{\makeatother} to make \texttt{@} revert to its other meaning.
+So, if you are defining or modifying or directly using any command 
+that includes an \texttt{@}\idxatincode\
+sign then this must be done in either a \file{.sty} file or if in the 
+document itself it must be surrounded by \cmd{\makeatletter} and 
+\cmd{\makeatother}. 
 
-    The counter for the lines is \Icn{poemline}, so the typeset form of the 
-line number is specified via \cmd{\thepoemline}
-which defaults to arabic numbers. The number is positioned
-in the right hand margin at a distance \lnc{\vrightskip} 
-(default 1em) from the edge
-of the typeblock. The font used for the line numbers is specified
-by \cmd{\linenumberfont}. The default definition is: \\
-|\linenumberfont{\small\rmfamily}| \\
-to produce small numbers in the roman font.
+    The implication is `don't use internal commands as they may be dangerous'.
+Climbing rocks is also dangerous but there are rock climbers; the live ones
+though don't try climbing Half Dome in Yosemite or the North Face of the
+Eiger without having first gained experience on friendlier rocks.
 
+The \ltx\ kernel is full of internal commands and a few are mentioned
+in Lamport. There is no place where you can go to get explanations of all
+the \ltx\ commands, but if you run \ltx\ on the \pixfile{source2e.tex} 
+file which is in the standard \ltx\ distribution you will get the commented
+kernel code. The index of the commands runs to about 40 double column pages.
+Each class and package introduce new commands over and above those in the
+kernel. 
+
+
+\ltx\ includes \cmd{\newcommand}, \cmd{\providecommand} and 
+\cmd{\renewcommand} as means of (re-)defining a command, but \tx\ 
+provides only one method.
+\begin{syntax}
+\cmd{\def}\meta{cmd}\meta{arg-spec}\marg{text} \\
+\end{syntax}
+\cmd{\def} specifies that within the local group\index{group}
+the command \verb?\cmd? is defined as \meta{text}, and any previous definitions
+of \meta{cmd} within the group are overwritten. Neither the 
+\meta{text} nor any arguments can include an end-of-paragraph.
+The \ltx\ equivalent to \cmd{\def} is the pair of commands
+\cmd{\providecommand*} followed by \cmd{\renewcommand*}.
+
+    The \meta{arg-spec} is a list of the argument numbers 
+(e.g., \verb?#1#2?)
+ in sequential
+order, the list ending at the `\{' starting the \meta{text}. Any
+spaces or other characters in the argument list are significant. These
+must appear in the actual argument list when the macro is used.
+
+\begin{syntax}
+\cmd{\long} \cmd{\global} \\
+\cmd{\gdef}\meta{cmd}\meta{arg-spec}\marg{text} \\
+\cmd{\edef}\meta{cmd}\meta{arg-spec}\marg{text} \\
+\cmd{\xdef}\meta{cmd}\meta{arg-spec}\marg{text} \\
+\end{syntax}
+If you use the \cmd{\long} qualifier before \cmd{\def} (as \verb?\long\def...?)
+then the \meta{text} and arguments may include paragraphs.
+The \ltx\ version of this is the unstarred \cmd{\providecommand}
+followed by \cmd{\renewcommand}.
+
+    To make a command global instead of local to the current group, 
+the \cmd{\global} qualifier can be used with \cmd{\def} 
+(as \verb?\global\def...?) when defining it;
+\cmd{\gdef} is provided as a shorthand for this common case.
+
+    Normally any macros within the replacement \meta{text} of a command
+defined by \cmd{\def} are expanded when the command is called. 
+The macro \cmd{\edef} also defines a command but in this case any macros
+in the replacement \meta{text} are expanded when the command is defined.
+Both \cmd{\long} and \cmd{\global} may be used to qualify \cmd{\edef},
+and like \cmd{\gdef} being shorthand for \verb?\global\def?, \cmd{\xdef}
+is short for \verb?\global\edef?.
+
+    There is much more to the \cmd{\def} family of commands than I have
+given; consult elsewhere for all the gory details.
+
+\begin{syntax}
+\cmd{\let}\meta{cmda}=\meta{cmdb} \\
+\end{syntax}
+The \cmd{\let} macro gives \meta{cmda} the same definition as \meta{cmdb}
+\emph{at the time the \cmd{\let} is called}. The \Itt{=} sign is optional.
+\cmd{\let} is often used when you want to save the definition of a
+command.
+
+    Here is a short example of how some of \cmd{\def} and \cmd{\let} work.
+\begin{lcode}
+\def\name{Alf}
+\let\fred = \name
+  \name, \fred.         % prints Alf, Alf.
+\def\name{Fred}
+  \name, \fred.         % prints Fred, Alf.
+\def\name{\fred red}
+  \name, \fred.         % prints Alfred, Alf.
+\end{lcode}
+
+\begin{syntax}
+\cmd{\csname} \meta{string}\cmd{\endcsname} \\
+\end{syntax}
+If you have ever tried to define commands like \verb?\cmd1?, \verb?\cmd2? you will
+have found that it does not work. \tx\ command names consists of either
+a single character or a name composed solely of what \tx\ thinks
+of as alphabetic characters. However, the \cmd{\csname} \cmd{\endcsname}
+pair turn the enclosed \meta{string} into the control sequence \verb?\string?,
+which means that you can create \verb?\cmd1? by 
+\begin{lcode}
+\csname cmd1\endcsname
+\end{lcode}
+Note that the resulting \verb?\cmd1? is not defined (as a macro).
 
 \begin{syntax}
-\cmd{\flagverse}\marg{text} \\
-\lnc{\vleftskip} \\
+\cmd{\@namedef}\marg{string} \\
+\cmd{\@nameuse}\marg{string} \\
 \end{syntax}
-The \cmd{\flagverse} macro can be used at the start of a verse line, and
-it typesets its \meta{text} argument at a distance \lnc{\vleftskip} 
-(default 3em) to the
-left of the verse line. This could be used, for example, to number stanzas.
+The kernel \cmd{\@namedef} macro expands to \verb?\def\<string>?, where 
+\meta{string} can contain any characters. You can use this to
+define commands that include non-alphabetic characters. There is 
+the matching \cmd{\@nameuse} macro which expands to \verb?\<string>?
+which then lets you use command names that include non-alphabetic
+characters. For example:
+\begin{lcode}
+\@namedef{fred2}{Frederick~II}
+...
+\makeatletter\@nameuse{fred2}\makeatother reigned from ...
+\end{lcode}
+
+\begin{comment}
 
+    \ltx\ lets you create lengths via \cmd{\newlength}.
 \begin{syntax}
-\cmd{\poemtitle}\oarg{short}\marg{long} \\
-\cmd{\poemtitle*}\marg{long} \\
-\cmd{\poemtitlefont}\marg{font} \\
+\cmd{\newdimen}\meta{cmd} \\
+\cmd{\newskip}\meta{cmd} \\
 \end{syntax}
-\cmd{\poemtitle} typesets the title
-of a poem and makes an entry into the \toc. The starred version,
-\cmd{\poemtitle*}, makes no \toc{} entry.
-The \cmd{\poemtitlefont} macro specifies the font and positioning of 
-the poem title. Its initial definition is: \\
-|\newcommand{\poemtitlefont}{\normalfont\bfseries\large\centering}| \\
-to give a large bold centered title. This can of course be renewed
-if you want something else.
+\tx\ has two kinds of lengths, called \emph{dimension}\index{dimension}
+and \emph{glue}\index{glue}. In \ltx\ these are called 
+\emph{fixed length}\index{fixed length}\index{length!fixed}
+and
+\emph{rubber length}\index{rubber length}\index{length!rubber}
+respectively.  A new dimension is created by \cmd{\newdimen} and a new
+glue by \cmd{\newskip}. It so happens that \ltx's \cmd{\newlength}
+always creates a new skip --- all lengths are created as rubber lengths.
 
+    To set a length in \ltx\ you can use any of
+several commands, but \tx\ is more parsimonious.
 \begin{syntax}
-\lnc{\beforepoemtitleskip} \\
-\lnc{\afterpoemtitleskip} \\
+\meta{dimen} = \meta{length} \\
+\meta{skip} = \meta{length} plus \meta{length} minus \meta{length} \\
 \end{syntax}
-These two lengths are the vertical space before and after the 
-\cmd{\poemtitle}
-title text. They are initially defined to give the same spacing
-as for a \cmd{\section} title. They can be changed by \cmd{\setlength} or
-\cmd{\addtolength} for different spacings.
+A dimension is set by giving it a length, as in
+\begin{lcode}
+\mydimen = 20pt % or as the = is optional
+\mydimen 20pt
+\end{lcode}
+A glue is also set by giving it a length, which is possibly followed
+by \Itt{plus} a length optionally followed by \Itt{minus} a length.  
+\begin{lcode}
+\myskip = 20pt plus 5pt minus 2pt
+\end{lcode}
+The actual length will normally be the first specified length, but
+the value is allowed to be no shorter than the given length less 
+the \Itt{minus} length. The value is allowed, but only very reluctantly,
+to be greater than the given length plus the \Itt{plus} length.
+As in setting a dimension value the \Itt{=} sign is optional. In the example,
+\verb?\myskip? can vary anywhere between 18pt and 25pt, but may possibly be
+strained to be greater than 25pt.
 
 \begin{syntax}
-\cmd{\poemtitlemark}\marg{title} \\
+\cmd{\@plus} \cmd{\@minus} \\
 \end{syntax}
-The \cmd{\poemtitle} macro, but not \cmd{\poemtitle*},
-calls the \cmd{\poemtitlemark}\marg{title} macro,
-which is defined to do nothing. This would probably be changed by a
-pagestyle definition (like \cmd{\sectionmark} or \cmd{\chaptermark} may be
-modified).
+\ltx\ supplies \cmd{\@plus} and \cmd{\@minus} which expand to \Itt{plus}
+and \Itt{minus} respectively. Writing \cmd{\@plus} instead of \Itt{plus}
+uses one instead of four tokens, saving three tokens, 
+and \cmd{\@minus} in place of \Itt{minus}
+saves four tokens --- remember that a \tx\ token is either a control 
+sequence (e.g. \cmd{\@minus}) or a single character (e.g., \verb?m?). 
+\tx's memory is not infinite --- it can only hold so many tokens --- and
+it makes sense for kernel and class or package writers to use fewer 
+rather than more to leave sufficient space for any that authors might want
+to create.
 
 \begin{syntax}
-\cmd{\poemtoc}\marg{sec} \\
+\cmd{\z@} \\
+\Itt{fil} \Itt{fill} \Itt{filll} \\
 \end{syntax}
-The kind of entry made in the \toc{} by the \cmd{\poemtitle} command is
-defined by \cmd{\poemtoc}. The initial definition is: \\
-|\newcommand{\poemtoc}{section}| \\
-for a section-like \toc{} entry. This can be changed to, say, |chapter|
-or |subsection| or \ldots.
-
-
-%\clearpage
-\subsection{Examples}
+\cmd{\z@} is a very useful \ltx\ command when specifying lengths.
+Depending on the context it either stands for the number 0 (zero)
+or 0pt (zero length). \tx\ has three kinds of infinitely stretchy 
+length units that can be used in the \Itt{plus} or \Itt{minus} 
+parts of a skip.
+\Itt{fil} is infinitely more flexible than any fixed amount, but
+\Itt{fill} is infitely more flexible than \Itt{fil} and \Itt{filll}
+is infinitely more flexible than anything else at all. These infinite
+glues can be used to push things around.
 
-   Here are some sample verses using the class facilities.
+\begin{syntax}
+\cmd{\hskip}\meta{skip} \\
+\cmd{\vskip}\meta{skip} \\
+\end{syntax}
+The \tx\ command \cmd{\hskip} inserts \meta{skip} horizontal space
+and likewise \cmd{\vskip} inserts \meta{skip} vertical space.
 
-First our old Limerick friend, but titled and centered:
+\begin{syntax}
+\cmd{\hfil} \cmd{\hfill} \cmd{\hfilneg} \cmd{\hss} \\
+\end{syntax}
+These commands are all \tx\ primitives and are equivalent to horizontal 
+skips with some kind of infinite glue, as indicated below (note the use
+of \Itt{fil} as a length unit, it being preceeded by a number):
 \begin{lcode}
-\renewcommand{\poemtoc}{subsection}
-\settocdepth{subsection}
-\poemtitle{A Limerick}
-\settowidth{\versewidth}{There was an old party of Lyme}
-\begin{verse}[\versewidth]
-There was an old party of Lyme \\
-Who married three wives at one time. \\
-\vin When asked: `Why the third?' \\
-\vin He replied: `One's absurd, \\
-And bigamy, sir, is a crime.'
-\end{verse}
+\hfil     -> \hskip 0pt plus 1fil
+\hfill    -> \hskip 0pt plus 1fill
+\hfilneg  -> \hskip 0pt           minus 1fil
+\hss      -> \hskip 0pt plus 1fil minus 1fil
 \end{lcode}
-which gets typeset as below. The \cmd{\poemtoc} is redefined
-to |subsection| so that the \cmd{\poemtitle} titles
-are entered into the \toc{} as unnumbered subsections.
-However, the \toc{} normally only lists sections and above, so
-I also used \cmd{\settocdepth} to change this to subsections and 
-above\footnote{It is changed back at the end of this chapter.}.
-
-\renewcommand{\poemtoc}{subsection}
-\settocdepth{subsection}
-\poemtitle{A Limerick}
-\settowidth{\versewidth}{There was an old party of Lyme}
-\begin{verse}[\versewidth]
-There was an old party of Lyme \\
-Who married three wives at one time. \\
-\vin When asked: `Why the third?' \\
-\vin He replied: `One's absurd, \\
-And bigamy, sir, is a crime.'
-\end{verse}
-
-%\ablankline
 
-    Next is the Garden verse within the |altverse| environment. It
-is titled and centered. 
+\begin{syntax}
+\cmd{\vfil} \cmd{\vfill} \cmd{\vfilneg} \cmd{\vss} \\
+\end{syntax}
+These commands are all \tx\ primitives and are equivalent to vertical 
+skips with some kind of infinite glue, as indicated below:
 \begin{lcode}
-\settowidth{\versewidth}{But now my love is dead}
-\poemtitle{Loves Lost}
-\begin{verse}[\versewidth]
-\begin{altverse}
-\garden
-\end{altverse}
-\end{verse}
+\vfil     -> \vskip 0pt plus 1fil
+\vfill    -> \vskip 0pt plus 1fill
+\vfilneg  -> \vskip 0pt           minus 1fil
+\vss      -> \vskip 0pt plus 1fil minus 1fil
 \end{lcode}
-Note how the alternates lines are automatically indented in the 
-typeset result below.
 
-\settowidth{\versewidth}{But now my love is dead}
-\poemtitle{Loves Lost}
-\begin{verse}[\versewidth]
-\begin{altverse}
-\garden
-\end{altverse}
-\end{verse}
+\end{comment}
 
-% \ablankline
+    At any point in its processing \tx\ is in one of six 
+\emph{modes}\index{mode} which can be categorized into three groups:
+\begin{enumerate}
+\item horizontal and restricted 
+      horizontal;\index{horizontal mode}\index{mode!horizontal}\index{mode!restricted horizontal}
+\item vertical and internal 
+      vertical;\index{vertical mode}\index{mode!vertical}\index{mode!internal vertical}
+\item math and display 
+      math.\index{math mode}\index{mode!math}\index{mode!display math}
+\end{enumerate}
+More simply, \tx\ is in either horizontal, or vertical, or math mode.
+In horizontal mode \tx\ is typically building lines of text while in
+vertical mode it is typically stacking things on top of each other, 
+like the lines making up a paragraph. 
+Math gets complicated, and who can do with more complications
+at this stage of the game?
 
-It is left up to you how you might want to add information about
-the author of a poem. Here is one example of a macro for this:
-\begin{lcode}
-\newcommand{\attrib}[1]{%
-   \nopagebreak{\raggedleft\footnotesize #1\par}}
-\end{lcode}
-\newcommand{\attrib}[1]{%
-   \nopagebreak{\raggedleft\footnotesize #1\par}}
+\begin{syntax}
+\cmd{\hbox} to \meta{dimen}\marg{text} \cmd{\hb@xt@}\meta{dimen}\marg{text} \\
+\cmd{\vbox} to \meta{dimen}\marg{text} \\
+\end{syntax}
+With \cmd{\hbox}, \meta{text} is put into a horizontal box, and similarly
+\cmd{\vbox} puts \meta{text} into a vertical box. The sizes of the boxes
+depend on the size of the \meta{text}. The optional
+\Itt{to}~\meta{dimen} phrase sets the size of the box to the fixed
+\meta{dimen} value. If the
+\meta{text} does not fit neatly inside a fixed size box then \tx\
+will report \Itt{overfull} or \Itt{underfull} warnings. \ltx\ supplies
+the \cmd{\hb@xt@} command as a shorthand for \cmd{\hbox}~\Itt{to}.
 
-   This can be used as in the next bit of doggerel.
-\begin{lcode}
-\poemtitle{Fleas}
-\settowidth{\versewidth}{What a funny thing is a flea}
-\begin{verse}[\versewidth]
-What a funny thing is a flea. \\
-You can't tell a he from a she. \\
-But he can. And she can. \\
-Whoopee!
-\end{verse}
-\attrib{Anonymous}
-\end{lcode}
+    Inside a horizontal box \tx\ is in restricted horizontal 
+mode\index{mode!horizontal}
+which means that everything in the box is aligned horizontally.
+Inside a vertical box \tx\ is in internal vertical 
+mode\index{mode!vertical} and the contents are stacked up 
+and aligned vertically.
 
-\poemtitle{Fleas}
-\settowidth{\versewidth}{What a funny thing is a flea}
-\begin{verse}[\versewidth]
-What a funny thing is a flea. \\
-You can't tell a he from a she. \\
-But he can. And she can. \\
-Whoopee!
-\end{verse}
-\attrib{Anonymous}
+\begin{syntax}
+\cmd{\dp}\meta{box} \cmd{\ht}\meta{box} \cmd{\wd}\meta{box} \\
+\end{syntax}
+The depth, height and width of a box are returned by the macros
+\cmd{\dp}, \cmd{\ht} and \cmd{\wd} respectively.
 
-%\ablankline
+\begin{syntax}
+\cmd{\leavevmode} \\
+\end{syntax}
+\tx\ may be in either vertical or horizontal mode and there are
+things that can be done in one mode while \tx\ reports an eror if they
+are attempted in the other mode. When typesetting a paragraph \tx\
+is in horizontal mode. If \tx\ is in vertical mode, \cmd{\leavevmode} 
+makes it switch to horizontal mode, but does nothing if \tx\ is already
+in horizontal mode. It is often used to make sure that \tx\ is in horizontal
+mode when it is unclear what state it might be in.
 
-The next example demonstrates the automatic line wrapping for overlong
-lines.
+\begin{comment}
+
+\tx\ has various \emph{conditional}\index{conditional}
+constructs of the form:
 \begin{lcode}
-\poemtitle{In the Beginning}
-\settowidth{\versewidth}{And objects at rest tended to remain at rest}
-\begin{verse}[\versewidth]
-Then God created Newton, \\
-And objects at rest tended to remain at rest, \\
-And objects in motion tended to remain in motion, \\
-And energy was conserved
-   and momentum was conserved
-   and matter was conserved \\
-And God saw that it was conservative.
-\end{verse}
-\attrib{Possibly from \textit{Analog}, circa 1950}
+\if something-is-true
+  do-true-stuff
+\else  % something is not true (i.e. it is false)
+  do-false-stuff
+\fi
 \end{lcode}
+In any of these constructs the \verb?\else do-false-stuff? phrase is
+optional, and so is the \verb?do-true-stuff?.
 
-%%\enlargethispage{\baselineskip}
-\poemtitle{In the Beginning}
-\settowidth{\versewidth}{And objects at rest tended to remain at rest}
-\begin{verse}[\versewidth]
-Then God created Newton, \\
-And objects at rest tended to remain at rest, \\
-And objects in motion tended to remain in motion, \\
-And energy was conserved
-   and momentum was conserved
-   and matter was conserved \\
-And God saw that it was conservative.
-\end{verse}
-\attrib{Possibly from \textit{Analog}, circa 1950}
+\begin{syntax}
+\piif{ifodd} \meta{number} ... \piif{else} ...  \piif{fi} \\
+\end{syntax}
+The command \piif{ifodd} tests whether \meta{number} is an odd number (true)
+or an even number (false).
 
-%\ablankline
+\begin{syntax}
+\piif{ifnum} \meta{numbera} \Itt{>} \meta{numberb} ... \piif{else} ... \piif{fi} \\
+\piif{ifnum} \meta{numbera} \Itt{=} \meta{numberb} ... \piif{else} ... \piif{fi} \\
+\piif{ifnum} \meta{numbera} \Itt{<} \meta{numberb} ... \piif{else} ... \piif{fi} \\
+\end{syntax}
+\piif{ifnum} tests if \meta{numbera} is greater than \Itt{>}, equal to
+\Itt{=} or less than \Itt{<} \meta{numberb}.
+There is a similar command, \piif{ifdim}, for comparing two lengths.
 
-The following verse demonstrates the use of a forced linebreak. It also
-has a slightly different title style.
+\begin{syntax}
+\cmd{\newif}\meta{ifcmd} \\
+\end{syntax}
+\cmd{\newif} creates a new conditional\index{conditional}, \meta{ifcmd}.
+The \meta{ifcmd} must start with the three 
+characters \verb?\if?. Two other declarations are created at the same time.
+These are called \verb?\cmdtrue? and \verb?\cmdfalse?. 
+Using \verb?\cmdtrue? sets the result of \verb?\ifcmd? to be true and 
+using \verb?\cmdfalse? sets the result of \verb?\ifcmd? to be false. 
+At creation time, \verb?\cmdfalse? is declared
+so \verb?\ifcmd? is initially false. Here is an example.
 \begin{lcode}
-\renewcommand{\poemtitlefont}{\normalfont\large\itshape\centering}
-\poemtitle{Mathematics}
-\settowidth{\versewidth}{Than Tycho Brahe, or Erra Pater:}
-\begin{verse}[\versewidth]
-In mathematics he was greater \\
-Than Tycho Brahe, or Erra Pater: \\
-For he, by geometric scale, \\
-Could take the size of pots of ale;\\ \settowidth{\versewidth}{Resolve by}
-Resolve, by sines \\>[\versewidth] and tangents straight, \\
-If bread or butter wanted weight; \\
-And wisely tell what hour o' the day \\
-The clock does strike, by Algebra.
-\end{verse}
-\attrib{Samuel Butler (1612--1680)}
+\newif\ifpeter
+...
+\ifpeter
+  My name is Peter.
+\else
+  Call me Ishmael.
+\fi
 \end{lcode}
 
-\renewcommand{\poemtitlefont}{\normalfont\large\itshape\centering}
-\poemtitle{Mathematics}
-\settowidth{\versewidth}{Than Tycho Brahe, or Erra Pater:}
-\begin{verse}[\versewidth]
-In mathematics he was greater \\
-Than Tycho Brahe, or Erra Pater: \\
-For he, by geometric scale, \\
-Could take the size of pots of ale;\\ \settowidth{\versewidth}{Resolve by}
-Resolve, by sines \\>[\versewidth] and tangents straight, \\
-If bread or butter wanted weight; \\
-And wisely tell what hour o' the day \\
-The clock does strike, by Algebra.
-\end{verse}
-\attrib{Samuel Butler (1612--1680)}
+\end{comment}
 
-%\ablankline
-%\clearpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\input{program} % programming chapter \label{chap:program}
 
-Another limerick, but this time taking advantage of the |patverse|
-environment. If you are typesetting a series of limericks you only
-need specify one \cmd{\indentpattern} for all of them.
-\begin{lcode}
-\settowidth{\versewidth}{There was a young lady of Ryde}
-\indentpattern{00110}
-\poemtitle{The Young Lady of Ryde}
-\begin{verse}[\versewidth]
-\begin{patverse}
-There was a young lady of Ryde \\
-Who ate some apples and died. \\
-The apples fermented \\
-Inside the lamented \\
-And made cider inside her inside. 
-\end{patverse}
-\end{verse}
-\end{lcode}
+%% program.tex    (La)TeX programming
 
-\settowidth{\versewidth}{There was a young lady of Ryde}
-\indentpattern{00110}
-\poemtitle{The Young Lady of Ryde}
-\begin{verse}[\versewidth]
-\begin{patverse}
-There was a young lady of Ryde \\
-Who ate some apples and died. \\
-The apples fermented \\
-Inside the lamented \\
-And made cider inside her inside. 
-\end{patverse}
-\end{verse}
 
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\chapter{Calculation and programming} \label{chap:program}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-The next example is a song that I have known since childhood. 
-The `forty-niner' in line~\ref{vs:1} refers to the 1849 gold rush.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\makeatletter
+\newcount\fib
+\newcount\fibprev
+\newcount\fibprevprev
+\newcount\fibtogo
+
+\newcommand*{\fibseries}[1]{%
+  \fibprevprev=1\relax
+  \fibprev=1\relax
+  \ifnum #1>0\relax
+    \@fibseries{#1}%
+  \fi}
+
+\newcommand*{\gfibseries}[3]{%
+  \fibprevprev=#1\relax
+  \fibprev=#2\relax
+  \ifnum #3>0\relax
+    \@fibseries{#3}%
+  \fi}
+
+\newcommand*{\@fibseries}[1]{%
+  \fibtogo=#1\relax
+  \ifnum \fibtogo=1\relax
+    \the\fibprevprev
+  \else
+    \ifnum \fibtogo=2\relax
+      \the\fibprevprev{} and \the\fibprev
+    \else
+      \advance\fibtogo by -2\relax
+      \the\fibprevprev, \the\fibprev
+      \loop
+        \@fibnext
+      \ifnum \fibtogo>0\relax
+      \repeat
+    \fi
+  \fi}
+
+\newcommand*{\@fibnext}{%
+  \fib=\fibprev
+  \advance\fib by \fibprevprev
+  \fibprevprev=\fibprev
+  \fibprev=\fib
+  \printfibterm
+  \advance\fibtogo by -1\relax}
+
+\newcommand*{\printfibterm}{%
+  \ifnum \fibtogo=1\relax
+    \space and \else , \fi
+  \the\fib}
+
+\renewcommand*{\@fibseries}[1]{%
+  \fibtogo=#1\relax
+  \ifcase \fibtogo % ignore 0
+  \or  % \fibtogo=1
+    \the\fibprevprev
+  \or  % \fibtogo=2
+    \the\fibprevprev{} and \the\fibprev
+  \else % fibtogo > 2
+    \advance\fibtogo by -\tw@
+    \the\fibprevprev, \the\fibprev
+    \@whilenum \fibtogo > 0\do {% % !!! must kill space after the {
+      \@fibnext}%
+  \fi}
 
-\clearpage
+\makeatother
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\begin{lcode}
-\settowidth{\versewidth}{Oh my darling, Clementine}
-\poemtitle{Clementine}
-\begin{verse}[\versewidth]
-\linenumberfrequency{3}
-\flagverse{1.} In a cavern, in a canyon, \\
-Excavating for a mine, \\
-Lived a miner, forty-niner, \label{vs:1} \\
-And his daughter, Clementine. \\!
-\flagverse{\textsc{chorus}} Oh my darling, Oh my darling, \\
-Oh my darling, Clementine. \\
-Thou art lost and gone for ever. \\
-Dreadful sorry, Clementine. \\!
-\linenumberfrequency{0}
-\end{verse}
-\end{lcode}
 
-\settowidth{\versewidth}{Oh my darling, Clementine}
-\poemtitle{Clementine}
-\begin{verse}[\versewidth]
-\linenumberfrequency{3}
-\flagverse{1.} In a cavern, in a canyon, \\
-Excavating for a mine, \\
-Lived a miner, forty-niner, \label{vs:1} \\
-And his daughter, Clementine. \\!
-\flagverse{\textsc{chorus}} Oh my darling, Oh my darling, \\
-Oh my darling, Clementine. \\
-Thou art lost and gone for ever. \\
-Dreadful sorry, Clementine. \\!
-\linenumberfrequency{0}
-\end{verse}
+\section{Calculation}
 
+    \ltx\ provides some methods for manipulating numbers and these, of course,
+are composed from \tx's more basic methods. Sometimes it is
+useful to know what \tx\ itself provides. We have met most, if not all,
+of \ltx's macros earlier but I'll collect them all here for ease of reference.
 
- The last example is a much more ambitious use of |\indentpattern|. In
-this case it is defined as: \\
-|\indentpattern{0135554322112346898779775545653222345544456688778899}| \\
-and the result is shown on the next page.
+\subsection{Numbers}
 
+    In \ltx\ a counter\index{counter} is used for storing an integer number.
+\begin{syntax}
+\cmd{\newcounter}\marg{counter} \\
+\cmd{\setcounter}\marg{counter}\marg{number} \\
+\cmd{\stepcounter}\marg{counter} \cmd{\refstepcounter}\marg{counter} \\
+\end{syntax}
+A new counter called \meta{counter}, without a backslash, is created using
+\cmd{\newcounter}. Its value can be set to a \meta{number} by the
+\cmd{\setcounter} command and \cmd{\stepcounter} increases its value by one.
+If the counter is to be used as the basis for a \cmd{\label}, its
+value must be set using \cmd{\refstepcounter}, neither \cmd{\stepcounter}
+nor \cmd{\setcounter} will work as expected in this case.
 
-\clearpage
-\poemtitle{Mouse's Tale}
-\settowidth{\versewidth}{a mouse that morning}
-\indentpattern{0135554322112346898779775545653222345544456688778899}
-\begin{verse}[\versewidth]
-\setlength{\vgap}{1em}
-\begin{patverse}
-\large Fury said to \\
-  a mouse, That \\
-  he met \\
-  in the \\
-  house, \\
-\normalsize `Let us \\
-  both go \\
-  to law: \\
-  \emph{I} will \\
-  prosecute \\
-  \textit{you.} --- \\
-  Come, I'll \\
-\small take no \\
-  denial; \\
-  We must \\
-  have a \\
-  trial: \\
-  For \\
-\footnotesize really \\
-  this \\
-  morning \\
-  I've \\
-  nothing \\
-  to do.' \\
-  Said the \\
-  mouse to \\
-\scriptsize the cur, \\
-  Such a \\
-  trial, \\
-  dear sir, \\
-  With no \\
-  jury or \\
-  judge, \\
-  would be \\
-  wasting \\
-  our breath.' \\
-\tiny  `I'll be \\
-  judge, \\
-  I'll be \\
-  jury.' \\
-  Said \\
-  cunning \\
-  old Fury; \\
-  `I'll try \\
-  the whole \\
-  cause \\
-  and \\
-  condemn \\
-  you \\
-  to \\
-  death.'  \par
-\end{patverse}
-\end{verse}
-\attrib{Lewis Carrol, \textit{Alice's Adventures in Wonderland}, 1865}
+    Internally, a \ltx\ \emph{counter} is represented by a \tx\ 
+\emph{count}\index{count} --- the \cmd{\newcounter} macro creates a
+\tx\ count named \cs{c@}\meta{counter}, and the other \cs{...counter}
+macros similarly operate on the \cs{c@}\meta{counter} count.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%
-\settocdepth{section}
-%%%%%%%%%%%%%%%%%%%%%%%%
 
-\chapter{Verbatims, boxes, and files}
+\begin{syntax}
+\cmd{\newcount}\meta{count} \\
+\end{syntax}
+The \tx\ \cmd{\newcount} command creates a new count, \meta{count}, which 
+\emph{does} include an initial backslash. For example
+\begin{lcode}
+\newcount\mycount
+\end{lcode}
+\tx's method of assigning a number to a count uses nothing like 
+\cmd{\setcounter}.
+\begin{syntax}
+\meta{count} [ \texttt{=} ] \meta{number} \\
+\end{syntax}
+The [ and ] enclosing the \texttt{=} sign are there only
+to indicate that the \texttt{=} sign is optional. For example:
+\begin{lcode}
+\mycount = -24\relax  % \mycount has the value -24 
+\mycount 36\relax     % now \mycount has the value 36
+\end{lcode}
+I have added \cmd{\relax} after the digits forming the number for safety
+and efficiency. When \tx\ is reading a number it keeps on looking until
+it comes across something that is not part of a number. There are things 
+that \tx\ will treat as part of a number which you might not think of, 
+but \cmd{\relax} is definitely not part of a number. See, for example,
+\cite[chapter 7]{TEXBYTOPIC} for all the intricate details if you need them.
+
+    There are some numbers that are used many times in the \ltx\ kernel
+and class codes. To save having to use \cmd{\relax} after such numbers,
+and for other reasons of efficiency, there are commands that can be used 
+instead of typing the digits. These are listed in \tref{tab:intmacnum}.
+The command \cmd{\z@} can be used both for the number zero and for a
+length of 0pt. Do not use the commands to print a number.
 
-\section{Introduction}
+\newcolumntype{A}{>{\makeatletter}r<{\makeatother}}
+\begin{table}
+\centering
+\caption{Some internal macros for numbers} \label{tab:intmacnum}
+\begin{tabular}{lrclrclr} \toprule
+\cmd{\m@ne} & \makeatletter\the\m@ne\makeatother & &
+%\cmd{\z@}   & \makeatletter\strip@pt\the\z@\makeatother & & 
+\cmd{\z@}   & 0 & & 
+\cmd{\@ne}  & \makeatletter\the\@ne\makeatother \\
+\cmd{\tw@}  & \makeatletter\the\tw@\makeatother  & & 
+\cmd{\thr@@} & \makeatletter\the\thr@@\makeatother & & 
+\cmd{\sixt@@n} & \makeatletter\the\sixt@@n\makeatother \\
+\cmd{\@xxxii} & \makeatletter\the\@xxxii\makeatother & &
+\cmd{\@cclv} & \makeatletter\the\@cclv\makeatother & &
+\cmd{\@cclvi} & \makeatletter\the\@cclvi\makeatother \\
+\cmd{\@m} & \makeatletter\the\@m\makeatother & &
+\cmd{\@Mi} & \makeatletter\the\@Mi\makeatother & &
+\cmd{\@Mii} & \makeatletter\the\@Mii\makeatother \\
+\cmd{\@Miii} & \makeatletter\the\@Miii\makeatother & &
+\cmd{\@Miv} & \makeatletter\the\@Miv\makeatother & &
+\cmd{\@MM} & \makeatletter\the\@MM\makeatother  \\
+\bottomrule
+\end{tabular}
+\end{table}
 
-    This chapter describes some new facilities for handling verbatim
-text; new boxes to go around things, including verbatims; and a more 
-friendly interface for writing to and reading from files and in some
-cases being able to read files verbatim, while putting them
-into a box with line numbers.
 
-\section{Verbatims}
+\tx\ has a limited vocabulary for arithmetic. It can add to a count,
+and can multiply and divide a count, but only by integers. The result
+is always an integer. This may be disconcerting after a division where
+any remainder is discarded.
+The syntax for these operations is:
+\begin{syntax}
+\cmd{\advance}\meta{count} [ \pixkey{by} ] \meta{number} \\
+\cmd{\multiply}\meta{count} [ \pixkey{by} ] \meta{number} \\
+\cmd{\divide}\meta{count} [ \pixkey{by} ] \meta{number} \\
+\end{syntax}
+The \pixkey{by} is a \tx\ keyword and the brackets are 
+just there
+to indicate that it can be missed out. Some examples:
+\begin{lcode}
+\advance\mycount by -\mycount  % \mycount is now 0
+\mycount = 15\relax            % \mycount is now 15
+\divide\mycount by 4\relax     % \mycount is now 3
+\multiply\mycount 4\relax      % \mycount is now 12
+\advance\mycount by \yourcount % \mycount is now \yourcount + 12
+\end{lcode}
+
+The value of a count can be typeset by prepending the count by the \cmd{\the}
+command, e.g., \verb?\the\mycount?.
 
-    I have included in the class the code for the \Lpack{shortvrb}
-package~\cite{SHORTVRB} and an extended version of the \Lpack{verbatim}
-package~\cite{VERBATIM}. I have also borrowed from the \Lpack{moreverb}
-package~\cite{MOREVERB}.
 
-    When processing text verbatim LaTeX ignores any special meaning
-that a character may have. As a special case of this, LaTeX ignores 
-\emph{any} character in a comment.
+\subsection{Lengths}
+
+    Every length\index{length} has an associated unit. For convenience I'll use 
+`\textit{dimension}'\index{dimension} as shorthand for a number and a length 
+unit.
 \begin{syntax}
-\cmd{\newcomment}\marg{comenv} \\
+\textit{dimension}: \meta{number}\meta{length-unit} \\
 \end{syntax}
-The macro \cmd{\newcomment} creates a new comment environment called
-\meta{comenv}. All text within the \meta{comenv} environment will be ignored.
+For example, a \textit{dimension} may be \texttt{10pt}, or \texttt{23mm}, 
+or \texttt{1.3pc}.
+
+    Unlike \ltx, \tx\ distinguishes two kinds of lengths. A \tx\
+\cmd{\dimen} is a length that is fixed; in \ltx's terms it is a
+\emph{rigid}\index{length!rigid} length. On the other hand a \tx\ \cmd{\skip}
+is a length that may stretch or shrink a little; it is what \ltx\ calls 
+a \emph{rubber}\index{length!rubber} length.
 \begin{syntax}
-\senv{comment} anything \eenv{comment} \\
+\cmd{\newdimen}\meta{dimen} \cmd{\newskip}\meta{skip} \\
 \end{syntax}
-The class provides one comment environment, namely the \Ie{comment} 
-environment which is specified by
+The \tx\ macros \cmd{\newdimen} and \cmd{\newskip} are used for creating
+a new \meta{dimen} or a new \meta{skip}. For instance:
 \begin{lcode}
-\newcomment{comment}
+\newdimen\mydimen
+\newskip\myskip
 \end{lcode}
-This may be useful for `commenting out' large chunks of 
-a source document.
+The value of a \cmd{\dimen} is a \textit{dimension} and the value of a 
+\cmd{\skip} is what \tx\ calls \textit{glue}\index{glue}. It
+so happens that \ltx's \cmd{\newlength} always creates a new skip ---
+all \ltx\ lengths are created as rubber\index{length!rubber} lengths. Glue
+has at least one and possibly as many as three parts.
+\begin{syntax}
+glue: \textit{dimension} [ \pixkey{plus} \textit{dimension} ] [ \pixkey{minus} \textit{dimension} ] \\
+\end{syntax}
+The optional \pixkey{plus} part is the amount that the glue can 
+stretch from its normal size and the optional \pixkey{minus} part 
+is the amount the glue can shrink below its normal size. 
+Both \pixkey{plus} and \pixkey{minus} are \tx\ keywords.
+Glue can never shrink more than the \pixkey{minus} 
+\textit{dimension} and it normally does not stretch more than the
+\pixkey{plus} \textit{dimension}. 
 
 \begin{syntax}
-\cmd{\commentsoff}\marg{comenv} \\
-\cmd{\commentson}\marg{comenv} \\
+\cmd{\@plus} \cmd{\@minus} \\
 \end{syntax}
-The declaration \cmd{\commentsoff} switches off the commenting within
-the \meta{comenv} comment environment, and the declaration
-\cmd{\commentson} switches on commenting within the \meta{comenv}
-comment environment. In either case, \meta{comenv} must have been previously
-defined as a comment environment via \cmd{\newcomment}.
+\ltx\ supplies \cmd{\@plus} and \cmd{\@minus} which expand to \Itt{plus}
+and \Itt{minus} respectively. Writing \cmd{\@plus} instead of \Itt{plus}
+uses one instead of four tokens, saving three tokens, 
+and \cmd{\@minus} in place of \Itt{minus}
+saves four tokens --- remember that a \tx\ token is either a control 
+sequence (e.g. \cmd{\@minus}) or a single character (e.g., \verb?m?). 
+\tx's memory is not infinite --- it can only hold so many tokens --- and
+it makes sense for kernel and class or package writers to use fewer 
+rather than more to leave sufficient space for any that authors might want
+to create.
 
-    Suppose, for example, that you are preparing a draft document for 
-review by some others and you want to include some notes for the reviewers.
-Also, you want to include some private comments in the source for yourself.
-You could use the \Ie{comment} environment for your private comments and
-create another environment for the notes to the reviewers. These notes
-should not appear in the final document. Your source might then look like:
+In \tx, assigning a value to a length (\cmd{\dimen} or \cmd{\skip}) is 
+rather different from the way it would be done in \ltx.
+\begin{syntax}
+\meta{dimen} [ \texttt{=} ] \meta{dimension} \\
+\meta{skip} [ \texttt{=} ] \meta{glue} \\
+\end{syntax}
+The [ and ] enclosing the \texttt{=} sign are there only
+to indicate that the \texttt{=} sign is optional. For example:
 \begin{lcode}
-\newcomment{review}
-\ifdraftdoc\else
-  \commentsoff{review}
-\fi
-...
-\begin{comment}
-Remember to finagle the wingle!
-\end{comment}
-...
-\begin{review}
-\textit{REVIEWERS: Please pay particular attention to this section.}
-\end{review}
-...
+\newdimen\mydimen
+\mydimen = 3pt    % \mydimen has the value 3pt
+\mydimen   -13pt  % now \mydimen has the value -13pt
+\myskip = 10pt plus 3pt minus 2pt % \myskip can vary between
+                                  % 8pt and 13pt (or more)
+\myskip = 10pt plus 3pt           % \myskip can vary between
+                                  % 10pt and 13pt (or more)
+\myskip = 10pt minus 2pt          % \myskip can vary between
+                                  % 8pt and 10pt 
+\myskip = 10pt                    % \myskip is fixed at 10pt
 \end{lcode}
 
-    LaTeX provides the \cmd{\verb} command for
-typesetting short pieces of text verbatim; `short' means less than one
-line. If you have to type a lot of verbatim bits, like macro names,
-it becomes very tedious to keep on doing \verb!\verb?\amacro?!.
-The \cmd{\verb*} macro is similar to \cmd{\verb} except that it
-typesets the symbol \verb*? ? in place of a space.
+    Like counts, the value of a length can be typeset by prepending the 
+length by the \cmd{\the} command, e.g., \verb?\the\myskip?.
+
+    \tx's lengths can be manipulated in the same way as a count, using the
+\cmd{\advance}, \cmd{\multiply} and \cmd{\divide} macros. Ignoring some 
+details, lengths can be added together but may only be multiplied or divided
+by an integer number. 
+
+
+\newdimen\Wdimen \newskip\Wskip
+
+\begin{center}
+\begin{tabular}{l}
+$\rhd$  \verb?\Wdimen = 10pt? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\Wdimen = 10pt \texttt{Wdimen} = \the\Wdimen} \\
+$\rhd$ \verb?\Wskip = 15pt plus 5pt minus 3pt? $\Rightarrow$ \\
+\multicolumn{1}{r}{ \global\Wskip = 15pt plus 5pt minus 3pt \texttt{Wskip} = \the\Wskip} \\
+$\rhd$ \verb?\advance\Wskip by \Wskip? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\advance\Wskip by \Wskip  \texttt{Wskip} = \the\Wskip} \\
+$\rhd$  \verb?\multiply\Wskip by 3? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\multiply\Wskip by 3 \texttt{Wskip} = \the\Wskip} \\
+$\rhd$ \verb?\divide\Wskip by 17? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\divide\Wskip by 17  \texttt{Wskip} = \the\Wskip} \\
+$\rhd$ \verb?\advance\Wskip by \Wdimen? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\advance\Wskip by \Wdimen  \texttt{Wskip} = \the\Wskip} \\
+$\rhd$ \verb?\advance\Wdimen by \Wskip? $\Rightarrow$ \\
+\multicolumn{1}{r}{\global\advance\Wdimen by \Wskip  \texttt{Wdimen} = \the\Wdimen} \\
+\end{tabular}
+\end{center}
+
+    A length can be multiplied by a fractional number by prepending the
+length with the number. For example:
+
+\begin{center}
+\begin{tabular}{l}
+$\rhd$  \verb?\Wdimen = 0.5\Wdimen?  $\Rightarrow$ \\
+  \multicolumn{1}{r}{\Wdimen = 0.5\Wdimen \texttt{Wdimen} = \the\Wdimen } \\
+$\rhd$ \verb?\Wskip = 0.5\Wskip?  $\Rightarrow$ \\
+\multicolumn{1}{r}{\Wskip = 0.5\Wskip  \texttt{Wskip} = \the\Wskip} \\
+\end{tabular}
+\end{center}
+
+    When \cmd{\multiply} or \cmd{\divide} is applied to a \cmd{\skip}
+all its parts are modified, both the fixed part and any elastic components.
+However, if a \cmd{\skip} is multiplied by a fractional number then it
+loses any elasticity it might have had. In the same vein, 
+if a \cmd{\skip} is added to a \cmd{\dimen} any elasticity is lost. 
+A \cmd{\skip} can be coerced into behaving like a \cmd{\dimen} but a
+\cmd{\dimen} is always rigid. For example, typing \\
+`\verb?\Wdimen = 10pt plus 2pt minus 1pt?' results in: 
+`\Wdimen = 10pt plus 2pt minus 1pt'.
 
 \begin{syntax}
-\cmd{\MakeShortVerb}\marg{verbchar} \\
-\cmd{\DeleteShortVerb}\marg{verbchar} \\
+\cmd{\newlength}\marg{len} \\
 \end{syntax}
+    \ltx's \cmd{\newlength} macro creates a new 
+rubber length\index{length!rubber} (internally it uses \cmd{\newskip});
+there is no \ltx\ specific macro to create a rigid length\index{length!rigid}
+(i.e., a \cmd{\dimen}).
 
-    With the \cmd{\MakeShortVerb} declaration you can use a single
-character instead of |\verb|\meta{char}. The \meta{verbchar}
-argument to \cmd{\MakeShortVerb} is a backslash followed by a single 
-character, for example |\MakeShortVerb{\?}|. 
-You can then use |?...?| instead of |\verb?...?|. To turn off
-the use of |?| in this special manner, call |\DeleteShortVerb{\?}|.
+\ltx\ has a variety of macros for setting or changing its length values.
+\begin{syntax}
+\cmd{\setlength}\marg{len}\marg{glue} \\
+\end{syntax}
+The \ltx\ \cmd{\setlength} macro assigns the value \meta{glue} to the 
+rubber length \meta{len}.
+Some examples of this are: \newlength{\Wlen}
+
+\begin{center}
+\begin{tabular}{l}
+$\rhd$ \verb?\setlength{\Wlen}{10pt}?  $\Rightarrow$ \\
+\multicolumn{1}{r}{\setlength{\Wlen}{10pt} \texttt{Wlen} = \the\Wlen} \\
+$\rhd$ \verb?\setlength{\Wlen}{10pt plus 2pt}?  $ \Rightarrow $ \\
+\multicolumn{1}{r}{\setlength{\Wlen}{10pt plus 2pt} \texttt{Wlen} = \the\Wlen} \\
+$\rhd$ \verb?\setlength{\Wlen}{10pt minus 1pt}?  $ \Rightarrow $ \\ 
+\multicolumn{1}{r}{\setlength{\Wlen}{10pt minus 1pt} \texttt{Wlen} = \the\Wlen} \\
+$\rhd$ \verb?\setlength{\Wlen}{10mm plus 2pt minus 1pt}?  $ \Rightarrow $ \\
+ \multicolumn{1}{r}{\setlength{\Wlen}{10mm plus 2pt minus 1pt} \texttt{Wlen} = \the\Wlen} \\
+\end{tabular}
+\end{center}
+
+    As shown in the last example above where both mm and pt are used as a 
+length unit, the \cmd{\the} applied to a length always prints the value
+in pt units.
 
 \begin{syntax}
-\senv{verbatim} anything \eenv{verbatim} \\
-\senv{verbatim*} anything \eenv{verbatim*} \\
+\cmd{\settowidth}\marg{len}\marg{text} \\
+\cmd{\settoheight}\marg{len}\marg{text} \\
+\cmd{\settodepth}\marg{len}\marg{text} \\
 \end{syntax}
-The \Ie{verbatim} and \Ie{verbatim*} environments are used for
-typesetting any length of verbatim text.
+These put the \meta{text} into a box and then set the \meta{len} to the
+width, height and depth respectively of the box.
 
 \begin{syntax}
-\cmd{\setverbatimfont}\marg{font-decl} \\
+\cmd{\addtolength}\marg{len}\marg{glue} \\
 \end{syntax}
-The font that is used for \emph{all} verbatim text is specified
-by \cmd{\setverbatimfont}. The default is: \\
-|\setverbatimfont{\normalfont\ttfamily}| \\
-If you wanted verbatims to be set in a smaller size, then this will
-do the trick:
-\begin{lcode}
-\setverbatimfont{\normalfont\small\ttfamily}
-\end{lcode}
+\ltx's \cmd{\addtolength} macro is the equivalent of \tx's \cmd{\advance}
+command. There are no equivalents to \tx's \cmd{\multiply} or \cmd{\divide}
+but in any case a length can still be multiplied by prepending it with 
+a fractional number.
+
 
 \begin{syntax}
-\cmd{\tabson}\oarg{num} \\
-\cmd{\tabsoff} \\
+\cmd{\z@} \\
+\Itt{fil} \Itt{fill} \Itt{filll} \\
 \end{syntax}
-The standard \Ie{verbatim} environment ignores any TABs, or rather
-treats a sequence of TABs as a single space. In the class,
-if you use the declaration \cmd{\tabson} then TABs will not be ignored
-in subsequent verbatims. The declaration \cmd{\tabsoff} turns off
-tabbing inside verbatims. The default is |\tabsoff|. By default the class
-uses four spaces for each tab. The optional \meta{num} argument to
-\cmd{\tabson} will use \meta{num} spaces for each TAB.
+\cmd{\z@} is a very useful \ltx\ command when specifying lengths.
+Depending on the context it either stands for the number 0 (zero)
+or 0pt (zero length). \tx\ has three kinds of infinitely stretchy 
+length units that can be used in the \Itt{plus} or \Itt{minus} 
+parts of a skip.
+\Itt{fil} is infinitely more flexible than any fixed amount, but
+\Itt{fill} is infitely more flexible than \Itt{fil} and \Itt{filll}
+is infinitely more flexible than anything else at all. These infinite
+glues can be used to push things around.
 
 \begin{syntax}
-\cmd{\wrappingon} \\
-\cmd{\wrappingoff} \\
-\lnc{\verbatimindent} \\
-\cmd{\verbatimbreakchar} \\
+\cmd{\hskip}\meta{skip} \\
+\cmd{\vskip}\meta{skip} \\
+\end{syntax}
+The \tx\ command \cmd{\hskip} inserts \meta{skip} horizontal space
+and likewise \cmd{\vskip} inserts \meta{skip} vertical space.
+
+\begin{syntax}
+\cmd{\hfil} \cmd{\hfill} \cmd{\hfilneg} \cmd{\hss} \\
+\end{syntax}
+These commands are all \tx\ primitives and are equivalent to horizontal 
+skips with some kind of infinite glue, as indicated below (note the use
+of \Itt{fil} as a length unit, it being preceeded by a number):
+\begin{lcode}
+\hfil     -> \hskip 0pt plus 1fil
+\hfill    -> \hskip 0pt plus 1fill
+\hfilneg  -> \hskip 0pt           minus 1fil
+\hss      -> \hskip 0pt plus 1fil minus 1fil
+\end{lcode}
+
+\begin{syntax}
+\cmd{\vfil} \cmd{\vfill} \cmd{\vfilneg} \cmd{\vss} \\
 \end{syntax}
-Very occasionally it may be useful to wrap long verbatim lines round onto
-the following line. After the declaration \cmd{\wrappingon}, verbatim lines
-that would extend into the margin will be wrapped (\cmd{\wrappingoff}
-returns the behaviour to normal). The second and later parts of a 
-wrapped line are indented by the length \lnc{\verbatimindent} which
-can be altered in the usual manner. 
-
-    It may be desireable to indicate that a line is continued on the 
-next line. That is the role of \cmd{\verbatimbreakchar}. By default
-this is defined as: \\
-|\newcommand*{\verbatimbreakchar}{\char`\%}| \\
-which typesets \% at the end of each line that is wrapped. To have
-|/| at the end of each line instead, do:
+These commands are all \tx\ primitives and are equivalent to vertical 
+skips with some kind of infinite glue, as indicated below:
 \begin{lcode}
-\renewcommand*{\verbatimbreakchar}{\char`\/}
+\vfil     -> \vskip 0pt plus 1fil
+\vfill    -> \vskip 0pt plus 1fill
+\vfilneg  -> \vskip 0pt           minus 1fil
+\vss      -> \vskip 0pt plus 1fil minus 1fil
 \end{lcode}
 
-    Note that trying both tabbing and wrapping together does not 
-always work well. It is best to do only one out of the two, and make
-that tabbing.
-
-    There is some more on verbatims in later sections.
 
-\section{Framed boxes}
 
-    You can use framed boxes, looking like the syntax boxes here,
-in the standard LaTeX classes but they cannot break over a page.
+\section{Programming}
 
-    The \Ie{framed}, \Ie{shaded} and \Ie{leftbar} environments, which
-can break over a page, are from the \Lpack{framed} package~\cite{FRAMED}.
+    One of the commonest programming operations is to possibly do one thing if
+something is true and to possibly do another thing if it is not true. Generally
+speaking, this is called an `if-then-else'\index{if-then-else} or
+\emph{conditional}\index{conditional} statement.
 
 \begin{syntax}
-\senv{framed} text \eenv{framed} \\
-\senv{shaded} text \eenv{shaded} \\
-\senv{leftbar} text \eenv{leftbar} \\
+\cs{if...} \meta{test} \meta{true-text} [ \piif{else} \meta{false-text} ] \piif{fi} \\
 \end{syntax}
-The \Ie{framed} environment puts the text into an \cmd{\fbox}-like 
-framed box the same width as the text width. The
-\Ie{shaded} environment puts the text into a coloured box, and the
-\Ie{leftbar} environment draws a vertical line at the left of the text.
-In all cases the text and boxes can include page breaks.
+\tx\ has several kinds of `if-then-else' statements which have the general
+form shown above. The statement starts with an \cs{if...} and is finished
+by a matching \piif{fi}. As usual, the brackets enclose optional elements, 
+so there need be no \cs{else} portion. The \meta{true-text}, it it exists,
+is processed if the \meta{test} is \ptrue\ otherwise the 
+\meta{false-text}, if both the \piif{else} clause and \meta{false-text}
+are present, is processed.
 
+The simplest kind of \cs{if...}
+is defined by the \cmd{\newif} macro.
 \begin{syntax}
-\lnc{\FrameRule} \lnc{\FrameSep} \cmd{\FrameHeightAdjust} \\
-\Itt{shadecolor} \\
+\cmd{\newif}\verb?\if?\meta{name} \\
 \end{syntax}
-The thickness of the rules is the length \lnc{\FrameRule} and the separation
-between the text and the box is given by the length \lnc{\FrameSep}.
-The height of the frame above the baseline at the top of a page is specified
-by the macro \cmd{\FrameHeightAdjust}. The default definitions being:
+\cmd{\newif} creates three new commands, the \cs{ifname} and the
+two declarations, \cs{nametrue} and \cs{namefalse}, for setting the value
+of \cs{ifname} to \ptrue\ or \pfalse\ respectively.
+In this case the \meta{test} is embedded in the \cs{if...}.
+For example:
 \begin{lcode}
-\setlength{\FrameRule}{\fboxrule}
-\setlength{\FrameSep}{3\fboxsep}
-\newcommand{\FrameHeightAdjust}{0.6em}
+\newif\ifpeter
+...
+\ifpeter
+  My name is Peter.
+\else
+  Call me Ishmael.
+\fi
 \end{lcode}
-The background color in the \Ie{shaded} environment is specified by
-\Itt{shadecolor} which you have to specify using the \Lpack{color}
-package~\cite{COLOR}. For example:
-\begin{lcode}
-\usepackage{color}
-\definecolor{shadecolor}{gray}{0.75}
+or a more likely scenario is
+\begin{lcode}
+\newif\ifmine
+  \minetrue % or \minefalse
+\newcommand{\whose}{%
+  \ifmine It's mine. \else I don't know whose it is. \fi}
+\end{lcode}
+
+Here are some of the other more commonly used kinds of ifs.
+\begin{syntax}
+\piif{ifdim} \meta{dimen1} \meta{rel} \meta{dimen2} \\
+\piif{ifnum} \meta{number1} \meta{rel} \meta{number2} \\
+\piif{ifodd} \meta{number} \\
+\end{syntax}
+The \meta{rel} in \piif{ifnum} and \piif{ifdim} is one of the three characters:
+\texttt{<} (less than), \texttt{=} (equals), or \texttt{>} (greater than).
+\piif{ifdim} results in \ptrue\ if the two lengths are in the stated
+relationship otherwise it results in \pfalse. Similarly \piif{ifnum}
+is for the comparison of two integers. The \piif{ifodd} test is \ptrue\
+if the integer \meta{number} is an odd number, otherwise it results 
+in \pfalse.
+
+    Among other things, the\ltx\ class code that organizes the page layout
+checks if the length values are sensible. The following code is a snippet
+from the layout algorithm. It checks that the sum of the margins and the
+width of the typeblock is the same as the width of the page after trimming.
+\cmd{\@tempdima} and \cmd{\@tempdimb} are two `scratch' lengths used in many
+calculations.
+\begin{lcode}
+\@tempdimb= -1pt              % allow a difference of 1pt
+\@tempdima=\paperwidth              % paperwidth
+\advance\@tempdima by -\foremargin  % minus the foremargin
+\advance\@tempdima -\textwidth      % minus the textwidth
+\advance\@tempdima -\spinemargin    % minus the spinemargin
+\ifdim\@tempdima < \@tempdimb       % should be close to zero
+  %% error                          % otherwise a problem
+\fi
 \end{lcode}
 
-\begin{syntax}
-\cmd{\frameasnormaltrue} \cmd{\frameasnormalfalse} \\
-\end{syntax}
-Following the declaration \cmd{\frameasnormaltrue} paragraphing within
-the environments will be as specified for the main text. After the declaration
-\cmd{\frameasnormalfalse} paragraphing will be as though the environments
-were like a \Ie{minipage}. The initial declaration is 
-\cmd{\frameasnormaltrue}.
+    Changing the subject, on the offchance that you might want to see 
+how the Fibonacci sequence
+progresses, the first thirty numbers in the sequence are: 
+\fibseries{30}.
+I got \ltx\ to calculate those numbers for me, and it could have 
+calculated many more. They were produced by just saying \verb?\fibseries{30}?.
+The French mathematician 
+\'{E}douard Lucas\index{Lucas, Edouard?Lucas, \'{E}douard} 
+(1842--1891) studied sequences
+like this and was the one to give it the name Fibonacci. Lucas also
+invented the game called the Tower of Hanoi with  
+Henri de Parville\protect\index{Parville, Henri?de Parville, Henri} (1838--1909), 
+supplying the accompanying fable~\cite{PARVILLE84,ROUSEBALL}:
+\begin{quotation}
+In the great temple at Benares beneath the dome that marks the center of
+the world, rests a brass plate in which are fixed three diamond needles, 
+each a cubit high and as thick as the body of a bee. On one of these
+needles, at the creation, God placed sixty-four discs of pure gold, the 
+largest disc resting on the brass plate, and the others getting smaller 
+and smaller up to the top one. This is the tower of Bramah. Day and night
+unceasingly the priests transfer the discs from one diamond needle to
+another according to the fixed and immutable laws of Bramah, which require
+that the priest on duty must not move more than one disc at a time and
+that he must place this disc on a needle so that there is no smaller disc
+below. When the sixty-four discs shall have been thus transferred from the
+needle which at creation God placed them, to one of the other needles, 
+tower, temple, and Brahmins alike will crumble into dust and with a
+thunderclap the world will vanish.
+\end{quotation}
+
+    The number of separate transfers of single discs is $2^{64} - 1$
+or just under eighteen and a half million million moves, give or take a few,
+to move the pile. At the rate of one disc per second, with no mistakes,
+it would take more than 58 million million years before we would have to 
+start being concerned.
+
+    In his turn, Lucas has a number sequence named after him. There are many 
+relationshps between the Fibonacci 
+numbers $F_{n}$ and the Lucas numbers $L_{n}$, the simplest, perhaps, being
+\begin{eqnarray}
+L_{n} & = & F_{n-1} + F_{n+1} \\
+5F_{n} & = & L_{n-1} + L_{n+1}
+\end{eqnarray}
+    The first 15 numbers in the Lucas sequence are:
+\gfibseries{2}{1}{15}. These were produced by saying 
+\verb?\gfibseries{2}{1}{15}?. The Lucas numbers are produced in the same manner
+as the Fibonacci numbers, it's just the starting pairs that differ.
+
+However, it is the definition of the \cmd{\fibseries} and \cmd{\gfibseries}
+macros that might be more interesting in this context. 
+
+    First, create four new counts. \cs{fibtogo} is the number of terms to be
+calculated, \cs{fib} is the current term, and \cs{fibprev} and \cs{fibprevprev}
+are the two prior terms.
+\begin{lcode}
+\newcount\fib
+\newcount\fibprev
+\newcount\fibprevprev
+\newcount\fibtogo
+\end{lcode}
+The argument to \cmd{\fibseries} is the number of terms. The counts
+\cs{fibprevprev} and \cs{fibprev} are set to the starting pair in the sequence.
+Provided the number of terms requested is one or more the macro 
+\cmd{\@fibseries} is called to do the work.
+\begin{lcode}
+\newcommand*{\fibseries}[1]{%
+  \fibprevprev=1\relax
+  \fibprev=1\relax
+  \ifnum #1>0\relax
+    \@fibseries{#1}%
+  \fi}
+\end{lcode}
+
+The macro \cmd{\@fibseries} calculates and prints the terms. 
+\begin{lcode}
+\newcommand*{\@fibseries}[1]{%
+  \fibtogo=#1\relax
+\end{lcode}
+It's simple if no more than two terms have been asked for --- just print
+them out.
+\begin{lcode}
+  \ifnum \fibtogo=\@ne
+    \the\fibprevprev
+  \else
+    \ifnum \fibtogo=\tw@
+      \the\fibprevprev{} and \the\fibprev
+    \else
+\end{lcode}
+Three or more terms have to be calculated. We reduce the number to be 
+calculated by 2, and print the first two terms.
+\begin{lcode}
+      \advance\fibtogo by -\tw@
+      \the\fibprevprev, \the\fibprev
+\end{lcode}
+We now have to calculate the rest of the terms, where each term is the sum of
+the two previous terms. 
+The macro \cmd{\@fibnext} calculates the next term, prints it out and reduces
+the number of terms left to be calculated (\cmd{\fibtogo}) by one. 
+If there are terms left to be done then the process is repeated until 
+they have all been printed.
+\begin{lcode}
+      \loop
+        \@fibnext
+      \ifnum \fibtogo>\z@
+      \repeat
+    \fi
+  \fi}
+\end{lcode}
 
-    There is one known problem with framing: when framing is used on 
-a page where the page header is in a smaller type than the body, the 
-header may be moved slightly up or down. This can be avoided by putting
-the font size change in a group, but it seems that a larger font does not need
-to be grouped. For example:
+The \cmd{\@fibnext} macro calculates a term in the series, uses 
+\cmd{\printfibterm} to print it, and decrements the \cmd{\fibtogo} count.
 \begin{lcode}
-\makeoddhead{myheadings}{{\tiny Tiny header}}{}{\LARGE Large header}
+\newcommand*{\@fibnext}{%
+  \fib=\fibprev
+  \advance\fib by \fibprevprev
+  \fibprevprev=\fibprev
+  \fibprev=\fib
+  \printfibterm
+  \advance\fibtogo \m@ne}
 \end{lcode}
-The environments are a little
-delicate. You cannot use floats, footnotes or marginpars inside them,
-and they do not work in two column mode except for the standard
-LaTeX supplied one.
 
-    You can use the \Lpack{framed} package with the \Lclass{memoir} class, in
-which case you will get whatever functionality is provided by the package as
-it will override the class' code.
+The last of the macros, \cmd{\printfibterm}, typesets a term in the sequence. 
+If the term is the last one print an `and' otherwise print a `,', 
+then a space and the term.
+\begin{lcode}
+\newcommand*{\printfibterm}{%
+  \ifnum \fibtogo=\@ne \space and \else , \fi 
+  \the\fib}
+\end{lcode}
 
+    You have met all of the macros used in this code except for \tx's
+\piif{loop} construct. I find the syntax for this a little unusual.
 \begin{syntax}
-\senv{fboxverbatim} anything \eenv{fboxverbatim} \\
-\end{syntax}
-The \Ie{fboxverbatim} environment is, except for its name,
-identical to the \Ie{boxedverbatim} environment from the \Lpack{moreverb}
-package~\cite{MOREVERB}. It puts a close fitting rectangular box
-around its contents, which are typeset verbatim.
+\piif{loop} \meta{text1} \cs{if...} \meta{text2} \piif{repeat} \\
+\end{syntax} 
+The construct starts with \piif{loop} and is ended by \piif{repeat};
+the \cs{if...} is any conditional test, but without the closing \piif{fi}.
+\tx\ processes \meta{text1}, then if the \cs{if...} is \ptrue\
+it processes \meta{text2} and repeats the sequence again starting
+with \meta{text1}. On the other hand, as soon as the result of the
+\cs{if...} is 
+\pfalse\ the loop stops (i.e., \tx\ jumps over \meta{text2}
+and goes on to do whatever is after the \piif{repeat}).
 
+    The \cmd{\gfibseries} macro that I used for the Lucas numbers is a
+generalisation of \cmd{\fibseries}, where the first two arguments are the
+starting pair for the sequence and the third argument is the number
+of terms; so \verb?\gfibseries{1}{1}{...}? is equivalent to
+\verb?\fibseries{...}?.
+\begin{lcode}
+\newcommand*{\gfibseries}[3]{%
+  \fibprevprev=#1\relax
+  \fibprev=#2\relax
+  \ifnum #3>0\relax
+    \@fibseries{#3}%
+  \fi}
+\end{lcode}
+    The calculation of the terms in the Fibonacci and in the generalised 
+sequences is the same so \cmd{\@fibseries} can be used again.
 
+    I used the \tx\ \piif{loop} construct in the \cmd{\@fibseries} macro
+but \ltx\ has a similar construct.
 \begin{syntax}
-\senv{boxedverbatim} anything \eenv{boxedverbatim} \\
+\cmd{\@whilenum} \meta{ifnum test} \cmd{\do} \marg{body} \\
+\cmd{\@whiledim} \meta{ifdim test} \cmd{\do} \marg{body} \\
 \end{syntax}
-The \Ie{boxedverbatim} environment has the flavour of both the
-\Ie{framed} and \Ie{fboxverbatim} environments, but it adds its
-own bells and whistles. In its simplest usage the contents of the
-environment are typeset verbatim in a rectangular box (or boxes as
-it allows pagebreaks) like a \Ie{framed} box.
+As long as the appropriate \meta{test} is \ptrue\ the \meta{body} is processed.
 
+    In \cmd{\@fibseries} I used \cs{ifnum}s to check for 3 possible values.
+There is another \cs{if...} form that can be used for this type of work.
 \begin{syntax}
-\cmd{\bvbox} \cmd{\bvsides} \cmd{\bvtopandtail} \cmd{\nobvbox} \\
+\piif{ifcase} \meta{number} \meta{text for 0} \piif{or} \meta{text for 1} 
+  \piif{or} \meta{text for 2} \\
+... \\
+\piif{or} \meta{text for N} [ \piif{else} \meta{text for anything else} ] \piif{fi} \\
 \end{syntax}
-Four different kinds of framing styles are provided for the
-\Ie{boxedverbatim} environment. After a \cmd{\bvbox}
-declaration the default framing style is used, which draws rectangular
-boxes. After the \cmd{\bvsides} declarations, rules are drawn on each
-side but there are no top or bottom  rules; the converse is
-the \cmd{\bvtopandtail} declaration when only an initial and final 
-horizontal rule is drawn and no side rules. No rules at all are
-drawn after \cmd{\nobvbox}.
+If the \meta{number} is 0 then \meta{text for 0} is processed, but if
+\meta{number} is 1 then \meta{text for 1} is processed, but if \meta{number}
+is \ldots Each \meta{text for ...} is separated by an \piif{or}. If \meta{number}
+is anything other than the specified cases (i.e., less than zero or greater
+than N) then if the \piif{else} is present \meta{text for anything else} is
+processed. 
 
-\begin{syntax}
-\cmd{\bvtopofpage}\marg{text} \\
-\end{syntax}
-With the default framing style (\cmd{\bvbox}) a heading can be put
-at the top of continuation boxes if there is too much to fit onto
-a page. The heading is the \meta{text} of \cmd{\bvtopofpage}.
-The default specification is |\bvtopofpage{}| but if you wanted, say, to
-indicate that the verbatim was a continuation from the previous
-page you could do
+Here's another version of the \cmd{\@fibseries} macro using \piif{ifcase}
+and \cmd{\@whilenum}.
 \begin{lcode}
-\bvtopofpage{\begin{center}\normalfont (Continued)\end{center}}
+\renewcommand*{\@fibseries}[1]{%
+  \fibtogo=#1\relax
+  \ifcase \fibtogo % ignore 0
+  \or  % \fibtogo=1
+    \the\fibprevprev
+  \or  % \fibtogo=2
+    \the\fibprevprev{} and \the\fibprev
+  \else % fibtogo > 2
+    \advance\fibtogo by -\tw@
+    \the\fibprevprev, \the\fibprev
+    \@whilenum \fibtogo > \z@ \do {% must kill space after the {
+      \@fibnext}%
+  \fi}
 \end{lcode}
 
-\begin{syntax}
-\cmd{\linenumberfrequency}\marg{nth} \\
-\cmd{\linenumberfont}\marg{font-decl} \\
-\cmd{\resetbvlinenumber} \\
-\end{syntax}
-Exactly
-as in the \Ie{verse} environment line numbers are printed
-if the \meta{nth} argument to |\linenumberfrequency| is greater
-than zero, and the numbers are set in the font defined via 
-\cmd{\linenumberfont}.
-At any point outside the environment the line numbers may be reset
-to the initial value by \cmd{\resetbvlinenumber}. 
+    \tx\ has more programing constructs than I have shown here and these
+will be explained in any good \tx\ book. \ltx\ also has more than I have shown
+but in this case the best place to look for further information is in the
+\ltx\ kernel code, for example in \file{ltcntrl.dtx}.
 
-\begin{syntax}
-\cmd{\bvnumbersinside} \\
-\cmd{\bvnumbersoutside} \\
-\end{syntax}
-If the lines are numbered, the numbers can be put inside the box
-(\cmd{\bvnumbersinside}) or outside (\cmd{\bvnumbersoutside}).
-In either case, numbers are set at the left of the lines.
-The default is for numbers inside the box.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-    Verbatim tabbing, but not wrapping, applies to the \Ie{boxedverbatim}
-environment.
 
-\section{Files}
 
-    Latex gives you the \cmd{\input} command to read a file but is really
-not much obvious help if you want to write stuff out to a file.
 
-    TeX has 16 `streams' that can be open simultaneously for writing
-out, and there are also 16 input streams. These streams can be attached
-to files so that data can be read out and read in from external files.
 
-\begin{syntax}
-\cmd{\newoutputstream}\marg{stream} \\
-\cmd{\newinputstream}\marg{stream} \\
-\end{syntax}
-    The command \cmd{\newoutputstream} creates a new stream
-called \meta{stream} for writing out text and commands. 
-The \meta{stream} argument must be just alphabetic characters with 
-no spaces; for example |myout|.
-Similarly, the command \cmd{\newinputstream} creates a new stream for
-reading from a file. The \meta{stream} names must be unique --- you cannot
-use the same name for both an input and an output stream.
 
-   If you try and create too many streams, TeX will tell you via an error 
-message.
 
-\begin{syntax}
-\cmd{\IfStreamOpen}\marg{stream}\marg{true-code}\marg{false-code} \\
-\end{syntax}
-You can check if a stream \meta{stream} is currently open 
-by \cmd{\IfStreamOpen}.
-If the stream is open then the \meta{true-code} argument will be processed,
-otherwise the stream is closed and the \meta{false-code} argument 
-is processed.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
+%%\input{merrors} % errors chapter \label{chap:errors}
 
-\begin{syntax}
-\cmd{\openoutputfile}\marg{filename}\marg{stream} \\
-\cmd{\closeoutputstream}\marg{stream} \\
-\end{syntax}
-     The macro \cmd{\openoutputfile} opens the
-file called \meta{filename} and the output stream \meta{stream}. It
-then attaches the file to the stream for writing. Any pre-existing 
-contents of \meta{filname} are deleted.
+% merrors.tex    Chapter on (La)TeX errors/warnings
 
- The macro \cmd{\closeoutputstream} closes the output stream
-\meta{stream} and closes whatever file is currently attached to 
-\meta{stream}. It then detaches the file from
- the stream.
 
-\begin{syntax}
-\senv{writeverbatim}\marg{stream} anything \eenv{writeverbatim} \\
-\end{syntax}
- The \Ie{writeverbatim} environment takes one argument, 
-the name of an output stream, which must be open. 
-The contents of the environment are written
-out verbatim to the file currently attached to the stream.
+\chapter{The terror of errors} \label{chap:errors}
 
-\begin{syntax}
-\cmd{\addtostream}\marg{stream}\marg{text} \\
-\end{syntax}
- The command \cmd{\addtostream} writes \meta{text}
-to the file currently attached to the output stream \meta{stream}, which
-must be open. Any commands within \meta{text} will be processed before
-being written. To prevent this, put \cmd{\protect} before any command that
-you do not want expanding.
+    No matter how conscientious you are a mistake or two will occasionaly
+creep into your document source. The good news is that whatever happens
+\tx\ will not destroy your files --- it may produce some odd looking output,
+or even no output at all, but your work is safe. The bad news is that you
+have to correct any errors that \tx\ finds. To assist you in this \tx\ stops
+whenever it comes across what it thinks is an error\index{error} 
+and tells you about it.
+If you're not sure what to do it will also provide some possibly helpful 
+advice.
 
-\begin{syntax}
-\cmd{\openinputfile}\marg{filename}\marg{stream} \\
-\cmd{\closeinputstream}\marg{stream} \\
-\end{syntax}
+    \tx\ underlies \ltx\ which underlies classes and packages. You may get
+messages than originate from \tx, or from \ltx, or from the class and any
+packages you may be using. I'll describe the \tx, \ltx, and class messages
+below.
 
- The macro \cmd{\openinputfile} opens the
-file called \meta{filename} and the input stream \meta{stream}. It
-then attaches the file to the stream for reading.
-It is an error if \meta{filename} can not be found.
+    In general, you will see a message\index{error message!response} 
+on your terminal and \ltx\ will
+stop and wait for you to respond. It prints a question mark and is 
+expecting you to type one of the following:
+\begin{itemize}
+\item \meta{return} (or \meta{enter} or what is the equivalent on your
+       keyboard): \ltx\ will continue\index{error message!response!continue} 
+      processing the document.
+\item \texttt{H} (help): the help\index{error message!response!help}  
+      message is output and \ltx\
+      waits for you to respond again.
+\item \texttt{S} (scroll): Continue\index{error message!response!scroll}  
+      processing, outputting any
+      further error messages, but not stopping.
+\item \texttt{Q} (quiet): Continue\index{error message!response!quiet}
+      processing without stopping
+      and with no further messages.
+\item \texttt{R} (run): Like\index{error message!response!run}   
+      the \texttt{Q} option but not even
+      stopping if your document requires some user input.
+\item \texttt{I} (insert): To insert\index{error message!response!insert}
+      some material for \tx\ to
+      read but no changes are made to the source file.
+\item \texttt{E} (edit): This\index{error message!response!edit}   
+      may return you to an editor so you can
+      change the file. What actually happens is system dependent.
+\item \texttt{X} (exit): Stop\index{error message!response!exit}   
+      this \ltx\ run.
+\end{itemize}
+On the system I am used to the case of the characters does not matter.
+I must admit that the only ones I have used are \meta{return}, \texttt{q},
+\texttt{h} and \texttt{x}, in approximately that order of frequency.
+
+    All messages are output to the \pixfile{log} file so you can study
+them later if you need to.
+
+\section{\tx\ messages}
+
+\index{error!TeX?\tx|(}
+\index{TeX?\tx!error|(}
+\index{warning!TeX?\tx|(}
+\index{TeX?\tx!warning|(}
+
+    The following is an alphabetical list of some of \tx's messages,
+abbreviated in some cases, together
+with their corresponding remarks. As an example of how these appear on your
+terminal, if you had a line in your source that read: \\
+\verb?resulting in $x^3^4$.?\\
+then \tx\ would output this:
+\begin{lcode}
+! Double superscript
+l.102 resulting in $x^3^
+                        4^$.
+?
+\end{lcode}
+If you typed \texttt{h} in response to this you would then see:
+\begin{lcode}
+I treat `x^1^2' essentially like `x^1{}^2'.
+\end{lcode}
+
+    \tx's messages start with \verb?!? followed by the particular message 
+text. The second line starts \verb?l.?
+and a number, which is the number of the line in your file where the error
+is. This is followed by the text of the line itself up to the point where
+the error was detected, and the next line in the report shows the rest of
+the erroneous line. The last line of the report is a \verb+?+ and \tx\
+awaits your response.
+
+
+%% List of TeX messages
+\newcommand{\textmess}[1]{\texttt{#1}}
+\newcommand{\texthelp}[1]{\textit{#1}}
+
+    In the listing I have used \textmess{this font for the error message}
+and \texthelp{this font for the comment message}.
+\vspace{\onelineskip}
 
- The macro \cmd{\closeinputstream}closes the input stream
-\meta{stream} and closes whatever file
-is currently attached to \meta{stream}. It then detaches the file from
-the stream.
+\begin{plainlist}
+%1084 
+\item[\textmess{!}]\index{A box was supposed to be here} 
+     \textmess{A box was supposed to be here.} \\
+     \texthelp{I was expecting to see \cmd{\hbox}{} or \cmd{\vbox}{} or 
+            \cmd{\copy}{} or \cmd{\box}{} or something like that. 
+             So you might find
+             something missing in your output. But keep trying; you can 
+             fix this later.}
+
+%395 
+\item[\textmess{!}]\index{Argument of ... has an extra \rb} 
+    \textmess{Argument of ... has an extra \}.} \\
+    \texthelp{I've run across a `\}' that doesn't seem to match anything.
+            For example,} \verb?`\def\a#1{...}'? \texthelp{and} \verb?`\a}'?
+           \texthelp{would produce this error. If you simply proceed now, 
+            the \piif{par} that I've just inserted will cause me to report 
+            a runaway argument that might be the root of the problem. But if
+            your `\}' was spurious, just type `2' and it will go away.} 
 
-\begin{syntax}
-\cmd{\readstream}\marg{stream} \\
-\cmd{\readaline}\marg{stream} \\
-\end{syntax}
- The macro \cmd{\readstream} reads the contents of the file that
-is currently associated with the input stream \meta{stream}. This provides
-the same functionality as \cmd{\input}\marg{filename} does.
+      In \ltx\ terms, the example can be translated into \\
+      \verb?`\newcommand{\a}[1]{...}'? and \verb?`\a}'?.
 
- The macro \cmd{\readaline} reads what TeX considers to be
-one line from the file that
-is currently associated with the input stream \meta{stream}. Multiple lines
-can be read by calling \cmd{\readaline} multiple times. A warning is issued
-if there are no more lines to be read (i.e., the end of the file has
-been reached).
+    If you can't find the extra \} it might be that you have used a fragile
+command\index{fragile} in a moving\index{moving argument} argument. 
+Footnotes\index{footnote!in heading}\index{footnote!in caption} 
+or math\index{math!in caption or title} in division titles 
+or captions
+are a fruitful source for this kind of error. You shouldn't be putting 
+footnotes into titles that will get listed in the \toc. For maths, put 
+\cmd{\protect} before each fragile command.
 
-\begin{syntax}
-\cmd{\verbatiminput}\marg{filename} \\
-\cmd{\readverbatim}\marg{stream} \\
-\cmd{\boxedverbatiminput}\marg{filename} \\
-\cmd{\readboxedverbatim}\marg{stream} \\
-\end{syntax}
-The macro \cmd{\verbatiminput} is similar to \cmd{\input} except
-that it inputs the contents of the file \meta{filename} as verbatim text.
-Similarly, \cmd{\readverbatim} reads the contents of the file that
-is currently associated with the input stream \meta{stream} as verbatim
-text. These two commands are equivalent to
+%1236 
+\item[\textmess{!}]\index{Arithmetic overflow}
+     \textmess{Arithmetic overflow.} \\
+     \texthelp{I can't carry out that multiplication or division,
+       since the result is out of range.} 
+
+    The maximum\index{maximum number} number that \tx\
+       can deal with is 2,147,483,647 and it balks at 
+    dividing\index{divide by zero} by zero.
+
+
+%168 \texttt{AVAIL list clobbered at \ldots}
+
+%293/4 \texttt{BAD.}
+
+%961 \texttt{Bad \cmd{\patterns}}
+%    \texttt{(See Appendix H.)}
+
+%1244 
+%\item[\textmess{!}] \textmess{Bad \cmd{\prevgraf}.} \\
+%     \texthelp{I allow only nonnegative values here.}
+
+%432 
+%\item[\textmess{!}] \textmess{Bad character code} \\
+%      \texthelp{The numeric code for a character must be between 0 and 127.
+%              I changed this one to zero.}
+
+%435 
+%\item[\textmess{!}] \textmess{Bad character code} \\
+%      \texthelp{A character number must be between 0 and 255.
+%              I changed this one to zero.}
+
+%437 
+%\item[\textmess{!}] \textmess{Bad delimter code} \\
+%    \texthelp{A numeric delimeter code must be between 0 and} \verb?2^{27}-1.?
+%    \texthelp{I changed this one to zero.}
+
+%170 \texttt{Bad flag at}
+
+%170 \texttt{Bad link, display aborted.}
+
+%436 
+%\item[\textmess{!}] \textmess{Bad math code} \\
+%    \texthelp{A numeric math code must be between 0 and 32767.
+%            I changed this one to zero.}
+
+%434 
+%\item[\textmess{!}] \textmess{Bad number.} \\
+%    \texthelp{Since I expected to read a number between 0 and 15,
+%            I changed this one to zero.}
+
+%433 
+%\item[\textmess{!}] \textmess{Bad register code} \\
+%    \texthelp{A register number must be between 0 and 255.
+%            I changed this one to zero.}
+
+%1243 
+%\item[\textmess{!}] \textmess{Bad space factor} \\
+%     \texthelp{I allow only values in the range 1..32767 here.}
+
+%1328 \texttt{Beginning to dump on file \ldots}
+
+%484 \texttt{*** (cannot \cmd{\read} from terminal in nonstop modes)} fatal error
+
+%638 \texttt{Completed box being shipped out}
+
+%639 \texttt{Memory usage before: }
+
+%460 
+\item[\textmess{!}]\index{Dimension too large}
+    \textmess{Dimension too large.} \\
+    \texthelp{I can't work with sizes\index{maximum length} bigger 
+           than about 19 feet.
+            Continue and I'll use the largest value I can.}
+
+%1120 
+%\item[\textmess{!}] \textmess{Discretionary list is too long.} \\
+%     \texthelp{Wow---I never thought anyone would tweak me here.
+%             You can't seriously need such a huge discretionary list?}
+
+
+
+%1197 
+\item[\textmess{!}]\index{Display math should end with \$\$}
+     \textmess{Display math should end with \$\$.} \\
+     \texthelp{The `\$' that I just saw supposedly matches a previous `\$\$'.
+             So I shall assume that you typed `\$\$' both times.}
+
+    Although \$\$ is one of \tx's methods for starting and ending
+display math, do \emph{not} use it in \ltx.
+
+%1177 
+\item[\textmess{!}]\index{Double subscript}
+     \textmess{Double subscript.} \\
+     \texthelp{I treat} \verb?`x_1_2'? \texthelp{essentially like} 
+     \verb?`x_1{}_2'.? 
+
+    This would produce $x_1{}_2$. If you were after
+      say, $x_{2_{3}}$ instead, type \verb?x_{2_{3}}?.
+
+%1177 
+\item[\textmess{!}]\index{Double superscript}
+     \textmess{Double superscript.} \\
+     \texthelp{I treat} \verb?`x^1^2'? \texthelp{essentially like} 
+     \verb?`x^1{}^2'.? 
+
+  This would produce $x^1{}^2$. If you were after
+      say, $x^{2^{3}}$ instead, type \verb?x^{2^{3}}?.
+
+%169 \texttt{Double-AVAIL list clobbered at \ldots}
+
+%169 \texttt{Doubly free location at ldots}
+
+%1335 
+\item[\textmess{!}]\index{end occurred inside?\cs{end} occurred inside a group ...}
+     \textmess{(\cmd{\end} occurred inside a group at level ...).}
+
+    This is message is output at the end of a run. It means that you have not
+ended all the groups that you started; a group can be started by
+a simple open brace (\{), but there are other starting mechanisms as well,
+such as \senv{...}. If the problem is a missing \eenv{...}, \ltx\ is kind 
+enough to tell you what the mismatch is.
+
+%1335 
+\item[\textmess{!}]\index{end occurred when?\cs{end} occurred when ...}
+      \textmess{(\cmd{\end} occurred when ... was incomplete).}
+
+%1335 \texttt{(\cmd{\dump} is performed only by INITEX)}
+
+%963 \texttt{Duplicate pattern}
+%    \texttt{(See Appendix H.)}
+
+%93 \texttt{Emergency stop}
+
+%183 \texttt{Unknown node type!}
+
+%292 \texttt{\cs{ETC}.}
+
+%293 \texttt{\cs{CLOBBERED}.}
+
+%293/4 \texttt{\cs{BAD}.}
+
+%510 
+\item[\textmess{!}]\index{Extra fi?Extra \cs{fi}}%
+                   \index{Extra else?Extra \cs{else}}%
+                   \index{Extra or?Extra \cs{or}}
+     \textmess{Extra \cs{fi}.} or  \textmess{Extra \cs{else}.} or \textmess{Extra \cs{or}.} \\
+    \texthelp{I'm ignoring this; it doesn't match any \cs{if}.}
+
+%1135 
+\item[\textmess{!}]\index{Extra endcsname?Extra \cs{endcsname}}
+     \textmess{Extra \cmd{\endcsname}.} \\
+     \texthelp{I'm ignoring this, since I wasn't doing a \cmd{\csname}.}
+
+%1192 
+\item[\textmess{!}]\index{Extra right?Extra \cs{right}}
+     \textmess{Extra \cmd{\right}.} \\
+     \texthelp{I'm ignoring a \cmd{\right} that had no matching \cmd{\left}.}
+
+%1069 
+\item[\textmess{!}]\index{Extra ... or forgotten ...} 
+     \textmess{Extra \}, or forgotten \cmd{\endgroup}, \$, or \cmd{\right}.} \\
+     \texthelp{I've deleted a group closing symbol because it seems to be 
+       spurious, as in `\$x\}\$'. But perhas the \} is legitimate and
+       you forgot something else, as in} \verb?`\hbox{$x}'.? %$
+       \texthelp{In such cases the way to recover is to insert both the
+       forgotten and the deleted material, e.g., by typing `I\$\}'.}
+
+       The braces or math mode delimeters didn't match. You might have
+       forgotten a \texttt{\{}, \cmd{\[}, \cmd{\(} or \texttt{\$}.
+
+%1066 
+\item[\textmess{!}]\index{Extra ...}
+      \textmess{Extra ...} \\
+     \texthelp{Things are pretty mixed up, but I think the worst is over.}
+
+%792 
+\item[\textmess{!}]\index{Extra alignment tab ...}
+    \textmess{Extra alignment tab has been changed to \cmd{\cr}.} \\
+    \texthelp{You have given more \cmd{\span} or \& marks than there were
+      in the preamble to the \cmd{\halign} or \cmd{\valign} now in progress.
+      So I'll asume that you meant to type \cmd{\cr} instead.} 
+
+    Internally, \ltx\ uses
+      \cmd{\halign} for its \Ie{array}\index{array} and 
+     \Ie{tabular}\index{tabular} environments.
+      The message means that you have too many column entries in a row 
+      (i.e., too many \texttt{\&} before the end of the row). Perhaps
+      you have forgotten to put \cmd{\\} at the end of the preceding row.
+
+%789 
+%\item[\textmess{!}] \textmess{(interwoven alignment preambles are not allowed).} (fatal error)
+
+%1303 
+%\item[\textmess{!}] \textmess{(Fatal format file error; I'm stymied).}
+
+%338 
+\item[\textmess{!}]\index{File ended while scanning ...}%
+       \index{Forbidden control sequence found ...}
+     \textmess{File ended while scanning \ldots .} or 
+\textmess{Forbidden control sequence found while scanning \ldots .}  \\
+    \texthelp{I suspect you have forgotten a `\}', causing me
+      to read past where you wanted me to stop. I'll try to recover;
+      but if the error is serious you'd better type `E' or `X' now
+      and fix your file.}
+
+
+%579 
+%\item[\textmess{!}] \textmess{Font \ldots has only \ldots fontdimen parameters.} \\
+%    \texthelp{To increase the number of font parameters, you must use
+%      \cmd{\fontdimen} immediately after the \cmd{\font} is loaded.}
+
+%561 
+\item[\textmess{!}]\index{Font ... not loadable ...}
+ \textmess{Font \ldots not loadable: Metric (TFM) file not found.} \\
+\item[\textmess{!}]\index{Font ... not loadable ...}
+    \textmess{Font \ldots not loadable: Bad metric (TFM) file.} \\
+    \texthelp{I wasn't able to read the size data for this font, so I will
+      ignore the font specification.
+      [Wizards can fix TFM files using TFtoPL/PLtoTF.]
+      You might try inserting a different font spec;
+      e.g., type} 
+      \verb?`I\font<same font id>=<substitute font name>'.?
+
+  \ltx\ can't find a font you have asked for.
+
+%567 
+%\item[\textmess{!}] \textmess{Font \ldots not loaded: Not enough room left.} \\
+%    \texthelp{I'm afraid I won't be able to make use of this font,
+%      because my memory for character-size data is too small.
+%      If you're really stuck, ask a izard to enlarge me.
+%      Or maybe try} 
+%      \verb?`I\font<same font id>=<name of loaded font>'.?
+
+%641 
+\item[\textmess{!}]\index{Huge page cannot be shipped out}
+    \textmess{Huge page cannot be shipped out.} \\
+    \texthelp{The page just created is more than 18 feet tall or
+      more than 18 feet wide, so I suspect something went wrong.}
+
+%530 
+\item[\textmess{!}]\index{I can't find file ...}
+     \textmess{I can't find file `\ldots', please type another.} \\
+
+  \tx\ couldn't find the file you asked it to read. You can also
+  get this message with \ltx\ if you have missed the braces around
+  the argument to \cmd{\input}.
+
+%95 
+\item[\textmess{!}]\index{I can't go on meeting you like this} 
+   \textmess{I can't go on meeting you like this.} \\
+   \texthelp{One of your faux pas seems to have wounded me deeply...
+     in fact, I'm barely conscious. Plase fix it and try again.}
+   
+
+%530 
+\item[\textmess{!}]\index{I can't write on file ...}
+     \textmess{I can't write on file `\ldots', please type another.} \\
+
+  \tx\ couldn't write on a file, you might have mispelled the name
+   or not have permission to use it.
+
+%535 
+%\item[\textmess{!}] \textmess{I can't write on file `\ldots'.} (fatal error?)
+
+%51 \texttt{! I can't read TEX.POOL}
+
+%288/1258 
+%\item[\textmess{!}] \textmess{Illegal magnification has been changed to 1000.} \\
+%    \texthelp{The magnification ratio must be between 1 and 32768.}
+
+%1120 
+%\item[\textmess{!}] \textmess{Illegal math \cmd{\discretionary}.} \\
+%     \texthelp{Sorry: The third part of a discretionary break must be empty,
+%       in math formulas. I had to delete your third part.}
+
+%479 
+\item[\textmess{!}]\index{Illegal parameter number ...} 
+    \textmess{Illegal parameter number in definition of \ldots .} \\
+    \texthelp{You meant to type \#\# instead of \#, right?
+      Or maybe a \} was forgotten somewhere earlier, and things are
+      all screwed up? I'm going to assume that you meant \#\#.}
+
+    This is probably due to a command defining command like \cmd{\newcommand}
+ or \cmd{\renewcommand} or \cmd{\providecommand}, or an environment
+ defining command like \cmd{\newenvironment} or \cmd{\renewenvironment}, where 
+a \verb?#? has been used incorrectly. Apart from the command \cmd{\#},
+a \verb?#? can only be used to indicate an argument parameter, like \verb?#3?
+which denotes the third argument. You cannot use an argument parameter,
+like the \verb?#3? in the last argument of either the \cmd{\newenvironment}
+or the \cmd{\renewenvironment} commands.
+
+    You get the same error if you try to include any of the above defining
+commands inside another one.
+
+
+%454 
+\item[\textmess{!}]\index{Illegal unit of measure ...}
+    \textmess{Illegal unit of measure (replaced by filll).} \\
+    \texthelp{I dddon't go any higher than filll.}
+
+    You have tried to use a \texttt{filll} with more than 3 `l's.
+
+%456 
+\item[\textmess{!}]\index{Illegal unit of measure ...}
+    \textmess{Illegal unit of measure (mu inserted).} \\
+    \texthelp{The unit of measurement in math glue must be mu.
+      To recover gracefully from this error it's best to delete
+      the erroneous units; e.g., type `2' to delete two letters.
+      (See Chapter 27 of The TeXbook.)}
+
+     \tx\ was in math mode
+      and expecting a length, which must be in \texttt{mu} units.
+
+%459 
+\item[\textmess{!}]\index{Illegal unit of measure ...} 
+    \textmess{Illegal unit of measure (pt inserted).} \\
+    \texthelp{Dimensions can be in units of em, ex, in, pt, pc, cm, mm, dd,
+      cc, bp, or sp; but yours is a new one!
+      I'll assume you meant to say pt, for printers' points.
+      To recover gracefully from this error it's best to delete
+      the erroneous units; e.g., type `2' to delete two letters.
+      (See Chapter 27 of The TeXbook.)} 
+
+    \tx\ was expecting a length
+      but it found just a number without a known length unit. For example
+you wrote \verb?2ib? instead of \verb?2in?.
+
+%1121 
+%\item[\textmess{!}] \textmess{Improper discretionary list.} \\
+%     \texthelp{Discretionary lists must contain only boxes and kerns.
+%       The following discretionary sublist has been deleted: \ldots}
+
+%935 
+\item[\textmess{!}]\index{Improper \cs{hyphenation} ...}
+    \textmess{Improper \cmd{\hyphenation} will be flushed.} \\
+    \texthelp{Hyphenation exceptions must contain only letters
+      and hyphens. But continue; I'll forgive and forget.}
+
+%288 
+%\item[\textmess{!}] \textmess{Incompatible magnification (\ldots); the previous value will
+%            be retained.} \\
+%    \texthelp{I can handle only one magnification ratio per job. So I've
+%      reverted to the magnification you used earlier on this run.}
+
+%336 
+\item[\textmess{!}]\index{Incomplete ...}
+    \textmess{Incomplete \ldots all text was ignored after line \ldots.} \\
+    \texthelp{A forbidden control sequence occurred in skipped text.
+      This kind of error happens when you say `\cs{if}...' and forget
+      the matching `\cs{fi}'. I've inserted a `\cs{fi}'; this might work.}
+
+%993 
+%\item[\textmess{!}] \textmess{Insertions can only be aded to a vbox.} \\
+%    \texthelp{Tut tut: You're trying to insert into a
+%      box register that now contains an \cmd{\hbox}.
+%      Proceed, and I'll discard its present contents.}
+
+%826 
+\item[\textmess{!}]\index{Infinite glue shrinkage ...}
+    \textmess{Infinite glue shrinkage found in a paragraph.} \\
+    \texthelp{The paragraph just ended includes some glue that has
+       infinite shrinkability, e.g.,} \verb?`\hskip 0pt minus 1fil'.?
+       \texthelp{Such glue doesn't belong there---it allows a paragraph
+       of any length to fit on one line. But it's safe to proceed,
+       since the offensive shrinkability has been made finite.}
+
+%1232 
+%\item[\textmess{!}] \textmess{Invalid code (\ldots) should be in the range 0 to \ldots.}
+%or \textmess{Invalid code (\ldots) should be at most \ldots} \\
+%     \texthelp{I'm going to use 0 instead of that illegal code value.}
+
+%1159 
+\item[\textmess{!}]\index{Limit controls ...}
+     \textmess{Limit controls must follow a math operator.} \\
+     \texthelp{I'm ignoring this misplaced \cmd{\limits} or \cmd{\nolimits} 
+       command.}
+
+%660 
+%\item[\textmess{!}] \textmess{Loose \cmd{\hbox} (badness \ldots).}
+
+%674 
+%\item[\textmess{!}] \textmess{Loose \cmd{\vbox} (badness \ldots).}
+
+
+%1195 
+%\item[\textmess{!}]\textmess{Math formula deleted: Insufficient extension fonts.} \\
+%     \texthelp{Sorry, but I can't typeset math unless \cmd{\textfont} 3
+%       and \cmd{\scriptfont} 3 and \cmd{\scriptscriptfont} 3
+%       have all the \cmd{\fontdimen} values needed in math extension fonts.}
+
+%1195 
+%\item[\textmess{!}] \textmess{Math formula deleted: Insufficient symbol fonts.} \\
+%     \texthelp{Sorry, but I can't typeset math unless \cmd{\textfont} 2
+%       and \cmd{\scriptfont} 2 and \cmd{\scriptscriptfont} 2
+%       have all the \cmd{\fontdimen} values needed in math symbol fonts.}
+
+%1128 
+\item[\textmess{!}]\index{Misplaced \&}\index{Misplaced \cs{cr}}\index{Misplaced \cs{span}} 
+      \textmess{Misplaced \&.} or \textmess{Misplaced \cmd{\cr}.} or \textmess{Misplaced \cmd{\span}.} \\
+     \texthelp{I can't figure out why you would want to use a tab mark
+       or \cmd{\cr} or \cmd{\span} here. 
+       If you just want an ampersand the remedy is simple: Just type}
+       \verb?`I\&'? 
+       \texthelp{now. But if some right brace
+       up above has ended a previous alignment prematurely,
+       you're probably due for more error messages, and you
+       might try typing `S' now just to see what is salvageable.}
+
+     In \ltx\ the most likely of these messages is the 
+     \textmess{Misplaced \&}. You can only use a naked \texttt{\&} in 
+     environments like \Ie{array} and \Ie{tabular} as column separators.
+     Anywhere else you have to use \cmd{\&}.
+
+
+%1129 
+\item[\textmess{!}]\index{Misplaced \cs{noalign}} 
+     \textmess{Misplaced \cmd{\noalign}.} \\
+     \texthelp{I expect to see \cmd{\noalign} only after the \cmd{\cr} of
+       an alignment. Proceed, and I'll ignore this case.}
+
+%1129 
+\item[\textmess{!}]\index{Misplaced \cs{omit}} 
+     \textmess{Misplaced \cmd{\omit}.} \\
+     \texthelp{I expect to see \cmd{\omit} only after the tab marks or 
+       the \cmd{\cr} of an alignment. Proceed, and I'll ignore this case.}
+
+%1132 
+\item[\textmess{!}]\index{Missing \cs{cr} inserted} 
+     \textmess{Missing \cmd{\cr} inserted.} \\
+     \texthelp{I'm guessing that you meant to end an alignment here.}
+    
+ You might have missed a \cmd{\\} at the end of the last row
+     of a \Ie{tabular} or \Ie{array}.
+
+%503 
+\item[\textmess{!}]\index{Missing = inserted ...} 
+    \textmess{Missing = inserted for \ldots .} \\
+    \texthelp{I was expecting to see `$<$', `$=$', or `$>$'. Didn't.}
+
+%783 
+\item[\textmess{!}]\index{Missing \# inserted ...} 
+     \textmess{Missing \# inserted in alignment preamble.} \\
+    \texthelp{There should be exactly one \# between \&'s, when an 
+      \cmd{\halign} or \cmd{\valign} is being set up. In this case you had
+      none, so I've put one in; maybe that will work.}
+
+    If you get this in \ltx\ then there are problems with the argument
+    to an \Ie{array} or \Ie{tabular}. 
+
+\item[\textmess{!}]\index{Missing \$ inserted}%
+    \index{Missing \cs{endgroup} inserted}%
+    \index{Missing \cs{right} inserted}%
+    \index{Missing \rb inserted} 
+    \textmess{Missing \$ inserted.} or 
+    \textmess{Missing \cmd{\endgroup} inserted.} or 
+    \textmess{Missing \cmd{\right} inserted.} or 
+    \textmess{Missing \} inserted.} \\
+     \texthelp{I've inserted something that you may have forgotten.
+       (See the $<$inserted text$>$ above.)
+       With luck, this will get me unwedged, But if you 
+       really didn't forget anything, try typing `2' now; then
+       my insertion and my current dilemma will both disappear.}
+
+   This is a general response to the above messages. There is also a
+more specific response for each of the messages, as listed below.
+
+
+%1047 
+\item[\textmess{!}]\index{Missing \$ inserted} 
+     \textmess{Missing \$ inserted.} \\
+     \texthelp{I've inserted a begin-math/end-math symbol since I think
+       you left one out. Proceed with fingers crossed.}
+
+    Certain commands can only be executed in math mode and there are 
+others that cannot be used in math mode. \tx\ has come across a command that
+cannot be used in the current mode, so it switches into, or out of, math
+mode on the assumption that that was what you had forgotten to do.
+
+%1065 
+%373 
+\item[\textmess{!}]\index{Missing \cs{endcsname} inserted} 
+    \textmess{Missing \cmd{\endcsname} inserted.} \\
+    \texthelp{The control sequence marked $<$to be read again$>$ should
+      not appear between \cmd{\csname} and \cmd{\endcsname}.}
+
+%403 
+\item[\textmess{!}]\index{Missing \lb{} inserted} 
+    \textmess{Missing \{ inserted.} \\
+    \texthelp{A left brace was mandatory here, so I've put one in.
+      You might want to delete and/or insert some corrections
+      so that I will find a matching right brace soon.
+      If you're confused by all this, try typing `I\}' now.}
+
+%475 
+\item[\textmess{!}]\index{Missing \lb{} inserted} 
+    \textmess{Missing \{ inserted.} \\
+    \texthelp{Where was the left brace? You said something like}
+      \verb?\def\a}',?
+      \texthelp{which I'm going to interpret as}
+      \verb?\def\a{}'.?
+
+     In \ltx\ terms, the example wrongdoing would be \verb?\newcommand{\a}}?
+
+%1127 
+\item[\textmess{!}]\index{Missing \lb{} inserted} 
+     \textmess{Missing \{ inserted.} \\
+     \texthelp{I've put in what seems becessary to fix
+       the current column of the current alignment.
+       Try to go on, since this might almost work.}
+
+      It seems that a \texttt{\{} might have been missing in a \Ie{tabular}
+      or \Ie{array} entry.
+
+%1082 
+%\item[\textmess{!}] \textmess{Missing `to' inserted.} \\
+%     \texthelp{I'm working on} \verb?`\vsplit<box number> to <dimen>';?
+%       \texthelp{will look for the $<$dimen$>$ next.}
+
+%1207 
+%\item[\textmess{!}] \textmess{Missing \$\$ inserted.} \\
+%     \texthelp{Displays can use special alignments (like \cmd{eqalignno})
+%       only if nothing but the alignment itself is between \$\$'s.}
+
+%581 
+%\item[\textmess{!}] \textmess{Missing character: there is no \ldots in font \ldots.}
+
+%1215 
+\item[\textmess{!}]\index{Missing control sequence inserted} 
+   \textmess{Missing control sequence inserted.} \\
+     \texthelp{Please dont say} \verb?`\def cs{...}',? \texthelp{say}
+       \verb?`\def\cs{...}'.?
+       \texthelp{I've inserted an inaccessible control sequence so that your
+       definition will be completed without mixing me up too badly.
+       You can recover graciously from this error, if you're
+       careful; see exercise 27.2 in The TeXbook.}
+
+%1161 
+\item[\textmess{!}]\index{Missing delimeter(. inserted).} 
+     \textmess{Missing delimeter(. inserted).} \\
+     \texthelp{I was expecting to see something like} 
+       \verb?`('? 
+       \texthelp{or}
+       \verb?`\{'? 
+       \texthelp{or} 
+       \verb?`\}'? 
+       \texthelp{here. If you typed, e.g.,} 
+       \verb?`{'? 
+       \texthelp{instead of}
+       \verb?`\{'? 
+       \texthelp{you should probably delete the}
+       \verb?`{'? 
+       \texthelp{by typing `1' now, so that braces don't get unbalanced.
+       Otherwise just proceed.
+       Acceptable delimeters are characters whose \cmd{\delcode} is
+       nonnegative, or you can use `\cmd{\delimeter} $<$delimeter code$>$'.}
+
+%577 
+%\item[\textmess{!}] \textmess{Missing font identifier.} \\
+%    \texthelp{I was looking for a control sequence whose
+%      current meaning has been defined by \cmd{\font}.}
+
+%415/446 
+\item[\textmess{!}]\index{Missing number ...}
+    \textmess{Missing number, treated as zero.} \\
+    \texthelp{A number should have been here; I inserted `0'.
+      (If you can't figure out why I needed to see a number,
+      look up `weird error' in the index to The TeXbook.)}
+
+    In \ltx\ this is often caused by a command expecting a number or a length
+argument but not finding it. You might have forgotten the argument or
+an opening square bracket in the text might have been taken as the start
+of an optional argument. For example, the \cmd{\\} (newline) command takes 
+an optional length argument, so the following will produce this error:
+\begin{lcode}
+... next line\\
+[Horatio:] ...
+\end{lcode}
+                         
+%937 
+\item[\textmess{!}]\index{Not a letter} 
+    \textmess{Not a letter.} \\
+    \texthelp{Letters in \cmd{\hyphenation} words must have \cmd{\lccode}>0.}
+
+    One or more characters in the argument to the \cmd{\hyphenation} command
+    should not be there.
+
+
+%962 
+%\item[\textmess{!}] \textmess{Nonletter.} \\
+%    \texthelp{(See Appendix H.)}
+
+%445 
+\item[\textmess{!}]\index{Number too big} 
+    \textmess{Number too big.} \\
+    \texthelp{I can only go up to 2147483647 = '17777777777 = "7FFFFFFF,
+      so I'm using that number instead of yours.} 
+
+    These all represent the
+      same value, firstly in decimal, secondly in octal, and lastly in
+      hexadecimal notations.
+
+%1024 
+\item[\textmess{!}]\index{Output loop ...}
+     \textmess{Output loop--- \ldots consecutive dead cycles.} \\
+     \texthelp{I've concluded that your \cmd{\output} is awry; it never does a
+       \cs{shipout}, so I'm shipping \cmd{\box255} out myself. Next time
+       increase \cmd{\maxdeadcycles} if you want me to be more patient!}
+
+       \tx\ appears to be spinning its wheels, doing nothing.
+
+%1024 
+%\item[\textmess{!}] \textmess{Output routine didn't use all of \cmd{\box255}.} \\
+%     \texthelp{Your \cmd{\output} commands should empty \cmd{\box255},
+%       e.g., by saying `\cs{shipout}\cmd{\box255}'.
+%       Proceed; I'll discard its present contents.}
+
+%666 
+\item[\textmess{!}]\index{Overfull \cs{hbox} ...} 
+    \textmess{Overfull \cmd{\hbox} (\ldots pt too wide).}
+
+    This is a warning that \tx\ couldn't cram some text into the alloted
+horizontal space.
+
+%677 
+\item[\textmess{!}]\index{Overfull \cs{vbox} ...}
+    \textmess{Overfull \cmd{\vbox} (\ldots pt too high).}
+
+    This is a warning that \tx\ couldn't find a good place for a
+pagebreak, so it has put too much onto the current page.
+
+
+%396 
+\item[\textmess{!}]\index{Paragraph ended before ...} 
+    \textmess{Paragraph ended before \ldots was complete.} \\
+    \texthelp{I suspect you've forgotten a `\}', causing me to apply this
+      control sequence to too much text. How can we recover?
+      My plan is to forget the whole thing and hope for the best.}
+
+      Either a blank line or a \piif{par} command appeared in the
+      argument to a macro that cannot handle paragraphs (e.g.,
+      a macro that was defined using \cmd{\newcommand*}).
+
+%476 
+%\item[\textmess{!}] \textmess{Parameters must be numbered consecutively.} \\
+%    \texthelp{I've inserted the digit you should have used after the \#.
+%      Type `1' to delete what you did use.}
+
+%1252 \texttt{Patterns can only be loaded by INITEX}
+
+%360 
+\item[\textmess{!}]\index{Please type a command ...}  
+     \textmess{Please type a command or say `\cmd{\end}'.} 
+
+    This is the message that causes me the most trouble. My computer
+always ignores whatever I say to it and even typing \cmd{\end} has
+no effect. What I usually do, after having tried a few variations
+like \eenv{document}, is to kill the program by whatever means the operating
+system provides. Some other possible responses include:
+\begin{itemize}
+\item Type \cmd{\stop}
+\item Type \verb?\csname @@end\endcsname? (\ltx\ stores \tx's version of
+      \cmd{\end} as \cmd{\@@end})
+\item Type some macro that you think is unknown, perhaps \cs{qwertyuiod},
+      then respond to the error message: \textmess{Undefined control sequence.}
+\item Sometimes nothing works except killing the program. If you are are sure you
+      know how to kill a program, try the following highly contrived code:
+\begin{lcode}
+\documentclass{article}
+  \newif\ifland
+  \newif\ifprint
+  \newcommand{\Xor}[2]{\ifx #1 #2}
+\begin{document}
+%  \Xor{\ifland}{\ifprint}% try uncommenting this
+  \iffalse
+\end{document}
+\end{lcode}
+\end{itemize}
+
+
+
+%1166 
+%\item[\textmess{!}] \textmess{Please use \cmd{\mathaccent} for accents in math mode.} \\
+%     \texthelp{I'm changing \cmd{\accent} to \cmd{\mathaccent} here; wish 
+%       me luck. Accents are not the same in formulas as they are in text.}
+
+%306 
+\item[\textmess{!}]\index{Runaway argument}%
+                   \index{Runaway definition}%
+                   \index{Runaway preamble}%
+                   \index{Runaway text}
+    \textmess{Runaway argument.} or 
+    \textmess{Runaway definition.} or
+    \textmess{Runaway preamble.} or 
+    \textmess{Runaway text.} 
+
+%524 
+%\item[\textmess{!}] \textmess{Sorry, I can't find that format; will try PLAIN.}
+
+%1050 
+\item[\textmess{!}]\index{Sorry, but I'm not ...}
+     \textmess{Sorry, but I'm not programmed to handle this case.} \\
+     \texthelp{I'll just pretend that you didn't ask for it.
+       If you're in the wrong mode, you might be able to
+       return to the right one by typing `I\}' or `I\$' or
+       `I\cs{par}'.}
+
+
+%94 
+\item[\textmess{!}]\index{TeX capacity exceeded ...} 
+   \textmess{TeX capacity exceeded, sorry [\ldots].} \\
+   \texthelp{If you absolutely need more capacity, you can ask a wizard 
+     to enlarge me.}
+
+   This is dealt with in more detail below.
+
+%346 
+\item[\textmess{!}]\index{Text line contains ...} 
+    \textmess{Text line contains an invalid character.} \\
+    \texthelp{A funny symbol that I can't read has just been input.
+      Continue, and I'll forget that it ever happened.}
+
+    The input file contains a nonprinting (control) character; only
+printing characters should be in the file. Some programs, 
+like word processors, insert invisible characters into their output file. If
+you have used one of these to prepare your input file, make sure you
+save it as a plain text file (also known as an ASCII file).
+
+
+%82 
+\item[\textmess{!}]\index{That makes 100 errors ...} 
+     \textmess{That makes 100 errors; please try again.}
+
+%95 
+\item[\textmess{!}]\index{This can't happen ...} 
+    \textmess{This can't happen (\ldots).} \\
+   \texthelp{I'm broken. Please show this to someone who can fix can fix}
+
+    This is the message you should never see!
+
+%667 
+%\item[\textmess{!}] \textmess{Tight \cmd{\hbox} (badness \ldots).}
+
+%678 
+%\item[\textmess{!}] \textmess{Tight \cmd{\vbox} (badness \ldots).}
+
+
+%1068 
+\item[\textmess{!}]\index{Too many \rb's} 
+     \textmess{Too many \}'s.} \\
+     \texthelp{You've closed more groups than you opened.
+       Such booboos are generally harmless, so keep going.}
+
+    There are more closing braces (\}) than there are opening braces (\{).
+
+%1027 
+\item[\textmess{!}]\index{Unbalanced output routine} 
+     \textmess{Unbalanced output routine.} \\
+     \texthelp{Your sneaky output routine has fewer real \{'s than \}'s.
+       I can't handle that very well; good luck.}
+
+     A package or class has done nasty things to one of \ltx's most
+     delicate parts --- the output routine.
+
+%1372 
+\item[\textmess{!}]\index{Unbalanced write command} 
+     \textmess{Unbalanced write command.} \\
+     \texthelp{On this page there's a \cmd{\write} with fewer real \{'s 
+       than \}'s. I can't handle that very well; good luck.}
+
+%370 
+\item[\textmess{!}]\index{Undefined control sequence} 
+    \textmess{Undefined control sequence.} \\
+    \texthelp{The control sequence at the end of the top line
+      of your error message was never \cmd{\def}'ed. If you have
+      misspelled it (e.g., `\cs{hobx}'), type `I' and the correct
+      spelling (e.g., `I\cs{hbox}'). Otherwise just continue,
+      and I'll forget whatever was undefined.}
+
+    \tx\ has come across a macro name that it does not know about.
+Perhaps you mispelled it, or it is defined in a package you did not include.
+Another possibility is that you used a macro name that included the
+\texttt{@} character without enclosing it between \cmd{\makeatletter}
+and \cmd{\makeother} (\seeatincode)\idxatincode. 
+In this case \tx\ would think that the name was 
+just the portion up to the \texttt{@}.
+
+
+%660 
+\item[\textmess{!}]\index{Underfull \cs{hbox} ...} 
+    \textmess{Underfull \cmd{\hbox} (badness \ldots).}
+
+    This is a warning. There might be some extra horizontal space. It could
+be caused by trying to use two \cmd{\newline} or \cmd{\\} commands
+in succession with nothing intervening, or by using a \cmd{\linebreak}
+command or typesetting with the \cmd{\sloppy} declaration.
+
+%674 
+\item[\textmess{!}]\index{Underfull \cs{vbox} ...}  
+   \textmess{Underfull \cmd{\vbox} (badness \ldots).}
+
+    This is a warning that \tx\ couldn't find a good place for a
+pagebreak, so it produced a page with too much whitespace on it.
+
+%398 
+\item[\textmess{!}]\index{Use of ... doesn't match ...}
+    \textmess{Use of \ldots doesn't match its definition.} \\
+    \texthelp{If you say, e.g.,}
+     \verb?`\def\a1{...}',?
+     \texthelp{then you must always put `1' after `\cs{a}', since the control
+       sequence names are made up of letters only. 
+       The macro here has not been followed by the requied stuff,
+       so I'm ignoring it.}
+
+
+%476 
+%\item[\textmess{!}] \textmess{You already have nine parameters.} \\
+%    \texthelp{I'm going to ignore the \# sign you just used.}
+
+
+
+%1304 \texttt{You can't dump inside a group}
+%     \texttt{`\{...\cmd{\dump}\}' is a no-no.}
+
+%1099 
+%\item[\textmess{!}] \textmess{You can't \cs{insert255}.} \\
+%     \texthelp{I'm changing to \cs{insert0}; box 255 is special.}
+
+%1095 
+%\item[\textmess{!}] \textmess{You can't use `\cmd{\hrule}' here without leaders.} \\
+%     \texthelp{To put a horizontal rule in an hbox or an alignment,
+%       you should use \cmd{\leaders} or \cmd{\hrulefill} 
+%       (see The TeXbook).}
+
+%1213 
+%\item[\textmess{!}] \textmess{You can't use `\cmd{\long}' or `\cmd{\outer}' with \ldots} \\
+%     \texthelp{I'll pretend you didn't say \cmd{\long} or \cmd{\outer} here.}
+
+%1212 
+%\item[\textmess{!}] \textmess{You can't use a prefix with \ldots} \\
+%     \texthelp{I'll pretend you didn't say \cmd{\long} or \cmd{\outer} 
+%       or \cmd{\global}.}
+
+%428 
+%\item[\textmess{!}] \textmess{You can't use `\ldots' after \cmd{\the}.} \\
+%    \texthelp{I'm forgetting what you said and using zero instead.}
+
+%428 
+%\item[\textmess{!}] \textmess{You can't use `\ldots' after `\ldots'.} \\
+%    \texthelp{I'm forgetting what you said and not changing anything.}
+
+%1049 
+\item[\textmess{!}]\index{You can't use ... in ...} 
+    \textmess{You can't use `\ldots' in `\ldots'.} \\
+
+ This often manifests itself in the form \\
+\textmess{You can't use `\cmd{\spacefactor}' in vertical 
+ mode}\index{You can't use `\cs{spacefactor}' in vertical mode} \\
+ the cause
+is usually trying to use a macro with \texttt{@} in its name, typically
+in the preamble (\seeatincode)\idxatincode. 
+The solution is to enclose the macro within
+\cmd{\makeatletter} and \cmd{\makeatother}. 
+
+    Another version is \\
+\textmess{You can't use `macro parameter character \#' in ... 
+mode.}\index{You can't use `macro parameter character \#' in ... mode} \\
+In this case you have used a naked \texttt{\#} in ordinary text; it can only
+be used in the definition of a macro. In ordinary text you have to use 
+\cmd{\#}.
+
+%486 
+%\item[\textmess{!}] \textmess{File ended within \cmd{\read}.} \\
+%    \texthelp{This \cmd{\read} has unbalanced braces.}
+
+\end{plainlist}
+
+\index{TeX?\tx!warning|)}
+\index{warning!TeX?\tx|)}
+
+\subsection{\tx\ capacity exceeded}
+
+\index{TeX capacity exceeded ...|(} 
+    \tx\ has run out of computer space before it finished processing your
+document. The most likely cause is an error in the input file rather than
+there really not being enough space --- I have processed documents consisting
+of more than 1400 pages without any capacity problems.
+
+    You can very easily make \tx\ run out of space. Try inputting this:
+\begin{lcode}
+\documentclass{article}
+\newcommand*{\fred}{Fred}          % should print `Fred'
+% try to make it print `Frederick' instead
+\renewcommand{\fred}{\fred erick}  
+\begin{document}
+  His name is \fred.
+\end{document}
+\end{lcode}
+and \tx\ will tell you that it has run out of stack space:
 \begin{lcode}
-\begin{verbatim}
-  \input{...}
-  \readstream{...}
-\end{verbatim}
+! TeX capacity exceeded, sorry [input stack size=15000].
+\fred ->\fred
+             erick
+l.5 His name is \fred
+                      .
+No pages of output.
+Transcript written on errors.log.
 \end{lcode}
-except, of course, that you cannot do that.
 
-    To round things out, \cmd{\boxedverbatiminput} inputs the contents
-of the \meta{filename} file as boxed verbatim text, and
-\cmd{\readboxedverbatim} reads the contents
-of the file attached to \meta{stream} as a boxed verbatim. If you could
-do it, these commands are equivalent to
+ The offending code above
+tries to define \cs{fred} in terms of itself, and \tx\ just keeps chasing 
+round and round trying to pin down \cs{fred} until it is exhausted.
+
+    At the end of the \file{log} file for a run, \tx\ prints the memory space
+it has used. For example:
 \begin{lcode}
-\begin{boxedverbatim}
-  \input{...}
-  \readstream{...}
-\end{boxedverbatim}
+Here is how much of TeX's memory you used:
+ 2432 strings out of 60985
+ 29447 string characters out of 4940048
+ 106416 words of memory out of 8000001
+ 5453 multiletter control sequences out of 10000+65535
+ 8933 words of font info for 31 fonts out of 1000000 for 1000
+ 276 hyphenation exceptions out of 1000
+ 26i,11n,21p,210b,380s stack positions out of 
+            15000i,4000n,6000p,200000b,40000s
 \end{lcode}
 
-   Tabbing, wrapping and numbering are just as applicable to verbatim
-input texts as they are to the corresponding verbatim environments.
+    The eror message says what kind of space it exhausted (input stack size
+in the example above). The most common are:
+\begin{plainlist}
 
+\item[\texttt{buffer size}\index{buffer size}] 
+   Can be caused by too long a section or caption title appearing
+   in the \toc, \lof, etc. Use the optional argument to produce a 
+   shorter entry.
 
+\item[\texttt{exception dictionary}\index{exception dictionary}] There
+    are too many words listed in \cmd{\hyphenation} commands. Remove any 
+    that are not actually used and if that doesn't work, remove the less 
+    common ones and insert \cmd{\-} in the words in the text.
 
+\item[\texttt{hash size}\index{hash size}]
+    The document defines too many command names and/or uses too many
+    cross-referencing \cmd{\label}s.
 
+\item[\texttt{input stack size}\index{input stack size}]
+    Typically caused by a self-referencing macro definition.
 
 
+\item[\texttt{main memory size}\index{main memory size}]
+    There are three main things that  cause \tx\ to run out of main memory:
+\begin{itemize}
+\item Defining a lot of very long complicated macros.
+\item Having too many \cmd{\index} or \cmd{\glossary} commands on a page.
+\item Creating such a complicated page that \tx\ cannot hold all it needs
+      to process it.
+\end{itemize}
+The solution to the first two problems is to simplify and eliminate. The
+third is more problematic.
 
+    Large \Ie{tabular}s, \Ie{array}s and \Ie{picture}s (the \cmd{\qbezier}
+command is a memory hog) can gobble up memory. A queue of floats also demands
+memory space. Try putting a \cmd{\clearpage} just before the place where the
+error occurs and if it still runs out of room then there may be an error in
+your file, otherwise you did exceed the capacity.
 
+    If you have a long paragraph or a long \Ie{verbatim} environment try
+breaking it up, as \tx\ keeps these in memory until it is ready to 
+typeset them. If you have a queue of floats make sure that you have done
+your best to help \ltx\ find a way to output them (see \Sref{sec:floatplace})
+and try adding \cmd{\clearpage} at appropriate places to flush the queue.
 
 
+\item[\texttt{pool size}\index{pool size}]
+    Typically caused by having too many characters in command names
+    and label names.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\clearpage
-\pagestyle{Ruled}
-\chapterstyle{demo}
-%\chapterstyle{veelo}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+    It can also be caused by omitting the right brace that ends the
+argument of a counter command (\cmd{\setcounter} or \cmd{\addtocounter})
+or of a \cmd{\newenvironment} or \cmd{\newtheorem} command.
 
-\chapter{Miscellaneous} \label{chap:misc}
+\item[\texttt{save stack size}\index{save stack size}]
+   This happens if commands or environments are nested too deeply.
+For instance a \Ie{picture} that contains a \Ie{picture} that includes
+a \cmd{\multiput} that includes a \Ie{picture} that includes a \ldots
 
-\chapterprecis{In which we talk of many things, but not ships
-               or shoes or sealing wax, nor cabbages and kings.}
 
-    This chapter uses the \cstyle{demo} chapterstyle and the \pstyle{Ruled}
-pagestyle. It started with the \cmd{\chapterprecis} command.
+\index{TeX capacity exceeded ...|)} 
 
-\section{Introduction}
+\end{plainlist}
 
-    The class provides some minor additional facilities, which are described
-here.
+\index{TeX?\tx!error|)}
+\index{error!TeX?\tx|)}
 
-\section{Draft documents}
 
-  The \Lopt{draft} option marks any overfull lines with black rectangles,
-otherwise the appearance is the same as for a \Lopt{final} document.
+\section{\ltx\ errors}
 
-\begin{syntax}
-\piif{ifdraftdoc} \\
-\end{syntax}
-The \piif{ifdraftdoc} macro is provided so that you can add extra
-things that you might want to happen when processing a draft; for example
-you might want to have each page header\index{header} (or footer\index{footer}) include the word `DRAFT'.
-The code to do this can be put into a construct like the following:
+\index{LaTeX?\ltx!error|(}
+\index{error!LaTeX?\ltx|(}
+
+    \ltx\ errors introduce themselves differently from those
+that \tx\ finds. For example, if you ever happended to
+use the \cmd{\caption} command outside a float, like:
 \begin{lcode}
-\ifdraftdoc
-  % special things for a draft document
-\else
-  % perhaps special things for a non-draft document
-\fi
+\caption{Naked}
 \end{lcode}
+you would get the message:
+\begin{lcode}
+! LaTeX Error: \caption outside float.
 
+See the LaTeX manual or LaTeX Companion for explanation.
+Type H <return> for immediate help.
+ ...
 
-\section{Change marks}
+l.624 \caption
+              {Naked}
+?
+\end{lcode}
+If you then typed \texttt{H} in response you would get the following
+helpful message:
+\begin{lcode}
+You're in trouble here. Try typing <return> to proceed.
+If that doesn't work, type X <return> to quit.
+?
+\end{lcode}
+The majority of \ltx's help messages follow this formula, so I have
+not noted them in the alphabetical listing below.
 
-    When preparing a manuscript it normally goes through several iterations.
-The macros described in this section can be used to identify changes made to 
-a document throughout its lifecycle.
 
-   The commands below implement a simplified version of the change
-marking in the \Lclass{iso} class~\cite{ISOCLASS}.
+%%%%\subsection{Errors}
 
-\begin{syntax}
-\cmd{\changemarkstrue} \cmd{\changemarksfalse} \\
-\end{syntax}
-The change marking macros only work properly when the \Lopt{draft} class
-option is used. Additionaly, the marks are only printed when the 
-\cmd{\changemarkstrue} declaration is in effect. Using \cmd{\changemarksfalse}
-switches off any marking.
+\begin{plainlist}
 
-\begin{syntax}
-\cmd{\added}\marg{change-id} \\
-\cmd{\deleted}\marg{change-id} \\
-\cmd{\changed}\marg{change-id} \\
-\end{syntax}
-Each of these macros puts a mark and \meta{change-id} into the margin\index{margin} near
-where the command is given. The \cmd{\added} macro indicates that something
-has been added to the manuscript and uses $\oplus$ as its symbol. The
-\cmd{\deleted} macro is for indicating that something has been deleted and uses
-the $\neq$ symbol. The macro \cmd{\changed} uses the $\Leftrightarrow$ symbol
-to indicate that something has been changed.
+%LTTAB
+\item[]\index{\cs{<} in mid line} 
+   \textmess{\cs{<} in mid line}
 
-    These marking commands should be attached to some word or punctuation
-mark in the text otherwise extraneous spaces may creep into the typeset
-document.
+    A \cmd{\<} appears in the middle of a line in a \Ie{tabbing} environment;
+it should only come at the start of a line.
 
-\section{Trim marks}
+%LTFSSDCL
+\item[]\index{... allowed only in math mode} 
+   \textmess{... allowed only in math mode}
 
-    When the \Lclass{memoir} class \Lopt{showtrims} option is used, trim
-marks can be placed on each page, usually to indicate where the stock should
-be trimmed to obtain the planned page size.
+    You have tried to use a math command in a non-math mode.
 
-    Trim marks can be placed at each corner of the (trimmed) page, and also
-at the middle of each side of the page.
 
-\begin{syntax}
-\cmd{\trimXmarks} \\
-\cmd{\trimLmarks} \\
-\cmd{\trimFrame} \\
-\cmd{\trimNone} \\
-\end{syntax}
-Some predefined trimming styles are provided. After the declaration
-\cmd{\trimXmarks} marks in the shape of a cross are placed at the four
-corners of the page. The declaration \cmd{\trimLmarks} calls for corner marks
-in the shape of an `L', in various orientations depending on the particular
-corner. After \cmd{\trimFrame} a frame will be drawn around each page, 
-coinciding with the page boundaries. The declaration \cmd{\trimNone}
-disables all kinds of trim marking.
+%%%% BBBBBBBBBBBBBBBBBB
 
-\begin{syntax}
-\cmd{\trimmarks} \\
-\cmd{\tmarktl} \cmd{\tmarktr} \cmd{\tmarkbr} \cmd{\tmarkbl} \\
-\cmd{\tmarktm} \cmd{\tmarkmr} \cmd{\tmarkbm} \cmd{\tmarkml} \\
-\end{syntax}
-The \cmd{\trimmarks} macro is responsible for displaying up to 8 marks. The
-marks are defined as zero-sized pictures which are placed strategically
-around the borders of the page. 
+%LTERROR
+\item[]\index{Bad \cs{line} or \cs{vector} argument} 
+   \textmess{Bad \cmd{\line} or \cmd{\vector} argument}
 
-    The command \cmd{\trimmarks} places the pictures \cmd{\tmarktl}, 
-\cmd{\tmarktr},
-\cmd{\tmarkbl}, and \cmd{\tmarkbr} at the top left, top right,
-bottom right and bottom left corners of the page. The pictures
-\cmd{\tmarktm}, \cmd{\tmarkmr}, \cmd{\tmarkbm}, and \cmd{\tmarkml} are placed
-at the top middle, middle right, bottom middle and middle left of the
-edges of the page. All these |\tmark..| macros should expand to zero-sized
-pictures.
+    A \cmd{\line} or \cmd{\vector} has a negative length argument or
+the slope is not within the allowed range.
+
+%LTERROR
+\item[]\index{Bad math environment delimeter} 
+   \textmess{Bad math environment delimeter}
+
+    If in math mode there is a start math mode command like \cmd{\(}
+or \cmd{\[} or if in LR or paragraph mode there is an end math mode
+command like \cmd{\)}or \cmd{\]}. The basic problem is unmatched math
+mode delimeters or unbalanced braces.
+
+%LTERROR
+\item[]\index{begin{...} ended by end{...}?\senv{...} ended by \eenv{...}} 
+   \textmess{\senv{...} ended by \eenv{...}}
+
+    The name of the \cmd{\begin} argument is not the same as the
+name of the \cmd{\end} argument. This could be caused by a typo or a missing
+\cmd{\end}.
+
+%%%% CCCCCCCCCCCCCCCC
+
+%LTERROR
+\item[]\index{Can only be used in the preamble} 
+    \textmess{Can only be used in the preamble}
+
+    Some commands can only be used in the preamble\index{preamble}, such
+as \cmd{\usepackage}, but
+there was one of these after the \senv{document}.
+
+
+%LTFLOAT
+\item[]\index{caption outside float?\cs{caption} outside float} 
+   \textmess{\cmd{\caption} outside float}
+
+    You have used the \cmd{\caption} command outside a float, such as
+a \Ie{figure} or \Ie{table} environment. 
+
+
+%LTERROR
+\item[]\index{Command \cs{...} already defined ...}
+   \textmess{Command \cs{...} already defined or name \cs{end}... illegal}
+
+    This is normally because you have used one of the \cs{new...}
+commands to define a command or environment or counter name that has 
+already been used; remember also that defining an environment \verb?foo?
+automatically defines the macro \cs{foo}. Either choose a new name or
+use the appropriate \cs{renew...}. In the unlikely event that you have
+tried to define something beginning with \cs{end...}, choose another name.
+
+
+%LTERROR %LTFSSINI
+\item[]\index{Command ... invalid ...} 
+   \textmess{Command ... invalid in math mode}
+
+    You have used a non-math command in math mode.
+
+%LTFSSDCL
+%\item[]\index{Command \cs{..} not defined as a math alphabet}
+%     \textmess{Command \cs{..} not defined as a math alphabet} 
+%       (use \cmd{\DeclareMathAlphabet} to define it)
+
+%LTFSSINI
+\item[]\index{Command ... not provided ...}
+     \textmess{Command ... not provided in base LaTeX2e} 
+
+    You have tried to use a symbol that is not part of basic \ltx.
+Try loading the \Lpack{latexsym} or \Lpack{amsfonts} package which
+might define the symbol.
+
+%LTOUTENC
+%\item[] \textmess{Command ... unavailable in encoding ...}
+
+%LTFSSBAS
+%\item[] \textmess{Corrupted NFSS tables}
+
+
+%LTERROR
+\item[]\index{Counter too large} 
+   \textmess{Counter too large}
+
+    You are using a non-numeric counter representation, such as letters
+or footnote symbols, and the counter has exceeded the allowed number
+(for example there are only 26 alphabetic characters).
+
+
+%%%% EEEEEEEEEEEEEEEEEEEE
+
+%LTFSSBAS
+%\item[] \textmess{Encoding scheme `...' unknown}
+
+%LTOUTENC
+%\item[] \textmess{Encoding file ... not found. You might have misspelt the
+%       name of the encoding.}
+
+
+%LTDEFNS %LTERROR %LTMISCEN
+\item[]\index{Environment ... undefined}  
+    \textmess{Environment ... undefined} 
 
-\begin{syntax}
-\cmd{\trimmark} \\
-\end{syntax}
-The declaration \cmd{\trimXmarks} uses \cmd{\trimmark} for the corner 
-crosses. This is defined as
-\begin{lcode}
-\newcommand{\trimmark}{%
-  \begin{picture}(0,0)
-    \setlength{\unitlength}{1cm}\thicklines
-    \put(-2,0){\line(1,0){4}}
-    \put(0,-2){\line(0,1){4}}
-  \end{picture}}
-\end{lcode}
-which produces a zero-sized picture of a 4cm cross.
+    \ltx\ does not know the name of the argument of a \cmd{\begin}.
+You have probably misspelled it.
 
-    As an example, to draw short lines marking the half-height of the page, 
-try this:
-\begin{lcode}
-\providecommand{\tmarkml}{}
-\renewcommand{\tmarkml}{%
-  \begin{picture}(0,0){%
-    \unitlength 1mm
-    \thinlines
-    \put(-2,0){\line(-1,0){10}}
-  \end{picture}}}
-\providecommand{\tmarkmr}{}
-\renewcommand{\tmarkmr}{%
-  \begin{picture}(0,0){%
-    \unitlength 1mm
-    \thinlines
-    \put(2,0){\line(1,0){10}}
-  \end{picture}}}
-\end{lcode}
-Thin horizontal lines of length 10mm will be drawn at the middle left and
-middle right of the page, starting 2mm outside the page boundary.
 
-\section{Sheet numbering}
+%%%% FFFFFFFFFFFFFFFFFFFFF
 
-    One purpose of trim marks is to show a printer where the stock
-should be trimmed. In this application it can be useful to also note the
-sheet number on each page, where the sheet number is 1 for the first page 
-and increases by 1 for each page thereafter. The sheet number is independent
-of the page number.
+%LTFILES
+\item[]\index{File not found ...}
+     \textmess{File not found. Type X to quit or <RETURN> to proceed
+       or enter new name (Default extension: ...)}
 
-\begin{syntax}
-\cmd{\thesheetsequence} \\
-\end{syntax}
-The macro \cmd{\thesheetsequence} typesets the current sheet sequence number
-and is analogous to the \cmd{\thepage} macro.
+    \ltx\ cannot find the file you requested. The extension \file{tex}
+results from a problematic \cmd{\input} or \cmd{\include}; the extension
+\file{sty} from a \cmd{\usepackage} and an extension \file{cls}
+from a \cmd{\documentclass}. 
 
-\begin{syntax}
-\Icn{lastsheet} \\
-\Icn{lastpage} \\
-\end{syntax}
-The counter \Icn{lastsheet} holds the number of sheets processed during
-the \emph{previous} run of LaTeX. Similarly, the counter \Icn{lastpage}
-holds the number of the last page processed during the previous run.
-Note that the last page number is not necessarily the same as the last
-sheet number. For example: \\
-\textit{In this document this is 
-        sheet \thesheetsequence\ of \thelastsheet\ sheets, 
-        and page \thepage\ of \thelastpage.}
+%LTERROR %LTOUTPUT
+\item[]\index{Float(s) lost} 
+    \textmess{Float(s) lost}
 
-The previous sentence was the result of processing the following
-code 
-\begin{lcode}
-\textit{In this document this is 
-        sheet \thesheetsequence\ of \thelastsheet\ sheets, 
-        and page \thepage\ of \thelastpage.}
-\end{lcode}
+    Usually caused by having too many \cmd{\marginpar}s on a page.
 
-    You may wish to use the sheet and/or page numbers as part of some
-trim marks. The following will note the sheet numbers above the page.
-\begin{lcode}
-\newcommand{\trimseqpage}{%
-  \begin{picture}(0,0)
-    \unitlength 1mm
-    \put(0,2){\makebox(0,0)[b]{Sheet: \thesheetsequence\ of \thelastsheet}}
-  \end{picture}}
-\let\tmarktm\trimseqpage
-\end{lcode}
+%LTFSSBAS
+%\item[] \textmess{Font family `..+..' unknown}
 
+%LTFSSTRC
+%\item[] \textmess{Font ... not found}
 
-\section{Page breaks before lists}
 
-   A sentence or two may be used to introduce a list (e.g., |itemize|)
-and it can be annoying if there is a page break between the introduction
-and the first item.
-\begin{syntax}
-\cmd{\noprelistbreak} \\
-\end{syntax}
-Putting \cmd{\noprelistbreak} immediately before the |\begin{itemize}|
-should prevent a page break. Ideally, there sould be no blank lines
-between the end of the introduction and the start of the list. 
 
-\section{Changing counters}
+%%%% IIIIIIIIIIIIIIIIII
 
-    This is effectively a bundling of the \Lpack{chngcntr} 
-package~\cite{CHNGCNTR}.
+%LTERROR
+\item[]\index{Illegal character ...} 
+    \textmess{Illegal character in array argument} 
 
-\begin{syntax}
-\cmd{\newcounter}\marg{ctr}\oarg{within} \\
-\cmd{\thectr} \\
-\end{syntax}
-    In LaTeX a new counter called, say |ctr|, is created by the 
-\cmd{\newcounter} command as |\newcounter{ctr}|. If the optional \meta{within}
-argument is given, the counter \meta{ctr} is reset to zero each time the 
-counter called |within| is changed; the |within| counter must exist before
-it is used as the optional argument. The command |\thectr| typesets the value
-of the counter |ctr|. This is automatically defined for you by the 
-\cmd{\newcounter} command to typeset arabic numerals.
+    There is an illegal character in the argument of an \Ie{array} or
+\Ie{tabular} environment, or in the second argument of a
+\cmd{\multicolumn} command.
 
-\begin{syntax}
-\cmd{\counterwithin}\marg{ctr}\marg{within} \\
-\cmd{\counterwithin*}\marg{ctr}\marg{within} \\
-\end{syntax}
-The \cmd{\counterwithin} macro makes a \meta{ctr} that has been initially
-defined by |\newcounter{ctr}| act as though it had been defined by
-|\newcounter{ctr}[within]|. It also redefines the |\thectr| command
-to be |\thewithin.\arabic{ctr}|. The starred version of the command
-does nothing to the original definition of |\thectr|.
+%LTFILES
+\item[]\index{\cs{include} cannot be nested}
+   \textmess{\cmd{\include} cannot be nested}
 
-\begin{syntax}
-\cmd{\counterwithout}\marg{ctr}\marg{within} \\
-\cmd{\counterwithout*}\marg{ctr}\marg{within} \\
-\end{syntax}
-The \cmd{\counterwithout} macro makes a \meta{ctr} that has been initially
-defined by |\newcounter{ctr}[within]| act as though it had been defined by
-|\newcounter{ctr}|. It also redefines the |\thectr| command
-to be |\arabic{ctr}|. The starred version of the command
-does nothing to the original definition of |\thectr|.
+    A file that is \cmd{\include}d cannot \cmd{\include} any other files.
 
-    Any number of |\counterwithin{ctr}{...}| and |\counterwithout{ctr}{...}|
-commands can be issued for a given counter |ctr| if you wish to toggle
-between the two styles. The current value of |ctr| is unaffected by these
-commands. If you want to change the value use \cmd{\setcounter}, and to change
-the typesetting style use \cmd{\renewcommand} on |\thectr|.
 
-\section{New new and provide commands}
+%%%%% LLLLLLLLLLLLLLLL
 
-\begin{syntax}
-\cmd{\newloglike}\marg{cmd}\marg{string} \\
-\cmd{\newloglike*}\marg{cmd}\marg{string} \\
-\end{syntax}
-The class provides means of creating new math log-like functions. For
-example you might want to do
-\begin{lcode}
-\newloglike{\Ei}{Ei}
-\end{lcode}
-if you are using the exponential integral function in your work.
-The starred version of the command creates a function that takes limits
-(like the \cmd{\max} function).
+%LTCLASS
+\item[]\index{\cs{LoadClass} in package file}
+  \textmess{\cmd{\LoadClass} in package file} 
 
-    The LaTeX kernel defines the \cmd{\providecommand} macro that acts
-like \cmd{\newcommand} if the designated macro has not been defined
-previously, otherwise it does nothing. The class adds to that limited
-repetoire.
+    This is an error in a package file you are using 
+(you can only use \cmd{\LoadClass} in a class file). Complain to the author.
 
-\begin{syntax}
-\cmd{\provideenvironment}\marg{name}\oarg{numargs}\oarg{optarg}\marg{begindef}\marg{enddef} \\
-\cmd{\providelength}\marg{cmd} \\
-\cmd{\providecounter}\marg{ctr}\oarg{within} \\
-\cmd{\provideloglike}\marg{cmd}\marg{string} \\
-\cmd{\provideloglike*}\marg{cmd}\marg{string} \\
-\end{syntax}
+%LTLISTS
+\item[]\index{Lonely \cs{item} ...}
+   \textmess{Lonely \cmd{\item} --- perhaps a missing list environment}
 
-    The macros \cmd{\provideenvironment}, \cmd{\providelength}
-and \cmd{\providecounter} take the same arguments as their |\new...|
-counterparts. If the environment, length or counter has not been defined
-then it is defined accordingly, otherwise the macros do nothing except
-produce a warning message for information purposes.
+    An \cmd{\item} command appears to be outside any list environment.
 
-   The \cmd{\provideloglike} commands are for math log-like functions,
-but they do not produce any warning messages.
 
-\section{Changing macros} \label{sec:addtodef}
+%%%% MMMMMMMMMMMMMMMM
 
-     Commands are provided for extending simple macro definitions. 
-Get the \Lpack{patchcmd} package~\cite{PATCHCMD} if you need
-to make other additions to definitions.
+%LTFSSBAS
+%\item[] \textmess{Math alphabet identifier ...is undefined in math version `...'} 
+%       (Check the spelling or use the \cmd{\SetMathAlphabet} command)
 
-\begin{syntax}
-\cmd{\addtodef}\marg{macro}\marg{prepend}\marg{append} \\
-\cmd{\addtoiargdef}\marg{macro}\marg{prepend}\marg{append} \\
-\end{syntax}
-The macro \cmd{\addtodef} inserts \meta{prepend} at the start of the
-current definition of \meta{macro} and puts \meta{append} at the end,
-where \meta{macro} is the name of a macro (including the backslash) which 
-takes no arguments. The \cmd{\addtoiargdef} macro is similar except that
-\meta{macro} is the name of a macro that takes one argument.
+%LTFSSBAS %LTFSSDCL
+%\item[] \textmess{Math version `..' is not defined} (misspelled or need a package)
 
- For example the following are two equivalent
-definitions of |\mymacro|:
-\begin{lcode}
-\newcommand{\mymacro}[1]{# is a violinist in spite of being tone deaf}
-\end{lcode}
-and
-\begin{lcode}
-\newcommand{\mymacro}[1]{#1 is a violinist}
-\addtoiargdef{\mymacro}{}{ in spite of being tone deaf}
-\end{lcode}
 
-    The \cmd{\addtoiargdef} (and \cmd{\addtodef}) commands
-can be applied several times to the same \meta{macro}. Revising the
-previous example we could have
-\begin{lcode}
-\newcommand{\mymacro}[1]{#1 is a violinist}
-\addtoiargdef{\mymacro}{Although somewhat elderly, }%
-                       { in spite of being tone deaf}
-\addtoiargdef{\mymacro}{}{ and a bagpiper}
-\end{lcode}
-which is equivalent to
-\begin{lcode}
-\newcommand{\mymacro}[1]{%
-  Although somewhat elderly, #1 is a violinist
-  in spite of being tone deaf and a bagpiper}
-\end{lcode}
+%LTERROR
+\item[]\index{Missing \senv{document}}  
+  \textmess{Missing \cs{begin}\{document\}} 
 
-The \meta{prepend} and \meta{append} arguments may include LaTeX code, 
-as shown in this extract from the class code:
-\begin{lcode}
-\addtoiargdef{\date}{}{%
-  \begingroup
-    \renewcommand{\thanks}[1]{}
-    \renewcommand{\thanksmark}[1]{}
-    \renewcommand{\thanksgap}[1]{}
-    \protected@xdef\thedate{#1}
-  \endgroup}
-\end{lcode}
-Note that in the case of \cmd{\addtoiargdef} an argument can also refer
-to the original argument of the \meta{macro}.
+    If you haven't forgotten \senv{document} then there is something
+wrong in the preamble as \ltx\ is trying to typeset something before
+the document starts. This is often caused by missing the backslash from
+a command, misplaced braces round an argument, a stray character, or
+suchlike.
 
-\begin{syntax}
-\cmd{\addtodef*}\marg{macro}\marg{prepend}\marg{append} \\
-\cmd{\addtoiargdef*}\marg{macro}\marg{prepend}\marg{append} \\
-\end{syntax}
-These starred versions are for use when the original \meta{macro}
-was defined via \cmd{\newcommand*}. Using the starred versions is
-like using \cmd{\renewcommand*} and the unstarred versions are like
-having used \cmd{\renewcommand}. It is the version (starred or unstarred)
-of a sequence of |\addto...| commands that counts when determining whether
-the equivalent |\renew...| is treated as starred or unstarred.
+\item[]\index{Missing @-exp ...}
+  \textmess{Missing @-exp in array argument} 
 
-    The |\addto...| macros cannot be used to delete any code from 
-\meta{macro} nor to add anything except at the start and end. Also,
-in general, they cannot be used to change the definition of a macro that
-takes an optional argument, or that is starred.
+    The \texttt{@} character is not followed by an \pixatexp{}
+in the argument of an \Ie{array} or
+\Ie{tabular} environment, or in the second argument of a
+\cmd{\multicolumn} command.
 
-\section{String arguments}
+\item[]\index{Missing p-arg ...}
+  \textmess{Missing p-arg in array argument} 
 
-    In the code for the class I have sometimes used macro arguments
-that consist of a `string', like the |*| arguments in the page layout
-macros (e.g., \cmd{\settypeblocksize}), or the |flushleft|, |center| and
-|flushright| strings for the \cmd{\makeheadposition} macro.
+    There is a \texttt{p} not followed by braces 
+in the argument of an \Ie{array} or
+\Ie{tabular} environment, or in the second argument of a
+\cmd{\multicolumn} command.
 
-\begin{syntax}
-\cmd{\nametest}\marg{str1}\marg{str2} \\
-\piif{ifsamename} \\
-\end{syntax}
-The macro \cmd{\nametest} takes two strings 
-as the arguments \meta{str1} and \meta{str2}. It sets \piif{ifsamename}
-TRUE if \meta{str1} is the same as \meta{str2}, otherwise it sets
-\piif{ifsamename} FALSE. For the purposes of \cmd{\nametest}, a string is a
-sequence of characters which may include spaces and may include
-the |\| backslash character; strings are equal if and only if their
-character sequences are identical.
+%%%% NNNNNNNNNNNNNNNN
 
+%LTERROR
+\item[]\index{No counter ... defined}
+  \textmess{No counter ... defined} 
 
-    Typically, I have used it within macros for checking on argument
-values. For example:
-\begin{lcode}
-\newcommand{\amacro}[1]{%
-  \nametest{#1}{green}
-  \ifsamename
-%    code for green
-  \fi
-  \nametest{#1}{red}
-  \ifsamename
-%    code for red
-  \fi
-  ...
-}
-\end{lcode}
+    The argument to a \cmd{\setcounter} or \cmd{\addtocounter}
+command, or in the optional argument to \cmd{\newcounter}
+or \cmd{\newtheorem} is not the name of a counter. Perhaps you 
+misspelled the name.
+However, if the error occured while an \file{aux} file was being read
+then you might well have used a \cmd{\newcounter} in an \cmd{\include}d file.
 
-\section{Odd/even page checking}
 
-    It is difficult to check robustly if the current page is odd or even but 
-the class does provide a robust method based on writing out a label and then
-checking the page reference for the label. This requires at least two LaTeX
-runs to stabilise. This has been extracted from the original 
-\Lpack{chngpage} package~\cite{CHNGPAGE}.
+%LTFSSDCL
+%\item[] \textmess{Not a command name: \cs{...}}
 
-\begin{syntax}
-\cmd{\checkoddpage} \\
-\piif{ifoddpage} \\
-\cmd{\strictpagechecktrue} \cmd{\strictpagecheckfalse} \\
-\end{syntax}
-The macro \cmd{\checkoddpage} sets 
-\piif{ifoddpage} 
-to TRUE if the page number 
-is odd, otherwise it sets it to FALSE (the page number is even). The robust
-checking methos involves writing and reading labels, which is what is done
-after the command \cmd{\strictpagechecktrue} is issued. The simple method is just
-to check the current page number which, because of TeX's asynchronous page
-breaking algorithm, may not correspond to the actual page number where the
-\cmd{\checkoddpage} commmand was issued. The simple, but faster, page checking
-method is used after the \cmd{\strictpagecheckfalse} command is issued.
+%LTFSSTRC
+%\item[] \textmess{No declaration for shape ...}
 
-\begin{syntax}
-\cmd{\cplabel} \\
-\end{syntax}
-When strict page checking is used the labels consist of a number preceded
-by the value of \cmd{\cplabel}, whose default definition is |^_| (e.g.,
-a label may consist of the characters |^_21|). If this
-might clash with any of your labels, change \cmd{\cplabel} with \cmd{\renewcommand}, but
-the definition of \cmd{\cplabel} must be constant for any given document.
+%LTPLAIN
+\item[]\index{No room for a new ...}
+  \textmess{No room for a new ...}
 
-\section{Moving to another page} \label{sec:moving}
+    \tx\ is limited in the numbers of different things it can handle. You 
+might not recognize the thing that the message mentions as some of them are
+hidden in \ltx. The \ltx\ \texttt{counter} uses a \tx\ \cmd{\count} for
+example, and a length is a \tx\ \cmd{\skip}. Most things are limited to a 
+maximum of 256 but there can be no more than 16 files open for reading
+and 16 for writing.
 
-   Standard LaTeX provides the \cmd{\newpage}, \cmd{\clearpage}
-and \cmd{\cleardoublepage} commands for discontinuing the current 
-page and starting a new one. The following is a bundling of the
-\Lpack{nextpage} package~\cite{NEXTPAGE}.
+%LTSECT
+\item[]\index{No title given?No \cs{title} given}
+  \textmess{No \cmd{\title} given}
 
-\begin{syntax}
-\cmd{\needspace}\marg{length} \\
-\end{syntax}
-This macro decides if there is \meta{length} space at the bottom of the 
-current page. If there is it does nothing, otherwise it starts a new page.
-This is useful if \meta{length} amount of material is to be kept together
-on one page. The \cmd{\needspace} macro 
-depends on penalties for deciding what to do which means that the reserved
-space is an approximation. However, except for the odd occasion, the
-macro gives adequate results. 
+You did not put a \cmd{\title} command before using \cmd{\maketitle}.
 
-\begin{syntax}
-\cmd{\Needspace}\marg{length} \\
-\cmd{\Needspace*}\marg{length} \\
-\end{syntax}
-    Like \cmd{\needspace}, the \cmd{\Needspace} macro checks if there is
-\meta{length} space at the bottom of the current page and if there is not
-it starts a new page. The command should only be used between paragraphs;
-indeed, the first thing it does is to call \cs{par}. The \cmd{\Needspace}
-command checks for the actual space left on the page and is more exacting
-than \cmd{\needspace}.
 
-    If either \cmd{\needspace} or \cmd{\Needspace} produce a short page it
-will be ragged bottom even if \cmd{\flushbottom} is in effect. With
-the starred \cmd{\Needspace*} version, short pages will be flush bottom
-if \cmd{\flushbottom} is in effect and will be ragged bottom
-when \cmd{\raggedbottom} is in effect.
+%LTERROR
+\item[]\index{Not in outer par mode}
+   \textmess{Not in outer par mode}
 
-    Generally speaking, use \cmd{\needspace} in preference to \cmd{\Needspace}
-unless it gives a bad break or the pages must be flush bottom.
+    There is a float (e.g., a \Ie{figure} or a \cmd{\marginpar})
+in math mode or in a parbox (e.g., in another float).
 
 
-\begin{syntax}
-\cmd{\movetoevenpage}\oarg{text} \\
-\cmd{\cleartoevenpage}\oarg{text} \\
-\end{syntax}
-The \cmd{\movetoevenpage} stops the current page and starts typesetting on the
-next even numbered page. The |\clear...| version flushes out all 
-floats\index{float} before
-going to the next even page. The optional \meta{text} is put on the skipped
-page (if there is one).
+%%%% OOOOOOOOOOOOOOOO
+
+%LTHYPHEN
+%\item[] \textmess{OOPS! I can't find any hyphenation patterns for US English.
+%       Think of getting some otherwise latex2e setup will never succeed.}
 
-\begin{syntax}
-\cmd{\movetooddpage}\oarg{text} \\
-\cmd{\cleartooddpage}\oarg{text} \\
-\end{syntax}
-These macros are similar to the |\...evenpage| ones except that they jump
-to the next odd numbered page.
 
-    A likely example for the optional \meta{text} argument is
-\begin{lcode}
-\cleartooddpage[\vspace*{\vfill}THIS PAGE LEFT BLANK\vspace*{\vfill}]
-\end{lcode}
-which will put `THIS PAGE LEFT BLANK' in the centre of any
-potential skipped (empty) even numbered page.
+%LTCLASS
+\item[]\index{Option clash for ...}
+  \textmess{Option clash for ...} 
 
-\begin{syntax}
-\cmd{\cleartorecto} \cmd{\cleartoverso} \\
-\end{syntax}
-These are slightly simpler forms\footnote{Perhaps more robust.} of
-\cmd{\cleartooddpage} and \cmd{\cleartoevenpage}. For example, if you wanted
-the Table of Contents to start on a verso page, like in 
-\textit{The TeXbook} \cite{KNUTH84a}, then do this:
-\begin{lcode}
-\cleartoverso
-\tableofcontents
-\end{lcode}
+    The same package was used twice but with different options. It is possible
+for one package to use another package which might be the cause if you 
+can't see anything obvious.
 
-\section{Number formatting}
+%%%% PPPPPPPPPPPPPPPPPP
 
-    Several methods are provided for formatting numbers. Two classes
-of number representations are catered for. A `numeric number' is 
-typeset using arabic digits and a `named number' is typeset using
-words.
+%LTOUTPUT
+\item[]\index{Page height already too large} 
+  \textmess{Page height already too large}
 
-    The argument to the number formatting macros is a `number', 
-essentially something that resolves to a series of arabic digits. Typical
-arguments might be:
-\begin{itemize}
-\item Some digits, e.g., \verb?\ordinal{123} ->? 
-      \ordinal{123} 
-\item A macro expanding to digits, e.g., \verb?\def\temp{3}\ordinal{\temp} ->? 
-      \begingroup\def\temp{3}\ordinal{\temp}\endgroup % \\
+    You are trying to use \cmd{\enlargethispage} when the page is already
+too large.
 
-%      Or even, for example, \verb?\ordinal{\pageref{chap:numf}} ->? 
-%      \ordinal{\pageref{chap:numf}}
-\item The value of a counter, e.g., \verb?\ordinal{\value{page}} ->? 
-      \ordinal{\value{page}} 
-\item The arabic representation of a counter, e.g., \verb?\ordinal{\thepage} ->? 
-      \ordinal{\thepage} 
 
-However, if the representation of a counter is not completely in arabic 
-digits, such as \verb?\thesection? which here prints as \thesection, it will 
-produce odd errors or peculiar results if it is used as the argument.
-For instance: \\
-\verb?\ordinal{\thesection} ->? \ordinal{\thesection}
+%LTERROR
+\item[]\index{pushtabs and poptabs don't match?\cs{pushtabs} and \cs{poptabs} don't match}
+   \textmess{\cmd{\pushtabs} and \cmd{\poptabs}  don't match}
 
-\end{itemize}
+    There are unmatched \cmd{\pushtabs} and \cmd{\poptabs} in a
+\Ie{tabbing} environment.
 
-\subsection{Numeric numbers}
 
-\begin{syntax}
-\cmd{\cardinal}\marg{number} \\
-\cmd{\fcardinal}\marg{number} \\
-\cmd{\fnumbersep} \\
-\end{syntax}
-The macro \cmd{\fcardinal} prints its \meta{number} argument formatted using
-\cmd{\fnumbersep} between each triple of digits. The default definition
-of \cmd{\fnumbersep} is:
-\begin{lcode}
-\newcommand{\fnumbersep}{,}
-\end{lcode}
+%%%% RRRRRRRRRRRRRRRR
 
-    Here are some examples: \\
-\verb?\fcardinal{12} ->? \fcardinal{12} \\
-\verb?\fcardinal{1234} ->? \fcardinal{1234} \\
-\verb?\fcardinal{1234567} ->? \fcardinal{1234567} \\
-\verb?\renewcommand{\fnumbersep}{ }\fcardinal{12345678} ->?
-  \renewcommand{\fnumbersep}{ }\fcardinal{12345678}
-\renewcommand{\fnumbersep}{,}
+%LTCLASS
+\item[]\index{RequirePackage or LoadClass in Options Section?\cs{RequirePackage} or \cs{LoadClass} in Options Section}
+   \textmess{\cmd{\RequirePackage} or \cmd{\LoadClass} in Options Section}
 
-    The \cmd{\cardinal} macro is like \cmd{\fcardinal} except that there
-is no separation between any of the digits.
+    This is a problem in a class or package file. Complain to the author.
 
-\begin{syntax}
-\cmd{\ordinal}\marg{number} \\
-\cmd{\fordinal}\marg{number} \\
-\cmd{\ordscript}\marg{chars} \\
-\end{syntax}
-The \cmd{\fordinal} macro typesets its \meta{number} argument as a formatted
-ordinal, using \cmd{\fnumbersep} as the separator. The macro \cmd{\ordinal}
-is similar except that there is no separation between any of the digits.
+%%%% SSSSSSSSSSSSSSSS
 
-    Some examples are: \\
-\verb?\fordinal{3} ->? \fordinal{3} \\
-\verb?\fordinal{12341} ->? \fordinal{12341} \\
-\verb?\renewcommand{\ordscript}[1]{\textsuperscript{#1}}\fordinal{2} ->?
-  \renewcommand{\ordscript}[1]{\textsuperscript{#1}}\fordinal{2} \\
-\verb?\ordinal{1234567} ->? \ordinal{1234567} \\
-\verb?This is the \ordinal{\value{chapter}} chapter. ->? 
-  This is the \ordinal{\value{chapter}} chapter.
+%LTERROR
+\item[]\index{Something's wrong ...}
+  \textmess{Something's wrong --- perhaps a missing \cmd{\item}} 
 
+   This can be caused by not starting a list environment, such as \Ie{itemize}
+with a \cmd{\item} command, or by omitting the argument to the
+\Ie{thebibliography} environment. There are many other non-obvious
+causes, such as calling some macro that ends up using \cmd{\addvspace} 
+or \cmd{\addpenalty} when not in \texttt{vmode}.
 
-    The characters denoting the ordinal (ordination?) are typeset as 
-the argument of \cmd{\ordscript}, whose default definition is:
-\begin{lcode}
-\newcommand{\ordscript}[1]{#1}
-\end{lcode}
-As the above examples show, this can be changed to give a different
-appearance.
+%LTOUTPUT
+\item[]\index{Suggested extra height ...}
+  \textmess{Suggested extra height (...) dangerously large} 
 
-\begin{syntax}
-\cmd{\nthstring} \cmd{\iststring} \cmd{\iindstring} \cmd{\iiirdstring} \\
-\end{syntax}
-The ordinal characters are the values of the macros \cmd{\nthstring}
-(default: th) for most ordinals, \cmd{\iststring} (default: st) for
-ordinals ending in 1 like \ordinal{21}, \cmd{\iindstring} (default: nd)
-for ordinals like \ordinal{22}, and \cmd{\iiirdstring} (default: rd)
-for ordinals like \ordinal{23}.
+    \ltx\ is concerned that you a trying to increase the page size
+    too much with the \cmd{\enlargthispage} command.
 
 
-\subsection{Named numbers}
+%LTFSSDCL
+%\item[] \textmess{Symbol font ... not defined}
 
+%%%% TTTTTTTTTTTTTTTT
 
+%LTERROR %LTTAB
+\item[]\index{Tab overflow}
+  \textmess{Tab overflow}
 
-\begin{syntax}
-\cmd{\numtoname}\marg{number} \\
-\cmd{\numtoName}\marg{number} \\
-\cmd{\NumToName}\marg{number} \\
-\end{syntax}
-The macro \cmd{\numtoname} typesets its \meta{number} argument using 
-lowercase words. The other two macros are similar, except that 
-\cmd{\numtoName} uses uppercase for the initial letter of the first word and
-\cmd{\NumToName} uses uppercase for the initial letters of all the words.
+    In the \Ie{tabbing} environment a \cmd{\=} has exceeded \ltx's maximum
+number of tab stops.
 
-    As examples: \\
-\verb?\numtoname{12345} ->? \numtoname{12345} \\
-\verb?\numtoName{12345} ->? \numtoName{12345} \\
-\verb?\NumToName{12345} ->? \NumToName{12345} \\
-\verb?The minimum number in TeX is \numtoname{-2147483647}? \\
-\verb?    (i.e., \fcardinal{-2147483647}) ->? \\
-  The minimum number in TeX is \numtoname{-2147483647} 
-  (i.e., \fcardinal{-2147483647})
 
-\begin{syntax}
-\cmd{\ordinaltoname}\marg{number} \\
-\cmd{\ordinaltoName}\marg{number} \\
-\cmd{\OrdinalToName}\marg{number} \\
-\end{syntax}
-These three macros are similar to \cmd{\numtoname}, etc., except that they
-typeset the argument as a wordy ordinal.
+%LTCLASS
+\item[]\index{The file needs format ...}
+   \textmess{The file needs format ... but this is ...}
 
-    For example: \\
-\verb?This is the \ordinaltoname{\value{chapter}} chapter. ->? 
-  This is the \ordinaltoname{\value{chapter}} chapter.
+    The document uses a document class or package that is not compatible
+with the  version of \ltx\ you are using. If you are using only standard
+files then there is a problem with your \ltx\ installation.
 
-\begin{syntax}
-\cmd{\namenumberand} \cmd{\namenumbercomma} \cmd{\tensunitsep} \\
-\end{syntax}
-By default some punctuation and conjunctions are used in the representation
-of named numbers. According to both American and English practice, a hyphen
-should be inserted between a `tens' name (e.g., fifty) and a following 
-unit name (e.g., two). This is represented by the value of \cmd{\tensunitsep}.
-English practice, but not American, is to include commas (the value of
-\cmd{\namenumbercomma}) and conjunctions (the value of \cmd{\namenumberand})
-in strategic positions in the typesetting. These macros are initially
-defined as:
-\begin{lcode}
-\newcommand*{\namenumberand}{ and }
-\newcommand*{\namenumbercomma}{, }
-\newcommand*{\tensunitsep}{-}
-\end{lcode}
-The next example shows how to achieve American typesetting.
-\begin{lcode}
-\renewcommand*{\namenumberand}{ }
-\renewcommand*{\namenumbercomma}{ }
-The maximum number in TeX is \numtoname{2147483647} (i.e., \cardinal{2147483647}). ->
-\end{lcode}
-\renewcommand*{\namenumberand}{ }\renewcommand*{\namenumbercomma}{ }%
-The maximum number in TeX is \numtoname{2147483647} (i.e., \cardinal{2147483647}). 
-\renewcommand*{\namenumberand}{ and }
-\renewcommand*{\namenumbercomma}{, }
+%LTFNTCMD
+%\item[] \textmess{The font size command \cmd{\normalsize} is not defined:
+%       there is probably something wrong with the class file}
 
-\begin{syntax}
-\cmd{\minusname} \cmd{\lcminusname} \cmd{\ucminusname} \\
-\end{syntax}
-    When a named number is negative, \cmd{\minusname} is put before the
-spelled out number. The definitions of the above three comands are:
-\begin{lcode}
-\newcommand*{\lcminusname}{minus }
-\newcommand*{\ucminusname}{Minus }
-\let\minusname\lcminusname
-\end{lcode}
-which means that `minus' is normally all lowercase. To get `minus'
-typeset with an initial uppercase letter simply:
+%LTERROR
+\item[]\index{There's no line to end here}
+   \textmess{There's no line to end here} 
+
+    A \cmd{\newline} or \cmd{\\} appears in vertical mode, for example 
+between paragraphs. Or perhaps you have tried to put \cmd{\\} immediately 
+after an \cmd{\item} to start the text on a new line. If this is the case, 
+then try this:
 \begin{lcode}
-\let\minusname\ucminusname
+\item \mbox{} \\
+...
 \end{lcode}
 
-    Only one version of \cmd{\namenumberand} is supplied as I consider that
-it is unlikely that `and' would ever be typeset as `And'. If the initial
-uppercase is required, renew the macro when appropriate.
+%LTERROR
+\item[]\index{This may be a LaTeX bug} 
+  \textmess{This may be a LaTeX bug} % (in output routine)
+ 
+    This is a message you don't want to see as it is produced by the
+output routine --- perhaps the most obscure part of \ltx. It is probably
+due to an earlier error. If it is the first error, though, and you can't 
+see anything wrong, ask for somebody's help.
 
-    There is a group of macros that hold the names for the numbers. To
-typeset named numbers in a language other than English these will have to be
-changed as appropriate. You can find them in the class and patch code. 
-The actual picking and ordering of the names is done by an internal macro
-called \cmd{\n@me@number}. If the ordering is not appropriate for a
-particular language, that is the macro to peruse and modify. Be prepared,
-though, for the default definitions to be changed in a later release in case
-there is a more efficient way of implementing their functions.
+%LTFSSDCL
+%\item[] \textmess{This NFSS system isn't set up properly} (For encoding scheme ...
+%       .../.../... do not form a valid font shape)
 
-\subsection{Fractions}
+%LTFSSDCL
+%5\item[] \textmess{This NFSS system isn't set up properly} 
+%      (The system manitainer forgot
+%       to specify a suitable substitution font shape using the 
+%       \cmd{\DeclareErrorFont} command)
 
-    When typesetting a simple fraction in text there is usually a choice
-of two styles, like 3/4 or $\frac{3}{4}$, which do not necessarily look 
-as though they fit in with their surroundings. These fractions were
-typeset via:
-\begin{lcode}
-... like 3/4 or $\frac{3}{4}$ ...
-\end{lcode}
+%LTERROR
+\item[]\index{Too deeply nested} 
+   \textmess{Too deeply nested}
 
-\begin{syntax}
-\cmd{\slashfrac}\marg{top}\marg{bottom} \\
-\cmd{\slashfracstyle}\marg{num} \\
-\end{syntax}
-The class provides the \cmd{\slashfrac} command which typesets its
-arguments like \slashfrac{3}{4}. Unlike the \cmd{\frac} command which
-can only be used in math mode, the \cmd{\slashfrac} command can be
-used in text and math modes.
+    There are too many list environments nested within each other. At least
+four levels are usually available but some list environments are not obvious
+(for example the \Ie{quotation} environment is actually a list).
 
-    The \cmd{\slashfrac} macro calls the \cmd{\slashfracstyle} command to
-reduce the size of the numbers in the fraction. You can also use
-\cmd{\slashfracstyle} by itself.
-\begin{lcode}
-In summary, fractions can be typeset like 3/4 or $\frac{3}{4}%
-or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
-are provided.
-\end{lcode}
-In summary, fractions can be typeset like 3/4 or $\frac{3}{4}$
-or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
-are provided.
+%LTMATH
+\item[]\index{Too many columns ...}
+   \textmess{Too many columns in eqnarray environment}
 
-\begin{syntax}
-\cmd{\textsuperscript}\marg{super} \\
-\cmd{\textsubscript}\marg{sub} \\
-\end{syntax}
-While on the subject of moving numbers up and down, the kernel provides
-the \cmd{\textsuperscript} macro for typesetting its argument as though it
-is a superscript. The class also provides the \cmd{\textsubscript} macro
-for typesetting its argument like a subscript.
-\begin{lcode}
-You can typeset superscripts like \textsuperscript{3}/4 and 
-subscripts like 3/\textsubscript{4}, 
-or both like \textsuperscript{3}/\textsubscript{4}.
-\end{lcode}
-You can typeset superscripts like \textsuperscript{3}/4 and 
-subscripts like 3/\textsubscript{4}, 
-or both like \textsuperscript{3}/\textsubscript{4}.
+    An \Ie{eqnarray} environment has three \texttt{\&} column separators
+with no \cmd{\\} between.
 
+%LTFSSDCL
+%\item[] \textmess{Too many math alphabets used in version ...}
 
-\section{An array data structure}
+%LTERROR
+\item[]\index{Too many unprocessed floats}
+   \textmess{Too many unprocessed floats}
 
-   The class includes some macros for supporting the \Ie{patverse}
-environment which may be more generally useful. 
+    There may be too many \cmd{\marginpar}s to fit on a page, but it's more
+likely that \ltx\ hasn't been able to find locations for printing all the
+figures or tables. If one float cannot be placed, all later ones are saved 
+until \ltx\ runs out of storage space. See \Sref{sec:floatplace} for 
+details on how \ltx\ decides to place a float.
 
-\begin{syntax}
-\cmd{\newarray}\marg{arrayname}\marg{low}\marg{high} \\
-\end{syntax}
-\cmd{\newarray} defines
-the \meta{arrayname} array, where \meta{arrayname} is a name like
-|MyArray|. The lowest and highest array indices are set to
-\meta{low} and \meta{high} respectively, where both are integer numbers.
+%LTCLASS
+\item[]\index{Two documentclass commands?Two \cs{documentclass} commands}
+   \textmess{Two \cmd{\documentclass} commands} 
 
-\begin{syntax}
-\cmd{\setarrayelement}\marg{arrayname}\marg{index}\marg{text} \\
-\cmd{\getarrayelement}\marg{arrayname}\marg{index}\marg{result} \\
-\end{syntax}
-The \cmd{\setarrayelement} macro
-sets the \meta{index} location in the \meta{arrayname} array to be 
-\meta{text}. Conversely, \cmd{\getarrayelement} sets the parameterless
-macro \meta{result} to the contents of
-the \meta{index} location in the \meta{arrayname} array. 
-For example: 
-\begin{lcode}
-\setarrayelement{MyArray}{23}{$2^{23}$}
-\getarrayelement{MyArray}{23}{\result}
-\end{lcode}
-will result in |\result| being defined as |\def\result{$2^{23}$}|.
+    Your document has two \cmd{\documentclass} commands; only one is
+permitted.
 
-\begin{syntax}
-\cmd{\checkarrayindex}\marg{arrayname}\marg{index} \\
-\piif{ifbounderror} \\
-\end{syntax}
-\cmd{\checkarrayindex} checks if
-\meta{arrayname} is an array and if \meta{index} is a valid index for
-the array. If both conditions hold then \piif{ifbounderror} is set
-FALSE, but if either \meta{arrayname} is not an array or, if it is,
-\meta{index} is out of range then \piif{ifbounderror} is set TRUE.
 
-\begin{syntax}
-\cmd{\stringtoarray}\marg{arrayname}\marg{string} \\
-\cmd{\arraytostring}\marg{arrayname}\marg{result} \\
-\end{syntax}
-The macro \cmd{\stringtoarray} puts each character
-from \meta{string} sequentially into the \meta{arrayname} array, starting
-at index 1.
-The macro \cmd{\arraytostring} assumes
-that \meta{arrayname} is an array of characters, and defines the macro
-\meta{result} to be that sequence of characters. For example: \\
-\begin{lcode}
-\stringtoarray{MyArray}{Chars}
-\arraytostring{MyArray}{\MyString}
-\end{lcode}
-is equivalent to |\def\MyString{Chars}|.
+%LTCLASS
+\item[]\index{Two LoadClass commands?Two \cmd{\LoadClass} commands}
+  \textmess{Two \cmd{\LoadClass} commands}% (only one allowed)
 
-\begin{syntax}
-\cmd{\checkifinteger}\marg{num} \\
-\piif{ifinteger} \\
-\end{syntax}
-The command \cmd{\checkifinteger} ckecks if \meta{num} is an integer 
-(not less than zero). If it is then \piif{ifinteger} is set TRUE, 
-otherwise it is set FALSE.
+    This is an error in the class file. Complain to the author.
+
+%%%% UUUUUUUUUUUUUUUUUUUUUUUUUUU
+
+%LTFSSTRC
+%\item[] \textmess{Undefined font size function ...}
+
+%LTERROR
+\item[]\index{Undefined tab position}
+   \textmess{Undefined tab position}
+
+    A \cmd{\>}, \cmd{\+}, \cmd{\-}, or \cmd{\<} tabbing command
+is trying to move to a tab position that has not been defined by a 
+\cmd{\=} command.
+
+%LTCLASS
+\item[]\index{Unknown option ...}
+   \textmess{Unknown option ... for class/package ...} 
 
+    You have asked for an option that the class or package does not know about.
+Perhaps you have mispelled something, or omitted a comma.
 
-\section{pdfLaTeX}
+%LTFSSDCL
+%\item[] \textmess{Unknown symbol font ...}
 
-    Both LaTeX and pdfLaTeX can be run on the same document. LaTeX produces
-a \file{.dvi} file as output, while pdfLaTeX can produce either a
-\file{.dvi} or a \file{.pdf} file. 
+%LTCLASS
+\item[]\index{usepackage before documentclass?\cs{usepackage} before \cs{documentclass}}
+  \textmess{\cmd{\usepackage} before \cmd{\documentclass}} 
 
-    By default pdfLaTeX produces a \file{.dvi} file but there may be a
-configuration file on your system that makes pdfLaTeX default to
-producing a \file{.pdf} instead. To ensure a \file{.pdf} output file 
-you have to put the incantation \cmd{\pdfoutput}\texttt{=1} near the start 
-of the preamble\index{preamble}. Conversely, to ensure a \file{.dvi}
-file put \cmd{\pdfoutput}\texttt{=0} instead.
-Unfortunately this command is unknown to LaTeX so if you used LaTeX it 
-would hiccup.
+    In general, the \cmd{\usepackage} command can only be used in the 
+preamble\index{preamble}.
 
-\begin{syntax}
-\piif{ifpdf} ... |\fi| \\
-\end{syntax}
-The class provides \piif{ifpdf} which is true when the document is
-being processed by pdfLaTeX and false otherwise. You can use it like this:
-\begin{lcode}
-\ifpdf
-  code for pdfLaTeX only e.g., \pdfoutput=1 or \pdfoutput=0
-\else
-  code for LaTeX only
-\fi
-\end{lcode}
-If there is no LaTeX specific code then don't write the |\else| part.
+%%%% VVVVVVVVVVVVVVVVVVVVVVVVVVVVV
 
+%LTMISCEN
+\item[]\index{verb ended by end of line?\cs{verb} ended by end of line}
+  \textmess{\cs{verb} ended by end of line}
 
-\section{Leading}
+     The argument of a \piif{verb} command runs past the end of the line.
+Perhaps you forgot to put in the correct ending character.
 
-    LaTeX automatically uses different leading\index{leading} for different
-font sizes. 
-\begin{syntax}
-\lnc{\baselineskip} \lnc{\onelineskip} \\
-\end{syntax}
+%LTMISCEN
+\item[]\index{verb illegal in command argument?\cs{verb} illegal in command argument}
+  \textmess{\cs{verb} illegal in command argument}
 
-At any point in a document the standard LaTeX \lnc{\baselineskip} length
-contains the current value of the leading\footnote{This statement ignores
-any attempts to stretch the baseline.}. The class provides the length
-\lnc{\onelineskip} which contains the initial leading for the normal
-font. This value is useful if you are wanting to specify length values
-in terms of numbers of lines of text.
+    A \piif{verb} cannot be part of the argument to another command.
 
-\section{Minor space adjustment}
 
-    The kernel provides the \cmd{\,} macro for inserting a thin space in both
-text and math mode. There are
-other space adjustment commands, such as \pixabang{} for negative thin space, and
-\cmd{\:} and \cmd{\;} for medium
-and thick spaces, which can only be used in math mode.
+%%%%%%%%%%%%%%%%%%%%% TBD
 
-\begin{syntax}
-\cmd{\thinspace} \cmd{\medspace} \cmd{\:} \pixabang \\
-\end{syntax}
-On occasions I have found it useful to be able to tweak spaces in text by some
-fixed amount, just as in math mode. The kernel macro \cmd{\thinspace}
-specifies a thin space, which is 3/18\,em. 
-The class \cmd{\medspace} specifies a medium space of 4/18\,em. 
-As mentioned, the kernel macro \cmd{\:} inserts
-a medium space in math mode. The class version can be used in both math and
-text mode to insert a medium space. Similarly, the class version of 
-\pixabang{}
-can be used to insert a negative thin space in both text and math mode.
 
-    The math thick space is 5/18\,em. 
-To specify this amount of space
-in text mode you can combine spacing commands as:
-\begin{lcode}
-\:\:\!
-\end{lcode}
-which will result in an overall space of 5/18\,em 
-(from $(4 + 4 - 3)/18$).
 
+%LTVERS
+%\textmess{LaTeX source files more than 1 year old!}
 
-\section{Cross references}\label{sec:xrefthis}  \label{sec:xref}
 
-    LaTeX supplies the \cmd{\ref} and \cmd{\pageref} commands for cross
-referencing to a label or a page which has a label on it.
 
-\begin{syntax}
-\cmd{\fref}\marg{label} \cmd{\figurerefname} \\
-\cmd{\tref}\marg{label} \cmd{\tablerefname} \\
-\cmd{\pref}\marg{label} \cmd{\pagerefname} \\
-\end{syntax}
+%LTFSSCMP
+%\textmess{*** What's this? NFSS release 0? ***}
  
-    The class provides these more particular named references to a figure\index{figure!reference},
-table\index{table!reference} or page\index{page!reference}. For example the default definitions of \cmd{\fref} and 
-\cmd{\pref} are
-\begin{lcode}
-\newcommand{\fref}[1]{\figurerefname~\ref{#1}}
-\newcommand{\pref}[1]{\pagerefname~\pageref{#1}}
-\end{lcode}
-and can be used as 
-\begin{lcode}
-\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}.
-\end{lcode}
-which in this document prints as: 
-\begin{syntax}
-\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}. \\
-\end{syntax}
+%LTFSSCMP
+%\textmess{*** NFSS release 1 command ... found 
+%       *** Recovery not possible. Use ...}
 
-\begin{syntax}
-\cmd{\Pref}\marg{label} \cmd{\partrefname} \\
-\cmd{\Cref}\marg{label} \cmd{\chapterrefname} \\
-\cmd{\Sref}\marg{label} \cmd{\sectionrefname} \\
-\end{syntax}
+%LTFSSCMP
+%\textmess{*** NFSS release 1 command \cmd{\newmathalphabet} found
+%       *** Automatic recovery not possible}
 
-    Also provided are named references to labelled 
-Part (\cmd{\Pref}), 
-Chapter (\cmd{\Cref}) and 
-sectional (\cmd{\Sref}) divisions.
-These are all defined like
+\end{plainlist}
+
+\index{error!LaTeX?\ltx|)}
+\index{LaTeX?\ltx!error|)}
+
+
+\section{\ltx\ warnings}
+
+\index{warning!LaTeX?\ltx|(}
+\index{LaTeX?\ltx!warning|(}
+
+    Most warnings are given at the point in the document where
+a potential problem is discovered, while others are output
+after the document has been processed.
+
+For example, the following code
 \begin{lcode}
-\newcommand{\Sref}[1]{\sectionrefname\ref{#1}}
+... \ref{joe}... \cite{FRED96} ...
 \end{lcode}
-with no tie between the name and the \cmd{\ref}. 
-
-    In this document
+may produce warnings like
 \begin{lcode}
-`In \Cref{chap:misc} there is a section 
-(\Sref{sec:xrefthis}) about cross references.' 
+Latex Warning: Reference `joe' on page 12 undefined 
+               on input line 881.
+Latex Warning: Citation `FRED96' on page 12 undefined 
+               at lines 890--897.
 \end{lcode}
-is typeset as: 
-\begin{syntax}
-`In \Cref{chap:misc} there is a section 
-(\Sref{sec:xrefthis}) about cross references.' \\
-\end{syntax}
- 
-    It can be useful to refer to parts of a document by name rather than
-number, as in
+during the document processing, and then at the end there will also
+be the warning:
 \begin{lcode}
-The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
+LaTeX Warning: There were undefined references. 
 \end{lcode}
-The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
 
-    There are two packages, \Lpack{nameref}~\cite{NAMEREF} and 
-\Lpack{titleref}~\cite{TITLEREF},
- that let you refer to things by name instead of number.
+Some warning messages pinpoint where a problem might lie, as in the citation
+warning above, while others make no attempt to do so. In the alphabetical
+listing that follows I have not included such information, even if it is
+supplied.
 
-    Name references were added to the class as a consequence of adding
-a second optional argument to the sectioning commands. I found
-that this broke the \Lpack{nameref} package, and hence the
-\Lpack{hyperref} package as well, so they had to be fixed. The change 
-also broke Donald Arseneau's \Lpack{titleref} package, and it turned out
-that \Lpack{nameref} also clobbered \Lpack{titleref}. The class also
-provides titles, like \cmd{\poemtitle}, that are not recognised by
-either of the packages. From my viewpoint the most efficient
-thing to do was to enable the class itself to provide name 
-referencing.
+\begin{plainlist}
+%%%% AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
 
-\begin{syntax}
-\cmd{\label}\marg{key} \cmd{\ref}\marg{key} \cmd{\pageref}\marg{key} \\
-\cmd{\titleref}\marg{key} \\
-\cmd{\headnamereftrue} \cmd{\headnamereffalse} \\
-\end{syntax}
-The macro \cmd{\titleref} is an addition to the usual set of cross referencing
-commands. Instead of typesetting a number it typesets the title associated
-with the labelled number. This is, of course, only useful if there is an
-associated title, such as from a \cmd{\caption} or \cmd{\section} command.
-As a bad example:
-\begin{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc.       \label{sec:xref:item1}
-...
-\item Items in numbered lists, etc. \ldots \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section 
-\textit{\titleref{sec:xref}} lists other things.
-\end{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc.       \label{sec:xref:item1}
-\item Captions                       \label{sec:xref:item2}
-\item Legends
-\item Poem titles
-\item Items in numbered lists, etc.  \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section 
-\textit{\titleref{sec:xref}} lists other things.
+%LTOUTPUT
+%\item[] \textmess{Active ... character found while output routine is active.
+%         This may be a bug in a package you are using}
 
 
-    As the above example shows, you have to be a little careful in using
-\cmd{\titleref}.
-Generally speaking, \cmd{\titleref}\marg{key} produces the last named 
-thing before the \cmd{\label} that defines the \meta{key}. 
+%%%% BBBBBBBBBBBBBBBBBBBBBB
 
-    Chapters, and the lower level sectional divisions, may have three
-different title texts --- the main title, the title in the ToC, and a third
-in the page header. By default (\cmd{\headnamereffalse}) the ToC title
-is produced by \cmd{\titleref}. Following the declaration
-\cmd{\headnamereftrue} the text intended for page headers will be produced.
 
-\Note{} Specifically with the \Lclass{memoir} class, 
-do not put a \cmd{\label} command inside an
-argument to a \cmd{\chapter} or \cmd{\section} or \cmd{\caption}, etc.,
-command. Most likely it will either be ignored or referencing it will
-produce incorrect values. This restriction does not apply to the standard
-classes, but in any case I think it is good practice not to embed any 
-\cmd{\label} commands.
+%%%% CCCCCCCCCCCCCCCCCCCCCCC
 
-\begin{syntax}
-\cmd{\currenttitle} \\
-\end{syntax}
-    If you just want to refer to the current title you can do so with
-\cmd{\currenttitle}. This acts as though there had been a label associated
-with the title and then \cmd{\titleref} had been used to refer to that label.
-For example:
-\begin{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
-\end{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
+%LTBIBL
+\item[]\index{Citation ... on page ...} 
+  \textmess{Citation ... on page ... undefined}
 
+    The key in a \cmd{\cite} command was not defined by any \cmd{\bibitem}.
 
-\begin{syntax}
-\cmd{\theTitleReference}\marg{num}\marg{text} \\
-\end{syntax}
-Both \cmd{\titleref} and \cmd{\currenttitle} use the \cmd{\theTitleReference}
-to typeset the title. This is called with two arguments --- 
-the number, \meta{num}, and the text, \meta{text}, of the title. The
-default definition is:
-\begin{lcode}
-\newcommand{\theTitleReference}[2]{#2}
-\end{lcode}
-so that only the \meta{text} argument is printed. You could, for example,
-change the definition to
-\begin{lcode}
-\renewcommand{\theTitleReference}[2]{#1\space \textit{#2}}
-\end{lcode}
-to print the number followed by the title in italics. If you do this, only use
-\cmd{\titleref} for numbered titles, as a printed number for an 
-unnumbered title (a) makes no sense, and (b) will in any case be 
-incorrect.
+%LTBIBL
+\item[]\index{Citation ... undefined}
+   \textmess{Citation ... undefined}
 
-    The commands \cmd{\titleref}, \cmd{\theTitleReference} and 
-\cmd{\currenttitle} are direct equivalents of those in the \Lpack{titleref}
-package~\cite{TITLEREF}.
+    The key in a \cmd{\cite} command was not defined by any \cmd{\bibitem}.
 
-\begin{syntax}
-\cmd{\namerefon} \cmd{\namerefoff} \\
-\end{syntax}
-   Implementing name referencing has had an unfortunate side effect of
-turning some arguments into moving ones; the argument to the \cmd{\legend}
-command is one example. If you don't need name referencing you can turn
-it off by the \cmd{\namerefoff} declaration; the \cmd{\namerefon}
-declaration enables name referencing.
+%LTDEFNS
+%\item[] \textmess{Command ... has changed. Check if current package is valid} 
+%  (from \cmd{\CheckCommand})
 
+%LTFSSBAS
+\item[]\index{Command ... invalid ...}
+   \textmess{Command ... invalid in math mode}
 
+    The command is not permitted in math mode but was used there anyway.
+Remember that font size commands and \cmd{\boldmath} or \cmd{\unboldmath}
+cannot be used in math mode.
 
-\section{Words and phrases}
 
-    The class provides several macros that expand into English words or 
-phrases. To typeset in another language these need to be changed, or an
-author or publisher may want some changes made to the English versions. 
-The following lists the macros and their default values.
-\begin{itemize}
-\item[\cmd{\contentsname}]     \contentsname
-\item[\cmd{\listfigurename}]   \listfigurename
-\item[\cmd{\listtablename}]    \listtablename
-\item[\cmd{\abstractname}]     \abstractname
-\item[\cmd{\partname}]         \partname
-\item[\cmd{\chaptername}]      \chaptername
-\item[\cmd{\appendixname}]     \appendixname
-\item[\cmd{\appendixtocname}]  \appendixtocname
-\item[\cmd{\appendixpagename}] \appendixpagename
-\item[\cmd{\bibname}]          \bibname
-\item[\cmd{\indexname}]        \indexname
-\item[\cmd{\figurename}]       \figurename
-\item[\cmd{\tablename}]        \tablename
-\item[\cmd{\figurerefname}]    \figurerefname
-\item[\cmd{\tablerefname}]     \tablerefname
-\item[\cmd{\pagename}]         \pagename
-\item[\cmd{\pagerefname}]      \pagerefname
-\item[\cmd{\partrefname}]      \partrefname 
-     (defined as |\newcommand{\partrefname}{Part~}|)
-\item[\cmd{\chapterrefname}]    \chapterrefname 
-     (defined as |\newcommand{\chapterrefname}{Chapter~}|)
-\item[\cmd{\sectionrefname}]    \sectionrefname 
-     (defined as |\newcommand{\sectionrefname}{\S}|)
-\end{itemize}
-The above definitions are simple --- for example
-\begin{lcode}
-\newcommand{\partname}{Part}
-\end{lcode} 
-and so can be also changed simply.
+%LTFSSTRC
+%\item[] \textmess{Command \cmd{\tracingfonts} not provided. Use the 'tracefnt' 
+%         package. Command found: ...}
 
- The definitions of the macros for the names of numbers are more complex 
---- for example for the number 11 (eleven) 
-\begin{lcode}
-\newcommand*{\nNamexi}{\iflowertonumname e\else E\fi leven}
-\end{lcode}
-That is, each definition includes both a lowercase and an uppercase initial
-letter, so a bit more care has to be taken when changing these. For specifics
-read the documentation of the class code.
+%%%% EEEEEEEEEEEEEEEEEEEEEEEEEEEEEEEE
+
+%LTFSSDCL
+%\item[] \textmess{Encoding ... has changed to ... for symbol font ...
+%         in the math version ...}
+
+
+%%%% FFFFFFFFFFFFFFFFFFFFFFFFFFFF
+
+%LTCLASS
+%\item[] \textmess{File ... already exits on the system. Not generating it from this source}
+
+%LTFLOAT
+\item[]\index{Float too large ...}
+   \textmess{Float too large for page by ...}
+
+     A float (table or figure) is too tall to fit properly on a page by
+the given amount. It is put on a page by itself.
+
+
+%LTFSSTRC
+\item[]\index{Font shape ...}
+   \textmess{Font shape ... in size ... not available size ... substituted}
+
+    You asked for a font size that was not available. The message also 
+says what font is being used instead.
+
+%LTFSSBAS
+\item[]\index{Font shape ...}
+   \textmess{Font shape ... undefined using ... instead}
+
+    You asked for a font shape that was not available. The message also 
+says what font is being used instead.
+
+%%%% HHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH
+
+%LTOUTPUT
+\item[]\index{h float specifier ...}\index{"!h float specifier ...}
+   \textmess{h float specifier changed to ht} or 
+        \textmess{!h float specifier changed to !ht}
+
+    A float has an optional \texttt{h} or \texttt{!h} argument but
+as it wouldn't fit on the curent page it has been moved to the top
+pf the next page.
+
+
+%%%% IIIIIIIIIIIIIIIIIIIIIIIIII
+
+%LTFILES
+%\item[] \textmess{Inputting ... instead of obsolete ...}
+
+%%%% LLLLLLLLLLLLLLLLLLLLLLLLLLL
+
+%LTXREF
+\item[]\index{Label ... multiply defined}
+   \textmess{Label ... multiply defined}
+
+    Two \cmd{\label} or \cmd{\bibitem} commands have the same argument
+(at least during the previous \ltx\ run).
+
+%LTMISCEN
+\item[]\index{Label(s) may have changed ...}
+   \textmess{Label(s) may have changed. Rerun to get cross-references right}
+
+    This is only output at the end of the run.
+
+One of the numbers printed by \cmd{\cite}, \cmd{\ref}
+or \cmd{\pageref} commands might be incorrect because the correct values
+have changed since the preceding \ltx\ run.
+
+
+%%%% MMMMMMMMMMMMMMMMMMMMMMMMMMMMM
+
+%LTOUTPUT
+\item[]\index{Marginpar on page ...}
+   \textmess{Marginpar on page ... moved}
+
+    A \cmd{\marginpar} was moved down the page to avoid overwriting an earlier
+one. The result will not be aligned with the \cmd{\marginpar} call.
+
+%%%% NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNN
+
+%LTSECT
+\item[]\index{No author given?No \cs{author} given} 
+  \textmess{No \cmd{\author} given}
+
+    There is no \cmd{\author} command before calling \cmd{\maketitle}.
+
+%LTOUTPUT
+\item[]\index{No positions in optional float specifier ...}
+  \textmess{No positions in optional float specifier.
+         Default added (so using `tbp')}
+
+    You have used an empty optional argument to a float, for example: \\
+\verb?\begin{figure}[]? \\
+so it has used \\
+\verb?\begin{figure}[tbp]? \\
+instead.
+
+%%%% OOOOOOOOOOOOOOOOOOOOO
+
+%LTOUTPUT
+\item[]\index{Optional argument of twocolumn ...?Optional argument of \cs{twocolumn} ...}
+   \textmess{Optional argument of \cmd{\twocolumn} too tall on page ...}
 
-\section{Symbols}
+     The contents of the optional argument to \cmd{\twocolumn} was too
+long to fit on the page.
 
-    LaTeX lets you typeset an enormous variety of symbols.\index{symbol}
-The class adds
-nothing to the standard LaTeX capabilities in this respect.
-If you want to see what symbols are available then get a copy
-of Scott Pakin's 
-\textit{The Comprehensive LaTeX Symbol List}~\cite{SYMBOLS}.
-You may have to do a little experimentation to get what you want, though.
+%LTPICTUR
+\item[]\index{oval, circle, or line size unavailable?\cs{oval}, \cs{circle}, or \cs{line} size unavailable}
+   \textmess{\cmd{\oval}, \cmd{\circle}, or \cmd{\line} size unavailable}
 
-    For example, the \cmd{\texttrademark} command 
-produces the trademark\index{trademark} symbol\texttrademark,
-but the \cmd{\textregistered} command produces\textregistered.
-When I wanted to use the registered trademark\index{registered trademark}
- symbol it needed to be 
-typeset like a superscript
-instead of on the baseline. The \cmd{\textsuperscipt} macro typesets
-its argument like a superscript\index{superscript}, so using
-\begin{lcode}
-\textsuperscript{\textregistered}
-\end{lcode}
-gave the required result\textsuperscript{\textregistered}.
+    You have asked for too large (or too small) an oval or circle,
+ or too short a line, in a \Ie{picture}.
 
-\clearpage
+%%%% RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
 
-\makeatletter
-%% Bringhurst chapter style
-\makechapterstyle{bringhurst}{%
-  \renewcommand{\chapterheadstart}{}
-  \renewcommand{\printchaptername}{}
-  \renewcommand{\chapternamenum}{}
-  \renewcommand{\printchapternum}{}
-  \renewcommand{\afterchapternum}{}
-  \renewcommand{\printchaptertitle}[1]{%
-    \raggedright\Large\scshape\MakeLowercase{##1}}
-  \renewcommand{\afterchaptertitle}{%
-    \vskip\onelineskip \hrule\vskip\onelineskip}
-}
+%LTXREF
+\item[]\index{Reference ... on page ...}
+   \textmess{Reference ... on page ... undefined}
 
-\setsecheadstyle{\raggedright\scshape\MakeLowercase}
-  \setbeforesecskip{-\onelineskip}
-  \setaftersecskip{\onelineskip}
+    The argument of a \cmd{\ref} or \cmd{\pageref} has not been defined
+on the preceding run by a \cmd{\label} command.
 
-%%\setsubsecheadstyle{\renewcommmand\@hangfrom[1]{\noindent ##1}\raggedright\itshape}
-\setsubsecheadstyle{\sethangfrom{\noindent ##1}\raggedright\itshape}
-  \setbeforesubsecskip{-\onelineskip}
-  \setaftersubsecskip{\onelineskip}
+%%%% SSSSSSSSSSSSSSSSSSSSSS
 
-%% Bringhurst page style
-\makepagestyle{bringhurst}
-\makeevenfoot{bringhurst}{\thepage}{}{}
-\makeoddfoot{bringhurst}{}{}{\thepage}
-\setlength{\pwlayi}{\headsep} % \verb?\setlength{\pwlayi}{\headsep}? headsep=\printlength{\headsep}, pwlayi = \printlength{\pwlayi}.
-\addtolength{\pwlayi}{\topskip} % \verb?\addtolength{\pwlayi}{\topskip}? topskip=\printlength{\topskip}, pwlayi=\printlength{\pwlayi}.
-\addtolength{\pwlayi}{7.3\onelineskip} % \verb?\addtolength{\pwlayi}{7.3\onelineskip}? onelineskip=\printlength{\onelineskip}, pwlayi=\printlength{\pwlayi}.
-\newcommand{\bringpicr}[1]{%
-  \setlength{\unitlength}{1pt}
-  \begin{picture}(0,0)
-    \put(\strip@pt\marginparsep, -\strip@pt\pwlayi){%
-      \begin{minipage}[t]{\marginparwidth}
-         \raggedright\itshape #1
-      \end{minipage}}
-  \end{picture}
-}
+%LTFINAL
+\item[]\index{Size substitutions ....}
+     \textmess{Size substitutions with differences up to ... have occured.
+         Please check the transcript file carefully and redo the
+         format generation if necessary!}
 
-\setlength{\pwlayii}{\marginparsep} % \verb?\setlength{\pwlayii}{\marginparsep}? marginparsep=\printlength{\marginparsep}, pwlayii=\printlength{\pwlayii}.
-\addtolength{\pwlayii}{\marginparwidth} % \verb?\addtolength{\pwlayii}{\marginparwidth}?  marginparwidth=\printlength{\marginparwidth}, pwlayii=\printlength{\pwlayii}.
-\newcommand{\bringpicl}[1]{%
-  \setlength{\unitlength}{1pt}
-  \begin{picture}(0,0)
-    \put(-\strip@pt\pwlayii, -\strip@pt\pwlayi){%
-      \begin{minipage}[t]{\marginparwidth}
-        \raggedleft\itshape #1
-      \end{minipage}}
-  \end{picture}
-}
+    This is only output at the end of the run.
 
-\makepsmarks{bringhurst}{%
-  \let\@mkboth\markboth
-  \def\chaptermark##1{\markboth{##1}{##1}}
-  \def\sectionmark##1{\markright{##1}}
-}
-\makeevenhead{bringhurst}{\bringpicl{\rightmark}}{}{}
-\makeoddhead{bringhurst}{}{}{\bringpicr{\leftmark}}
+    Some fonts have had to be used as substitutes for requested ones and
+they are a different size.
 
+%LTFSSBAS
+\item[]\index{Some shapes ...}
+   \textmess{Some shapes were not available, defaults substituted}
 
-\renewcommand{\cftchapterfont}{\normalfont}
-\renewcommand{\cftchapterpagefont}{\normalfont}
-\renewcommand{\cftchapterpresnum}{\bfseries}
-\renewcommand{\cftchapterleader}{}
-\renewcommand{\cftchapterafterpnum}{\cftparfillskip}
-%%%\settocdepth{chapter}
+    This is only output at the end of the run.
 
-\makeatother
+    At least one font had to be substituted.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\cleardoublepage
-\pagestyle{bringhurst}
-\chapterstyle{bringhurst}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{An example design} \label{chap:bringhurst}
+%%%% TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
 
-%unitlength=\printlength{\unitlength}, \\
-%pwlayi=\printlength{\pwlayi}, \\
-%pwlayii=\printlength{\pwlayii}.
+%LTOUTPUT
+\item[]\index{Text page ... contains only floats}
+   \textmess{Text page ... contains only floats}
 
-\section{Introduction}
+    The page should have included some textual material but there was
+no room for it.
 
-    In this chapter I will work through a reasonably complete design
-exercise. The chapter is typeset using the results of the exercise.
+%LTXREF
+\item[]\index{There were multiply defined labels}
+   \textmess{There were multiply defined labels}
 
-    Rather than trying to invent something myself I am taking the design
-of Bringhurst's 
-\textit{The Elements of Typographic Style}~\cite{BRINGHURST92}
-as the basis of the
-exercise. This is sufficiently different from the normal LaTeX appearance
-to demonstrate most of the class capabilities, and also it is a design by
-a leading proponent of good typography.
+    This is only output at the end of the run.
 
-    As much as possible, this chapter is typeset according to the results
-of the exercise to provide both a coding and a graphic example.
+    Two or more \cmd{\label} or \cmd{\cite} commands had the same argument.
 
-\section{Design requirements}
+%LTXREF
+\item[]\index{There were undefined references} 
+  \textmess{There were undefined references}
 
-    The \textit{Elements of Typographic Style} is typeset using Minion as the
-text font and Syntax (a sans font) for the captions. The page layout has been
- shown diagramatically in \fref{fb:1} on \pref{fb:1}, but further details need
-to be described for those not fortunate enough to have a copy of their own.
+    This is only output at the end of the run.
 
-    The trimmed size of a page is 23 by 13.3cm. The foredge is 3.1cm and the
-top margin\index{margin} is 1.9cm.
+    There was at least one \cmd{\ref} or \cmd{\pageref} or \cmd{\cite} 
+whose argument had not been defined
+on the preceding run by a \cmd{\label} or \cmd{\biblabel} command.
 
-    As already noted, the font for the main text is Minion, with 12pt leading
-on a 21pc measure with 42 lines per page. For the purposes of this exercise
-I will assume that Minion can be replaced by Computer Modern Roman at 10pt
-(like this manual). The captions to figures\index{figure} and tables\index{table} are unnamed and 
-unnumbered and typeset in Syntax. The captions give the appearance of being
-in a smaller font size than the main text, which is often the case. I'll
-assume that the |\small| |\sfseries| CMR font will reasonably do for the
-captions. 
+%%%% UUUUUUUUUUUUUUUUUUUUUUUUUUUU
 
-    The footer\index{footer} is the same width as the typeblock\index{typeblock} and the folio\index{folio} is placed 
-in the footer\index{footer} at the foredge. There are two blank lines between the bottom
-of the typeblock\index{typeblock} and the folio\index{folio}.
+%LTFILES
+\item[]\index{Unused global option(s) ...} 
+  \textmess{Unused global option(s) [...]}
 
-    There is no header\index{header} in the usually accepted sense of the term but the
-chapter title is put on recto pages and section titles are on verso pages.
-The running titles are placed in the foredge margin\index{margin} level with the seventh
-line of the text in the typeblock\index{typeblock}. The recto headers\index{header} are typeset raggedright
-and the verso ones raggedleft.
+    The listed options were not known to the document class or any packages
+you used.
 
-Bringhurst also uses many marginal\index{marginalia} notes,
-their maximum width being about 51pt, and typeset raggedright in a smaller
-version of the textfont.
+%%%% WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
 
-    Chapter titles are in small caps, lowercase, in a larger font than for 
-the main text, and a rule is placed between the title and the typeblock\index{typeblock}.
-The total vertical space used by a chapter title is three text lines.
-Chapters are not numbered in the text but are in the Table of Contents.
+%LTCLASS
+%\item[] \textmess{Writing text ... before \cs{end}\{...\} as last line of ...}
 
-    Section titles are again in small caps, lowercase, in the same size as the
-text font. The titles are numbered, with both the chapter and section number.
 
-    A subsection title, which is the lowest subdivision in the book, is in
-the italic form of the textfont and is typeset as a numbered non-indented
-paragraph\index{paragraph}. These are usually multiline as Bringhurst sometimes uses them
-like an enumerated list, so on occasion there is a 
-subsection title with no following text.
+%%%% YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
 
-    Only chapter titles are put into the \toc, and these are set raggedright 
-with the page numbers immediately after the titles. There is no \lof{} or
-\lot.
+%LTCLASS
+%\item[] \textmess{You have requested class/package ... but the class/package provides ...}
 
-    Note that unlike the normal LaTeX use of fonts, essentially only three
-sizes of fonts are used --- the textfont size, one a bit larger for the
-chapter titles, and one a bit smaller for marginal\index{marginalia} notes and captions.
-Also, bold fonts are not used except on special occasions, such as when he
-is comparing font families and uses large bold
-versions to make the differences easier to see.
+%LTCLASS
+\item[]\index{You have requested release ...}
+   \textmess{You have requested release ... of LaTeX but only release ... is available}
 
-\section{Specifying the page and typeblock}
+    You are using a class or package that requires a later release of \ltx\
+than the one you are using. You should get the latest release.
 
-    The first and second things to do are to specify the sizes of the page
-after trimmming and the typeblock\index{typeblock}. The trimmed size is easy as we have
-the dimensions.
-\begin{lcode}
-\settrimmedsize{23cm}{13.3cm}{*}
-\end{lcode}
-However, there is a trick to setting the height of the typeblock\index{typeblock} in terms
-of lines of text. The
-height calculation ensures that an integral number of lines can fit in
-the typeblock\index{typeblock}, and as well as the specified height for the block some more
-height is added so that the final height is approximately measured from 
-the base of the bottom line of text to the top of the first line of text.
-This is a complicated way of saying that if you want $N$ lines of text, only
-ask for $N-1$. We want 42 lines so we give the height of the typeblock\index{typeblock}
-as 41 times the distance between two normal text lines 
-(i.e., times \lnc{\onelineskip})
-\begin{lcode}
-\settypeblocksize{41\onelineskip}{21pc}{*}
-\end{lcode}
+%LTCLASS
+\item[]\index{You have requested version ...}
+   \textmess{You have requested version ... of class/package ... but only version
+      ... is available}
 
-    To make life easier, we'll do no trimming of the top of the stock\index{stock}
-\begin{lcode}
-\setlength{\trimtop}{0pt}
-\end{lcode}
-but will trim the foredge. The next set of calculations first sets the 
-value of the \lnc{\trimedge} to be the \lnc{\stockwidth}; subtracting the
-trimmed \lnc{\paperwidth} then results in \lnc{\trimedge} being the amount
-to trim off the foredge.
-\begin{lcode}
-\setlength{\trimedge}{\stockwidth}
-\addtolength{\trimedge}{-\paperwidth}
-\end{lcode}
+    You (or the class or one of the packages you are using) needs a later 
+release of a class or package than the one you are using. You should get
+the latest release.
 
-    The sizes of the trimmed page and the typeblock\index{typeblock} have now been specified.
-The typeblock\index{typeblock} is now positioned on the page. The sideways positioning is
-easy as we know the foredge margin\index{margin} to be 3.1cm.
-\begin{lcode}
-\setlrmargins{*}{3.1cm}{*}
-\end{lcode}
-The top margin\index{margin} is specified as 1.9cm, which is very close to four and a half
-lines of text. Just in case someone might want to use a different font size,
-I'll specify the top margin\index{margin} so that it is dependent on the font size. The
-\lnc{\footskip} can be specified now as well (it doesn't particularly matter
-what we do about the header-related lengths as there isn't anything above
-the typeblock\index{typeblock}).
-\begin{lcode}
-\setulmargins{4.5\onelineskip}{*}{*}
-\setheadfoot{\onelineskip}{3\onelineskip}
-\setheaderspaces{\onelineskip}{*}{*}
-\end{lcode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-    Lastly define the dimensions for any marginal\index{marginalia} notes.
-\begin{lcode}
-\setmarginnotes{17pt}{51pt}{\onelineskip}
-\end{lcode}
+%%LTCLASS
+%\textmess{... has been converted to Blank ...3e}
 
-    If this was for real, the page layout would have to be checked and
-implemented.
-\begin{lcode}
-\checkandfixthelayout
-\end{lcode}
 
-    It is possible to implement this layout just for this chapter but
-I'm not going to tell you either how to do it, or demonstrate it. Except
-under exceptional circumstances it is not good to make such drastic changes
-to the page layout in the middle of a document. However, the picture on
-\pref{fig:bplayout} illustrates
-how this layout would look on US letterpaper\index{paper!size!letterpaper} stock\index{stock}. Looking at the illustration
-suggests that the layout would look rather odd unless the stock\index{stock} was trimmed down
-to the page size --- another reason for not switching the layout here.
+%%LTFSSCMP
+%\textmess{*** NFSS release 1 command ... found 
+%         *** Update by using release 2 command ...}
 
-\begin{figure}
-\captiontitlefont{\small\sffamily}
-\captionstyle{\centerlastline}
-\setstocksize{11in}{8.5in}
-\settrimmedsize{23cm}{13.3cm}{*}
-\settypeblocksize{41\onelineskip}{21pc}{*}
-\setlength{\trimtop}{0pt}
-\setlength{\trimedge}{\stockwidth}
-\addtolength{\trimedge}{-\paperwidth}
-\setlrmargins{*}{3.1cm}{*}
-\setulmargins{4.5\onelineskip}{*}{*}
-\setheadfoot{\onelineskip}{3\onelineskip}
-\setheaderspaces{\onelineskip}{*}{*}
-\setmarginnotes{17pt}{51pt}{\onelineskip}
-\checkandfixthelayout
-\currentstock
-\oddpagelayouttrue
-\twocolumnlayoutfalse
-\drawmarginparstrue
-\drawparametersfalse
-\drawstock
-\legend{An illustration of Bringhurst's page layout style when printed
-on US letter paper stock. Also shown are the values used for the
-page layout parameters for this design.} \label{fig:bplayout}
-\end{figure}
 
-\section{Specifying the sectional titling styles}
+\end{plainlist}
 
-\subsection{The chapter style}
+\index{LaTeX?\ltx!warning|)}
+\index{warning!LaTeX?\ltx|)}
 
-    Recapping, 
-    chapter titles are in small caps, lowercase, in a larger font than for 
-the main text, and a rule is placed between the title and the typeblock\index{typeblock}.
-The total vertical space used by a chapter title is three text lines.
-Chapters are not numbered in the text but are in the Table of Contents.
-Titles in the \toc{} are in mixed case.
+\section{Class errors}
 
-    The definition of the chapterstyle is remarkably simple, as shown below.
+%%\index{memoir class!error|(}
+\Iclasssub{memoir}{error|(}
+\index{error!memoir class|(}
+
+    The class errors introduce themselves differently from those
+that \ltx\ finds. Instead of starting with \\
+\verb?! LaTeX Error:?  \\
+the class errors start with \\
+\verb?! Class memoir Error:? \\
+After that, it is indistinguishable from a \ltx\ error.
+For example, if you ever happened to input the
+next line as line 954 in your document you would get the error message
+that follows \\
+\verb?\sidecapmargin{either}? 
+\begin{verbatim}
+! Class memoir Error: Unrecognized argument for \sidecapmargin.
+
+See the memoir class documentation for explanation.
+Type H <return> for immediate help.
+ ...
+
+l.954 \sidecapmargin{either}
+?
+\end{verbatim}
+If you then typed \texttt{H} (or \texttt{h}) in response you would 
+get the following helpful message:
 \begin{lcode}
-%% Bringhurst chapter style
-\makechapterstyle{bringhurst}{%
-  \renewcommand{\chapterheadstart}{}
-  \renewcommand{\printchaptername}{}
-  \renewcommand{\chapternamenum}{}
-  \renewcommand{\printchapternum}{}
-  \renewcommand{\afterchapternum}{}
-  \renewcommand{\printchaptertitle}[1]{%
-    \raggedright\Large\scshape\MakeLowercase{##1}}
-  \renewcommand{\afterchaptertitle}{%
-    \vskip\onelineskip \hrule\vskip\onelineskip}
-}
+Try typing <return> to proceed.
+If that doesn't work, type X <return> to quit.
+?
 \end{lcode}
+The majority of the help messages follow this formula, so I have
+not noted them in the alphabetical listing below.
 
-    Most of the specification consists of nulling the majority of the normal
-LaTeX specification, and modifying just two elements. 
 
-The chapter title (via \cmd{\printchaptertitle}) 
-is typeset raggedright using the \cmd{\Large} smallcaps fonts. The 
-\cmd{\MakeLowercase} macro is used to ensure that the entire title is 
-lowercase before typesetting it. Titles are input in mixed case.
+%%%%%\subsection{Errors}
 
-    After the title is typeset the \cmd{\afterchaptertitle} macro
-specifies that one line is skipped, a horizontal rule
-is drawn and then another line is skipped.
+\begin{plainlist}
 
-\subsection{Lower level divisions}
+\item[]\index{... is negative}
+    \textmess{... is negative} 
 
-    Section titles are in small caps, lowercase, in the same size as the
-text font. The titles are numbered, with both the chapter and section number.
+    The value is negative. It should be at least zero.
 
-The specification is:
-\begin{lcode}
-\setsecheadstyle{\raggedright\scshape\MakeLowercase}
-  \setbeforesecskip{-\onelineskip}
-  \setaftersecskip{\onelineskip}
-\end{lcode}
+\item[]\index{... is not a counter}
+    \textmess{... is not a counter}
 
-    The macro \cmd{\setsecheadstyle} lowercases the title and typesets it
-small caps. 
+    An argument that should be the name of a counter is not.
 
-The default skips before and after titles are rubber lengths but this does
-not bode well if we are trying to line something up with a particular line
-of text --- the presence of section titles may make slight vertical 
-adjustments to the text lines because of the flexible spacing. So, we have
-to try and have fixed spacings.
-A single blank line is used before (\cmd{\setbeforesecskip)}
-and after (\cmd{\setaftersecskip}) the title text. 
+\item[]\index{... is zero or negative}
+    \textmess{... is zero or negative}
 
-    A subsection title, which is the lowest subdivision in the book, is in
-the italic form of the textfont and is typeset as a numbered non-indented
-paragraph\index{paragraph}. The code for this is below.
+    The value must be greater than zero.
 
-\begin{lcode}
-\setsubsecheadstyle{\sethangfrom{\noindent ##1}\raggedright\itshape}
-  \setbeforesubsecskip{-\onelineskip}
-  \setaftersubsecskip{\onelineskip}
-\end{lcode}
 
-    As in the redefinition of the \cmd{\section} style, there are fixed
-spaces before and after the title text. The title is typeset 
-(\cmd{\setsubsecheadstyle}) raggedright in a normal sized italic font.
-The macro \cmd{\sethangfrom} is used to to redefine the internal
-\cmd{\@hangfrom} macro so that the title and number are typeset as a block 
-paragraph\index{paragraph!block} instead of the default hanging 
-paragraph\index{paragraph!hanging} style. Note the use of
-the double |##| mark for denoting the position of the argument to 
-\cmd{\@hangfrom}.
+\item[]\index{>\lb...\rb at wrong position ...}
+   \textmess{>\{...\} at wrong position: token ignored}
+
+    A \verb?>{...}? in the argument to an \Ie{array} or \Ie{tabular}
+is incorrectly placed and is being ignored.
+
+\item[]\index{<\lb...\rb at wrong position ...}
+   \textmess{<\{...\} at wrong position: changed to !\{...\}} 
+
+    A \verb?<{...}? in the argument to an \Ie{array} or \Ie{tabular}
+is incorrectly placed. It has been changed to \verb?!{...}? instead.
+
+\item[]\index{A pattern has not been specified}
+   \textmess{A pattern has not been specified}% (\cmd{\getstar@vsindent}
 
-\section{Specifying the pagestyle}
+   You are trying to use the \Ie{patverse} or \Ie{patverse*} environment
+without having first defined a pattern.
 
-    The pagestyle is perhaps the most interesting aspect of the exercise.
-Instead of the chapter and section titles being put at the top of the
-pages they are put in the margin\index{margin} starting about seven lines below the
-top of the typeblock\index{typeblock}. The folios\index{folio} are put at the bottom of the page 
-aligned with the outside of the typeblock\index{typeblock}.
+\item[]\index{Argument to \cs{setsidecappos} is not ...}
+  \textmess{Argument to \cmd{\setsidecappos} is not t or c or b}
 
-    As the folios\index{folio} are easy, we'll deal with those first.
-\begin{lcode}
-%% Bringhurst page style
-\makepagestyle{bringhurst}
-\makeevenfoot{bringhurst}{\thepage}{}{}
-\makeoddfoot{bringhurst}{}{}{\thepage}
-\end{lcode}
+    The argument will be assumed to be \texttt{c}.
 
-    Putting text at a fixed point on a page is typically done by
-first putting the text into a zero width picture (which as far as LaTeX
-is concerned takes up zero space) and then placing the picture at the
-required point on the page. This can be done by hanging it from the
-header\index{header}.
+\item[]\index{Argument to \cs{overridesidecapmargin} neither  ...}
+  \textmess{Argument to \cmd{\overridesidecapmargin} neither left nor right}
 
-    We might as well treat the titles so that they will align with any 
-marginal\index{marginalia} notes, which are \lnc{\marginparsep} (17pt) into the margin\index{margin} 
-and \lnc{\marginparwidth} (51pt) wide. Earlier in the manual I defined
-two lengths called |\pwlayi| and |\pwlayii| which are no longer used.
-I will use these as scratch lengths in 
-performing some of the necessary calculations.
+    The argument to \cmd{\overridesidecapmargin} must be either
+\texttt{left} or \texttt{right}. The attempted override will be ignored.
 
-    For the recto page headers\index{header} the picture will be the \meta{right} part of
-the header\index{header} and for the verso pages the picture will be the \meta{left}
-part of the header\index{header}, all other parts being empty. 
 
-    For the picture on the \meta{right} the text must be 17pt to
-the right of the origin, and some distance below the origin.
-From some experiments, this distance turns out to be the \lnc{\headsep}
-plus the \cmd{\topskip} plus 7.3 lines, which is calculated as follows:
-\begin{lcode}
-\setlength{\pwlayi}{\headsep}
-\addtolength{\pwlayi}{\topskip}
-\addtolength{\pwlayi}{7.3\onelineskip}
-\end{lcode}
+\item[]\index{Cannot change a macro that has delimited arguments}
+  \textmess{Cannot change a macro that has delimited arguments}
 
-    There is a nifty internal LaTeX macro called \cmd{\strip@pt} which you
-probably haven't heard about, and I have only recently come across. What it
-does is strip the `pt' from a following length, reducing it to a plain 
-real number. Remembering that the default \lnc{\unitlength} is 1pt we can
-do the following, while making sure that the current \lnc{\unitlength}
-\emph{is} 1pt:
-\begin{lcode}
-\makeatletter
-\newcommand{\bringpicr}[1]{%
-  \setlength{\unitlength}{1pt}
-  \begin{picture}(0,0)
-    \put(\strip@pt\marginparsep, -\strip@pt\pwlayi){%
-      \begin{minipage}[t]{\marginparwidth}
-        \raggedright\itshape #1
-      \end{minipage}}
-  \end{picture}
-}
-\makeatother
-\end{lcode}
-The new macro \cmd{\bringpicr}\marg{text} puts \meta{text} 
-into a \Ie{minipage} of width \lnc{\marginparwidth}, 
-typeset raggedright in an italic font, and puts the top
-left of the minipage at the position (|\marginparsep|, -|\pwlayi|) 
-in a zero width picture.
+   You are using \cmd{patchcmd} on a macro that has delimted arguments.
 
-    We need a different picture for the \meta{left} as the text needs to be
-typeset raggedleft with the right of the text 17pt from the left of the
-typeblock\index{typeblock}. I will use the length |\pwlayii| 
-to calculate the sum of \lnc{\marginparsep}
-and \lnc{\marginparwidth}. Hence:
-\begin{lcode}
-\makeatletter
-\setlength{\pwlayii}{\marginparsep}
-\addtolength{\pwlayii}{\marginparwidth}
-\newcommand{\bringpicl}[1]{%
-  \setlength{\unitlength}{1pt}
-  \begin{picture}(0,0)
-    \put(-\strip@pt\pwlayii, -\strip@pt\pwlayi){%
-      \begin{minipage}[t]{\marginparwidth}
-        \raggedleft\itshape #1
-      \end{minipage}}
-  \end{picture}
-}
-\makeatother
-\end{lcode}
-The new macro \cmd{\bringpicl}\marg{text} puts \meta{text} 
-into a \Ie{minipage} of width \lnc{\marginparwidth}, 
-typeset raggedleft in an italic font, and puts the top
-left of the minipage at the position 
-(-|(\marginparsep+\marginparwidth)|, -|\pwlayi|) 
-in a zero width picture.
+\item[]\index{Empty preamble: `l' used} 
+  \textmess{Empty preamble: `l' used} % (array/tabular)
 
+    The argument to an \Ie{array} or \Ie{tabular} is empty. The
+specification \verb?{l}? is being used instead.
 
-    Now we can proceed with the remainder of the pagestyle specification.
-The next bit puts the chapter and section titles into the |\...mark| macros.
-\begin{lcode}
-\makeatletter
-\makepsmarks{bringhurst}{%
-  \let\@mkboth\markboth
-  \def\chaptermark##1{\markboth{##1}{##1}}
-  \def\sectionmark##1{\markright{##1}}
-}
-\makeatother
-\end{lcode}
+\item[]\index{Font command ... is not supported}
+   \textmess{Font command ... is not supported} 
 
-    Finally, specify the evenhead using \cmd{\bringpicl} with the section
-title as its argument, and the oddhead using \cmd{\bringpicr} with the
-chapter title as its argument.
-\begin{lcode}
-\makeevenhead{bringhurst}{\bringpicl{\rightmark}}{}{}
-\makeoddhead{bringhurst}{}{}{\bringpicr{\leftmark}}
-\end{lcode}
+    You have tried to use a deprecated font command. Either replace
+it with the current font command or declaration or use 
+the \Lopt{oldfontcommands} class option.
 
+\item[]\index{footskip is too large ...?\cs{footskip} is too large ...}
+   \textmess{\lnc{\footskip} is too large for \lnc{\lowermargin} by ...}
 
-\section{Captions and the \prtoc}
+    The \lnc{\footskip} is too large for the \lnc{\lowermargin}. Either
+increase the \lnc{\lowermargin} or decrease the \lnc{\footskip}.
 
-    The captions to figures\index{figure} and tables\index{table} are set in a small sans font and
-are neither named nor numbered, and there is no \lof{} or \lot.
-Setting the caption titles in the desired font is simple:
-\begin{lcode}
-\captiontitlefont{\small\sffamily}
-\end{lcode}
 
-    There are two options regarding table\index{table} and figure\index{figure} captioning: either
-use the \cmd{\legend} command (which produces an anonymous unnumbered title)
-instead of the \cmd{\caption} command, or
-use the \cmd{\caption} command with a modified definition. Just in case
-the design might change at a later date to required numbered captions, 
-it's probably best to use 
-a modified version of \cmd{\caption}. In this case this is simple, just give
-the \cmd{\caption} command the same definition as the \cmd{\legend} command.
-\begin{lcode}
-\let\caption\legend
-\end{lcode}
+\item[]\index{headheight and/or headsep are too large ...?\cs{headheight} and/or \cs{headsep} are too large ...}
+   \textmess{\lnc{\headheight} and/or \lnc{\headsep} are too large for
+        \lnc{\uppermargin} by ...}
 
+        The sum of the \lnc{\headheight} and the \lnc{\headsep} is
+  larger than the \lnc{\uppermargin}. Either increase the \lnc{\uppermargin}
+  or reduce the others.
 
-    An aside: I initially used the default caption style (block paragraph) for
-the diagram on \pref{fig:bplayout}, but this looked unbalanced so now it
-has the last line centered. As a float\index{float} environment, like any other environment,
-forms a group, you can make local changes within the float\index{float}. I actually did it
-like this:
-\begin{lcode}
-\begin{figure}
-\captiontitlefont{\small\sffamily}
-\captionstyle{\centerlastline}
-...
-\legend{...} \label{...}
-\end{figure} 
-\end{lcode}
-For fine typesetting you may wish to change the style of particular captions.
-The default style for a single line caption works well, but for a caption with
-two or three lines either the centering or centerlastline style might look
-better. A very long caption is again probably best done in a block paragraph style.
 
-    Only chapter titles are included in the \toc. To specify this we
-use the \cmd{\settocdepth} command.
-\begin{lcode}
-\settocdepth{chapter}
-\end{lcode}
+\item[]\index{Illegal pream-token ...}
+    \textmess{Illegal pream-token (...): `c' used}
 
-    The \toc{} is typeset raggedright with no leaders and the page numbers 
-coming immediately after the chapter title. This is specified via:
-\begin{lcode}
-\renewcommand{\cftchapterfont}{\normalfont}
-\renewcommand{\cftchapterpagefont}{\normalfont}
-\renewcommand{\cftchapterpresnum}{\bfseries}
-\renewcommand{\cftchapterleader}{}
-\renewcommand{\cftchapterafterpnum}{\cftparfillskip}
-\end{lcode}
+    An illegal character is used in the argument to an \Ie{array}
+or \Ie{tabular}. The `c' specifier is being used instead 
+(which centers the column).
 
-\section{Preamble or package?}
 
+\item[]\index{Index ... outside limits ...} 
+    \textmess{Index ... outside limits for array ...} % (\cmd{\checkarrayindex}
 
-    When making changes to the document style, or just defining a new
-macro or two, there is the question of where to put the changes --- in
-the preamble\index{preamble} of the particular document or into a separate package\index{package}?
+    Trying to access an index for the array data structure that is not between
+the low and high indices.
 
-    If the same changes/macros are likely to be used in more than one
-document then I suggest that they be put into a package. 
-If just for the single document then the choice remains open.
 
-    I have presented the code in this chapter as though it would be  put
-into the preamble\index{preamble}, hence the use of \cmd{\makeatletter} and 
-\cmd{\makeatother} to surround macros that include the |@| character. The
-code could just as easily be put into a package\index{package} called, say, 
-\Lpack{bringhurst}. That is, by putting all the code, except for the
-\cmd{\makeatletter} and \cmd{\makeatother} commands, into a file called
-\file{bringhurst.sty}. It is a good idea also to end the code in the file
-with \cmd{\endinput}; LaTeX stops reading the file at that point and 
-will ignore any possible garbage after \cmd{\endinput}.
+\item[]\index{Limits for array ... }
+    \textmess{Limits for array ... are in reverse order} 
 
-    You then use the \Lpack{bringhurst} package just like any other by
-putting
-\begin{lcode}
-\usepackage{bringhurst}
-\end{lcode}
-in your document's preamble\index{preamble}.
+    The low index is not less than the high index in \cmd{\newarray}.
 
-\appendix
-\appendixpage*
 
-\chapterstyle{normal}
-\chapterstyle{section}
+\item[]\index{Missing arg: token ignored} 
+    \textmess{Missing arg: token ignored} % (array/tabular)
 
-\chapter{Packages and macros}
-%%%%\pagestyle{ruled}
-This chapter is typeset with the \cstyle{section} chapterstyle, otherwise
-it uses the layout defined in \Cref{chap:bringhurst}.
+    The argument to a column specifier for a \Ie{array} or \Ie{tabular}
+is missing.
 
-\section{Introduction}
 
-    The \Lclass{memoir} class does not provide for everything that you
-have seen in the manual. I have used some packages that you are very likely
-to have in your LaTeX distribution, and have supplemented these with some
-additional macros, some of which I will show you.
 
-\section{Packages}
+\item[]\index{No array called ...}
+    \textmess{No array called ...} % (\cmd{\checkarrayindex}
 
-    The packages that I have used that you are likely to have, and if
-you do  not have them please consider getting them, are:
-\begin{itemize}
-\item \Lpack{url}~\cite{URL} is for typesetting URL's without worrying
-  about special characters or line breaking.
-\item \Lpack{fixltx2e}~\cite{FIXLTX2E} eliminates some infelicities
-      of the original LaTeX kernel. In particular it maintains the order
-      of floats\index{float} on a twocolumn\index{column!double} page and ensures the correct marking
-      on a twocolumn\index{column!double} page.
-\item \Lpack{alltt}~\cite{ALLTT} is a basic package which provides a 
-      verbatim-like environment but |\|, |{|, and |}| have their
-      usual meanings (i.e., LaTeX commands are not disabled).
-\item \Lpack{graphicx}~\cite{GRAPHICX} is a required package for
-      performing various kinds of graphical functions. 
-\end{itemize}
+    You have tried to access an unknown array data structure.
 
-    The package that I used and you most likely do not have is 
-\Lpack{layouts}~\cite{LAYOUTS}. I used it for all the layout diagrams. 
-For example, \fref{fig:displaysechead} and \fref{fig:runsechead} 
-were drawn simply by:
-\begin{lcode}
-\begin{figure}
-\centering
-\setlayoutscale{1}
-\drawparameterstrue
-\drawheading{}
-\caption{Displayed sectional headings} \label{fig:displaysechead}
-\end{figure}
 
-\begin{figure}
-\centering
-\setlayoutscale{1}
-\drawparameterstrue
-\runinheadtrue
-\drawheading{}
-\caption{Runin sectional headings} \label{fig:runsechead}
-\end{figure}
-\end{lcode}
-The package also lets you try experimenting with different layout 
-parameters and draw diagrams showing what the results would be in a document.
+\item[]\index{Not defined: ...}
+  \textmess{Not defined: ...}
 
-    The version of \Lpack{layouts} used for this manual is 
-v2.4 dated 2001/04/30. Earlier versions will fail when attempting
-to draw some figures 
-( e.g., to draw \fref{fig:oddstock}).
+    You are using \cmd{\patchcmd} on a macro that is not defined.
 
-\section{Macros}
+\item[]\index{Not redefinable: ...}
+  \textmess{Not redefinable: ...}
 
-    The preamble\index{preamble} of the manual contains many macro definitions, probably
-more than most documents would because:
-\begin{itemize}
-\item I am having to typeset many LaTeX commands, which require
-      some sort of special processing;
-\item I have tried to minimize the number of external packages needed
-      to LaTeX this manual satisfactorily, and so have copied various
-      macros from elsewhere;
-\item I wanted to do some automatic indexing\index{index};
-\item I wanted to set off the syntax specifications and the code examples
-      from the main text.
-\end{itemize}
-To get the whole glory you will have to read the preamble\index{preamble}, but I show a
-few of the macros below as they may be of more general interest.
+    You are using \cmd{\patchcmd} on a macro that it is unable to
+modify.
 
-\begin{syntax}
-\cmd{\pstyle}\marg{style} \\
-\end{syntax}
-The command \cmd{\pstyle} prints its argument in the slanted 
-font used for pagestyles
-and also makes a pagestyle entry in the index\index{index}. Its definition is
-\begin{lcode}
-\newcommand{\pstyle}[1]{\textsl{#1}\index{#1pages@\textsl{#1} (pagestyle)}}
-\end{lcode}
-The first part prints the argument in the text and the second adds an
-entry to the \file{.idx} file. The fragment |#1pages| is what 
-the \textsc{makeindex} program will use for sorting entries, and the fragment following the |@| character is what will be put into the index\index{index}.
 
-\begin{syntax}
-\cmd{\cstyle}\marg{style} \\
-\end{syntax}
-The command \cmd{\cstyle} prints its argument in the slanted 
-font used for chapterstyles 
-and also makes a chapterstyle entry in the index\index{index}. Its definition is
-\begin{lcode}
-\newcommand{\cstyle}[1]{\textsl{#1}\index{#1chaps@\textsl{#1} (chapterstyle)}}
-\end{lcode}
-which is almost identical to \cmd{\pstyle}. 
 
-    There is both a \cstyle{companion} chapterstyle and a \pstyle{companion}
-pagestyle. The strings used for sorting the index\index{index} entries for these are
-\texttt{companionchaps} and \texttt{companionpages} respectively, so 
-the chapterstyle will come before the pagestyle in the index\index{index}. The reason for distinguishing between the string used for sorting and the actual entry is
-partly to distinguish between different kinds of entries for a single name
-and partly to avoid any formatting commands messing up the sorted order.
+\item[]\index{Only one column-spec. allowed}
+    \textmess{Only one column-spec. allowed}% (array/tabular)
 
+    There can only be one column specifier in a \cmd{\multicolumn}.
 
+\item[]\index{Optional argument is not one of: ...}
+  \textmess{Optional argument is not one of: classic, fixed, lines,
+            or nearest. I will assume the default.}
 
-\begin{syntax}
-\senv{syntax} syntax \eenv{syntax} \\
-\end{syntax}
-The \Ie{syntax} environment is for specifying command and environment
-syntax. Its definition is
-\begin{lcode}
-\newenvironment{syntax}{\begin{center}
-                        \begin{tabular}{|p{0.9\linewidth}|} \hline}%
-                       {\hline
-                        \end{tabular}
-                        \end{center}}
-\end{lcode}
-It is implemented in terms of the \Ie{tabular} environment, which forms
-a box that will not be broken across a pagebreak. The box frame
-is just the normal horizontal and vertical lines that you can use with
-a \Ie{tabular}. The width is fixed at 90\% of the text width. As it
-is a \Ie{tabular} environment, each line of syntax must be ended with
-\cmd{\\}. Note that normal LaTeX processing occurs within the \Ie{syntax}
-environment, so you can effectively put what you like inside it.
+    You have provided an unknown name for the optional argument to
+\cmd{\checkthelayout}. The default \texttt{classic} will be used instead.
 
-\begin{syntax}
-\senv{lcode} LaTeX code \eenv{lcode} \\
-\end{syntax}
-I use the \Ie{lcode} environment for showing examples of LaTeX code. It
-is a special kind of \Ie{verbatim} environment where the font size is
-\cmd{\small} but the normal \lnc{\baselineskip} is used, and each line
-is indented. It is defined with the help of the \Lpack{verbatim} package.
 
-    At the bottom the environment is defined in terms of a \Ie{list}, 
-although that is not obvious from the code; for details see the 
-\Lpack{verbatim} package documentation~\cite{VERBATIM}. I wanted
-the environment to be a tight list so started off by defining some
-two helper items.
-\begin{lcode}
-% \@zeroseps sets list before/after skips to minimum values
-\newcommand{\@zeroseps}{\setlength{\topsep}{\z@}
-                        \setlength{\partopsep}{\z@}
-                        \setlength{\parskip}{\z@}}
-% \gparindent is the \parindent for the body text
-\newlength{\gparindent} \setlength{\gparindent}{\parindent}
-\end{lcode}
-The macro \cmd{\@zeroseps} sets the before, after and middle skips in
-a list to 0pt (\cmd{\z@} is shorthand for 0pt). The value of \lnc{\parindent}
-is saved in \lnc{\gparindent}, because this will be the line indentation
-in the environment.
-\begin{lcode}
-% Now we can do the new lcode verbatim environment. 
-% This has no extra before/after spacing.
-\newenvironment{lcode}{\@zeroseps
-  \renewcommand{\verbatim@startline}%
-    {\verbatim@line{\hskip\gparindent}}
-  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-  {\endverbatim
-   \vspace{-\baselineskip}\noindent
-}
-\end{lcode}
+\item[]\index{paperheight and/or trimtop are too large ...?\cs{paperheight} and/or \cs{trimtop} are too large ...}
+    \textmess{\lnc{\paperheight} and/or \lnc{\trimtop} are too large for
+        \lnc{\stockheight} by ...}
+
+        The sum of the \lnc{\paperheight} and the \lnc{\trimtop} is
+  larger than the \lnc{\stockheight}. Either increase the \lnc{\stockheight}
+  or reduce the others.
 
-    The fragment |{\hskip\gparindent}| puts \lnc{\gparindent} space at 
-the start of each line.
+\item[]\index{paperwidth and/or trimedge are too large ...?\cs{paperwidth} and/or \cs{trimedge} are too large ...}
+   \textmess{\lnc{\paperwidth} and/or \lnc{\trimedge} are too large for
+        \lnc{\stockwidth} by ...}
 
-    The fragment |\small\setlength{\baselineskip}{\onelineskip}| sets the
-font size to be \cmd{\small}, which has a smaller \lnc{\baselineskip}
-than the normal font, but this is corrected for by changing the local
-\lnc{\baselineskip} to the normal skip, \lnc{\onelineskip}. At the end
-of the environment there is a negative space of one line to compensate
-for a one line space that LaTeX inserts.
+        The sum of the \lnc{\paperwidth} and the \lnc{\trimedge} is
+  larger than the \lnc{\stockwidth}. Either increase the \lnc{\stockwidth}
+  or reduce the others.
 
-    The two versals in \S\ref{sec:versal} were typeset with macros defined
-in the preamble\index{preamble}. The first and poorer of the two used the \cmd{\versal}
-macro. The second used the \cmd{\drop} macro which was written for
-LaTeX v2.09 by David Cantor and Dominik Wujastyk in 1998. Now, if you want
-to try your hand at this sort of thing there are some more packages
-on CTAN. I have found that the \Lpack{lettrine} package~\cite{LETTRINE} 
-serves my needs.
+\item[]\index{spinemargin and/or textwidth and/or foremargin are too large ...?\cs{spinemargin} and/or \cs{textwidth} and/or \cs{foremargin} are too large ...}
+ \textmess{\lnc{\spinemargin} and/or \lnc{\textwidth} and/or \lnc{\foremargin}
+        are too large for \lnc{\paperwidth} by ...}
 
+        The sum of the \lnc{\spinemargin} and the \lnc{\textwidth}
+  and the \lnc{\foremargin} is
+  larger than the \lnc{\paperwidth}. Either increase the \lnc{\paperwidth}
+  or reduce the others.
 
 
-% back end
-\backmatter
-\clearpage
-\pagestyle{ruled}
-\chapterstyle{section}
+\item[]\index{The combination of argument values ...} 
+   \textmess{The combination of argument values is ambiguous.
+        The lengths will be set to zero} 
+%    (\cmd{\setrectanglesize}, \cmd{\setfillsize})
 
-\renewcommand{\prebibhook}{%
-CTAN is the Comprehensive TeX Archive Network. Information on how to
-access CTAN is available at \url{http://www.tug.org}.
-\par\vspace{\onelineskip}}
+    The combination of values in the arguments to one of the commands
+for page layout does not make sense.
 
-\begin{thebibliography}{GMS94A}
+\item[]\index{The `extrafontsizes' option ...}
+  \textmess{The `extrafontsizes' option is required to use the `...pt' option}
 
-\bibitem[Ado01]{ADOBEBOOK}
-  \emph{How to Create Adobe PDF eBooks}.
-  \newblock Adobe Systems Inc.,
-  \newblock 2001.
-  \newblock (Available from 
-             \url{http://www.adobe.com/epaper/tips/acr5ebook/pdfs/eBook.pdf})
+    If you want to use a `...pt' class option greater than \Lopt{25pt}
+you also have to use the \Lopt{extrafontsizes} option. The class will
+use the \Lopt{17pt} option.
 
-\bibitem[Ars99]{URL}
-  Donald Arseneau.
-  \newblock \emph{The url package}.
-  \newblock February, 1999.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/contrib/misc/url.sty})
 
-\bibitem[Ars01a]{TITLEREF}
-  Donald Arseneau.
-  \newblock \emph{The titleref package}.
-  \newblock April, 2001.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/contrib/misc/titleref.sty})
+\item[]\index{Unknown document division ...}
+    \textmess{Unknown document division name (...)}
 
-\bibitem[Ars01b]{FRAMED}
-  Donald Arseneau.
-  \newblock \emph{The framed package}.
-  \newblock July, 2001.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/contrib/misc/framed.sty})
+    You have used an unknown division name in the argument to 
+\cmd{\settocdepth} or \cmd{\setsecnumdepth} and friends. If you haven't
+mistyped it you will have to use \cmd{\setcounter} instead.
 
-\bibitem[Ars01b]{CHAPTERBIB}
-  Donald Arseneau.
-  \newblock \emph{The chapterbib package}.
-  \newblock September, 2001.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/contrib/cite/chapterbib.sty})
+\item[]\index{Unknown mark setting type ...}
+    \textmess{Unknown mark setting type `...' for ...mark}
 
-\bibitem[Bar92]{BAROLINI92}
-  Helen Barolini.
-  \newblock \emph{Aldus and his Dream Book}.
-  \newblock Italica Press
-  \newblock (ISBN 0--934977--22--4), 1992.
+    In \cmd{\createmark} or \cmd{\createplainmark} the mark setting 
+type should have been \texttt{left} or \texttt{both} 
+or \texttt{right}. The class will use \texttt{both}.
 
-\bibitem[BDG89]{BIGELOW89}
-  Charles Bigelow, Paul Hayden Duensing and Linnea Gentry (Eds).
-  \newblock \emph{Fine Print on Type}. 1989.
-  \newblock Fine Print, CA (ISBN 0--9607290-X) or
-  \newblock Bedford Arts, CA (ISBN 0--938491--17--2).
+\item[]\index{Unknown numbering type ...}
+  \textmess{Unknown numbering type ... for ...mark}
 
-\bibitem[Boh90]{BOHLE90}
-  Robert Bohle.
-  \newblock \emph{Publication Design for Editors}.
-  \newblock Prentice-Hall,
-  \newblock 1990.
+  In \cmd{\createmark} the class expected either \texttt{shownumber} or
+\texttt{nonumber} for displaying the number. It will use 
+\texttt{shownumber}.
 
-\bibitem[Ber02]{JURABIB}
-  Jens Berger.
-  \newblock \emph{The titlesec and titletoc packages}.
-  \newblock September, 2002.
-  \newblock (Available from CTAN in 
-             \url{/macros/latex/contrib/titlesec})
+\item[]\index{Unrecognized argument for \cs{sidecapmargin}}
+  \textmess{Unrecognized argument for \cmd{\sidecapmargin}}
 
-\bibitem[Bez99]{TITLESEC}
-  Javier Bezos.
-  \newblock \emph{The titlesec and titletoc packages}.
-  \newblock February, 1999.
-  \newblock (Available from CTAN in 
-             \url{/macros/latex/contrib/titlesec})
+    The argument to \cmd{\sidecaption} should be \texttt{left} or 
+\texttt{right} or \texttt{inner} or \texttt{outer}.
 
-\bibitem[Bra94]{MAKEIDX}
-  Johannes Braams \textit{et al}.
-  \newblock \emph{Standard LaTeX2e packages makeidx and showidx}.
-  \newblock November, 1994.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/base/makeindx.dtx(ins)})
+\item[]\index{uppermargin and/or textheight and/or lowermargin are too large ...?\cs{uppermargin} and/or \cs{textheight} and/or \cs{lowermargin} are too large ...}
+   \textmess{\lnc{\uppermargin} and/or \lnc{\textheight} and/or 
+        \lnc{\lowermargin} are too large for \lnc{\paperheight} by ...}
 
-\bibitem[Bra97]{ALLTT}
-  Johannes Braams.
-  \newblock \emph{The alltt environment}.
-  \newblock June, 1997.
-  \newblock (Available from CTAN as 
-             \url{/macros/latex/base/alltt.dtx(ins)})
+        The sum of the \lnc{\uppermargin} and the \lnc{\textheight}
+  and the \lnc{\lowermargin} is
+  larger than the \lnc{\paperheight}. Either increase the \lnc{\paperheight}
+  or reduce the others.
 
-\bibitem[Bri92]{BRINGHURST92}
-  Robert Bringhurst.
-  \newblock \emph{The Elements of Typographic Style}.
-  \newblock Hartley \& Marks
-  \newblock (ISBN 0--88179--033--8), 1992.
+\item[]\index{You have used the `*pt' option but file ...}
+  \textmess{You have used the `*pt' option but file ... can't be found}
 
-\bibitem[Bur59]{BURT59}
-  C.~L.~Burt.
-  \newblock \emph{A Psychological Study of Typography}.
-  \newblock Cambridge University Press,
-  \newblock 1959.
+    You have used the \Lopt{*pt} option but the corresponding 
+\pixfile{clo} file can't be found. Check your definitions of
+\cmd{\anyptfilebase} and \cmd{\anyptsize}. The \pixfile{mem10.clo} 
+file will be used instead.
 
-\bibitem[Car94]{DELARRAY}
-  David Carlisle.
-  \newblock \emph{The delarray package}.
-  \newblock March, 1994.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+\item[]\index{XeTeX is required to process this document}
+  \textmess{XeTeX is required to process this document}
 
-\bibitem[Car95]{AFTERPAGE}
-  David Carlisle.
-  \newblock \emph{The afterpage package}.
-  \newblock October, 1995.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+   The document needs to be processed via \pixxetx. Try using 
+\texttt{xelatex} instead of \texttt{(pdf)latex}, or try removing 
+any \pixxetx\ packages from the document.
 
-\bibitem[Car98a]{COLOR}
-  David Carlisle.
-  \newblock \emph{The color package}.
-  \newblock May, 1998.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+    
 
-\bibitem[Car98b]{LONGTABLE}
-  David Carlisle.
-  \newblock \emph{The longtable package}.
-  \newblock May, 1998.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+\end{plainlist}
 
-\bibitem[Car98c]{ENUMERATE}
-  David Carlisle.
-  \newblock \emph{The enumerate package}.
-  \newblock August, 1998.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
 
-\bibitem[Car98d]{REMRESET}
-  David Carlisle.
-  \newblock \emph{The remreset package}.
-  \newblock August, 1998.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/contrib/carlisle})
+\index{error!memoir class|)}
+%%\index{memoir class!error|)}
+\Iclasssub{memoir}{error|)}
 
-\bibitem[Car99a]{TABULARX}
-  David Carlisle.
-  \newblock \emph{The tabularx package}.
-  \newblock January, 1999.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+\section{Class warnings}
 
+%%\index{memoir class!warning|(}
+\Iclasssub{memoir}{warning|(}
+\index{warning!memoir class|(}
 
-\bibitem[Car01]{DCOLUMN}
-  David Carlisle.
-  \newblock \emph{The dcolumn package}.
-  \newblock May, 2001.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/tools})
+    These are introduced by \verb?Class memoir Warning:? 
 
-\bibitem[CR99]{GRAPHICX}
-  David Carlisle and Sebastian Rahtz.
-  \newblock \emph{The graphicx package}.
-  \newblock February, 1999.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/required/graphics})
+For example
+\verb?\addtodef{alf}{\joe}{fred}? will produce a message along the lines of:
+\begin{verbatim}
+Class memoir Warning: `alf' is not a macro on input line 91.
+\end{verbatim}
+while 
+\verb?\addtodef{\joe}{alf}{fred}? might produce:
+\begin{verbatim}
+Class memoir Warning: `\joe' is not a macro on input line 97.
+\end{verbatim}
 
-\bibitem[CB99]{CHAPPELL99}
-  Warren Chappell and Robert Bringhurst.
-  \newblock \emph{A Short History of the Printed Word}.
-  \newblock Hartley \& Marks, 1999.
-  \newblock ISBN 0--88179--154--7.
+    The following is an alphabeticised list of the class warnings.
 
-\bibitem[CH88]{CHEN88}
-  Pehong Chen and Michael A.~Harrison.
-  \newblock `Index Preparation and Processing'.
-  \newblock \emph{Software: Practice and Experience}, 19:8, pp. 897--915,
-            September, 1988.
-  \newblock (Available from CTAN in
-             \url{/indexing/makeindex/paper})
+\begin{plainlist}
 
-\bibitem[Chi93]{CMS93}
-  \newblock \emph{The Chicago Manual of Style}, Fourteenth Edition.
-  \newblock The University of Chicago
-  \newblock (ISBN 0--226--10389--7) 1993.
+%%%%%%%%%%%%%%%%%%%%%%%
 
+\item[]\index{... at index ... in pattern ...}
+    \textmess{... at index ... in pattern ... is not a digit}% (\cmd{\get@vsindent}
 
-\bibitem[Coc02]{SUBFIGURE}
-  Steven Douglas Cochran.
-  \newblock \emph{The subfigure package}.
-  \newblock March, 2002.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/contrib/subfigure})
+    The character at the given position in the verse pattern is not a digit.
 
-\bibitem[CG96]{CONWAY96}
-  John H.~Conway and Richard K.~Guy.
-  \newblock \emph{The Book of Numbers}.
-  \newblock Copernicus, Springer-Verlag
-  \newblock (ISBN 0--387--97993--X), 1996.
+\item[]\index{... is not a macro}
+    \textmess{... is not a macro}
 
-\bibitem[Cra92]{CRAIG92}
-  James Craig.
-  \newblock \emph{Designing with Type: A Basic Course in Typography}.
-  \newblock Watson-Guptill, NY,
-  \newblock 1992.
+    Using \cmd{\addtodef} or \cmd{\addtoiargdef} you have tried to extend 
+the definition of an unknown macro.
 
-\bibitem[Dal99]{NATBIB}
-  Patrick W.~Daly.
-  \newblock \emph{Natural Sciences Citations and References}.
-  \newblock May, 1999.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/contrib/natbib})
+\item[]\index{... is not an input stream}
+    \textmess{... is not an input stream} 
 
-\bibitem[Deg92]{DEGANI92}
-  Asaf Degani.
-  \newblock \emph{On the Typography of Flight-Deck Documentation}.
-  \newblock NASA Contractor Report \# 177605.
-  \newblock December, 1992.
-  \newblock (Available from 
-             \url{http://members.aol.com/willadams/typgrphy.htm#NASA})
+    You are trying to access a non-existent input stream.
 
+\item[]\index{... is not an output stream}
+    \textmess{... is not an output stream}% (\cmd{\outstre@mandopen}, \cmd{\outstre@mandclosed}
 
-\bibitem[Dow96]{DOWDING96}
-  Geoffrey Dowding.
-  \newblock \emph{Finer Points in the Spacing \& Arrangement of Type}.
-  \newblock Hartley \& Marks
-  \newblock (ISBN 0--88179--119--9), 1996.
+    You are trying to access a non-existent output stream.
 
-\bibitem[Dow98]{DOWDING98}
-  Geoffrey Dowding.
-  \newblock \emph{An Introduction to the History of Printing Types}.
-  \newblock The British Library and Oak Knoll Press
-  \newblock (ISBN 0--7123--4563--9 \textsc{uk},
-                  1--884718--44--2 \textsc{usa}), 1998.
+\item[]\index{Bad \cs{sidebarmargin} argument}
+  \textmess{Bad \cs{sidebarmargin} argument}
 
-\bibitem[Dow00]{PATCHCMD}
-  Michael J.~Downes.
-  \newblock \emph{The patchcmd package}.
-  \newblock July, 2000.
-  \newblock (Available from CTAN in
-             \url{/macros/latex/contrib/patchcmd})
+   The argument to \cs{sidebarmargin} is not recognized. The class
+will use \texttt{right}.
 
-\bibitem[Eij92]{EIJKHOUT92}
-  Victor Eijkhout.
-  \newblock \emph{TeX by Topic}.
-  \newblock Addison-Wesley, 1992.
-  \newblock ISBN 0--201--56882--9.
-  \newblock (Available from \url{http://www.eijkhout.net/tbt/}).
 
-\bibitem[Fai00]{FOOTMISC}
-  Robin Fairbairns.
-  \newblock \emph{footmisc --- a portmanteau package for customising
-                  footnotes in LaTeX2e}.
-  \newblock March, 2000.
-  \newblock (Available from CTAN in
-            \url{/macros/latex/contrib/footmisc})
+\item[]\index{Characters dropped after \eenv{...}}
+    \textmess{Characters dropped after \eenv{...}} % (\cmd{\verbatim@rescan}
 
-\bibitem[Fai98]{MOREVERB}
-  Robin Fairbairns.
-  \newblock \emph{The moreverb package}.
-  \newblock December, 1998.
-  \newblock (Available from CTAN in
-            \url{/macros/latex/contrib/moreverb})
+    At the end of a \Ie{verbatim} environment there should be no characters
+after the \eenv{...} on the same line. 
 
-\bibitem[FAQ]{FAQ}
-  Robin Fairbairns.
-  \newblock \emph{The UK TeX FAQ}.
-  \newblock (Available from CTAN in
-            \url{/help/uk-tex-faq})
+\item[]\index{Column ... is already defined}
+    \textmess{Column ... is already defined} % (tabulars
 
-\bibitem[Fea03]{BOOKTABS}
-  Simon Fear.
-  \newblock \emph{Publication quality tables in LaTeX}.
-  \newblock March, 2003.
-  \newblock (Available from CTAN in
-            \url{/macros/latex/contrib/booktabs})
+    The column type has been defined by a previous \cmd{\newcolumntype}.
 
-\bibitem[Fli98]{LETTRINE}
-  Daniel Flipo.
-  \newblock \emph{Typesetting `lettrines' in LaTeX2e documents}.
-  \newblock March, 1998.
-  \newblock (Available from CTAN in 
-             \url{/macros/latex/contrib/lettrine})
 
-\bibitem[Fra00]{CROP}
-  Melchior Franz.
-  \newblock \emph{The crop package}.
-  \newblock February, 2000.
-  \newblock (Available from CTAN in 
-             \url{/macros/latex/contrib/crop})
+\item[]\index{Counter ... already defined}
+    \textmess{Counter ... already defined}
 
-\bibitem[FOS98]{FRIEDL98}
-  Friedrich Friedl, Nicolaus Ott and Bernard Stein.
-  \newblock \emph{Typography: An Encyclopedic Survey of Type Designs and
-                  Techniques throughout History}.
-  \newblock Black Dog \& Leventhal Publishers Inc.
-  \newblock (ISBN 1--57912--023--7), 1998.
+    For information only, the counter in \cmd{\providecounter} 
+is already defined.
 
-\bibitem[Gar66]{GARDNER66}
-  Martin Gardner.
-  \newblock \emph{More Mathematical Puzzles and Diversions}.
-  \newblock Penguin Books
-  \newblock (ISBN 0--14--020748--1), 1966.
-
-\bibitem[GMS94]{GOOSSENS94}
-  Michel Goossens, Frank Mittelbach and Alexander Samarin.
-  \newblock \emph{The LaTeX Companion}.
-  \newblock Addison-Wesley Publishing Company
-  \newblock (ISBN 0--201--54199--8), 1994.
-
-\bibitem[GRM97]{GOOSSENS97}
-  Michel Goossens, Sebastian Rahtz and Frank Mittelbach.
-  \newblock \emph{The LaTeX Graphics Companion: Illustrating Documents
-                  with TeX and PostScript}.
-  \newblock Addison-Wesley Publishing Company
-  \newblock (ISBN 0--201--85469--4), 1997.
-
-\bibitem[GR99]{GOOSSENS99}
-  Michel Goossens and Sebastian Rahtz (with Eitan Gurari,
-  Ross Moore and Robert Sutor).
-  \newblock \emph{The LaTeX Web Companion: Integrating TeX, HTML and XML}.
-  \newblock Addison-Wesley Publishing Company
-  \newblock (ISBN 0--201--43311--7), 1999.
+\item[]\index{Do not use footnote ...?Do not use \cs{footnote} ...}
+   \textmess{Do not use \cmd{\footnote} in \cmd{\maketitle}. Use \cmd{\thanks} instead}
 
-\bibitem[Gou87]{GOULD87}
-  J.~D.~Gould \textit{et al}.
-  \newblock `Reading from CRT displays can be as fast as reading from paper'.
-  \newblock \emph{Human Factors}, pp 497--517, 29:5, 1987.
+    You cannot use \cmd{\footnote} in any of the \cmd{\maketitle} elements
+(i.e., \cmd{\title} or \cmd{\author} or \cmd{\date}) but you can use 
+\cmd{\thanks}.
+
+\item[]\index{Empty `thebibliography' environment}
+    \textmess{Empty `thebibliography' environment}
+
+    There are no \cmd{\bibitem}s in the \Ie{thebibliography} environment.
 
-\bibitem[HR83]{HARTLEY83}
-  J.~Hartley and D.~Rooum.
-  \newblock `Sir Cyril Burt and typography'.
-  \newblock \emph{British Journal of Psychology}, pp 203--212, 74:2, 1983.
+\item[]\index{Environment ... already defined}
+    \textmess{Environment ... already defined}% (\cmd{\m@mprovenv}
 
-\bibitem[HM01]{HELLER01}
-  Steven Heller and Philip B.~Maggs (Eds).
-  \newblock \emph{Texts on Type: Critical Writings on Typography}.
-  \newblock Allworth Press
-  \newblock (ISBN 1--58115--082--2), 2001.
+    For information only, the environment in \cmd{\provideenvironment} 
+is already defined.
 
-\bibitem[Hoe98]{HOENIG98}
-  Alan Hoenig.
-  \newblock \emph{TeX Unbound: LaTeX and TeX strategies for fonts,
-                  graphics, and more}.
-  \newblock Oxford University Press
-  \newblock (ISBN 0--19--509686--X), 1998.
 
-\bibitem[HK75]{HVISTENDAHL75}
-  J.~K.~Hvistendahl and M.~R.~Kahl.
-  \newblock `Roman vs. sans serif body type: Readability and reader prference'.
-  \newblock \emph{AANPA News Research Bulletin}, pp 3--11, 17 Jan., 1975.
+\item[]\index{Index ... for pattern ...}
+    \textmess{Index ... for pattern ... is out of bounds}% (\cmd{\get@vsindent}
 
+    The index for the verse pattern is either too low or too high.
 
-\bibitem[Jon95]{INDEX}
-  David M.~Jones.
-  \newblock \emph{A new implementation of LaTeX's indexing commands}.
-  \newblock September, 1995.
-  \newblock (Available from CTAN in \url{/macros/latex/contrib/camel})
+\item[]\index{Input stream ... is already defined}
+    \textmess{Input stream ... is already defined} 
 
-\bibitem[Knu84]{KNUTH84a}
-  Donald E.~Knuth.
-  \newblock \emph{The TeXbook}.
-  \newblock Addison-Wesley Publishing Company
-  \newblock (ISBN 0--201--13448--9), 1984.
+     You are trying to use \cmd{\newinputstream} to create an already existing
+input stream.
 
-\bibitem[Lam94]{LAMPORT94}
-  Leslie Lamport.
-  \newblock \emph{LaTeX: A Document Preparation System}.
-  \newblock Addison-Wesley Publishing Company
-  \newblock (ISBN 0--201--52983--1), 1994.
+\item[]\index{Input stream ... is not open}
+    \textmess{Input stream ... is not open}% (\cmd{\instre@mandopen}
 
-\bibitem[LMB99]{CLASSES}
-  Leslie Lamport, Frank Mittelbach and Johannes Braams.
-  \newblock \emph{Standard document classes for LaTeX version 2e}.
-  \newblock September, 1999.
-  \newblock (Available from CTAN as \url{/macros/latex/base/classes.dtx})
+    You are trying to access or close an input stream that is closed.
 
-\bibitem[Law90]{LAWSON90}
-  Alexander Lawson.
-  \newblock \emph{Anatomy of a Typeface}.
-  \newblock David R.~Godine 
-  \newblock (ISBN 0--87923--333--8), 1990.
+\item[]\index{Input stream ... is open}
+    \textmess{Input stream ... is open}% (\cmd{\instre@mandclosed}
 
-\bibitem[Leu92]{LEUNEN92}
-  Mary-Claire van Leunen.
-  \newblock \emph{A Handbook for Scholars}.
-  \newblock Oxford University Press
-  \newblock (ISBN 0--19--506954--4), 1992.
+    You are trying to open an input stream that is already open.
 
-\bibitem[Lon91]{MULTIND}
-  F.~W.~Long.
-  \newblock \emph{multind}.
-  \newblock August, 1991.
-  \newblock (Available from CTAN as \url{/macros/latex209/contrib/misc/multind.sty})
+\item[]\index{Length ... already defined}
+    \textmess{Length ... already defined}
 
-\bibitem[McD98]{SECTSTY}
-  Rowland McDonnell.
-  \newblock \emph{The sectsty package}.
-  \newblock November, 1998.
-  \newblock (Available from CTAN in 
-             \url{/macros/latex/contrib/secsty})
+    For information only, the length in \cmd{\providelength} 
+is already defined.
 
-\bibitem[McL75]{MCLEAN75}
-  Ruari McLean.
-  \newblock \emph{Jan Tschichold: Typographer}.
-  \newblock David R.~Godine
-  \newblock (ISBN 0--87923--841--0), 1975.
 
-\bibitem[McL80]{MCLEAN80}
-  Ruari McLean.
-  \newblock \emph{The Thames \& Hudson Manual of Typography}.
-  \newblock Thames \& Hudson
-  \newblock (ISBN 0--500--68022--1), 1980.
 
-\bibitem[McL95]{MCLEAN95}
-  Ruari McLean (Ed).
-  \newblock \emph{Typographers on Type}.
-  \newblock W.~W.~Norton \& Co.
-  \newblock (ISBN 0--393--70201--4), 1995.
+\item[]\index{Marginpar on page ...}
+    \textmess{Marginpar on page ... moved by ...}
 
-\bibitem[Mit95]{DOC}
-  Frank Mittelbach.
-  \newblock \emph{The doc and shortvrb packages}.
-  \newblock May, 1995.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/base})
+    A marginal note has been lowered by the given amount to avoid overwriting
+a previous note; the moved note will not be aligned with its \cmd{\marginpar}.
+(This is a more informative message than the normal \ltx\ one.)
 
-\bibitem[Mit95]{SHORTVRB}
-  Frank Mittelbach.
-  \newblock \emph{The doc and shortvrb packages}.
-  \newblock May, 1995.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/base})
+\item[]\index{No more to read from stream ...}
+    \textmess{No more to read from stream ...}% (\cmd{\readaline})
 
-\bibitem[Mit98]{MULTICOL}
-  Frank Mittelbach.
-  \newblock \emph{An environment for multicolumn output}.
-  \newblock January, 1998.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/required/tools})
+    There is nothing left in the stream to be read.
 
-\bibitem[MC98]{ARRAY}
-  Frank Mittelbach and David Carlisle.
-  \newblock \emph{A new implementation of LaTeX's tabular and array environment}.  \newblock May, 1998.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/required/tools})
+\item[]\index{Optional argument of twocolumn ...?Optional argument of \cs{twocolumn} ...}
+   \textmess{Optional argument of \cmd{\twocolumn} too tall on page ...}% (\cmd{\@topnewpage}
 
-\bibitem[MC00]{FIXLTX2E}
-  Frank Mittelbach and David Carlisle.
-  \newblock \emph{The fixltx2e package}.
-  \newblock September, 2000.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/base})
+     The contents of the optional argument to \cmd{\twocolumn} was too
+long to fit on the page.
 
-\bibitem[Mor99]{MORISON99}
-  Stanley Morison.
-  \newblock \emph{A Tally of Types}.
-  \newblock David R. Godine
-  \newblock (ISBN 1--56792--004--7), 1999.
+\item[]\index{Output stream ... is already defined} 
+    \textmess{Output stream ... is already defined}
 
-\bibitem[NG98]{SIDECAP}
-  Rolf Niespraschk and Hubert G\"{a}\ss{}lein. 
-  \newblock \emph{The sidecap package}.
-  \newblock June, 1998.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/sidecap})
+     You are trying to use \cmd{\newoutputstream} to create an already existing
+output stream.
 
-\bibitem[Oet]{LSHORT}
-  Tobias Oetiker.
-  \newblock \emph{The Not So Short Introduction to LaTeX2e}.
-  \newblock (Available from CTAN in 
-            \url{/info/lshort/english})
+\item[]\index{Output stream ... is not open}
+    \textmess{Output stream ... is not open}% (\cmd{\outstre@mandopen}
 
-\bibitem[Oos96]{FANCYHDR}
-  Piet van Oostrum.
-  \newblock \emph{Page Layout in LaTeX}.
-  \newblock June, 1996.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/fancyhdr})
+    You are trying to access or close an output stream that is closed.
 
-\bibitem[Pak01]{SYMBOLS}
-  Scott Pakin.
-  \newblock \emph{The Comprehensive LaTeX Symbol List}.
-  \newblock July, 2001.
-  \newblock (Available from CTAN in 
-            \url{/info/symbols/comprehensive})
+\item[]\index{Output stream ... is open}
+    \textmess{Output stream ... is open}% (\cmd{\outstre@mandclosed}
 
-\bibitem[Pug02]{MATHPAZO}
-  Diego Puga.
-  \newblock \emph{The Pazo Math fonts for mathematical typesetting
-                  with the Palatino fonts}.
-  \newblock May, 2002.
-  \newblock (Available from CTAN in 
-            \url{/fonts/mathpazo})
+    You are trying to open an output stream that already open.
 
-\bibitem[Rahtz01]{NAMEREF}
-  Sebastian Rahtz.
-  \newblock \emph{Section name references in LaTeX}.
-  \newblock January, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/hyperref})
+\item[]\index{Redefining primitive column ...}
+    \textmess{Redefining primitive column ...} % (tabulars
 
-\bibitem[Rahtz02]{HYPERREF}
-  Sebastian Rahtz.
-  \newblock \emph{Hypertext marks in LaTeX}.
-  \newblock May, 2002.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/hyperref})
+    The argument to \cmd{\newcolumntype} is one of the basic column types.
 
-\bibitem[Rec97]{EPSLATEX}
-  Keith Reckdahl.
-  \newblock \emph{Using Imported Graphics in LaTeX2e}.
-  \newblock December, 1997.
-  \newblock (Available from CTAN as
-             \url{/info/epspatex.ps} or \url{/info/epslatex.pdf})
 
-\bibitem[Reh72]{REHE72}
-  Rolf Rehe.
-  \newblock `Type and how to make it most legible'.
-  \newblock \emph{Design Research International}, 1972.
 
-\bibitem[RAE71]{ROBINSON71}
-  D.~O.~Robinson, M.~Abbamonte and S.~H.~Evans.
-  \newblock `Why serifs are important: The perception of small print'.
-  \newblock \emph{Visible Language}, pp 353--359, 4, 1971.
+\item[]\index{Stream ... is not open}
+    \textmess{Stream ... is not open}% (\cmd{stre@mverb@input} \cmd{\stre@mbvin}
 
-\bibitem[Rog43]{ROGERS43}
-  Bruce Rogers.
-  \newblock \emph{Paragraphs on Printing}.
-  \newblock William E. Rudge's Sons, Inc.
-  \newblock (no ISBN), 1943.
-  \newblock (Reissued by Dover, 1979, ISBN 0--486--23817--2)
+    You are trying to access a stream, either input or output, that is closed.
 
-\bibitem[Rog49]{ROGERS49}
-  Bruce Rogers.
-  \newblock \emph{Centaur Types}.
-  \newblock October House
-  \newblock (no ISBN), 1949.
 
-\bibitem[SW94]{EBOOK}
-  Douglas Schenck and Peter Wilson.
-  \newblock \emph{Information Modeling the EXPRESS Way}.
-  \newblock Oxford University Press
-  \newblock (ISBN 0--19--508714--3), 1994.
+\item[]\index{The ... font command is deprecated ...}
+    \textmess{The ... font command is deprecated. Use ... or ... instead}
 
-\bibitem[SRR99]{VERBATIM}
-  Rainer Sch\"{o}pf, Bernd Raichle and Chris Rowley.
-  \newblock \emph{A New Implementation of LaTeX's verbatim
-                  and verbatim* Environments}.
-  \newblock December, 1999.
-  \newblock (Available from CTAN in
-            \url{/macros/latex/required/tools})
+    You are using a deprecated font command. Consider using one of the
+alternatives.
 
-\bibitem[Sch97]{SCHRIVER97}
-  Karen A.~Schriver.
-  \newblock \emph{Dynamics in Document Design}.
-  \newblock Wiley \& Sons, 1997.
+\item[]\index{The counter will not be printed ...}
+    \textmess{The counter will not be printed. The label is: ...}% (\cmd{\@@enum@}
 
-\bibitem[Thi99]{TTC199}
-  Christina Thiele.
-  \newblock `The Treasure Chest: Package tours from CTAN', 
-  \newblock \emph{TUGboat}, 
-  \newblock vol. 20, no. 1, pp 53--58, March 1999.
+    The optional \meta{style} argument to the \Ie{enumerate} environment
+does not include one of the special characters.
 
-\bibitem[Tin63]{TINKER63}
-  Miles A.~Tinker.
-  \newblock \emph{Legibility of Print}.
-  \newblock Books on Demand (University Microfilms International), 1963.
+\item[]\index{Undefined index file ...}
+    \textmess{Undefined index file ...}% (\cmd{\@index}, \cmd{\@spindex}
 
-\bibitem[Tsc91]{TSCHICHOLD91}
-  Jan Tschichold.
-  \newblock \emph{The Form of the Book}.
-  \newblock Lund Humphries
-  \newblock (ISBN 0--85331--623--6), 1991.
+    You are trying to add an index entry to an unknown \file{idx} file.
 
-\bibitem[Ume99]{GEOMETRY}
-  Hideo Umeki.
-  \newblock \emph{The geometry package}.
-  \newblock November, 1999.
-  \newblock (Available from CTAN in
-            \url{/macros/latex/contrib/geometry})
 
+\item[]\index{Unknown toclevel for ...}
+  \textmess{Unknown toclevel for ...}
 
-\bibitem[Whe95]{WHEILDON95}
-  Colin Wheildon.
-  \newblock \emph{Type \& Layout}.
-  \newblock Strathmore Press
-  \newblock (ISBN 0--9624891--5--8), 1995.
+    The division name you have used for \cmd{\settocdepth} is not 
+recognized.
 
-\bibitem[Wil93]{ADRIANWILSON93}
-  Adrian Wilson.
-  \newblock \emph{The Design of Books}.
-  \newblock Chronicle Books
-  \newblock (ISBN 0--8118--0304--X), 1993.
 
 
+\item[]\index{verb may be unreliable ...?\cs{verb} may be unreliable ...}
+    \textmess{\cs{verb} may be unreliable inside tabularx} 
 
-\bibitem[Wil99a]{LAYOUTS}
-  Peter Wilson.
-  \newblock \emph{The layouts package}.
-  \newblock January, 1999.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/layouts})
+    A \cs{verb} in a \Ie{tabularx} may work, but may not.
 
-\bibitem[Wil99b]{TOCVSEC2}
-  Peter Wilson.
-  \newblock \emph{The tocvsec2 package}.
-  \newblock January, 1999.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/tocvsec2})
+\item[]\index{X columns too narrow ...} 
+    \textmess{X columns too narrow (table too wide)} % (tabulars
 
-\bibitem[Wil00a]{EPIGRAPH}
-  Peter Wilson.
-  \newblock \emph{The epigraph package}.
-  \newblock February, 2000.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/epigraph})
+    The width of the X columns in a \Ie{tabularx} had to be made too narrow.
 
-\bibitem[Wil00b]{ISOCLASS}
-  Peter Wilson.
-  \newblock \emph{LaTeX files for typesetting ISO standards}.
-  \newblock February, 2000.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/isostds/iso})
+\end{plainlist}
 
-\bibitem[Wil00c]{NEXTPAGE}
-  Peter Wilson.
-  \newblock \emph{The nextpage package}.
-  \newblock February, 2000.
-  \newblock (Available from CTAN as 
-            \url{/macros/latex/contrib/misc/nextpage.sty})
+\index{warning!memoir class|)}
+%%\index{memoir class!warning|)}
+\Iclasssub{memoir}{warning|)}
 
-\bibitem[Wil00d]{NEEDSPACE}
-  Peter Wilson.
-  \newblock \emph{The needspace package}.
-  \newblock March, 2000.
-  \newblock (Available from CTAN as 
-            \url{/macros/latex/contrib/misc/needspace.sty})
 
-\bibitem[Wil00e]{XTAB}
-  Peter Wilson.
-  \newblock \emph{The xtab package}.
-  \newblock April 2000.
-  \newblock (Available from CTAN in 
-             \texttt{macros/latex/contrib/xtab})
 
-\bibitem[Wil01a]{ABSTRACT}
-  Peter Wilson.
-  \newblock \emph{The abstract package}.
-  \newblock February, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/abstract})
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\bibitem[Wil01b]{CHNGPAGE}
-  Peter Wilson.
-  \newblock \emph{The chngpage package}.
-  \newblock February, 2001.
-  \newblock (Available from CTAN as 
-            \url{/macros/latex/contrib/misc/chngpage.sty})
+%%%%%%%%% end mbooka
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-\bibitem[Wil01c]{APPENDIX}
-  Peter Wilson.
-  \newblock \emph{The appendix package}.
-  \newblock March, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/appendix})
+% back end
+\backmatter
+\clearpage
+\pagestyle{plainmarkruled}
+%%\chapterstyle{section}
 
-\bibitem[Wil01d]{CCAPTION}
-  Peter Wilson.
-  \newblock \emph{The ccaption package}.
-  \newblock March, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/ccaption})
+\renewcommand*{\begintheglossaryhook}{\small}
+%%%\glossaryintoc
+\printglossary
+
+\renewcommand{\prebibhook}{%
+CTAN is the Comprehensive TeX Archive Network. Information on how to
+access CTAN is available at \url{http://www.tug.org}.
+\par\vspace{\onelineskip}}
 
-\bibitem[Wil01e]{CHNGCNTR}
-  Peter Wilson.
-  \newblock \emph{The chngcntr package}.
-  \newblock April, 2001.
-  \newblock (Available from CTAN as 
-            \url{/macros/latex/contrib/misc/chngcntr.sty})
+\begin{thebibliography}{GMS94A}
+\small
 
-\bibitem[Wil01f]{HANGING}
-  Peter Wilson.
-  \newblock \emph{The hanging package}.
-  \newblock March, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/hanging})
+\bibitem[AHK90]{IMPATIENT}
+  Paul W. Abrahams, Kathryn Hargreaves and Karl Berry.
+  \newblock \emph{TeX for the Impatient}.
+  \newblock Addison-Wesley, 1990.
+  \newblock (Available at
+             \url{ftp://tug.org/tex/impatient})
 
-\bibitem[Wil01g]{TITLING}
-  Peter Wilson.
-  \newblock \emph{The titling package}.
-  \newblock March, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/titling})
+\bibitem[Ado01]{ADOBEBOOK}
+  \emph{How to Create Adobe PDF eBooks}.
+  \newblock Adobe Systems Inc.,
+  \newblock 2001.
+  \newblock (Available from 
+             \url{http://www.adobe.com/epaper/tips/acr5ebook/pdfs/eBook.pdf})
 
-\bibitem[Wil01h]{TOCBIBIND}
-  Peter Wilson.
-  \newblock \emph{The tocbibind package}.
+\bibitem[Ars99]{URL}
+  Donald Arseneau.
+  \newblock \emph{The url package}.
+  \newblock February, 1999.
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/contrib/misc/url.sty})
+
+\bibitem[Ars01a]{TITLEREF}
+  Donald Arseneau.
+  \newblock \emph{The titleref package}.
   \newblock April, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/tocbibind})
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/contrib/misc/titleref.sty})
 
+\bibitem[Ars01b]{CHAPTERBIB}
+  Donald Arseneau.
+  \newblock \emph{The chapterbib package}.
+  \newblock September, 2001.
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/contrib/cite/chapterbib.sty})
 
-\bibitem[Wil01i]{TOCLOFT}
-  Peter Wilson.
-  \newblock \emph{The tocloft package}.
-  \newblock April, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/tocloft})
+\bibitem[Ars07]{FRAMED}
+  Donald Arseneau.
+  \newblock \emph{The framed package} v0.95.
+  \newblock October, 2007.
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/contrib/misc/framed.sty})
 
+\bibitem[Bar92]{BAROLINI92}
+  Helen Barolini.
+  \newblock \emph{Aldus and his Dream Book}.
+  \newblock Italica Press, 1992.
+  \newblock ISBN 0--934977--22--4.
 
-\bibitem[Wil01j]{MEMOIR}
-  Peter Wilson.
-  \newblock \emph{The LaTeX memoir class for configurable book 
-                  typesetting: Source code}.
-  \newblock July, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/memoir})
+\bibitem[BDG89]{BIGELOW89}
+  Charles Bigelow, Paul Hayden Duensing and Linnea Gentry (Eds).
+  \newblock \emph{Fine Print on Type}. 1989.
+  \newblock Fine Print, CA (ISBN 0--9607290-X) or
+  \newblock Bedford Arts, CA (ISBN 0--938491--17--2).
 
-\bibitem[Wil01k]{VERSE}
-  Peter Wilson.
-  \newblock \emph{Typesetting simple verse with LaTeX}
-  \newblock July, 2001.
-  \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/verse})
+\bibitem[Boh90]{BOHLE90}
+  Robert Bohle.
+  \newblock \emph{Publication Design for Editors}.
+  \newblock Prentice-Hall,
+  \newblock 1990.
 
-\bibitem[Wil01l]{BOOKLET}
-  Peter Wilson.
-  \newblock \emph{Printing booklets with LaTeX}
-  \newblock August, 2001.
+\bibitem[Ber02]{JURABIB}
+  Jens Berger.
+  \newblock \emph{The titlesec and titletoc packages}.
+  \newblock September, 2002.
   \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/booklet})
+             \url{/macros/latex/contrib/titlesec})
 
-\bibitem[Wil03]{LEDMAC}
-  Peter Wilson.
-  \newblock \emph{ledmac: A presumptuous attaempt to port EDMAC and TABMAC
-                  to LaTeX}
-  \newblock November, 2003.
+\bibitem[Bez99]{TITLESEC}
+  Javier Bezos.
+  \newblock \emph{The titlesec and titletoc packages}.
+  \newblock February, 1999.
   \newblock (Available from CTAN in 
-            \url{/macros/latex/contrib/ledmac})
-
-\bibitem[Wil??]{RUMOUR}
-Peter Wilson.
-\newblock \emph{A Rumour of Humour: A scientist's commonplace book}.
-\newblock To be published?
-
-
-\bibitem[Zac69]{ZACHRISSOM69}
-  B.~Zachrissom.
-  \newblock \emph{Studies in the Legibility of Printed Text}.
-  \newblock Almqvist \& Wiksell, Stockholm, 1969.
+             \url{/macros/latex/contrib/titlesec})
 
-\bibitem[Zap00]{ZAPF00}
-  Hermann Zapf.
-  \newblock \emph{The Fine Art of Letters}.
-  \newblock The Grolier Club
-  \newblock (ISBN 0--910672--35--0), 2000.
+\bibitem[Bra94]{MAKEIDX}
+  Johannes Braams \textit{et al}.
+  \newblock \emph{Standard LaTeX2e packages makeidx and showidx}.
+  \newblock November, 1994.
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/base/makeindx.dtx(ins)})
 
+\bibitem[Bra97]{ALLTT}
+  Johannes Braams.
+  \newblock \emph{The alltt environment}.
+  \newblock June, 1997.
+  \newblock (Available from CTAN as 
+             \url{/macros/latex/base/alltt.dtx(ins)})
 
+\bibitem[Bri99]{BRINGHURST99}
+  Robert Bringhurst.
+  \newblock \emph{The Elements of Typographic Style}.
+  \newblock Hartley \& Marks, second edition,
+  \newblock 1999. ISBN 0--88179--033--8.
 
-\end{thebibliography}
+\bibitem[Bur59]{BURT59}
+  C.~L.~Burt.
+  \newblock \emph{A Psychological Study of Typography}.
+  \newblock Cambridge University Press,
+  \newblock 1959.
 
-\clearpage
-\pagestyle{index}
-%\renewcommand{\chaptermark}[1]{}
-\renewcommand{\preindexhook}{%
-The first page number is usually, but not always, the primary reference to
-the indexed topic.\vskip\onelineskip}
-\indexintoc
-\printindex
+\bibitem[Car94]{DELARRAY}
+  David Carlisle.
+  \newblock \emph{The delarray package}.
+  \newblock March, 1994.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-\cleardoublepage
-\pagestyle{empty}
-\null\vfil
+\bibitem[Car95]{AFTERPAGE}
+  David Carlisle.
+  \newblock \emph{The afterpage package}.
+  \newblock October, 1995.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-\begin{adjustwidth}{1in}{1in}
-\begin{center}
-{\Large\textsf{Colophon}}
-\end{center}
-\begin{center}
-This manual was typeset using the LaTeX typesetting system
-created by Leslie Lamport and the memoir class. 
-The body text is set 10/12pt on a
-33pc measure with Computer
-Modern Roman designed by Donald Knuth. Other fonts include
-Sans, Smallcaps, Italic, Slanted and Typewriter, all from Knuth's 
-Computer Modern family.
+\bibitem[Car98b]{LONGTABLE}
+  David Carlisle.
+  \newblock \emph{The longtable package}.
+  \newblock May, 1998.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-\end{center}
+\bibitem[Car98c]{ENUMERATE}
+  David Carlisle.
+  \newblock \emph{The enumerate package}.
+  \newblock August, 1998.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-\end{adjustwidth}
+\bibitem[Car98d]{REMRESET}
+  David Carlisle.
+  \newblock \emph{The remreset package}.
+  \newblock August, 1998.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/contrib/carlisle})
 
-\vfil
+\bibitem[Car99]{TABULARX}
+  David Carlisle.
+  \newblock \emph{The tabularx package}.
+  \newblock January, 1999.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-\end{document}
+\bibitem[CR99]{GRAPHICX}
+  David Carlisle and Sebastian Rahtz.
+  \newblock \emph{The graphicx package}.
+  \newblock February, 1999.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/graphics})
 
-\endinput
+\bibitem[Car01]{DCOLUMN}
+  David Carlisle.
+  \newblock \emph{The dcolumn package}.
+  \newblock May, 2001.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/tools})
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bibitem[Car05]{COLOR}
+  David Carlisle.
+  \newblock \emph{Packages in the graphics bundle} (includes the color package).
+  \newblock November, 2005.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/required/graphics})
 
-%%%%%%%%%%%%
-patchit  The addendum
-%%%%%%%%%%%
 
-% memmanadd.tex     Addendum to the Memoir class user manual
-%                   Author: Peter Wilson
-%                   Copyright 2002, 2003 Peter R. Wilson
-%                             All rights reserved
+\bibitem[CB99]{CHAPPELL99}
+  Warren Chappell and Robert Bringhurst.
+  \newblock \emph{A Short History of the Printed Word}.
+  \newblock Hartley \& Marks, 1999.
+  \newblock ISBN 0--88179--154--7.
 
+\bibitem[CH88]{CHEN88}
+  Pehong Chen and Michael A.~Harrison.
+  \newblock `Index Preparation and Processing'.
+  \newblock \emph{Software: Practice and Experience}, 19:8, pp. 897--915,
+            September, 1988.
+  \newblock (Available from CTAN in
+             \url{/indexing/makeindex/paper})
 
+\bibitem[Chi93]{CMS}
+  \newblock \emph{The Chicago Manual of Style}, Fourteenth Edition.
+  \newblock The University of Chicago, 1993.
+  \newblock ISBN 0--226--10389--7.
 
-%\AtBeginDocument{%
-%  \ifpdf
-%    \ifnum\pdfoutput>0\relax
-%      \pdfpageheight=\the\stockheight
-%      \pdfpagewidth=\the\stockwidth
-%      \pdfvorigin=1in
-%      \pdfhorigin=1in
-%    \fi
-%  \fi}
 
-%%%%%%%%%%%%%%%%%% change fonts
-%\renewcommand{\rmdefault}{ppl}   % palatino
-\usepackage{mempalatino}
-%%\usepackage{pifont}
+\bibitem[Coc02]{SUBFIGURE}
+  Steven Douglas Cochran.
+  \newblock \emph{The subfigure package}.
+  \newblock March, 2002.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/contrib/subfigure})
 
-%%%%%%\usepackage{amsmath}
+\bibitem[CG96]{CONWAY96}
+  John H.~Conway and Richard K.~Guy.
+  \newblock \emph{The Book of Numbers}.
+  \newblock Copernicus, Springer-Verlag, 1996.
+  \newblock ISBN 0--387--97993--X.
 
-\ifpdf
-  \pdfoutput=1
-  \usepackage[pdftex,
-              plainpages=false,
-              pdfpagelabels,
-  hyperfootnotes=false,
-              bookmarksnumbered
-             ]{hyperref} 
-  \usepackage{memhfixc}
-\else
-  \usepackage[plainpages=false,
-              pdfpagelabels,
-  hyperfootnotes=false,
-              bookmarksnumbered
-             ]{hyperref} 
-  \usepackage{memhfixc}
-\fi
+\bibitem[Cra92]{CRAIG92}
+  James Craig.
+  \newblock \emph{Designing with Type: A Basic Course in Typography}.
+  \newblock Watson-Guptill, NY,
+  \newblock 1992.
 
+\bibitem[Dal99a]{NATBIB}
+  Patrick W.~Daly.
+  \newblock \emph{Natural Sciences Citations and References}.
+  \newblock May, 1999.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/contrib/natbib})
 
-%\showindexmarktrue
+\bibitem[Dal99b]{MAKEBST}
+  Patrick W.~Daly.
+  \newblock \emph{Customizing Bibliographic Style Files}.
+  \newblock August, 1999.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/contrib/custom-bib})
 
-\newcommand{\theclass}{memoir}
+\bibitem[Deg92]{DEGANI92}
+  Asaf Degani.
+  \newblock \emph{On the Typography of Flight-Deck Documentation}.
+  \newblock NASA Contractor Report \# 177605.
+  \newblock December, 1992.
+  \newblock (Available from 
+             \url{http://members.aol.com/willadams/typgrphy.htm#NASA})
 
-\providecommand{\tx}{TeX}
-\providecommand{\ltx}{LaTeX}
 
-\newsubfloat{table}
+\bibitem[Dow96]{DOWDING96}
+  Geoffrey Dowding.
+  \newblock \emph{Finer Points in the Spacing \& Arrangement of Type}.
+  \newblock Hartley \& Marks, 1996.
+  \newblock ISBN 0--88179--119--9.
 
+\bibitem[Dow98]{DOWDING98}
+  Geoffrey Dowding.
+  \newblock \emph{An Introduction to the History of Printing Types}.
+  \newblock The British Library and Oak Knoll Press, 1998.
+  \newblock ISBN 0--7123--4563--9 \textsc{uk},
+                  1--884718--44--2 \textsc{usa}.
 
-\makeatletter
+\bibitem[Dow00]{PATCHCMD}
+  Michael J.~Downes.
+  \newblock \emph{The patchcmd package}.
+  \newblock July, 2000.
+  \newblock (Available from CTAN in
+             \url{/macros/latex/contrib/patchcmd})
 
-%%% Print and Index macros
-\newcommand{\Ppstyle}[1]{\textsl{#1}}
-\newcommand{\pstyle}[1]{\Ppstyle{#1}%
-            \index{#1 pages?\Ppstyle{#1} (pagestyle)}%
-            \index{pagestyle!#1?\Ppstyle{#1}}}            % pagestyle
-\newcommand{\Pcstyle}[1]{\textsl{#1}}
-\newcommand{\cstyle}[1]{\Pcstyle{#1}%
-            \index{#1 chaps?\Pcstyle{#1} (chapterstyle)}%
-            \index{chapterstyle!#1?\Pcstyle{#1}}}          % chapterstyle
-\newcommand{\Pclass}[1]{\textsf{#1}}
-\newcommand{\Lclass}[1]{\Pclass{#1}%
-            \index{#1 class?\Pclass{#1} (class)}%
-            \index{class!#1?\Pclass{#1}}}                % class name
-\newcommand{\Ppack}[1]{\textsf{#1}}
-\newcommand{\Lpack}[1]{\Ppack{#1}%
-            \index{#1 pack?\Ppack{#1} (package)}%
-            \index{package!#1?\Ppack{#1}}}              % package name
-\newcommand{\Popt}[1]{\textsf{#1}}
-\newcommand{\Lopt}[1]{\Popt{#1}%
-            \index{#1 opt?\Popt{#1} (option)}%
-            \index{option!#1?\Popt{#1}}}               % option name
-\newcommand{\Ie}[1]{\texttt{#1}\index{#1 env?\texttt{#1} (environment)}%
-                               \index{environment!#1?\texttt{#1}}}
-\newcommand{\Icn}[1]{\texttt{#1}\index{#1 cou?\texttt{#1} (counter)}%
-                                \index{counter!#1?\texttt{#1}}}
-\newcommand{\Itt}[1]{\texttt{#1}\index{#1tt?\texttt{#1}}}
-
-% print and index an \if... \piif{if...}
-\newcommand{\piif}[1]{\cs{#1}\index{#1?\cs{#1}}}
-
-% index command \!
-\newcommand{\iexcl}{\index{"!?\cs{!}}}
-
-%%%\newcommand{\seealso}[2]{\emph{see also} #1}
-
-\newcommand{\listofx}{`List of\ldots'}
-
-% print a begin environment
-\newcommand{\senv}[1]{\texttt{\bs begin\{#1\}}}
-
-% print an end environment
-\newcommand{\eenv}[1]{\texttt{\bs end\{#1\}}}
-
-% print a file name
-\newcommand{\file}[1]{\texttt{#1}}
-
-% print and index a file name
-\newcommand{\ixfile}[1]{\file{#1}%
-            \index{#1 file?\file{#1} (file)}%
-            \index{file!#1?\file{#1}}}
-
-% print CTT
-\newcommand{\ctt}{\textsc{ctt}}
-% print & index CTT
-\newcommand{\pictt}{\ctt\index{CTT?\ctt}}
-
-% index marking
-\newcommand{\idxmark}[1]{#1\markboth{#1}{#1}}
+\bibitem[Eij92]{TEXBYTOPIC}
+  Victor Eijkhout.
+  \newblock \emph{TeX by Topic}.
+  \newblock Addison-Wesley, 1992.
+  \newblock ISBN 0--201--56882--9.
+  \newblock (Available from \url{http://www.eijkhout.net/tbt/}).
 
-\newcommand{\foredge}{foredge}
-\newlength{\pwlayi}\setlength{\pwlayi}{0.45\textwidth} % 
-\newlength{\pwlayii}\setlength{\pwlayii}{0.45\pwlayi}
+\bibitem[Eij99]{COMMENT}
+  Victor Eijkhout.
+  \newblock \emph{comment.sty}
+  \newblock October, 1999.
+  \newblock (Available from CTAN in
+            \url{/macros/???????????})
 
-%% definition of \meta is taken from doc.dtx
-\begingroup
-\obeyspaces%
-\catcode`\^^M\active%
-\gdef\meta{\begingroup\obeyspaces\catcode`\^^M\active%
-\let^^M\do@space\let \do@space%
-\def\-{\egroup\discretionary{-}{}{}\hbox\bgroup\itshape}%
-\m@ta}%
-\endgroup
-\def\m@ta#1{\leavevmode\hbox\bgroup$\langle$\itshape#1\/$\rangle$\egroup
-    \endgroup}
-\def\do@space{\egroup\space
-    \hbox\bgroup\itshape\futurelet\next\sp@ce}
-\def\sp@ce{\ifx\next\do@space\expandafter\sp@@ce\fi}
-\def\sp@@ce#1{\futurelet\next\sp@ce}
-%% end of \meta and supports
-
-
-%% The definition of \MakeShortVerb & \DeleteShortVerb
-%% are now in the memoir class.
-
-%% The macros \cmd, \cs, \marg, \oarg, \parg are taken from ltxdoc.dtx
-% \cmd{\fred} typesets \fred
-\def\cmd#1{\cs{\expandafter\cmd@to@cs\string#1}}
-\def\cmd@to@cs#1#2{\char\number`#2\relax}
-% \cs{fred} typesets \fred
-\DeclareRobustCommand{\cs}[1]{\texttt{\char`\\#1}}
-% \marg{arg} typesets {<arg>}
-\providecommand{\marg}[1]{%
-  {\ttfamily\char`\{}\meta{#1}{\ttfamily\char`\}}}
-% \oarg{arg} typesets [<arg>]
-\providecommand{\oarg}[1]{%
-  {\ttfamily\char`\[}\meta{#1}{\ttfamily\char`\]}}
-% \parg{x,y} typesets (<x,y>)
-\providecommand{\parg}[1]{%
-  {\ttfamily\char`\(}\meta{#1}{\ttfamily\char`\)}}
-
-\def\bs{\texttt{\char`\\}}
-
-%%% macro \cmd from Heiko Oberdiek CTT 2001/05/26 (prints and indexes a command)
-\newcommand*{\cmdprint}[1]{\texttt{\string#1}}
-\def\cmd#1{\cmdprint{#1}%
-  \index{\expandafter\@gobble\string#1?\string\cmdprint{\string#1}}}
-
-% print and index \\!
-\newcommand{\pixslashbang}{\cmdprint{\\!}\index{"\"\"!?\string\cmdprint{\\}\texttt{"!}}}
-
-% print and index \!
-\newcommand{\pixabang}{\cmdprint{\!}\index{"!?\string\cs{}\texttt{"!}}}
-
-% print and index a length
-\newcommand{\lnc}[1]{\cmdprint{#1}%
-  \index{\expandafter\@gobble\string#1len?\string\cmdprint{\string#1} (length)}%
-  \index{length!\expandafter\@gobble\string#1len?\string\cmdprint{\string#1}}}
-
-%%%%%% stuff for new LaTeX code environment
-
-% \zeroseps sets list before/after skips to minimum values
-\newcommand{\@zeroseps}{\setlength{\topsep}{\z@}
-                        \setlength{\partopsep}{\z@}
-                        \setlength{\parskip}{\z@}}
-\newlength{\gparindent} \setlength{\gparindent}{\parindent}
-\setlength{\gparindent}{0.5\parindent}
-% now we can do the new environment. This has no extra before/after spacing.
-\newenvironment{lcode}{\@zeroseps
-  \renewcommand{\verbatim@startline}{\verbatim@line{\hskip\gparindent}}
-  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-  {\endverbatim
-   \vspace{-\baselineskip}%
-   \noindent
-}
+\bibitem[Fai98]{MOREVERB}
+  Robin Fairbairns.
+  \newblock \emph{The moreverb package}.
+  \newblock December, 1998.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/moreverb})
 
-%%%% this is the code environment for the book
-\newenvironment{bcode}{\@zeroseps
-  \renewcommand{\verbatim@processline}{%
-    \hskip\gparindent\the\verbatim@line\par}%
-  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-  {\endverbatim\noindent}
+\bibitem[Fai00]{FOOTMISC}
+  Robin Fairbairns.
+  \newblock \emph{footmisc --- a portmanteau package for customising
+                  footnotes in LaTeX2e}.
+  \newblock March, 2000.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/footmisc})
 
-%%%%%%%%%%%% for experiments
+\bibitem[FAQ]{FAQ}
+  Robin Fairbairns.
+  \newblock \emph{The UK TeX FAQ}.
+  \newblock (Available from CTAN in
+            \url{/help/uk-tex-faq})
 
-%\renewenvironment{lcode}{\@zeroseps
-%  \renewcommand{\verbatim@startline}{\verbatim@line{ * }}
-%  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-%  {\endverbatim
-%   \vspace{-\baselineskip}  
-%   \noindent % need the \noindent
-%}
+\bibitem[Fea03]{BOOKTABS}
+  Simon Fear.
+  \newblock \emph{Publication quality tables in LaTeX}.
+  \newblock March, 2003.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/booktabs})
 
-%\renewenvironment{bcode}{\@zeroseps
-%  \renewcommand{\verbatim@processline}{%
-%    * \the\verbatim@line\par}%
-%  \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-%  {\endverbatim\noindent}  % need the \noindent
+\bibitem[Fli98]{LETTRINE}
+  Daniel Flipo.
+  \newblock \emph{Typesetting `lettrines' in LaTeX2e documents}.
+  \newblock March, 1998.
+  \newblock (Available from CTAN in 
+             \url{/macros/latex/contrib/lettrine})
 
+\bibitem[Fly98]{FLYNN02}
+  Peter Flynn.
+  \newblock \emph{Formatting Information: A Beginner's Introduction to 
+                  Typesetting with LaTeX2}.
+  \newblock 2002.
+  \newblock (Available from CTAN in 
+             \url{/info/beginlatex})
 
+\bibitem[Fra00]{CROP}
+  Melchior Franz.
+  \newblock \emph{The crop package}.
+  \newblock February, 2000.
+  \newblock (Available from CTAN in 
+             \url{/macros/latex/contrib/crop})
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bibitem[FOS98]{FRIEDL98}
+  Friedrich Friedl, Nicolaus Ott and Bernard Stein.
+  \newblock \emph{Typography: An Encyclopedic Survey of Type Designs and
+                  Techniques throughout History}.
+  \newblock Black Dog \& Leventhal Publishers Inc., 1998.
+  \newblock ISBN 1--57912--023--7.
 
-%%%%% LaTeX syntax
-\newenvironment{syntax}{\begin{center}
-                        \begin{tabular}{|p{0.9\linewidth}|} \hline}%
-                       {\hline
-                        \end{tabular}
-                        \end{center}}
+\bibitem[Gar66]{GARDNER66}
+  Martin Gardner.
+  \newblock \emph{More Mathematical Puzzles and Diversions}.
+  \newblock Penguin Books, 1996.
+  \newblock ISBN 0--14--020748--1.
+
+%\bibitem[GMS94]{GOOSSENS94}
+%  Michel Goossens, Frank Mittelbach and Alexander Samarin.
+%  \newblock \emph{The LaTeX Companion}.
+%  \newblock Addison-Wesley Publishing Company, 1994
+%  \newblock (ISBN 0--201--54199--8), 1994.
+
+\bibitem[GM\textsuperscript{+}07]{GCOMPANION}
+  Michel Goossens, Frank Mittelbach, et al.
+  \newblock \emph{The LaTeX Graphics Companion: Second edition}.
+  \newblock Addison-Wesley, 2007.
+  \newblock ISBN 0--321--50892--0.
+
+\bibitem[GR99]{WCOMPANION}
+  Michel Goossens and Sebastian Rahtz (with Eitan Gurari,
+  Ross Moore and Robert Sutor).
+  \newblock \emph{The LaTeX Web Companion: Integrating TeX, HTML and XML}.
+  \newblock Addison-Wesley, 1999.
+  \newblock ISBN 0--201--43311--7.
 
-%%%%%%%%%%%%%%%%%% index pagestyle
-\makepagestyle{index}
-  \makeheadrule{index}{\textwidth}{\normalrulethickness}
-  \makeevenhead{index}{\rightmark}{}{\leftmark}
-  \makeoddhead{index}{\rightmark}{}{\leftmark}
-  \makeevenfoot{index}{\thepage}{}{}
-  \makeoddfoot{index}{}{}{\thepage}
+\bibitem[Gou87]{GOULD87}
+  J.~D.~Gould \textit{et al}.
+  \newblock `Reading from CRT displays can be as fast as reading from paper'.
+  \newblock \emph{Human Factors}, pp 497--517, 29:5, 1987.
 
+\bibitem[HR83]{HARTLEY83}
+  J.~Hartley and D.~Rooum.
+  \newblock `Sir Cyril Burt and typography'.
+  \newblock \emph{British Journal of Psychology}, pp 203--212, 74:2, 1983.
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%Date: Tue, 22 Jul 2003 19:27:13 +0200
-%From: Bastiaan Veelo <Bastiaan.N.Veelo@immtek.ntnu.no>
-%Newsgroups: comp.text.tex
-%CC: "Wilson, Peter R" <peter.r.wilson@boeing.com>
-%Subject: [memoir] [contrib] New chapter style
-%
-%Hello all,
-%
-%In case anyone is interested, I thought I'd share a new chapter style to 
-%be used with the memoir class by Peter Wilson. The style is tailored at 
-%documents that are to be trimmed to a smaller width. When the binded 
-%document is bent, black tabs will appear on the fore side at the places 
-%where new chapters start, as a navigational aid. Sample attached.
-%
-%Regards,
-%Bastiaan.
+\bibitem[HM01]{HELLER01}
+  Steven Heller and Philip B.~Meggs (Eds).
+  \newblock \emph{Texts on Type: Critical Writings on Typography}.
+  \newblock Allworth Press, 2001.
+  \newblock ISBN 1--58115--082--2.
 
-%% A new chapter style, that suits well for trimmed documents.
-%% We are scaling the chapter number, which most DVI viewers
-%% will not display accurately.
-\makeatletter
-   \newlength{\numberheight}
-   \newlength{\barlength}
-%\makechapterstyle{trim}{%
-\makechapterstyle{veelo}{%
-   \setlength{\beforechapskip}{40pt}
-   \setlength{\midchapskip}{25pt}
-   \setlength{\afterchapskip}{40pt}
-   \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright}
-   \renewcommand{\chapnumfont}{\normalfont\HUGE}
-   \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
-   \renewcommand{\printchaptername}{%
-     \chapnamefont\MakeUppercase{\@chapapp}}
-   \renewcommand{\chapternamenum}{}
-%   \newlength{\numberheight}
-%   \newlength{\barlength}
-   \setlength{\numberheight}{18mm}
-   \setlength{\barlength}{\paperwidth}
-   \addtolength{\barlength}{-\textwidth}
-   \addtolength{\barlength}{-\spinemargin}
-   \renewcommand{\printchapternum}{%
-     \makebox[0pt][l]{%
-       \hspace{.8em}%
-       \resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
-       \hspace{.8em}%
-       \rule{\barlength}{\numberheight}
-     }
-   }
-   \makeoddfoot{plain}{}{}{\thepage}
-}
-\makeatother
+\bibitem[Hoe98]{HOENIG98}
+  Alan Hoenig.
+  \newblock \emph{TeX Unbound: LaTeX and TeX strategies for fonts,
+                  graphics, and more}.
+  \newblock Oxford University Press, 1998.
+  \newblock ISBN 0--19--509686--X.
 
-%%\chapterstyle{veelo}
+\bibitem[HK75]{HVISTENDAHL75}
+  J.~K.~Hvistendahl and M.~R.~Kahl.
+  \newblock `Roman vs. sans serif body type: Readability and reader prference'.
+  \newblock \emph{AANPA News Research Bulletin}, pp 3--11, 17 Jan., 1975.
 
 
-\MakeShortVerb{\|}
-% \DeleteShortVerb{\|}
+\bibitem[Jon95]{INDEX}
+  David M.~Jones.
+  \newblock \emph{A new implementation of LaTeX's indexing commands}.
+  \newblock September, 1995.
+  \newblock (Available from CTAN in \url{/macros/latex/contrib/camel})
 
+\bibitem[Keh98]{XINDY}
+  Roger Kehr.
+  \newblock \emph{xindy: A flexible indexing system}.
+  \newblock February, 1998.
+  \newblock (Available from CTAN in \url{/indexing/xindy})
 
-%%% need more space for ToC page numbers
-\setpnumwidth{2.55em}
-\setrmarg{3.55em}
+\bibitem[Ker07]{XCOLOR}
+  Uwe Kern.
+  \newblock \emph{Extending LaTeX's color facilities: the xcolor package}.
+  \newblock January, 2007.
+  \newblock (Available from CTAN in 
+             \url{/macros/latex/contrib/xcolor})
 
-%%% need more space for ToC section numbers
-\cftsetindents{section}{1.5em}{3.0em}
-\cftsetindents{subsection}{4.5em}{3.9em}
-\cftsetindents{subsubsection}{8.4em}{4.8em}
-\cftsetindents{paragraph}{10.7em}{5.7em}
-\cftsetindents{subparagraph}{12.7em}{6.7em}
+\bibitem[Knu84]{TEXBOOK}
+  Donald E.~Knuth.
+  \newblock \emph{The TeXbook}.
+  \newblock Addison-Wesley, 1984.
+  \newblock ISBN 0--201--13448--9.
 
-%%% need more space for LoF numbers
-\cftsetindents{figure}{0em}{3.0em}
+\bibitem[Knu86]{TEXPROGRAM}
+  Donald E.~Knuth.
+  \newblock \emph{TeX: The Program}.
+  \newblock Addison-Wesley, 1986.
+  \newblock ISBN 0--201--13437--3.
 
-%%% and do the same for the LoT
-\cftsetindents{table}{0em}{3.0em}
+\bibitem[Knu87]{CM}
+  Donald E.~Knuth.
+  \newblock \emph{Computer Modern Typefaces}.
+  \newblock Addison-Wesley, 1987.
+  \newblock ISBN 0--201--134446--2.
 
+\bibitem[Knu92]{METAFONT}
+  Donald E.~Knuth.
+  \newblock \emph{The METAFONT Book}.
+  \newblock Addison-Wesley, 1992.
+  \newblock ISBN 0--201--13444--6.
 
-%%% set up the page layout
-\settrimmedsize{11in}{210mm}{*}
-\setlength{\trimtop}{0pt}
-\setlength{\trimedge}{\stockwidth}
-\addtolength{\trimedge}{-\paperwidth}
-\settypeblocksize{7.75in}{33pc}{*}
-\setulmargins{4cm}{*}{*}
-\setlrmargins{1.25in}{*}{*}
-\setmarginnotes{17pt}{51pt}{\onelineskip}
-\setheadfoot{\onelineskip}{2\onelineskip}
-\setheaderspaces{*}{2\onelineskip}{*}
-\checkandfixthelayout
+\bibitem[Lam94]{LAMPORT94}
+  Leslie Lamport.
+  \newblock \emph{LaTeX: A Document Preparation System}.
+  \newblock Addison-Wesley, 1994.
+  \newblock ISBN 0--201--52983--1.
 
+\bibitem[LEB04]{NTG}
+  Leslie Lamport, Victor Eijkhout and Johannes Braams.
+  \newblock \emph{NTG document classes for LaTeX version 2e}.
+  \newblock June, 2004.
+  \newblock (Available from CTAN in \url{/macros/latex/contrib/ntg})
 
-\bibliographystyle{alpha}
+\bibitem[LMB99]{CLASSES}
+  Leslie Lamport, Frank Mittelbach and Johannes Braams.
+  \newblock \emph{Standard document classes for LaTeX version 2e}.
+  \newblock September, 1999.
+  \newblock (Available from CTAN as \url{/macros/latex/base/classes.dtx})
 
-\newcommand{\prtoc}{ToC}             % print ToC
-\newcommand{\prlof}{LoF}
-\newcommand{\prlot}{LoT}
-\newcommand{\ixtoc}{\index{ToC}}     % index ToC
-\newcommand{\ixlof}{\index{LoF}}
-\newcommand{\ixlot}{\index{LoT}}
-\newcommand{\toc}{\prtoc\ixtoc}      % print & index ToC
-\newcommand{\lof}{\prlof\index{LoF}}
-\newcommand{\lot}{\prlot\index{LoT}}
+\bibitem[Law90]{LAWSON90}
+  Alexander Lawson.
+  \newblock \emph{Anatomy of a Typeface}.
+  \newblock David R.~Godine, 1990. 
+  \newblock ISBN 0--87923--333--8.
 
-\newcommand{\noidxnum}[1]{}
+\bibitem[Lea03]{TEXFONTSITE}
+  Christopher League.
+  \newblock \emph{TeX support for the FontSite 500 CD}.
+  \newblock May 2003.
+  \newblock (Available from 
+             \url{http://contrapunctus.net/fs500tex})
 
-\newcommand{\Note}{\textbf{NOTE:}}
+\bibitem[Leh04]{FONTINST}
+  Philipp Lehman.
+  \newblock \emph{The Font Installation Guide}.
+  \newblock December 2004.
+  \newblock (Available from CTAN in 
+             \url{/info/Type1fonts/fontinstallationguide})
 
-%%% subfigures
-\newsubfloat{figure}
-\tightlists
+\bibitem[Leu92]{LEUNEN92}
+  Mary-Claire van Leunen.
+  \newblock \emph{A Handbook for Scholars}.
+  \newblock Oxford University Press, 1992.
+  \newblock ISBN 0--19--506954--4.
 
-%% end preamble
-\typeout{The end of the preamble, begin document is next}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{document}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bibitem[Liv02]{LIVIO02}
+  Mario Livio.
+  \newblock \emph{The Golden Ratio: The Story of Phi, the World's Most
+     Astonishing Number}.
+  \newblock Broadway Books, 2002.
+  \newblock ISBN 0--7679--0816--3.
 
-%% list subfigures
-\setcounter{lofdepth}{2}
+\bibitem[Lon91]{MULTIND}
+  F.~W.~Long.
+  \newblock \emph{multind}.
+  \newblock August, 1991.
+  \newblock (Available from CTAN as \url{/macros/latex209/contrib/misc/multind.sty})
 
-\index{counter|noidxnum}
-\index{file|noidxnum}
-\index{environment|noidxnum}
-\index{length|noidxnum}
-\index{package|noidxnum}
-\index{option|noidxnum}
+\bibitem[Mad06]{CHAPSTYLES}
+  Lars Madsen.
+  \newblock \emph{Various chapter styles for the memoir class}.
+  \newblock July, 2006.
+  \newblock (Available from CTAN in \url{/info/latex-samples/MemoirChapStyles})
 
-\index{pagestyle|noidxnum}
-\index{chapterstyle|noidxnum}
+\bibitem[Mad07]{MEMEXSUPP}
+  Lars Madsen.
+  \newblock \emph{The Memoir Experimental Support Package}.
+  \newblock 2007.
+  \newblock (Available from CTAN in \url{/macros/latex/contrib/memexsupp})
 
-\begin{comment}
-\index{table of contents|see{ToC}}
-\index{list!of figures|see{LoF}}
-\index{figure!list of|see{LoF}}
-\index{list!of tables|see{LoT}}
-\index{table!list of|see{LoT}}
-\index{marginal note|see{marginalia}}
-\index{footnote!in title|see{thanks}}
-\index{counter|noidxnum}
-\index{length|noidxnum}
-\index{list|noidxnum}
-\index{illustration|seealso{float, figure}}
-\index{figure|seealso{float}}
-\index{table|seealso{float}}
-\index{chapter!style|see{chapterstyle}}
-\index{chapter!heading|see{heading}}
-\index{page!style|see{pagestyle}}
-\index{part!heading|see{heading}}
-\index{subfloat|noidxnum}
-\end{comment}
+\bibitem[McD98]{SECTSTY}
+  Rowland McDonnell.
+  \newblock \emph{The sectsty package}.
+  \newblock November, 1998.
+  \newblock (Available from CTAN in 
+             \url{/macros/latex/contrib/secsty})
 
-%%% ToC down to subsections
-\settocdepth{subsection}
-\frontmatter
-\pagestyle{empty}
+\bibitem[McL75]{MCLEAN75}
+  Ruari McLean.
+  \newblock \emph{Jan Tschichold: Typographer}.
+  \newblock David R.~Godine, 1975.
+  \newblock ISBN 0--87923--841--0.
 
+\bibitem[McL80]{MCLEAN80}
+  Ruari McLean.
+  \newblock \emph{The Thames \& Hudson Manual of Typography}.
+  \newblock Thames \& Hudson, 1980.
+  \newblock ISBN 0--500--68022--1.
 
-% ToC, etc
-\pagenumbering{roman}
-%%\pagestyle{headings}
-\pagestyle{ruled}
-\chapterstyle{demo}
-%%\chapterstyle{veelo}
+\bibitem[McL95]{MCLEAN95}
+  Ruari McLean (Ed).
+  \newblock \emph{Typographers on Type}.
+  \newblock W.~W.~Norton \& Co., 1995.
+  \newblock ISBN 0--393--70201--4.
 
-% change sections and subsections
-\setsecheadstyle{\bfseries\raggedright}
-\setsubsecheadstyle{\scshape\raggedright}
-\setsubsubsecheadstyle{\itshape\raggedright}
+\bibitem[Mit95]{DOCSHORTVRB}
+  Frank Mittelbach.
+  \newblock \emph{The doc and shortvrb packages}.
+  \newblock May, 1995.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/base})
 
+\bibitem[Mit98]{MULTICOL}
+  Frank Mittelbach.
+  \newblock \emph{An environment for multicolumn output}.
+  \newblock January, 1998.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/required/tools})
 
-%% Short contents and Different ToC style
-\renewcommand{\contentsname}{Short contents}
-\let\oldchangetocdepth\changetocdepth
-\renewcommand{\changetocdepth}[1]{}
-\setcounter{tocdepth}{0} % chapters
-\renewcommand{\cftchapterfont}{\hfill\sffamily}
-\renewcommand{\cftchapterleader}{ \textperiodcentered\space}
-\renewcommand{\cftchapterafterpnum}{\cftparfillskip}
-\setpnumwidth{0pt}
-\setrmarg{0.3\textwidth}
-\tableofcontents
-\clearpage
+\bibitem[MC98]{ARRAY}
+  Frank Mittelbach and David Carlisle.
+  \newblock \emph{A new implementation of LaTeX's tabular and array environment}.  \newblock May, 1998.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/required/tools})
 
-%%% have subsections as a paragraph in the ToC
-\makeatletter
-\let\oldnumberline\numberline
-\renewcommand{\cftsubsectionfont}{\itshape}
-\renewcommand{\cftsubsectionpagefont}{\itshape}
-\renewcommand{\l@subsection}[2]{\relax
-  \def\numberline##1{\textit{##1}~}%
-  \leftskip=\cftsubsectionindent
-  \rightskip=\@tocrmarg
-%  \advance\rightskip \z@ plus \hsize % uncomment this for raggedright
-%  \advance\rightskip \z@ plus 2em % uncomment this for semi-raggedright
-  \parfillskip=\fill
-  \ifhmode ,\ \else\noindent\fi
-  \ignorespaces {\cftsubsectionfont #1}~{\cftsubsectionpagefont #2}%\ignorespaces
-  \let\numberline\oldnumberline\ignorespaces
-}
-\AtEndDocument{\addtocontents{toc}{\par}}
-\makeatother
+\bibitem[MC00]{FIXLTX2E}
+  Frank Mittelbach and David Carlisle.
+  \newblock \emph{The fixltx2e package}.
+  \newblock September, 2000.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/base})
 
+\bibitem[MG\textsuperscript{+}04]{COMPANION}
+  Frank Mittelbach, Michael Goossens, et al.
+  \newblock \emph{The LaTeX Companion: Second Edition}.
+  \newblock Addison-Wesley, 2004.
+  \newblock ISBN 0--201--36299--6.
 
+\bibitem[Mor99]{MORISON99}
+  Stanley Morison.
+  \newblock \emph{A Tally of Types}.
+  \newblock David R. Godine, 1999.
+  \newblock ISBN 1--56792--004--7.
 
-%% Default contents
-\renewcommand{\contentsname}{Contents}
-\let\changetocdepth\oldchangetocdepth
-\renewcommand{\cftchapterfont}{\normalfont\sffamily}
-\renewcommand{\cftchapterleader}{\sffamily\cftdotfill{\cftchapterdotsep}}
-\renewcommand{\cftchapterafterpnum}{}
-\makeatletter
-\renewcommand{\cftchapterbreak}{\par\addpenalty{-\@highpenalty}}
-\makeatother
-\setpnumwidth{2.55em}
-\setrmarg{3.55em}
-\setcounter{tocdepth}{2}
-\tableofcontents
-%\clearpage
-%\listoffigures
-%\clearpage
-%\listoftables
+\bibitem[NG98]{SIDECAP}
+  Rolf Niespraschk and Hubert G\"{a}\ss{}lein. 
+  \newblock \emph{The sidecap package}.
+  \newblock June, 1998.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/sidecap})
 
+\bibitem[Oet]{LSHORT}
+  Tobias Oetiker.
+  \newblock \emph{The Not So Short Introduction to LaTeX2e}.
+  \newblock (Available from CTAN in 
+            \url{/info/lshort/english})
 
-\cleardoublepage
-\pagenumbering{arabic}
-\mainmatter
+\bibitem[Oos96]{FANCYHDR}
+  Piet van Oostrum.
+  \newblock \emph{Page Layout in LaTeX}.
+  \newblock June, 1996.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/fancyhdr})
 
+\bibitem[Pak01]{SYMBOLS}
+  Scott Pakin.
+  \newblock \emph{The Comprehensive LaTeX Symbol List}.
+  \newblock July, 2001.
+  \newblock (Available from CTAN in 
+            \url{/info/symbols/comprehensive})
 
+\bibitem[dP84]{PARVILLE84}
+  H.~de~Parville.
+  \newblock Recreations mathematique: {La Tour d'Hanoi} et la question 
+            du {Tonkin}.
+  \newblock \emph{La Nature}, part {I}:285--286, Paris 1884.
 
+\bibitem[Pat88a]{BIBTEX}
+  Oren Patashnik.
+  \newblock \emph{BibTeXing}.
+  \newblock February, 1988.
+  \newblock (Available from CTAN as 
+            \url{/bibliography/bibtex/distribs/doc/btxdoc.tex})
 
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeleteShortVerb{\|}
-\MakeShortVerb{\=}
-\input{tabmanbody}  %% rows & columns
-\DeleteShortVerb{\=}
-\MakeShortVerb{\|}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\bibitem[Pat88b]{BIBTEXHACK}
+  Oren Patashnik.
+  \newblock \emph{Designing BibTeX Styles}.
+  \newblock February, 1988.
+  \newblock (Available from CTAN as 
+            \url{/bibliography/bibtex/distribs/doc/btxhak.tex})
 
+\bibitem[Pug02]{MATHPAZO}
+  Diego Puga.
+  \newblock \emph{The Pazo Math fonts for mathematical typesetting
+                  with the Palatino fonts}.
+  \newblock May, 2002.
+  \newblock (Available from CTAN in 
+            \url{/fonts/mathpazo})
 
-\chapterstyle{veelo}
-\chapter{Miscellaneous} \label{chap:misc}
+\bibitem[Rahtz01]{NAMEREF}
+  Sebastian Rahtz.
+  \newblock \emph{Section name references in LaTeX}.
+  \newblock January, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/hyperref})
 
-\section{Chapter style}
+\bibitem[Rahtz02]{HYPERREF}
+  Sebastian Rahtz.
+  \newblock \emph{Hypertext marks in LaTeX}.
+  \newblock May, 2002.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/hyperref})
 
-    Bastiaan Veelo\footnote{\texttt{Bastiaan.N.Veelo@immtek.ntnu.no}} 
-posted the code for a new chapter style to \pictt{} on 2003/07/22 under the
-title \textit{[memoir] [contrib] New chapter style}. His code, which
-I have slightly modified and changed the name to \cstyle{veelo},
-is below. I have also exercised editorial privilege on his comments.
+\bibitem[Rec97]{EPSLATEX}
+  Keith Reckdahl.
+  \newblock \emph{Using Imported Graphics in LaTeX2e}.
+  \newblock December, 1997.
+  \newblock (Available from CTAN as
+             \url{/info/epspatex.ps} or \url{/info/epslatex.pdf})
 
-\begin{quote}
- I thought I'd share a new chapter style to be used with the memoir class 
- The style is tailored for documents that are to be trimmed to a smaller 
- width. When the bound document is bent, black tabs will appear on the 
- fore side at the places where new chapters start as a navigational aid.
- We are scaling the chapter number, which most DVI viewers
- will not display accurately. \\[0.5\onelineskip]
-Bastiaan.
-\end{quote}
+\bibitem[Reh72]{REHE72}
+  Rolf Rehe.
+  \newblock `Type and how to make it most legible'.
+  \newblock \emph{Design Research International}, 1972.
 
-\begin{lcode}
-\makeatletter
-\newlength{\numberheight}
-\newlength{\barlength}
-\makechapterstyle{veelo}{%
-   \setlength{\beforechapskip}{40pt}
-   \setlength{\midchapskip}{25pt}
-   \setlength{\afterchapskip}{40pt}
-   \renewcommand{\chapnamefont}{\normalfont\LARGE\flushright}
-   \renewcommand{\chapnumfont}{\normalfont\HUGE}
-   \renewcommand{\chaptitlefont}{\normalfont\HUGE\bfseries\flushright}
-   \renewcommand{\printchaptername}{%
-     \chapnamefont\MakeUppercase{\@chapapp}}
-   \renewcommand{\chapternamenum}{}
-%   \newlength{\numberheight}
-%   \newlength{\barlength}
-   \setlength{\numberheight}{18mm}
-   \setlength{\barlength}{\paperwidth}
-   \addtolength{\barlength}{-\textwidth}
-   \addtolength{\barlength}{-\spinemargin}
-   \renewcommand{\printchapternum}{%
-     \makebox[0pt][l]{%
-       \hspace{.8em}%
-       \resizebox{!}{\numberheight}{\chapnumfont \thechapter}%
-       \hspace{.8em}%
-       \rule{\barlength}{\numberheight}
-     }
-   }
-   \makeoddfoot{plain}{}{}{\thepage}
-}
-\makeatother
-\end{lcode}
+\bibitem[Rei07]{REINGOLD07}
+  Edward M. Reingold.
+  \newblock `Writing numbers in words in TeX'.
+  \newblock TUGboat, 28, 2 pp 256--259, 2007.
 
-    The style requires the \Lpack{graphicx} package because of the 
-\cmd{\resizebox} macro. I have removed the two \cmd{\newlength} macros to
-outside the \cmd{\makechapterstyle} code just in case the style is called more
-than once in a document (otherwise there will be `command already defined' 
-complaints).
+\bibitem[RAE71]{ROBINSON71}
+  D.~O.~Robinson, M.~Abbamonte and S.~H.~Evans.
+  \newblock `Why serifs are important: The perception of small print'.
+  \newblock \emph{Visible Language}, pp 353--359, 4, 1971.
 
-    As a demonstration, this chapter uses the \cstyle{veelo} chapterstyle.
-The style works best for chapters that start on recto pages.
+\bibitem[Rog43]{ROGERS43}
+  Bruce Rogers.
+  \newblock \emph{Paragraphs on Printing}.
+  \newblock William E. Rudge's Sons, Inc., 1943.
+  \newblock (Reissued by Dover, 1979, ISBN 0--486--23817--2)
 
+\bibitem[Rog49]{ROGERS49}
+  Bruce Rogers.
+  \newblock \emph{Centaur Types}.
+  \newblock October House, 1949.
 
-\section{Cross referencing} \label{sec:xref}
+\bibitem[RBC74]{ROUSEBALL}
+  W. W. Rouse Ball and H. S. M. Coxeter. 
+  \newblock \emph{Mathematical Recreations and Essays}.
+  \newblock University of Toronto Press, twelfth edition, 1974.
 
-%This is section \currenttitle.
+\bibitem[SW94]{EBOOK}
+  Douglas Schenck and Peter Wilson.
+  \newblock \emph{Information Modeling the EXPRESS Way}.
+  \newblock Oxford University Press, 1994.
+  \newblock ISBN 0--19--508714--3.
 
-    The class provides the normal \cmd{\label} and \cmd{\ref} macros
-for numeric cross-referencing. For example, the following code and typeset
-result
-\begin{lcode}
-Chapter~\ref{chap:mempack} starts on page~\pageref{chap:mempack}.
-\end{lcode}
-Chapter~\ref{chap:mempack} starts on page~\pageref{chap:mempack}.
+\bibitem[SRR99]{VERBATIM}
+  Rainer Sch\"{o}pf, Bernd Raichle and Chris Rowley.
+  \newblock \emph{A New Implementation of LaTeX's verbatim
+                  and verbatim* Environments}.
+  \newblock December, 1999.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/required/tools})
 
+\bibitem[Sch97]{SCHRIVER97}
+  Karen A.~Schriver.
+  \newblock \emph{Dynamics in Document Design}.
+  \newblock Wiley \& Sons, 1997.
 
-    It can be useful to refer to parts of a document by name rather than
-number, as in
-\begin{lcode}
-The chapter \textit{\titleref{chap:mempack}} describes \ldots
-\end{lcode}
-The chapter \textit{\titleref{chap:mempack}} describes \ldots
+\bibitem[Tal06]{DATETIME}
+  Nicola L. C. Talbot.
+  \newblock \emph{datetime.sty: Formatting Current Date and Time}.
+  \newblock December, 2006.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/datetime})
 
-    There are two packages, \Lpack{nameref} and \Lpack{titleref},
- that let you refer to things by name instead of number.
+\bibitem[Thi98]{ORNAMENTAL}
+  Christina Thiele.
+  \newblock `Hey --- it works: Ornamental rules'. 
+  \newblock \emph{TUGboat}, 
+  \newblock vol. 19, no. 4, p 427, December 1998.
 
-    Name references were added to the class as a consequence of adding
-a second optional argument to the sectioning commands. I found
-that this broke the \Lpack{nameref} package, and hence the
-\Lpack{hyperref} package as well, so they had to be fixed. The change 
-also broke Donald Arseneau's \Lpack{titleref} package, and it turned out
-that \Lpack{nameref} also clobbered \Lpack{titleref}. The class also
-provides titles, like \cmd{\poemtitle}, that are not recognised by
-either of the packages. From my viewpoint the most efficient
-thing to do was to enable the class itself to provide name 
-referencing.
+\bibitem[Thi99]{TTC199}
+  Christina Thiele.
+  \newblock `The Treasure Chest: Package tours from CTAN', 
+  \newblock \emph{TUGboat}, 
+  \newblock vol. 20, no. 1, pp 53--58, March 1999.
 
-\begin{syntax}
-\cmd{\label}\marg{key} \cmd{\ref}\marg{key} \cmd{\pageref}\marg{key} \\
-\cmd{\titleref}\marg{key} \\
-\cmd{\headnamereftrue} \cmd{\headnamereffalse} \\
-\end{syntax}
-The macro \cmd{\titleref} is an addition to the usual set of cross referencing
-commands. Instead of typesetting a number it typesets the title associated
-with the labelled number. This is, of course, only useful if there is an
-associated title, such as from a \cmd{\caption} or \cmd{\section} command.
-As a bad example:
-\begin{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc.       \label{sec:xref:item1}
-...
-\item Items in numbered lists, etc. \ldots \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section 
-\textit{\titleref{sec:xref}} lists other things.
-\end{lcode}
-Labelling for \verb?\titleref? may be applied to:
-\begin{enumerate}
-\item Chapters, sections, etc.       \label{sec:xref:item1}
-\item Captions                       \label{sec:xref:item2}
-\item Legends
-\item Poem titles
-\item Items in numbered lists, etc.  \label{sec:xref:item3}
-\end{enumerate}
-Item \ref{sec:xref:item2} in section~\ref{sec:xref} mentions captions
-while item \titleref{sec:xref:item3} in the same section 
-\textit{\titleref{sec:xref}} lists other things.
+\bibitem[TJ05]{CALC}
+  Kresten Krab Thorup, Frank Jensen (and Chris Rowley).
+  \newblock \emph{The calc package --- Infix notation arithmetic in LaTeX}.
+  \newblock August, 2005.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/required})
 
+\bibitem[Tin63]{TINKER63}
+  Miles A.~Tinker.
+  \newblock \emph{Legibility of Print}.
+  \newblock Books on Demand (University Microfilms International), 1963.
 
-    As the above example shows, you have to be a little careful in using
-\cmd{\titleref}.
-Generally speaking, \cmd{\titleref}\marg{key} produces the last named 
-thing before the \cmd{\label} that defines the \meta{key}. 
+\bibitem[Tob00]{SETSPACE}
+  Geoffrey Tobin.
+  \newblock \emph{setspace.sty}.
+  \newblock December, 2000.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/setspace})
 
-    Chapters, and the lower level sectional divisions, may have three
-different title texts --- the main title, the title in the ToC, and a third
-in the page header. By default (\cmd{\headnamereffalse}) the ToC title
-is produced by \cmd{\titleref}. Following the declaration
-\cmd{\headnamereftrue} the text intended for page headers will be produced.
+\bibitem[Tsc91]{TSCHICHOLD91}
+  Jan Tschichold.
+  \newblock \emph{The Form of the Book}.
+  \newblock Lund Humphries, 1991.
+  \newblock ISBN 0--85331--623--6.
 
-\Note{} Specifically with the \Lclass{memoir} class, 
-do not put a \cmd{\label} command inside an
-argument to a \cmd{\chapter} or \cmd{\section} or \cmd{\caption}, etc.,
-command. Most likely it will either be ignored or referencing it will
-produce incorrect values. This restriction does not apply to the standard
-classes, but in any case I think it is good practice not to embed any 
-\cmd{\label} commands.
+\bibitem[Tuf83]{TUFTE83}
+  Edward R. Tufte.
+  \newblock \emph{The Visual Display of Quantative Information}.
+  \newblock Graphics Press, 1983.
 
-\begin{syntax}
-\cmd{\currenttitle} \\
-\end{syntax}
-    If you just want to refer to the current title you can do so with
-\cmd{\currenttitle}. This acts as though there had been a label associated
-with the title and then \cmd{\titleref} had been used to refer to that label.
-For example:
-\begin{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
-\end{lcode}
-This sentence in the section titled `\currenttitle' is an example of the
-use of the command \verb?\currenttitle?.
 
+\bibitem[Ume99]{GEOMETRY}
+  Hideo Umeki.
+  \newblock \emph{The geometry package}.
+  \newblock November, 1999.
+  \newblock (Available from CTAN in
+            \url{/macros/latex/contrib/geometry})
 
-\begin{syntax}
-\cmd{\theTitleReference}\marg{num}\marg{text} \\
-\end{syntax}
-Both \cmd{\titleref} and \cmd{\currenttitle} use the \cmd{\theTitleReference}
-to typeset the title. This is called with two arguments --- 
-the number, \meta{num}, and the text, \meta{text}, of the title. The
-default definition is:
-\begin{lcode}
-\newcommand{\theTitleReference}[2]{#2}
-\end{lcode}
-so that only the \meta{text} argument is printed. You could, for example,
-change the definition to
-\begin{lcode}
-\renewcommand{\theTitleReference}[2]{#1\space \textit{#2}}
-\end{lcode}
-to print the number followed by the title in italics. If you do this, only use
-\cmd{\titleref} for numbered titles, as a printed number for an 
-unnumbered title (a) makes no sense, and (b) will in any case be 
-incorrect.
 
-    The commands \cmd{\titleref}, \cmd{\theTitleReference} and 
-\cmd{\currenttitle} are direct equivalents of those in the \Lpack{titleref}
-package.
+\bibitem[Whe95]{WHEILDON95}
+  Colin Wheildon.
+  \newblock \emph{Type \& Layout}.
+  \newblock Strathmore Press, 1995.
+  \newblock ISBN 0--9624891--5--8.
 
-\begin{syntax}
-\cmd{\namerefon} \cmd{\namerefoff} \\
-\end{syntax}
-   Implementing name referencing has had an unfortunate side effect of
-turning some arguments into moving ones; the argument to the \cmd{\legend}
-command is one example. If you don't need name referencing you can turn
-it off by the \cmd{\namerefoff} declaration; the \cmd{\namerefon}
-declaration enables name referencing.
+\bibitem[Wil00]{CATALOGUE}
+  Graham Williams.
+  \newblock \emph{The TeX Catalogue}.
+  \newblock (Latest version on CTAN as \url{/help/Catalogue/catalogue.html})
 
-\section{Needing space}
+\bibitem[Wil93]{ADRIANWILSON93}
+  Adrian Wilson.
+  \newblock \emph{The Design of Books}.
+  \newblock Chronicle Books, 1993.
+  \newblock ISBN 0--8118--0304--X.
 
-    There are two new macros in addition to the original \cmd{\needspace}
-for reserving space at the bottom of a page. The \cmd{\needspace} macro 
-depends on penalties for deciding what to do which means that the reserved
-space is an approximation. However, except for the odd occasion, the
-macro gives adequate results. 
 
-\begin{syntax}
-\cmd{\Needspace}\marg{length} \\
-\cmd{\Needspace*}\marg{length} \\
-\end{syntax}
-    Like \cmd{\needspace}, the \cmd{\Needspace} macro checks if there is
-\meta{length} space at the bottom of the current page and if there is not
-it starts a new page. The command should only be used between paragraphs;
-indeed, the first thing it does is to call \cs{par}. The \cmd{\Needspace}
-command checks for the actual space left on the page and is more exacting
-than \cmd{\needspace}.
 
-    If either \cmd{\needspace} or \cmd{\Needspace} produce a short page it
-will be ragged bottom even if \cmd{\flushbottom} is in effect. With
-the starred \cmd{\Needspace*} version, short pages will be flush bottom
-if \cmd{\flushbottom} is in effect and will be ragged bottom
-when \cmd{\raggedbottom} is in effect.
+\bibitem[Wil99b]{TOCVSEC2}
+  Peter Wilson.
+  \newblock \emph{The tocvsec2 package}.
+  \newblock January, 1999.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/tocvsec2})
 
-    Generally speaking, use \cmd{\needspace} in preference to \cmd{\Needspace}
-unless it gives a bad break or the pages must be flush bottom.
+\bibitem[Wil00a]{EPIGRAPH}
+  Peter Wilson.
+  \newblock \emph{The epigraph package}.
+  \newblock February, 2000.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/epigraph})
 
-\section{Minor space adjustment}
+\bibitem[Wil00b]{ISOCLASS}
+  Peter Wilson.
+  \newblock \emph{LaTeX files for typesetting ISO standards}.
+  \newblock February, 2000.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/isostds/iso})
 
-    The kernel provides the \cmd{\,} macro for inserting a thin space in both
-text and math mode. There are
-other space adjustment commands, such as \pixabang{} for negative thin space, and
-\cmd{\:} and \cmd{\;} for medium
-and thick spaces, which can only be used in math mode.
+\bibitem[Wil00c]{NEXTPAGE}
+  Peter Wilson.
+  \newblock \emph{The nextpage package}.
+  \newblock February, 2000.
+  \newblock (Available from CTAN as 
+            \url{/macros/latex/contrib/misc/nextpage.sty})
 
-\begin{syntax}
-\cmd{\thinspace} \cmd{\medspace} \cmd{\:} \pixabang \\
-\end{syntax}
-On occasions I have found it useful to be able to tweak spaces in text by some
-fixed amount, just as in math mode. The kernel macro \cmd{\thinspace}
-specifies a thin space, which is 3/18\,em. 
-The class \cmd{\medspace} specifies a medium space of 4/18\,em. 
-As mentioned, the kernel macro \cmd{\:} inserts
-a medium space in math mode. The class version can be used in both math and
-text mode to insert a medium space. Similarly, the class version of 
-\pixabang{}
-can be used to insert a negative thin space in both text and math mode.
+\bibitem[Wil00d]{NEEDSPACE}
+  Peter Wilson.
+  \newblock \emph{The needspace package}.
+  \newblock March, 2000.
+  \newblock (Available from CTAN as 
+            \url{/macros/latex/contrib/misc/needspace.sty})
 
-    The math thick space is 5/18\,em. 
-To specify this amount of space
-in text mode you can combine spacing commands as:
-\begin{lcode}
-\:\:\!
-\end{lcode}
-which will result in an overall space of 5/18\,em 
-(from $(4 + 4 - 3)/18$).
+\bibitem[Wil00e]{XTAB}
+  Peter Wilson.
+  \newblock \emph{The xtab package}.
+  \newblock April 2000.
+  \newblock (Available from CTAN in 
+             \texttt{macros/latex/contrib/xtab})
 
-\section{Fractions}
+\bibitem[Wil01a]{ABSTRACT}
+  Peter Wilson.
+  \newblock \emph{The abstract package}.
+  \newblock February, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/abstract})
 
-    When typesetting a simple fraction in text there is usually a choice
-of two styles, like 3/4 or $\frac{3}{4}$, which do not necessarily look 
-as though they fit in with their surroundings. These fractions were
-typeset via:
-\begin{lcode}
-... like 3/4 or $\frac{3}{4}$ ...
-\end{lcode}
+\bibitem[Wil01b]{CHNGPAGE}
+  Peter Wilson.
+  \newblock \emph{The chngpage package}.
+  \newblock February, 2001.
+  \newblock (Available from CTAN as 
+            \url{/macros/latex/contrib/misc/chngpage.sty})
 
-\begin{syntax}
-\cmd{\slashfrac}\marg{top}\marg{bottom} \\
-\cmd{\slashfracstyle}\marg{num} \\
-\end{syntax}
-The class provides the \cmd{\slashfrac} command which typesets its
-arguments like \slashfrac{3}{4}. Unlike the \cmd{\frac} command which
-can only be used in math mode, the \cmd{\slashfrac} command can be
-used in text and math modes.
+\bibitem[Wil01c]{APPENDIX}
+  Peter Wilson.
+  \newblock \emph{The appendix package}.
+  \newblock March, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/appendix})
 
-    The \cmd{\slashfrac} macro calls the \cmd{\slashfracstyle} command to
-reduce the size of the numbers in the fraction. You can also use
-\cmd{\slashfracstyle} by itself.
-\begin{lcode}
-In summary, fractions can be typeset like 3/4 or $\frac{3}{4}%
-or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
-are provided.
-\end{lcode}
-In summary, fractions can be typeset like 3/4 or $\frac{3}{4}$
-or \slashfrac{3}{4} or \slashfracstyle{3/4} because several choices
-are provided.
+\bibitem[Wil01d]{CCAPTION}
+  Peter Wilson.
+  \newblock \emph{The ccaption package}.
+  \newblock March, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/ccaption})
 
-\begin{syntax}
-\cmd{\textsuperscript}\marg{super} \\
-\cmd{\textsubscript}\marg{sub} \\
-\end{syntax}
-While on the subject of moving numbers up and down, the kernel provides
-the \cmd{\textsuperscript} macro for typesetting its argument as though it
-is a superscript. The class also provides the \cmd{\textsubscript} macro
-for typesetting its argument like a subscript.
-\begin{lcode}
-You can typeset superscripts like \textsuperscript{3}/4 and 
-subscripts like 3/\textsubscript{4}, 
-or both like \textsuperscript{3}/\textsubscript{4}.
-\end{lcode}
-You can typeset superscripts like \textsuperscript{3}/4 and 
-subscripts like 3/\textsubscript{4}, 
-or both like \textsuperscript{3}/\textsubscript{4}.
+\bibitem[Wil01e]{CHNGCNTR}
+  Peter Wilson.
+  \newblock \emph{The chngcntr package}.
+  \newblock April, 2001.
+  \newblock (Available from CTAN as 
+            \url{/macros/latex/contrib/misc/chngcntr.sty})
 
+\bibitem[Wil01f]{HANGING}
+  Peter Wilson.
+  \newblock \emph{The hanging package}.
+  \newblock March, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/hanging})
 
-\section{Framed boxes}
+\bibitem[Wil01g]{TITLING}
+  Peter Wilson.
+  \newblock \emph{The titling package}.
+  \newblock March, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/titling})
 
-    Donald Arseneau's \Lpack{framed} package is currently at or beyond
-v0.7 while
-the original copy used in the class is from an earlier version. The class
-version of the \Lpack{framed} functions has been updated to v0.7.
+\bibitem[Wil01h]{TOCBIBIND}
+  Peter Wilson.
+  \newblock \emph{The tocbibind package}.
+  \newblock April, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/tocbibind})
 
-\begin{syntax}
-\senv{framed} text \eenv{framed} \\
-\senv{shaded} text \eenv{shaded} \\
-\senv{leftbar} text \eenv{leftbar} \\
-\end{syntax}
-The \Ie{framed} environment puts the text into an \cmd{\fbox}-like 
-framed box, the
-\Ie{shaded} environment puts the text into a coloured box, and the
-\Ie{leftbar} environment draws a vertical line at the left of the text.
-In all cases the text and boxes can include page breaks.
 
-\begin{syntax}
-\lnc{\FrameRule} \lnc{\FrameSep} \cmd{\FrameHeightAdjust} \\
-\Itt{shadecolor} \\
-\end{syntax}
-The thickness of the rules is the length \lnc{\FrameRule} and the separation
-between the text and the box is given by the length \lnc{\FrameSep}.
-The height of the frame above the baseline at the top of a page is specified
-by the macro \cmd{\FrameHeightAdjust}. The default definitions being:
-\begin{lcode}
-\setlength{\FrameRule}{\fboxrule}
-\setlength{\FrameSep}{3\fboxsep}
-\newcommand{\FrameHeightAdjust}{0.6em}
-\end{lcode}
-The background color in the \Ie{shaded} environment is specified by
-\Itt{shadecolor} which you have to specify using the \Lpack{color}
-package. For example:
-\begin{lcode}
-\usepackage{color}
-\definecolor{shadecolor}{gray}{0.75}
-\end{lcode}
+\bibitem[Wil01i]{TOCLOFT}
+  Peter Wilson.
+  \newblock \emph{The tocloft package}.
+  \newblock April, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/tocloft})
 
-\begin{syntax}
-\cmd{\frameasnormaltrue} \cmd{\frameasnormalfalse} \\
-\end{syntax}
-Following the declaration \cmd{\frameasnormaltrue} paragraphing within
-the environments will be as specified for the main text. After the declaration
-\cmd{\frameasnormalfalse} paragraphing will be as though the environments
-were like a \Ie{minipage}. The initial declaration is 
-\cmd{\frameasnormaltrue}.
 
-    There is one known problem with framing: when framing is used on 
-a page where the page header is in a smaller type than the body, the 
-header may be moved slightly up or down. This can be avoided by putting
-the font size change in a group, but it seems that a larger font does not need
-to be grouped. For example:
-\begin{lcode}
-\makeoddhead{myheadings}{{\tiny Tiny header}}{}{\LARGE Large header}
-\end{lcode}
+\bibitem[Wil01j]{MEMOIR}
+  Peter Wilson.
+  \newblock \emph{The LaTeX memoir class for configurable book 
+                  typesetting: Source code}.
+  \newblock July, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/memoir})
 
-    You can use the \Lpack{framed} package with the \Lclass{memoir} class, in
-which case you will get whatever functionality is provided by the package as
-it will override the class' code.
+\bibitem[Wil01k]{VERSE}
+  Peter Wilson.
+  \newblock \emph{Typesetting simple verse with LaTeX}
+  \newblock July, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/verse})
 
-\section{Captions}
+\bibitem[Wil01l]{BOOKLET}
+  Peter Wilson.
+  \newblock \emph{Printing booklets with LaTeX}
+  \newblock August, 2001.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/booklet})
 
-    The \cmd{\captionstyle} macro has been extended so that it is now 
-possible to separately specify the style for short and long
-captions.
+\bibitem[Wil03a]{LAYOUTS}
+  Peter Wilson.
+  \newblock \emph{The layouts package}
+  \newblock November, 2003.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/layouts})
 
-\begin{syntax}
-\cmd{\captionstyle}\oarg{short}\marg{normal} \\
-\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{centerlastline} \\
-\end{syntax}
-Caption styles are set according to the \cmd{\captionstyle} declaration.
-Unless the optional \meta{short} argument is given all captions are typeset
-according to \meta{normal}. If the optional \meta{short} argument
-is specififed, captions that are less than one line in length are typeset
-according to \meta{short}. 
+\bibitem[Wil03b]{LEDMAC}
+  Peter Wilson.
+  \newblock \emph{ledmac: A presumptuous attempt to port EDMAC and TABMAC
+                  to LaTeX}
+  \newblock November, 2003.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/ledmac})
 
-    Permissable values for the arguments include, but are not limited to,
-\cmd{\raggedleft}, \cmd{\centering}, \cmd{\raggedright}, and
- \cmd{centerlastline}. The class initially specifies
-\begin{lcode}
-\captionstyle{}
-\end{lcode}
-which gives the normal block paragraph style.
+\bibitem[Wil04a]{GLISTER3}
+  Peter Wilson.
+  \newblock `Glisterings'.
+  \newblock TUGboat, 25, 2 pp 201--202, 2004.
 
-\section{Hung paragraphs}
+\bibitem[Wil04b]{PAGENOTE}
+  Peter Wilson.
+  \newblock \emph{The pagenote package}
+  \newblock September, 2004.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/pagenote})
 
-    As noted eleswhere the sectioning commands use the internal 
-\cmd{\@hangfrom} as part of the formatting of the titles.
+\bibitem[Wil07a]{TITLEPAGES}
+  Peter Wilson.
+  \newblock \emph{Some Examples of Title Pages}.
+  \newblock Herries Press, 2007.
+  \newblock (Available from CTAN as \url{info/latex-samples/titlepages.pdf})
 
-\begin{syntax}
-\cmd{\hangfrom}\marg{text} \\
-\end{syntax}
+\bibitem[Wil07b]{MEMCODE}
+Peter Wilson.
+  \newblock \emph{The \ltx\ memoir class for configurable book typesetting: source code}
+  \newblock November, 2007.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/memoir})
 
-\hangfrom{Simple hung paragraphs }(like this one) can be specified
-using the \cmd{\hangfrom} macro. The macro puts \meta{text} in a box
-and then makes a hanging paragraph of the following material. This
-paragraph commenced with \\
-\verb?\hangfrom{Simple hung paragraphs }(like ...? \\
-and you are now reading the result.
+\bibitem[Wil07c]{MEMMAN}
+Peter Wilson.
+  \newblock \emph{The Memoir Class for Configurable Typesetting --- User Guide}
+  \newblock November, 2007.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/memoir})
 
-\chapterstyle{demo}
-\chapter{Memoir and packages} \label{chap:mempack}
+\bibitem[Wil07d]{MEMADD}
+Peter Wilson.
+  \newblock \emph{ADDENDUM: The Memoir Class for Configurable Typesetting --- User Guide}
+  \newblock November, 2007.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/memoir})
 
-    The \Lclass{memoir} class does some things differently from the standard
-classes. Some packages that might be used with \Lclass{memoir} rely on
-the standard methods, and change them to suit their own purposes. Some such
-changes may not work with \Lclass{memoir} and the package may not recognize
-that it is being used with \Lclass{memoir} and not with a standard class. 
+\bibitem[Wil08]{CHANGEPAGE}
+  Peter Wilson.
+  \newblock \emph{The changepage package}.
+  \newblock March, 2008.
+  \newblock (Available from CTAN as 
+            \url{/macros/latex/contrib/misc/changepage.sty})
 
-    From my viewpoint, the ideal solution is for the packages to be changed
-so that they cooperate with \Lclass{memoir}. However, until that happy
-day arrives I have provided the \Lpack{memhfixc} package that attempts to 
-make these packages cooperate with the class. 
+\bibitem[Wil??]{RUMOUR}
+Peter Wilson.
+\newblock \emph{A Rumour of Humour: A scientist's commonplace book}.
+\newblock To be published?
 
-    Currently, if you use either the \Lpack{hyperref} or the \Lpack{nameref}
-package you will also need to use the \Lpack{memhfixc} package. 
-The ordering of the \Lpack{memhfixc} and other packages can be important:
-\begin{itemize}
-\item \Lpack{memhfixc} must be used \emph{after} the \Lpack{hyperref} package.
-\item The ordering of \Lpack{memhfixc} and \Lpack{nameref} is immaterial.
-\end{itemize}
+\bibitem[Wul53]{WULLING-FOOTNOTES}
+  Emerson G. Wulling.
+  \newblock \emph{A Comp's-Eye View of Footnotes}.
+  \newblock Sumac Press, 1953.
 
-    There is a basic incompatability between the \Lpack{hyperref} package
-and sequential footnotes --- the \cmd{\multfootsep} macro is essentially 
-ignored. If that is important to you and you don't mind not having 
-hyperreferences to footnotes, call \Lpack{hyperref} like:
-\begin{lcode}
-\usepackage[hyperfootnotes=false, ...]{hyperref}
-\end{lcode}
-A similar \Lpack{hyperref} incompatibily also occurs with at least 
-the \Lpack{footmisc} package.
+\bibitem[Zac69]{ZACHRISSOM69}
+  B.~Zachrissom.
+  \newblock \emph{Studies in the Legibility of Printed Text}.
+  \newblock Almqvist \& Wiksell, Stockholm, 1969.
 
-    Thinking of the \Lpack{footmisc} package, for some of its options it
-changes the kernel output routine. The class itself changes the output routine
-in order to add sidebars. Packages, like the version of \Lpack{footmisc}
-current at the date of writing (2003/04/28), which change the output 
-routine without specifically catering for the \Lclass{memoir} class
-are likely to cause problems. As an alternative to the \Lpack{footmisc} 
-package, the \Lpack{ledmac} package understands \Lclass{memoir} and provides
-further multiple classes of footnotes.
+\bibitem[Zan98]{FANCYBOX}
+  Timothy Van Zandt.
+  \newblock \emph{Documentation for fancybox.sty: Box tips and tricks for 
+             LaTeX},
+  \newblock November, 1998.
+  \newblock (Available from CTAN in 
+            \url{/macros/latex/contrib/fancybox})
 
+\bibitem[Zap00]{ZAPF00}
+  Hermann Zapf.
+  \newblock \emph{The Fine Art of Letters}.
+  \newblock The Grolier Club, 2000.
+  \newblock ISBN 0--910672--35--0.
 
 
-% back end
-\backmatter
-\clearpage
-%\pagestyle{ruled}
-%\chapterstyle{section}
-
-
-
- \bibliographystyle{alpha}
- \begin{thebibliography}{WWW99}
-    \bibitem[ABH90]{bk:Impatient}
-      Paul W.~Abrahams, Karl Berry and Kathryn A.~Hargreaves.
-      \newblock \emph{TeX{} for the Impatient}.
-      \newblock
-       Addison-Wesley, Reading, Massachusetts, 1990.
-      \newblock (Available from CTAN in \texttt{info/impatient})
-    \bibitem[Car94]{DELARRAY}
-      David Carlisle.
-      \newblock \emph{The delarray package}.
-       \newblock March 1994.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/required/tools})
-    \bibitem[Car98]{LONGTABLE}
-      David Carlisle.
-      \newblock \emph{The longtable package}.
-       \newblock May 1998.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/required/tools})
-    \bibitem[Car99]{TABULARX}
-      David Carlisle.
-      \newblock \emph{The tabularx package}.
-       \newblock January 1999.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/required/tools})
-    \bibitem[Car01]{DCOLUMN}
-      David Carlisle.
-      \newblock \emph{The dcolumn package}.
-       \newblock May 2001.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/required/tools})
-    \bibitem[Fea03]{BOOKTABS}
-      Simon Fear.
-      \newblock \emph{Publication quality tables in \ltx}.
-       \newblock March 2003.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/contrib/booktabs})
-    \bibitem[GMS94]{bk:GMS94} 
-      M.~Goossens, F.~Mittelbach and A.~Samarin.
-       \newblock \emph{The \ltx{} Companion}.
-       \newblock
-       Addison-Wesley, Reading, Massachusetts, 1994.
-    \bibitem[Knu84]{bk:knuth}  
-       Donald E. Knuth.
-       \newblock  \emph{The \TeX{}book}.
-       \newblock
-       Addison-Wesley, Reading, Massachusetts, 1984.
-    \bibitem[Lam94]{bk:lamport} 
-       Leslie Lamport.
-       \newblock  \emph{\ltx\ --- A Document Preparation System}.
-       \newblock
-       Addison-Wesley, Reading, Massachusetts, 1994.
-    \bibitem[MC98]{ARRAY}
-      Frank Mittelbach and David Carlisle.
-      \newblock \emph{A new implementation of LaTeX's tabular and array
-                      environment}.
-       \newblock May 1998.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/required/tools})
-    \bibitem[Wil00]{XTAB}
-      Peter Wilson.
-      \newblock \emph{The xtab package}.
-       \newblock April 2000.
-      \newblock (Available from CTAN in 
-                 \texttt{macros/latex/contrib/xtab})
- \end{thebibliography}
 
+\end{thebibliography}
 
 \clearpage
+\twocolindex
 \pagestyle{index}
 %\renewcommand{\chaptermark}[1]{}
 \renewcommand{\preindexhook}{%
 The first page number is usually, but not always, the primary reference to
 the indexed topic.\vskip\onelineskip}
 \indexintoc
+
+%%%\raggedright  does nasty things to index entries
 \printindex
 
+\onecolindex
+\renewcommand*{\preindexhook}{}
+\renewcommand*{\indexname}{Index of first lines}
+%%%\indexintoc
+\printindex[lines]
 
-\end{document}
+\cleardoublepage
+\pagestyle{empty}
+\null\vfil
+
+\begin{adjustwidth}{1in}{1in}
+\begin{center}
+{\Large\textsf{Colophon}}
+\end{center}
+\begin{center}
+This manual was typeset using the LaTeX typesetting system
+created by Leslie Lamport and the memoir class. 
+The body text is set 10/12pt on a
+33pc measure with Palatino designed by Hermann Zapf, which includes 
+italics and small caps. Other fonts include
+Sans, Slanted and Typewriter from Donald Knuth's 
+Computer Modern family.
 
+\end{center}
 
+\end{adjustwidth}
 
+\vfil
 
+\end{document}
 
+\endinput
 
-- 
cgit v1.2.3

