summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/latex/memoir/memman.tex
diff options
context:
space:
mode:
authorManuel Pégourié-Gonnard <mpg@elzevir.fr>2008-06-02 14:38:57 +0000
committerManuel Pégourié-Gonnard <mpg@elzevir.fr>2008-06-02 14:38:57 +0000
commit82d52884d37b1a23afa751837ee5df24e03a99a4 (patch)
tree48ee8859c29f8239296f846b3b26a8d249ea5576 /Master/texmf-dist/doc/latex/memoir/memman.tex
parent968c2c8410e2d768d324c6f06c6a92395b77cf16 (diff)
memoir v1.61803
git-svn-id: svn://tug.org/texlive/trunk@8483 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/latex/memoir/memman.tex')
-rw-r--r--Master/texmf-dist/doc/latex/memoir/memman.tex32347
1 files changed, 25056 insertions, 7291 deletions
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,6 +641,690 @@ 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}
+
+\section{General considerations}
+
+ 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.
+
+
+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.
+
+\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 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.
+
+\section{Captions}
+
+ \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'.
+
+\section{Tables}
+
+ 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}
+}
+
+ Or if you use the \cs{autocols} command the entries are listed
+column-by-column, like this :
+
+\begin{lcode}
+\autocols{c}{5}{l}{one, two, three, four,
+ five, six, seven, eight, nine, ten,
+ eleven, twelve, thirteen }
+\end{lcode}
+
+\showit{
+{\centering
+\begin{tabular}{lllll}
+one & four & seven & ten & thirteen \\
+two & five & eight & eleven & \\
+three & six & nine & twelve & \\
+\end{tabular}
+\par}
+}
+
+\section{Verse}
+
+ 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.
+
+ 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}
+
+\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}
+}
+
+ 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:
+
+\begin{lcode}
+\begin{verse}
+Come away with me. \\
+\vinphantom{Come away with me.} Impossible!
+\end{verse}
+\end{lcode}
+
+\showit{
+\begin{verse}
+Come away with me. \\
+\leavevmode\phantom{Come away with me.} Impossible!
+\end{verse}
+}
+
+
+\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.
+
+ 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.
+
+
+\section{Miscellaneous}
+
+% 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.
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
@@ -975,12 +1376,54 @@ work harmoniously together, such as a pair of roman and italic fonts.
(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.
+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 give 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.
@@ -993,7 +1436,7 @@ picas\index{pica} where 1 pica equals 12 points (1pc = 12pt).
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
+\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}
@@ -1037,9 +1480,9 @@ 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 is a recent
+is somewhat of an anomaly in that it is a recent
invention. It tends to be used
-in page markup languages, like PostScript\footnote{PostScript is a
+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.
@@ -1061,11 +1504,11 @@ an em, often a quad is 1em.
% body
\mainmatter
-\part{Art and Theory} \label{part:art}
+\part{Art and Theory} \label{part:art}
\chapter{The Parts of a Book}
-\section{Introduction}
+%\section{Introduction}
This chapter describes the various parts of a book, the
ordering of the parts, and the typical page numbering scheme used
@@ -1073,26 +1516,32 @@ in books.
-\section{Front matter}
+\section{\prfrontmatter}
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 \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 front matter the folios\index{folio} are
+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 main and back matter. Sectional
-divisions are numbered in the main matter but not in the back matter.
-
- 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
+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,21 +1829,106 @@ 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.
+ 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}
+
+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
@@ -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,145 +5158,441 @@ 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|)}
-%%%%%%%%%%%%%%%%%%%%%%
-%\endinput
-%%%%%%%%%%%%%%%%%%%%%%%
+\end{comment}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%\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}
+
+
+\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}
+
-\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
+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}.
+
+
+\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:
+ 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 will print the result to the terminal and the
-log file.
+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}
+\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}
+
-\subsection{Example} \label{sec:pexamp}
+\section{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 width of the typeblock\index{typeblock} should
+ 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.
+
+ 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,12 +7616,1052 @@ 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 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.
+
+ 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).
+
+\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}
+
+\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}
+
+
+
+
+
+\begin{syntax}
+\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}
+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}
+\settrims{0.5\trimtop}{0.5\trimedge}
+...
+\checkandfixthelayout
+\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.
+
+
+
+
+
+\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 LaTeX standard classes. This class
+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.
@@ -4712,28 +8671,110 @@ 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
+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.
-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.
+\section{Styling the titling}
-\section{Titles}
-\subsection{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}.
-\index{title!styling|(}
+\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}.
@@ -4764,6 +8805,24 @@ The various macros used within \cmd{\maketitle} are described below.
\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}
@@ -4800,6 +8859,9 @@ date:
\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
@@ -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.
@@ -4876,6 +8953,16 @@ with a \pstyle{plain} pagestyle:
\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
width of the typeblock\index{typeblock}.
Occasionally someone asks on the \texttt{comp.text.tex} newsgroup how
@@ -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}
+
-\index{abstract|(}
+ 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!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|)}
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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}
+% chapter style
+%\renewcommand{\printchaptername}{}
+%\renewcommand{\chapternamenum}{}
+%\renewcommand{\chapnumfont}{\normalfont\huge\sffamily}
+%\renewcommand{\chaptitlefont}{\chapnumfont}
+%\renewcommand{\afterchapternum}{\space}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% 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 declaration \cmd{\normalbottomsection}, which is the default,
+cancels any previous \cmd{\raggedbottomsection} declaration.
- The paragraph following \cmd{\pfbreak} is not indented. If you want
-it indented use the \cmd{\pfbreak*} starred version.
+\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}
+
+ 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 in the above are initially defined as:
+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,85 +11839,400 @@ 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.
+Here are some example lower level heads and the code used to produce them.
+
+\newcommand*{\shortcenter}[1]{%
+ \sethangfrom{\noindent ##1}%
+ \normalfont\boldmath\bfseries
+ \centering
+ \parbox{3in}{\centering #1}\par}
+
+\begin{egresult}[A variety of subhead styles]{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}
+
+\setsubsubsecheadstyle{\shortcenter}
+\subsubsection*{Bold centered but taking up no more than 3 inches
+ if a long title}
+\end{egresult}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% back to default settings
+%\setsubsubsecindent{0pt}
+%\setsubsubsecheadstyle{\bfseries\raggedright}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\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}.
+
+
\index{heading!sections|)}
-\section{Heading styles for this chapter}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 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{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}
-\index{heading!chapter|(}
-\index{chapterstyle|(}
+\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{\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.}
+
+ 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}
+\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 commands described below have been put just before the start
-of this chapter.
+ 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.
- 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{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}
-\renewcommand{\chapnumfont}{\normalfont\huge\sffamily}
-\renewcommand{\chaptitlefont}{\chapnumfont}
-\setsecheadstyle{\Large\sffamily\raggedright}
-\setsubsecheadstyle{\large\sffamily\raggedright}
-\setsubsubsecheadstyle{\normalsize\sffamily\raggedright}
+\newcommand*{\pfbtreakdisplay}{*\quad*\quad*}
\end{lcode}
+typesets three asterisks, as shown a few lines before this.
- 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.
+\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}
+
+ 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{\printchaptername}{}
-\renewcommand{\chapternamenum}{}
-\renewcommand{\afterchapternum}{\space}
+\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.
+
+ The paragraph following \cmd{\pfbreak} is not indented. If you want
+it indented use the \cmd{\pfbreak*} starred version.
- 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.
+\renewcommand{\pfbreakdisplay}{\ding{167}\quad\ding{167}\quad\ding{167}}
+\fancybreak{\pfbreakdisplay}
+
+ The fancy break using
+fleurons\index{fleuron} just before this paragraph was produced by:
\begin{lcode}
-\chapterstyle{default}
-\setsecheadstyle{\Large\bfseries\raggedright}
-\setsubsecheadstyle{\large\bfseries\raggedright}
-\setsubsubsecheadstyle{\normalsize\bfseries\raggedright}
+\renewcommand{\pfbreakdisplay}{%
+ \ding{167}\quad\ding{167}\quad\ding{167}}
+\fancybreak{\pfbreakdisplay}
\end{lcode}
-Calling |\chapterstyle{default}| deals with the chapter heading. The other
-commands change the lower level fonts back to their default values.
+where the \cmd{\ding} command is from the \Lpack{pifont} package.
+\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
-\index{chapterstyle|)}
-\index{heading!chapter|)}
+\fancybreak{\chain{\diamondpattern}{0.25\textwidth}}
-\section{Footnotes and headers}
+ 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.
+
+ 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.
+
+ 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}.
+
+ 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}.
+
+ 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.
+
+ 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.
+
+\index{anonymous division!styling|)}
+
+
+\section{Footnotes in division headings}
\index{footnote!in heading|(}
@@ -6456,7 +12241,8 @@ commands change the lower level fonts back to their default values.
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,
+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}
@@ -6468,61 +12254,258 @@ serves double duty:
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
+ 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 header\index{header}. This is
+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 text]{Title text\footnote{Do you really have to do this?}}
+\chapter[Title]{Title\footnote{Do you really have to do this?}}
\end{lcode}
\index{footnote!in heading|)}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\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.
+
+\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}
+
+\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}
+
+
+ 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{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}).
+
+\end{itemize}
+
+
+
+
+
+\chapterstyle{demo3}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Pagination and headers} \label{chap:pagination}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%\section{Introduction}
+
+ The focus of this chapter is on marking the pages
+with signposts so that the reader can more readily navigate through
+the document.
\section{Pagination and folios}
- Every page in a LaTeX document is included in the
+ 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 can be changed at any time via either
-\cmd{\setcounter} or \cmd{\addtocounter}.
-
-\begin{syntax}
-\cmd{\pagenumbering}\marg{num-style} \\
-\cmd{\pagenumbering*}\marg{num-style} \\
-\end{syntax}
+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} 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
+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 |\num-style{page}|.
-Additionally, the \cmd{\pagenumbering}
+\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 desireable to have a continuous sequence
+is changed, but sometimes it may be desirable to have a continuous sequence
of numbers irrespective of their displayed form, which is where
-\cmd{\pagenumbering*} comes in handy.
+the starred version comes in handy.
\begin{syntax}
\cmd{\savepagenumber} \\
\cmd{\restorepagenumber} \\
\end{syntax}
+\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 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 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}
\clearpage % get onto next page
@@ -6540,38 +12523,977 @@ number by one.
\restorepagenumber
% perhaps \addtocounter{page}{1} or \addtocounter{page}{-1}
\end{lcode}
-Whether or not this will be necessary depends on the timing of the
-|\...pagenumber| commands and TeX's decisions on page breaking.
+Depending on the timing of the \cs{...pagenumber} commands and \tx's
+decisions on page breaking, this may or may not be necessary.
+\section{Page styles} \label{sec:pagestyles}
+\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{\pagestyle}\marg{style} \\
+\cmd{\thispagestyle}\marg{style} \\
+\end{syntax}
+\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.
+ 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}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapterstyle{default}
-\setsecheadstyle{\Large\bfseries\raggedright}
-\setsubsecheadstyle{\large\bfseries\raggedright}
-\setsubsubsecheadstyle{\normalsize\bfseries\raggedright}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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}
+
+\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.
+
+
+ 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}
+\cmd{\markboth}\marg{left}\marg{right} \\
+\cmd{\markright}\marg{right} \\
+\end{syntax}
+\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}
+\makepagestyle{plain}
+ \makeevenfoot{plain}{}{\thepage}{}
+ \makeoddfoot{plain}{}{\thepage}{}
+\end{lcode}
+which centers the page number at the bottom of the page.
+
+
+\begin{syntax}
+\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}
+\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}
+\cmd{\makerunningwidth}\marg{style}\marg{length} \\
+\lnc{\headwidth} \\
+\end{syntax}
+\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.
+
+\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}
+\lnc{\normalrulethickness} \\
+\end{syntax}
+\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.
+
+\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{\makeheadposition}\marg{style}\\
+ \marg{eheadpos}\marg{oheadpos}\marg{efootpos}\marg{ofootpos} \\
+\end{syntax}
+\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}.
+
+\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}.
+
+
+
+\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}
+\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.
+
+ 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}
+
+ 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}
+\makeheadposition{companion}{flushright}{flushleft}{}{}
+\end{lcode}
+
+ 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}
+\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}
+
+ 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{\addtopsmarks}\marg{pagestyle}\marg{prepend}\marg{append} \\
+\end{syntax}
+\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}
+\addtopsmarks{companion}{}{%
+ \createmark{subsection}{right}{shownumber}{}{. \space}}
+\end{lcode}
+
+
+\index{pagestyle!specifying|)}
+
+
+
+\subsection{Index headers}
+
+\index{pagestyle!index pages|(}
+
+ 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}.
+
+ 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 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}
+
+ 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}.
+
+\index{pagestyle!index pages|)}
+
+\subsection{Float pages}
+
+\index{pagestyle!float pages|(}
+\index{float!page|(}
+
+\begin{syntax}
+\piif{ifonlyfloats}\marg{yes}\marg{no} \\
+\end{syntax}
+\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}.
+
+ 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.
+
+ 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}.
+
+ 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{\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\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}
+
+
+ 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}
+
+\let\p@wold@output\@outputpage
+\renewcommand*{\@outputpage}{%
+ \p@wold@output
+ \global\floatattopfalse
+ \global\floatatbotfalse}
+
+\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.
+
+
+\index{float!page|)}
+\index{pagestyle!float pages|)}
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Paragraphs and lists}
%%%%%%%%%%%%%%%%%%%%%
-\tightlists
+%\tightlists
%%%%%%%%%%%%%%%%%%%%%
- This chapter is typeset with the default sectional
-headings\index{heading!default}.
-
-\section{Introduction}
-
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.
@@ -6586,6 +13508,9 @@ paragraphs.
\begin{syntax}
\lnc{\parindent} \lnc{\parskip} \\
\end{syntax}
+\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
@@ -6593,7 +13518,8 @@ 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}.
+`outdented'\index{paragraph!outdentation} into the lefthand
+margin\index{margin!left}.
\begin{figure}
\centering
@@ -6602,20 +13528,31 @@ is set to a negative length, then the first line of the paragraphs will be
\caption{Paragraphing parameters}\label{fig:para}
\end{figure}
- A block paragraph\index{paragraph!block} is obtained by setting \lnc{\parindent} to 0em;
+\subsection{Block paragraph}
+
+ 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
+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.
- It is important to know that LaTeX typesets paragraph by paragraph.
+ 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}) in effect at the end of the paragraph.
+\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.
\subsection{Hanging paragraphs}
@@ -6629,6 +13566,10 @@ to be a special case of a hanging paragraph where `few = one').
\begin{syntax}
\cmd{\hangpara}\marg{indent}\marg{num} \\
\end{syntax}
+\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
@@ -6637,13 +13578,17 @@ 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
+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}
\senv{hangparas}\marg{indent}\marg{num} text \eenv{hangparas} \\
\end{syntax}
+\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.
@@ -6651,13 +13596,18 @@ that every paragraph in the environment will be hung.
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{\hangfrom}\marg{text} \\
\end{syntax}
+\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.
\hangfrom{Simple hung paragraphs }(like this one) can be specified
using the \cmd{\hangfrom} macro. The macro puts \meta{text} in a box
@@ -6666,6 +13616,30 @@ 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|)}
@@ -6674,9 +13648,9 @@ and you are now reading the result.
\section{Flush and ragged}
Flushleft\index{flushleft} text has the lefthand end of the lines
-aligned vertically at the lefthand margin\index{margin} and
+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}. The
+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
@@ -6687,16 +13661,35 @@ not aligned. LaTeX normally typesets flushleft and flushright.
\senv{flushright} text \eenv{flushright} \\
\senv{center} text \eenv{center} \\
\end{syntax}
+\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.
+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{\raggedleft} \cmd{\raggedright} \cmd{\centering} \\
\end{syntax}
- The \cmd{\raggedleft} declaration can be used to have text typeset
+\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.
@@ -6706,6 +13699,13 @@ Unlike the environments, no additional space is added.
\cmd{\raggedyright}\oarg{space} \\
\lnc{\ragrparindent} \\
\end{syntax}
+\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
@@ -6718,9 +13718,11 @@ is 2em, can be used to adjust the amount of raggedness. As examples:
\raggedyright[0.5em] % less ragged than \raggedright
\end{lcode}
- Remember that LaTeX typesets on a per-paragraph basis, so that putting
+ 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
+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.
@@ -6733,59 +13735,79 @@ quotations\index{quotation}.
\senv{quote} text \eenv{quote} \\
\senv{quotation} text \eenv{quotation} \\
\end{syntax}
+\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}
+\section{Changing the textwidth}\label{sec:adjustwidth}
- 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.
+ 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}
-\senv{adjustwith}\marg{left}\marg{right} text \eenv{adjustwith} \\
-\senv{adjustwith*}\marg{left}\marg{right} text \eenv{adjustwith*} \\
+\senv{adjustwidth}\marg{left}\marg{right} text \eenv{adjustwidth} \\
+\senv{adjustwidth*}\marg{left}\marg{right} text \eenv{adjustwidth*} \\
\end{syntax}
+\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} 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
+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}
\begin{adjustwidth}{2.5em}{2.5em}
\end{lcode}
- 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}
+ 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.
+(a verso page) it adjusts the left (outer) and right (spine)
+margins\index{margin} by \meta{right} and \meta{left} respectively.
\begin{syntax}
-\cmd{\strictpagechecktrue} \cmd{\strictpagecheckfalse} \\
+\cmd{\strictpagecheck} \cmd{\lazypagecheck} \\
\end{syntax}
-Odd/even page checking may be either strict (\cmd{\strictpagechecktrue})
-or lazy (\cmd{\strictpagecheckfalse}). Lazy checking works most of the time
+
+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.
- 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
+ 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
-\strictpagechecktrue
+\strictpagecheck
\begin{adjustwidth*}{0em}{-3em}
% the illustration
\caption{...}
@@ -6794,8 +13816,9 @@ the spine margin\index{margin}. This can be accomplished by
\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
+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}
@@ -6807,11 +13830,11 @@ using \Ie{adjustwidth} to decrease each margin\index{margin} equally. In brief,
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.
+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}.
@@ -6821,23 +13844,24 @@ 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
+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}.
+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} ...
@@ -6846,12 +13870,16 @@ The \Ie{adjustwidth} environment can be used to make the (temporary) change.
\begin{syntax}
\cmd{\calccentering}\marg{length} \\
\end{syntax}
+\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
-|\calccentering|, \meta{length} is the amount to be added to the
+\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}
@@ -6864,29 +13892,42 @@ text horizontally centered on the physical 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).
+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 LaTeX provides 4 kinds of lists. There is a general \Ie{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).
+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.}).
- This class provides the normal \Ie{description} list but the \Ie{itemize} and
-\Ie{enumerate} lists are extended versions of the normal ones.
+ 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}
\senv{description} \cmd{\item}\oarg{label} ... \eenv{description} \\
-\cmd{\descriptionlabel}\meta{style} \\
-\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
+\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}
@@ -6901,18 +13942,23 @@ which gives a bold label. To have, for example, a sans label instead, do
the \Lpack{enumerate} package~\cite{ENUMERATE}.
\begin{syntax}
-\senv{itemize}\oarg{mark} \cmd{\item} ... \eenv{itemize} \\
+\senv{itemize}\oarg{marker} \cmd{\item} ... \eenv{itemize} \\
\end{syntax}
+\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 |\textbullet|),
-\item bold en-dash ({\normalfont\bfseries \textendash} |\bfseries\textendash|),
-\item centered asterisk (\textasteriskcentered |\textasteriskcentered|), and
-\item centered dot (\textperiodcentered |\textperiodcentered|).
+\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{mark} argument can be used to specify the marker for the
+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 symbol as the item marker for a particular list you could do
+pilcrow\index{pilcrow (\P)} symbol as the item marker for a particular list
+you could do
\begin{lcode}
\begin{itemize}[\P]
\item ...
@@ -6924,16 +13970,20 @@ pilcrow symbol as the item marker for a particular list you could do
\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 |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
+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., |{a}|) if they are to be
+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
@@ -6946,23 +13996,51 @@ counter typeset as a lowercase Roman numeral followed by a single parenthesis
\begin{syntax}
\cmd{\tightlists} \cmd{\defaultlists} \\
-\end{syntax}
-The normal LaTeX \Ie{description}, \Ie{itemize} and \Ie{enumerate} lists have an open
+\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}. 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.
+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{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
@@ -6984,7 +14062,12 @@ as in an ordinary list.
\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}
+\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
@@ -7029,12 +14112,12 @@ tighter than the normal \Ie{description} list.
\end{itdesc}
\end{lcode}
-Here is another kind of list called \Ie{aglossary} that could be used for
-a glossary or other similar kind of listing.
+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}
-% Glossary list
-\newenvironment{aglossary}%
- {\begin{list}{}% empty label
+% Symbol list
+\newenvironment{symbols}%
+ {\list{}% empty label
{\setlength{\topsep}{\baselineskip}
\setlength{\partopsep}{0pt}
\setlength{\itemsep}{0.5\baselineskip}
@@ -7045,136 +14128,248 @@ a glossary or other similar kind of listing.
\setlength{\itemindent}{0em}
\setlength{\labelwidth}{0em}
\setlength{\labelsep}{2em}}}%
- {\end{list}}
-\newcommand{\gloss}[1]{\item[#1]\mbox{}\\\nopagebreak}
+ {\endlist}
+\newcommand{\symb}[1]{\item[#1]\mbox{}\\\nopagebreak}
\end{lcode}
In this case it gets used like this
\begin{lcode}
-\begin{aglossary}
-\gloss{TERM 1} definition
-\gloss{TERM 2} ...
-\end{aglossary}
+\begin{symbols}
+\symb{SYMBOL 1} definition
+\symb{SYMBOL 2} ...
+\end{symbols}
\end{lcode}
+ 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.
+
\index{list!new|)}
-\begin{syntax}
-\cmd{\zerotrivseps} \cmd{\restoretrivseps} \cmd{\savetrivseps} \\
-\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:
+ 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*{\zerotrivseps}{%
\setlength{\topsep}{0pt}%
\setlength{\partopsep}{0pt}}
\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.
+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}
+%%\chapterstyle{section}
%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Tops and tails} \label{chap:topsandtails}
+%\chapter{Tops and tails} \label{chap:topsandtails}
+\chapter{Contents lists} \label{chap:toc}
-This chapter uses the \cstyle{section} chapterstyle.
+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.
- \section{Introduction}
+ 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 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}
-
- 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.
-
- \section{LaTeX's \prtoc{} methods}
-
- 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.
-
- 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.
+packages~\cite{TOCLOFT,TOCBIBIND}.
\begin{syntax}
-\cmd{\maxtocdepth}\marg{secname} \\
-\cmd{\settocdepth}\marg{secname} \\
+\cmd{\tableofcontents} \cmd{\tableofcontents*} \\
+\cmd{\listoffigures} \cmd{\listoffigures*} \\
+\cmd{\listoftables} \cmd{\listoftables*} \\
\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}|.
-
- 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}.
+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{\addcontentsline}\marg{file}\marg{kind}\marg{text} \\
\end{syntax}
- LaTeX generates a \file{.toc} file if the document contains a
+\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
-%% \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
+ 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., |toc|),
- \meta{kind} is the kind of entry (e.g., |section| or |subsection|),
+ 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 |{\numberline{number} title-text}|.
-
-\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}.
+ form \verb?{\numberline{number}title text}?.
\begin{syntax}
\cmd{\contentsline}\marg{kind}\marg{text}\marg{page} \\
\end{syntax}
+\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.
- For each \meta{kind}, LaTeX provides a command: \\
+
+ 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}.
+
+\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}
+
+Part of a \file{lof} file:
+
+\begin{lcode}
+...
+\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}
+
+Part of a \file{lot} file:
+
+\begin{lcode}
+...
+\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.
+which performs the actual typesetting of the \cmd{\contentsline} entry.
\begin{figure}
@@ -7189,51 +14384,68 @@ which performs the actual
\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.
+\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.
The standard values for these internal commands are:
\begin{itemize}
- \item |\@pnumwidth| = 1.55em
- \item |\@tocrmarg| = 2.55em
- \item |\@dotsep| = 4.5
+ \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.
- Dotted leaders are not available for Part\index{part} and Chapter\index{chapter} \toc{} entries
+ 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|).
+ \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{table}
\centering
\caption[Indents and Numwidths]{Indents and Numwidths (in ems)} \label{tab:indents}
- \begin{tabular}{lcrrrr} \hline
+ \begin{tabular}{lcrrrr} \toprule
Entry & Level & \multicolumn{2}{c}{Standard} & \multicolumn{2}{c}{\Lclass{memoir} class} \\
- & & indent & numwidth & indent & numwidth \\ \hline
- part & -1 & 0 & --- & 0 & --- \\
+ & & 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 \\
@@ -7242,53 +14454,67 @@ which performs the actual
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
+\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. Also, which somewhat surprises me, the table\index{table} and figure\index{figure} entries
- are all indented.
+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.
\begin{syntax}
\cmd{\@dottedtocline}\marg{level}\marg{indent}\marg{numwidth} \\
\end{syntax}
- Most of the |\l@kind| commands are defined in terms of the
+\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 |\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.
+ For example, one definition of the \cmd{\l@section} command is:
+\begin{lcode}
+\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}
\begin{syntax}
\cmd{\addtocontents}\marg{file}\marg{text} \\
\end{syntax}
- LaTeX also provides the \cmd{\addtocontents}
+\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).
+ 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
+ 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}
+ \item If your page numbers stick out into the righthand margin\index{margin!right}
\begin{lcode}
\renewcommand{\@pnumwidth}{3em}
\renewcommand{\@tocrmarg}{4em}
@@ -7300,15 +14526,16 @@ 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.
+ where the value \texttt{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|
+ \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:
+ \item To have dotted leaders in your \toc\ and \lof\ but not in your \lot:
\begin{lcode}
...
\tableofcontents
@@ -7319,15 +14546,14 @@ right with no hyphenation
...
\end{lcode}
- \item To add a horizontal line across the whole width of the \toc{} below
+ \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
+ 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
@@ -7339,33 +14565,36 @@ right with no hyphenation
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
+ \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}
-\item To change the level of entries printed in the \toc{} (for example
- when normally subsections are listed in the \toc{} but for
+\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}
+ \addtocontents{toc}{\protect\setcounter{tocdepth}{0}}
\chapter{First appendix}
...
\end{lcode}
\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}
-
\section{The class \prtoc{} methods}
The class provides various means of changing the look of the \toc, etc.,
@@ -7376,12 +14605,30 @@ without having to go through some of the above.
\cmd{\listoffigures} \cmd{\listoffigures*} \\
\cmd{\listoftables} \cmd{\listoftables*} \\
\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
+\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}
@@ -7392,29 +14639,99 @@ without having to go through some of the above.
\listoftables
...
\end{lcode}
-Also, the unstarred versions of the commands put their headings\index{heading} into the
-\toc, while the starred versions do not.
+Also, the unstarred versions of the commands put their headings\index{heading}
+into the \toc, while the starred versions do not.
+
+ You can use \cmd{\tableofcontents}, \cmd{\listoffigures}, etc., more
+than once in a \Lclass{memoir} class document.
+
+\begin{syntax}
+\cmd{\maxtocdepth}\marg{secname} \\
+\cmd{\settocdepth}\marg{secname} \\
+\end{syntax}
+\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}?.
+
+ 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}.
+
+
+\begin{syntax}
+\cmd{\phantomsection} \\
+\end{syntax}
+\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}.
\subsection{Changing the titles} \label{sec:titles}
Commands are provided for controlling the appearance of the
-\toc, \lof{} and \lot{} titles.
+\toc, \lof\ and \lot\ titles.
\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.
+\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}.
- 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|.
+\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}
- The code for typesetting the \toc{} title looks like:
+ The code for typesetting the \toc\ title looks like:
\begin{lcode}
\tocheadstart
\printtoctitle{\contentsname}
@@ -7425,40 +14742,96 @@ and hopefully yours)
where the macros are described below.
\begin{syntax}
-\cmd{\Zheadstart} \\
+\cmd{\Xheadstart} \\
\end{syntax}
+\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}
-\newcommand{\Zheadstart}{\chapterheadstart}
+\newcommand{\Xheadstart}{\chapterheadstart}
\end{lcode}
\begin{syntax}
-\cmd{\printZtitle}\marg{title} \\
+\cmd{\printXtitle}\marg{title} \\
\end{syntax}
-The title is typeset via \cmd{\printZtitle}, which defaults to
+\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}
-\cmd{\Zmark} \\
+\cmd{\Xmark} \\
\end{syntax}
- These macros sets the appearance of the running heads on the \toc, \lof, and
- \lot{} pages. The default definition is equivalent to:
+\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}
-\newcommmand{\Zmark}{\@mkboth{\...name}{\...name}}
+\newcommmand{\Xmark}{\markboth{\...name}{\...name}}
\end{lcode}
-where |\...name| is \cmd{\contentsname} or \cmd{\listfigurename} or
+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{\afterZtitle} \\
+\cmd{\afterXtitle} \\
\end{syntax}
+\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
+ 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
@@ -7466,22 +14839,23 @@ by changing some of the macros. As examples:
\begin{itemize}
\item Doing
\begin{lcode}
- \renewcommand{\printZtitle}[1]{\hfill\Large\itshape #1}
+ \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{\printZtitle}[1]{\centering\Large\bfseries #1}
+ \renewcommand{\printXtitle}[1]{\centering\Large\bfseries #1}
\end{lcode}
\item Writing
\begin{lcode}
- \renewcommand{\afterZtitle}{\thispagestyle{empty}\afterchaptertitle}
+ \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{\afterZtitle}{%
+ \renewcommand{\afterXtitle}{%
\par\nobreak \mbox{}\hfill{\normalfont Page}\par\nobreak}
\end{lcode}
will put the word `Page' flushright on the line following
@@ -7489,24 +14863,29 @@ by changing some of the macros. As examples:
\end{itemize}
-
-
\subsection{Typesetting the entries} \label{sec:entries}
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
+ package~\cite{LAYOUTS} or in~\cite[p. 51]{COMPANION}, and are repeated in
\fref{fig:ltoc}.
+ 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}.
+
\begin{syntax}
- \cmd{\cftdot}\marg{text} \\
+ \cmd{\cftdot} \\
\end{syntax}
- In the default \toc{} typsetting only the more minor entries have dotted
+\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 |\newcommand{\cftdot}{.}| which gives the 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}
@@ -7518,6 +14897,13 @@ by changing some of the macros. As examples:
\cmd{\cftdotsep} \\
\cmd{\cftnodots} \\
\end{syntax}
+\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
@@ -7530,10 +14916,19 @@ by changing some of the macros. As examples:
\cmd{\setpnumwidth}\marg{length} \\
\cmd{\setrmarg}\marg{length} \\
\end{syntax}
+\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}.
+ 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
@@ -7551,60 +14946,104 @@ so the following was set in the preamble\index{preamble}:
\begin{syntax}
\lnc{\cftparskip} \\
\end{syntax}
+\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
+ 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).
- Again for convenience, in the following I will use |X| to stand for any
-of the following:
+ 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 |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
+ \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{\cftbookbreak} \\
+\cmd{\cftpartbreak} \\
\cmd{\cftchapterbreak} \\
\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}.
+\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}
-\newcommand{\cftchapterbreak}{\addpenalty{-\@highpenalty}}
+\newcommand{\cftbookbreak}{\addpenalty{-\@highpenalty}}
\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.
+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}
-\lnc{\cftbeforeXskip} \\
+\lnc{\cftbeforeKskip} \\
\end{syntax}
+\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}
-\lnc{\cftXindent} \\
+\lnc{\cftKindent} \\
\end{syntax}
- This length controls the indentation of an entry from the left margin\index{margin}
- (\textit{indent} in \fref{fig:ltoc}). It
+\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}
-\lnc{\cftXnumwidth} \\
+\lnc{\cftKnumwidth} \\
\end{syntax}
+\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
@@ -7615,91 +15054,162 @@ be useful.
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
+ {\cftKfont {\cftKname \cftKpresnum SNUM\cftKaftersnum\hfil} \cftKaftersnumb TITLE}
+ {\cftKleader}{\cftKformatpnum{PAGE}}\cftKafterpnum\par
- {\cftXfont TITLE}{\cftXleader}{\cftXpagefont PAGE}\cftXafterpnum\par
+ {\cftKfont TITLE}{\cftKleader}{\cftKformatpnum{PAGE}}\cftKafterpnum\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}.
+ 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{\cftXfont} \\
+\cmd{\cftKfont} \\
\end{syntax}
+\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}.
\begin{syntax}
-\cmd{\cftXpresnum} \cmd{\cftXaftersnum} \cmd{\cftXaftersnumb} \\
+\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}
+\newcommand*{\cftKname}{}
+\end{lcode}
+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}
+\renewcommand*{\cftchaptername}{Chapter\space}
+\renewcommand*{\cftfigurename}{Fig.\space}
+\end{lcode}
+
+\begin{syntax}
+\cmd{\cftKpresnum} \cmd{\cftKaftersnum} \cmd{\cftKaftersnumb} \\
\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}
+\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{\cftXaftersnumb} macro is called before typesetting
+ 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{\booknumberline}\marg{num} \\
\cmd{\partnumberline}\marg{num} \\
\cmd{\chapternumberline}\marg{num} \\
\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,
+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}
\renewcommand{\chapternumberline}[1]{}
\end{lcode}
+\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{\cftXleader} \\
-\cmd{\cftXdotsep} \\
+\cmd{\cftKleader} \\
+\cmd{\cftKdotsep} \\
\end{syntax}
- \cmd{\cftXleader} defines the leader between the title and the page number;
+\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{\cftXdotsep}
+ 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{\cftXpagefont} \\
+\cmd{\cftKformatpnum}\marg{pnum} \\
+\cmd{\cftKpagefont} \\
\end{syntax}
- This defines the font to be used for typesetting the page number. It
- can be changed by \cmd{\renewcommand}.
+\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}
+\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}
\begin{syntax}
-\cmd{\cftXafterpnum} \\
+\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{\cftsetindents}\marg{entry}\marg{indent}\marg{numwidth} \\
+\cmd{\cftsetindents}\marg{kind}\marg{indent}\marg{numwidth} \\
\end{syntax}
+\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{entry}'s \textit{indent} to the
+ \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{entry} argument
- is the name of one of the standard entries (e.g., |subsection|) or the
+ \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}
@@ -7721,50 +15231,50 @@ 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{\cftXfont},
- \cmd{\cftXaftersnum}, \cmd{\cftXaftersnumb}, \cmd{\cftXleader} and
-\cmd{\cftXafterpnum},
+ 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}
- \newcommand{\cftXfont}{}
- \newcommand{\cftXaftersnum}{}
- \newcommand{\cftXaftersnumb}{}
- \newcommand{\cftXleader}{\cftdotfill{\cftXdotsep}}
- \newcommand{\cftXdotsep}{\cftdotsep}
- \newcommand{\cftXpagefont}{}
- \newcommand{\cftXafterpnum}{}
+ \newcommand*{\cftKfont}{}
+ \newcommand*{\cftKaftersnum}{}
+ \newcommand*{\cftKaftersnumb}{}
+ \newcommand*{\cftKleader}{\cftdotfill{\cftKdotsep}}
+ \newcommand*{\cftKdotsep}{\cftdotsep}
+ \newcommand*{\cftKpagefont}{}
+ \newcommand*{\cftKafterpnum}{}
\end{lcode}
- (Note that the same font should be used for the title, leader and page
- number to provide a coherent appearance).
+Note that the same font should be used for the title, leader and page
+ number to provide a coherent appearance.
\begin{itemize}
\item To eliminate the dots in the leader:
\begin{lcode}
- \renewcommand{\cftXdotsep}{\cftnodots}
+ \renewcommand*{\cftKdotsep}{\cftnodots}
\end{lcode}
\item To put something (e.g., a name) before the title (number):
\begin{lcode}
- \renewcommand{\cftXpresnum}{SOMETHING }
+ \renewcommand*{\cftKname}{SOMETHING }
\end{lcode}
\item To add a colon after the section number:
\begin{lcode}
- \renewcommand{\cftXaftersnum}{:}
+ \renewcommand*{\cftKaftersnum}{:}
\end{lcode}
- \item To put something before the title number, add a colon after the
+ \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}
- \renewcommand{\cftXfont}{\bfseries}
- \renewcommand{\cftXleader}{\bfseries\cftdotfill{\cftXdotsep}}
- \renewcommand{\cftXpagefont}{\bfseries}
- \renewcommand{\cftXpresnum}{SOMETHING }
- \renewcommand{\cftXaftersnum}{:}
- \renewcommand{\cftXaftersnumb}{\\}
+ \renewcommand*{\cftKfont}{\bfseries}
+ \renewcommand*{\cftKleader}{\bfseries\cftdotfill{\cftKdotsep}}
+ \renewcommand*{\cftKpagefont}{\bfseries}
+ \renewcommand*{\cftKname}{SOMETHING }
+ \renewcommand{\cftKaftersnum}{::}
+ \renewcommand{\cftKaftersnumb}{\\}
\end{lcode}
If you are adding text in the number box in addition to the number,
@@ -7775,16 +15285,17 @@ indents should be changed as well.
is:
\begin{lcode}
\newlength{\mylen} % a "scratch" length
- \settowidth{\mylen}{\bfseries\cftXpresnum\cftXaftersnum}
- \addtolength{\cftXnumwidth}{\mylen} % add the extra space
+ \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{\cftXpresnum}{\hfill} % note the double `l'
- \renewcommand{\cftXaftersnum}{\hspace*{\mylen}}
- \addtolength{\cftXnumwidth}{\mylen}
+ \renewcommand{\cftKpresnum}{\hfill} % note the double `l'
+ \renewcommand{\cftKaftersnum}{\hspace*{\mylen}}
+ \addtolength{\cftKnumwidth}{\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
@@ -7794,77 +15305,484 @@ indents should be changed as well.
\item To set the entry ragged left (but this only looks good for single
line titles):
\begin{lcode}
- \renewcommand{\cftXfont}{\hfill\bfseries}
- \renewcommand{\cftXleader}{}
+ \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.
+
\item To set the page number immediately after the entry text instead of at
- the righthand margin\index{margin}:
+ the righthand margin\index{margin!right}:
\begin{lcode}
- \renewcommand{\cftXleader}{}
- \renewcommand{\cftXafterpnum}{\cftparfillskip}
+ \renewcommand{\cftKleader}{}
+ \renewcommand{\cftKafterpnum}{\cftparfillskip}
\end{lcode}
- \end{itemize}
+
+\end{itemize}
\begin{syntax}
\cmd{\cftparfillskip} \\
\end{syntax}
+\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{\cftXleader} puts horrible interword
+ 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{\cftpagenumbersoff}\marg{entry} \\
-\cmd{\cftpagenumberson}\marg{entry} \\
+\cmd{\cftpagenumbersoff}\marg{kind} \\
+\cmd{\cftpagenumberson}\marg{kind} \\
\end{syntax}
+\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{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.
+ 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.
The command \cmd{\cftpagenumberson} reverses
- the effect of a corresponding \cmd{\cftpagenumbersoff} for \meta{entry}.
+ the effect of a corresponding \cmd{\cftpagenumbersoff} for \meta{kind}.
- 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.
+ For example, to eliminate page numbers for appendices\index{appendix}
+in the \toc:
\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}),
+ 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.
+ after the appendices\index{appendix} to restore the page numbering in
+the \toc.
- 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.
+ 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.
- \section{New list of\ldots{} and entries}
+\begin{syntax}
+\cmd{\cftlocalchange}\marg{ext}\marg{pnumwidth}\marg{tocrmarg} \\
+\end{syntax}
+\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{\cftaddtitleline}\marg{ext}\marg{kind}\marg{title}\marg{page} \\
+\cmd{\cftaddnumtitleline}\marg{ext}\marg{kind}\marg{num}\marg{title}\marg{page} \\
+\end{syntax}
+\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}
+ ...
+ 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}.
+
+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{\precistoctext}\marg{text} \cmd{\precistocfont} \\
+\end{syntax}
+\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}).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\subsection{Example: No section number}
+
+ 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.
+
+
+ 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}
+
+ 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.
+
+\subsection{Example: Multicolumn entries}
+
+ 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}
+
+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}
+
+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}.
+
+
+\subsection{Example: Multiple contents}
+
+ 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.
+
+ The general style for the \toc, etc., is specified in the \Lpack{memsty}
+package file.
+
+\begin{lcode}
+%%% 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}).
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+ \section{New \listofx\ and entries}
\index{list!new list of|(}
\begin{syntax}
\cmd{\newlistof}\marg{listofcom}\marg{ext}\marg{listofname} \\
\end{syntax}
+\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 |\listofcom| which can then be used like |\listoffigures|
-to typeset the \listofx. The \meta{ext} argument is the file extension to
+ 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
-|\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.
+\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}
@@ -7873,7 +15791,7 @@ makes no entry in the \toc.
\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}
+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:
@@ -7885,8 +15803,10 @@ for the answers in the document. For example:
\par\noindent\textbf{Answer \theanswer. #1}
\addcontentsline{ans}{answer}{\protect\numberline{\theanswer}#1}\par}
\end{lcode}
- which, when used like: \\
- |\answer{Hard} The \ldots| \\
+ which, when used like:
+\begin{lcode}
+\answer{Hard} The \ldots
+\end{lcode}
will print as:
\begin{syntax}
\textbf{Answer 1. Hard} \\
@@ -7894,37 +15814,37 @@ for the answers in the document. For example:
\end{syntax}
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 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, |\Zmark|,
- |\Zheadstart|,
- |\printZtitle|, and
- |\afterZtitle|,
+ 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 |\Zmark| is equivalent to:
+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{\Zmark}{\@mkboth{listofname}{listofname}}
+\newcommand{\Xmark}{\markboth{listofname}{listofname}}
\end{lcode}
However, this may well be altered by the particular \cmd{\pagestyle} in
use.
\begin{syntax}
-|Zdepth| \\
+\verb?Xdepth? \\
\end{syntax}
- The counter |Zdepth| is analagous to the standard
+ 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 |Zdepth|. The default definition is equivalent to
+ than \verb?Xdepth?. The default definition is equivalent to
\begin{lcode}
-\setcounter{Zdepth}{1}
+\setcounter{Xdepth}{1}
\end{lcode}
\begin{syntax}
@@ -7937,28 +15857,36 @@ 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}{}%
+\addtodef{\insertchapterspace}{}%
{\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.
+formatting of the entries, i.e., define an appropriate \verb?\l@kind?
+macro.
\begin{syntax}
\cmd{\newlistentry}\oarg{within}\marg{cntr}\marg{ext}\marg{level-1} \\
\end{syntax}
+\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 |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.
+ 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.
The second required argument, \meta{ext}, is the file extension for the
entry listing.
@@ -7967,60 +15895,57 @@ goes along with the title of the entry.
of the entry in a listing.
- 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
+ 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.
- 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.
+ 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.
+ \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.
- |\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.
-
- 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
+ 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}
- \renewcommand{\theX}{\thewithin.\arabic{X}}
+ \renewcommand{\theK}{\thewithin.\arabic{K}}
\end{lcode}
otherwise as
\begin{lcode}
-\renewcommand{\theX}{\arabic{X}}
+\renewcommand{\theK}{\arabic{K}}
\end{lcode}
-
- As an example of the independent use of \cmd{\newlistentry}, the following
- will set up for sub-answers.
+ As an example of the independent use of \cmd{\newlistentry}, the
+following will set up for sub-answers.
\begin{lcode}
- \newlistentry[answer]{subanswer}{1}
+ \newlistentry[answer]{subanswer}{ans}{1}
\renewcommand{\thesubanswer}{\theanswer.\alph{subanswer}}
\newcommand{\subanswer}[1]{
\refstepcounter{subanswer}
@@ -8040,55 +15965,59 @@ and |N| is an integer number, then the following
\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.
+ 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.
- To turn off page numbering for the subanswers, do \\
- |\cftpagenumbersoff{subanswer}|
+ To turn off page numbering for the subanswers, do
+\begin{lcode}
+\cftpagenumbersoff{subanswer}
+\end{lcode}
- 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}
+ 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{\subsubpara}{\@startsection{subpara}
- {6} % level
- {\parindent} % indent from left margin
+ {6} % level
+ {\parindent} % indent from left margin
{3.25ex \@plus1ex \@minus .2ex} % skip above heading
- {-1em} runin heading with % 1em between title & text
+ {-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}
-
- Each \listofx{} uses a file to store the list entries, and these
+ 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
+\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 LaTeX will respond with the error message:
+ 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}
- |No room for a new write|
+ \texttt{No room for a new write}
\end{center}
- If you get such a message the only recourse is to redesign your document.
+ If you get such a message the only recourse is to redesign your
+document.
-\subsection{Example --- plates}
+\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 `plates' if
-they are on glossy paper\index{paper} and the rest of the book is on ordinary paper\index{paper}.
+ 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.
\begin{lcode}
@@ -8097,18 +16026,20 @@ We can define a new kind of Listing for these.
\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.
-
- 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.
+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}
\newcommand{\afternextverso}[1]{%
\afterpage{\ifodd\c@page #1\else\afterpage{#1}\fi}}
@@ -8121,8 +16052,8 @@ done after the next verso or recto page has been completed.
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}.
+that print the page number before (\cmd{\priorpageref}) or after
+(\cmd{\nextpageref}) that given by \cmd{\pageref}.
\begin{lcode}
\newcounter{mempref}
\newcommand{\priorpageref}[1]{%
@@ -8145,22 +16076,23 @@ following for handling a set of physically tipped in plates.
}
\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.
+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.
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.
+for listing plates that are electronically tipped in but do not have
+printed folios\index{folio} or \cmd{\caption}s.
\index{list!new list of|)}
- \section{Extras}
+ \section{Chapter precis}
\index{chapter!precis|(}
@@ -8231,635 +16163,1106 @@ a chapter title using the \cmd{\precistocfont} (default \cmd{\itshape}).
\index{chapter!precis|)}
- 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} \\
-\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}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\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{bibliography|(}
+\index{float!new|(}
\begin{syntax}
-\senv{thebibliography}\marg{exlabel} \\
-\cmd{\bibitem} ... \\
-\eenv{thebibliography} \\
-\cmd{\bibname} \\
+ \cmd{\newfloat}\oarg{within}\marg{fenv}\marg{ext}\marg{capname} \\
\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.
+\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 preceeded by a
+non-existent chapter number.
-\begin{syntax}
-\cmd{\bibintoc} \cmd{\nobibintoc} \\
-\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}.
+ 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 \ltx\ commands. For convenience, assume that the
+command was called as
+\begin{lcode}
+\newfloat{F}{X}{capname}
+\end{lcode}
+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}
-\cmd{\prebibhook} \cmd{\postbibhook} \\
+\senv{F} float material \eenv{F} \\
+\senv{F*} float material \eenv{F*} \\
\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:
-\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}.}
-\end{lcode}
+ 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}
-\cmd{\setbiblabel}\marg{style} \\
+ \Icn{Xdepth} \\
\end{syntax}
-The style of the labels marking the bibliographic entries can be set
-via \cmd{\setbiblabel}. The default definition is
+ 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}
-\setbiblabel{[#1]\hfill}
+\setcounter{Xdepth}{1}
\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
+To have a subfloat of \texttt{X} appear in the listing do
\begin{lcode}
-\setbiblabel{#1.\hfill}
+\setcounter{Xdepth}{2}
\end{lcode}
-
- The definition of the \Ie{thebibliography} environment is:
+ 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}
-\newenvironment{thebibliography}[1]{%
- \bibsection
- \begin{bibitemlist}{#1}}{\end{bibitemlist}\postbibhook}
+\newcommand{\diagramname}{Diagram}
+\newcommand{\listdiagramname}{List of Diagrams}
+\newlistof{listofdiagrams}{dgm}{\listdiagramname}
+\newfloat{diagram}{dgm}{\diagramname}
+\newlistentry{diagram}{dgm}{0}
+\begin{document}
+ ...
+\listoffigures
+\listfofdiagrams
+ ...
+\begin{diagram}
+\caption{A diagram} \label{diag1}
+ ...
+\end{diagram}
+As diagram~\ref{diag1} shows ...
\end{lcode}
-\begin{syntax}
-\cmd{\bibsection} \\
-\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.
+\index{float!new|)}
- 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.
+\section{Setting off a float} \label{sec:floatsetoff}
+\index{float!set off|(}
-\begin{syntax}
-\lnc{\bibitemsep} \\
-\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}.
+ 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.
- 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
-\begin{lcode}
-\setlength{\bibitemsep}{-\parsep}
-\end{lcode}
+ The following code produces the example\indextwo{framed}{float}
+\figurerefname s~\ref{fig:framef} and~\ref{fig:framefcap}.
-\begin{syntax}
-\cmd{\biblistextra} \\
-\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}%
-}
+\begin{figure}
+\centering
+\begin{framed}\centering
+FRAMED FIGURE
+\end{framed}
+\caption{Example framed figure}\label{fig:framef}
+\end{figure}
+
+\begin{figure}
+\begin{framed}\centering
+FRAMED FIGURE AND CAPTION
+\caption{Example framed figure and caption}\label{fig:framefcap}
+\end{framed}
+\end{figure}
\end{lcode}
-
+\begin{figure}
+%\begin{shadefigure}
+\centering
+\begin{framed}\centering
+FRAMED FIGURE
+\end{framed}
+\caption{Example framed figure}\label{fig:framef}
+%\end{shadefigure}
+\end{figure}
-\index{bibliography|)}
+\begin{figure}
+\begin{framed}\centering
+FRAMED FIGURE AND CAPTION
+\caption{Example framed figure and caption}\label{fig:framefcap}
+\end{framed}
+\end{figure}
-\subsection{Index}
+ 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{index|(}
+\begin{lcode}
+\begin{figure}
+\centering
+\hrule\vspace{\onelineskip}
+RULED FIGURE
+\vspace{\onelineskip}\hrule
+\vspace{\onelineskip}
+\caption{Example ruled figure}\label{fig:rulef}
+\end{figure}
- 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{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}
- In the standard classes the index is set in two columns.
-\begin{syntax}
-\cmd{\onecolindextrue} \\
-\cmd{\onecolindexfalse} \\
-\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.
+\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}
-\begin{syntax}
-\cmd{\makeindex}\oarg{file} \\
-\cmd{\printindex}\oarg{file} \\
-\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.
+\index{float!multiple|(}
+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{shadefigure}
+ \centering
+ \hspace*{\fill}
+ {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
+ \hspace*{\fill}
+ \caption{Example float with two illustrations} \label{fig:mult1}
+ \end{shadefigure}
+% \end{figure}
-\begin{syntax}
-\senv{theindex} entries \eenv{theindex} \\
-\cmd{\indexname} \\
-\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').
+ 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.
+ \end{itemize}
-\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}.
+ 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{Example float with two illustrations} \label{fig:mult1}
+ \end{figure}
+ \end{lcode}
+ 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
+ GRAPHIC 1
+ \caption{Graphic 1 in a float} \label{fig:mult2}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.4\textwidth}
+ \centering
+ 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 \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
+ GRAPHIC 1
+ \caption{Graphic 1 in a float} \label{fig:mult2}
+ \end{minipage}
+ \hfill
+ \begin{minipage}{0.4\textwidth}
+ \centering
+ GRAPHIC 2
+ \caption{Graphic 2 in same float} \label{fig:mult3}
+ \end{minipage}
+ \end{shadefigure}
+% \end{figure}
-\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.
+ 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.
+ 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.
-\begin{syntax}
-\cmd{\preindexhook} \\
-\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
+
+ 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}
-\renewcommand{\preindexhook}{Bold page numbers are used to indicate
-the main reference for an entry.}
-\end{lcode}
+\newcommand*{\hhrule}{\hrule height 0.8pt}% double thickness
+\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}
-\begin{syntax}
-\cmd{\index}\oarg{file}\marg{item} \\
-\cmd{\specialindex}\marg{file}\marg{counter}\marg{item} \\
-\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.
+\newcommand*{\hhrule}{\hrule height 0.8pt}% double thickness
-\begin{syntax}
-\cmd{\see}\marg{item} \cmd{\seename} \\
-\cmd{\seealso}\marg{items} \cmd{\alsoname} \\
-\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{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}
-\index{Alf|see{Alfred}}
-\index{Frederick|seealso{Fred, Rick}}
+\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}
-The actual values for `see' and `see also' are given by the
-\cmd{\seename} and \cmd{\alsoname} macros whose default
-definitions are:
+
+%\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}
-\newcommand{\seename}{see}
-\newcommand{\alsoname}{see also}
+\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{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.
+%\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.
-\begin{syntax}
-\cmd{\showindexmarktrue} \\
-\cmd{\showindexmarkfalse} \\
-\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}.
+\index{float!multiple|)}
-\subsubsection{Indexing and the \Lpack{natbib} package}
+ \section{Where \ltx\ puts floats} \label{sec:floatplace}
- 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.
+\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{\citeindexfile} \\
+ \cmd{\suppressfloats}\oarg{pos} \\
\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(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}.
- 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}
+\begin{figure}
+\centering
+\drawparameterstrue
+\drawfloatpage
+\caption{Float and text page parameters}\label{fig:fpp}
+\end{figure}
-\subsubsection{Populating the \file{idx} file}
+\begin{figure}
+\centering
+\drawparameterstrue
+\setlayoutscale{0.9}
+\drawfloat
+\caption{Float parameters}\label{fig:flp}
+\end{figure}
- 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.
+ \begin{table}
+\begin{adjustwidth}{-3cm}{-3cm}
+ \centering
+%% \captionnamefont{\small\sffamily}
+%% \captiontitlefont{\small\sffamily}
+ \setlength{\belowcaptionskip}{10pt}
+ \caption{Float placement parameters}\label{tab:fpp}
+ \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
+ 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
+ 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
+ floats\index{float!double column} & 0.5 \\ \bottomrule
+\end{tabular}
+\end{adjustwidth}
+\end{table}
- 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.
+ \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 (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}
-\index{index|)}
+ 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. 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\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[\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 \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}
+\renewcommand{\floatpagefraction}{0.01}
+\setlength{\@fpsep}{\textheight}
+\end{lcode}
+
+\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.
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\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
+\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}
+
+ 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.
+
-\newcommand{\pname}{ccaption}
+\index{float!placement|)}
- \section{Introduction}
+\section{Captions}
\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
+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}.
- \section{Captions}
+\section{Caption styling}
+\index{caption!style|(}
- \subsection{Changing the caption style}
+ 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.
-\index{caption!style|(}
+ 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{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.
+\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.
\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 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.
+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}
+{\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{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 of a caption. For example,
- |\captiontitlefont{\itshape}| for an italic title text.
- The class initially specifies |\captiontitlefont{}|
- to give the normal font.
+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.
\begin{syntax}
-\cmd{\captionstyle}\oarg{short}\marg{normal} \\
-\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{centerlastline} \\
+\cmd{\captionstyle}\oarg{short}\marg{style} \\
+\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}.
- By default the name and title of a caption are typeset as a block
- (non-indented)
- paragraph\index{paragraph!block}.
+\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.
- Sensible values for the arguments include:
-\cmd{\raggedleft}, \cmd{\centering}, \cmd{\raggedright}, and
- \cmd{centerlastline}. The class initially specifies
+ 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}
-\captionstyle{}
-\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.
-
+\captionstyle[\centering]{\raggedright}
+\end{lcode}
\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.
+\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.
\begin{syntax}
\cmd{\changecaptionwidth} \\
\cmd{\captionwidth}\marg{length} \\
\cmd{\normalcaptionwidth} \\
\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(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}
- 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(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}
\precaption{\rule{\linewidth}{0.4pt}\par}
\postcaption{\rule{\linewidth}{0.4pt}}
\end{lcode}
- will draw a horizontal line above and below the captions.
- The class initially specifies |\precaption{}| and |\postcaption{}|
- to give the normal appearance.
+ 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.
+ 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
- apperance of the title in any \listofx.
+ 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.
\begin{syntax}
\cmd{\\}\oarg{length} \\
\cmd{\\*}\oarg{length} \\
\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.
+ 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}
+\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}
Effectively, a caption is typeset as though it were:
\begin{lcode}
\precaption
- {\captionnamefont NAME NUMBER \captiondelim}
- {\captionstyle\captiontitlefont THE TITLE}
+ {\captionnamefont NAME NUMBER\captiondelim}
+ {\captionstyle\captiontitlefont THE TITLE\captiontitlefinal}
\postcaption
\end{lcode}
Replacing the above commands by their defaults leads to the simple
format: \\
- |{NAME NUMBER: }{THE TITLE}|
+ \verb?{NAME NUMBER: }{THE TITLE}?
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:
+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}
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\captionnamefont{\sffamily}
\captiondelim{}
\captionstyle{\\}
\captiontitlefont{\scshape}
\setlength{\belowcaptionskip}{10pt}
\caption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
+ \begin{tabular}{lr} \toprule
three & III \\
five & V \\
- eight & VIII \\ \hline
+ eight & VIII \\ \bottomrule
\end{tabular}
- \end{table}
+ \end{shadetable}
A more obvious change in styling is shown in \tref{tab:style},
which was coded as:
@@ -8872,63 +17275,71 @@ with the second
\captiontitlefont{\scshape}
\setlength{\belowcaptionskip}{10pt}
\caption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
+ \begin{tabular}{lr} \toprule
...
\end{table}
\end{lcode}
- This leads to the approximate caption format (processed within |\centering|): \\
- |{\sffamily NAME NUMBER}{\\ \scshape THE TITLE}| \\
+This leads to the approximate caption format
+(processed within \cmd{\centering}):
+\begin{lcode}
+{\sffamily NAME NUMBER}{\\ \scshape THE TITLE}
+\end{lcode}
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{\\}|.
+ 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{\\}?.
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 #1\@empty \caption{#2}\else \caption[#1]{#2}}
- \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.
+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}
- \begin{table}
- \centering
- \mycaption{Redesigned table caption style} \label{tab:style}
- \begin{tabular}{lr} \hline
- ...
- \end{table}
- \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.
+\begin{lcode}
+\begin{table}
+\centering
+\mycaption{Redesigned table caption style} \label{tab:style}
+\begin{tabular}{lr} \toprule
+ ...
+\end{table}
+\end{lcode}
+ 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.
\index{caption!style|)}
- \subsection{Continuation captions and legends}
+ \section{Continuation captions and legends}
-\index{caption!continuation|(}
+\index{caption!continued|(}
\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 `continuation' or `concluded'
+ 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.
@@ -8940,53 +17351,53 @@ with the second
\begin{table}
\centering
\caption{A multi-part table} \label{tab:m}
- \begin{tabular}{lc} \hline
- just a single line & 1 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 1 \\ \bottomrule
\end{tabular}
\end{table}
\begin{table}
\centering
\contcaption{Continued}
- \begin{tabular}{lc} \hline
- just a single line & 2 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 2 \\ \bottomrule
\end{tabular}
\end{table}
\begin{table}
\centering
\contcaption{Concluded}
- \begin{tabular}{lc} \hline
- just a single line & 3 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 3 \\ \bottomrule
\end{tabular}
\end{table}
\end{lcode}
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\caption{A multi-part table} \label{tab:m}
- \begin{tabular}{lc} \hline
- just a single line & 1 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 1 \\ \bottomrule
\end{tabular}
- \end{table}
+ \end{shadetable}
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\contcaption{Continued}
- \begin{tabular}{lc} \hline
- just a single line & 2 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 2 \\ \bottomrule
\end{tabular}
- \end{table}
+ \end{shadetable}
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\contcaption{Concluded}
- \begin{tabular}{lc} \hline
- just a single line & 3 \\ \hline
+ \begin{tabular}{lc} \toprule
+ just a single line & 3 \\ \bottomrule
\end{tabular}
- \end{table}
+ \end{shadetable}
-\index{caption!continuation|)}
+\index{caption!continued|)}
\index{legend}
\index{caption!anonymous|(}
@@ -8994,161 +17405,193 @@ with the second
\begin{syntax}
\cmd{\legend}\marg{text} \\
\end{syntax}
+\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 into a float\index{float} environment, but may be used anywhere.
+anonymous caption, or legend\index{legend} into a float\index{float}
+environment, but may be used anywhere.
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\caption{Another table} \label{tab:legend}
- \begin{tabular}{lc} \hline
+ \begin{tabular}{lc} \toprule
A legendary table & 5 \\
- with two lines & 6 \\ \hline
+ with two lines & 6 \\ \bottomrule
\end{tabular}
\legend{The legend}
- \end{table}
+ \end{shadetable}
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}
+\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}
- \marginpar{\legend{Title legend}
- This is a marginal note with a legend.}
+ \marginpar{\definecolor{shadecolor}{gray}{0.75}\begin{shaded}\legend{LEGEND}
+ This is a marginal note with a legend.\end{shaded}}
- Captioned floats\index{float} are usually thought of in terms of the |table|
- and |figure|\index{figure} environments. There can be other kinds of
+ 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{Title legend}
+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}
+\end{lcode}
- 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:
- \begin{lcode}
- \addcontentsline{lot}{table}{Titling text} % left justifified
- \addcontentsline{lot}{table}{\protect\numberline{}Titling text} % indented
- \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.
+%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.
- \begin{table}
- \centering
+ 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.
+
+ \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} \hline
+ \begin{tabular}{lc} \toprule
An anonymous table & 5 \\
- with two lines & 6 \\ \hline
+ with two lines & 6 \\ \bottomrule
\end{tabular}
- \end{table}
+ \end{shadetable}
As an example, the \textsf{Legendary table} is produced by the following code:
- \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}
- \end{lcode}
+\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} \toprule
+ An anonymous table & 5 \\
+ with two lines & 6 \\ \bottomrule
+\end{tabular}
+\end{table}
+\end{lcode}
Look at the List of Tables to see how the two forms of \cmd{\addcontentsline}
- are typeset.
+are typeset.
- As with the \cmd{\caption} command, the spacing before and after
- a legend is controlled by the \lnc{\abovecaptionskip} and
-\lnc{\belowcaptionskip} lengths.
\begin{syntax}
\cmd{\namedlegend}\oarg{short-title}\marg{long-title} \\
\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}.
+\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} \hline
+ \begin{tabular}{lr} \toprule
seven & VII \\
- eight & VIII \\ \hline
+ eight & VIII \\ \bottomrule
\end{tabular}
\end{table}
\end{lcode}
- \begin{table}
- \centering
+ \begin{shadetable}
+% \centering
\captionnamefont{\sffamily}
\captiontitlefont{\itshape}
\namedlegend{Named legendary table}
- \begin{tabular}{lr} \hline
+ \begin{tabular}{lr} \toprule
seven & VII \\
- eight & VIII \\ \hline
+ eight & VIII \\ \bottomrule
\end{tabular}
- \end{table}
-
-\begin{syntax}
-\cmd{\flegtype}\marg{name} \\
-\cmd{\flegtoctype}\marg{title} \\
-\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:
+ \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}
- 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(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}
+\index{caption!anonymous|)}
+\index{caption!outside a float|(}
+
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.
+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!anonymous|)}
\index{caption!fixed|(}
@@ -9157,26 +17600,42 @@ float\index{float}.
\cmd{\renewfixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
\cmd{\providefixedcaption}\oarg{capcommand}\marg{command}\marg{float} \\
\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}| \\
+\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}
+ \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 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}|
+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}
Captioning commands created by \cmd{\newfixedcaption} will be named and
numbered in the same style as the original \meta{capcommand}, can
@@ -9184,54 +17643,85 @@ float\index{float}.
\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
+ example, using \cs{ctabcaption} in a \Ie{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
+ 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}
+\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).
+ 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}
+
+ 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|)}
- \subsection{Bilingual captions}
+\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} \\
+\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.}
+
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
@@ -9243,361 +17733,788 @@ which is part of the
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
+ are English and German and a figure\index{figure} is being captioned:
+\begin{lcode}
+\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.
+
+ Figure~\ref{fig:bi1}, typeset from the following code, is an example.
+\begin{lcode}
+\begin{figure}
+\centering
+EXAMPLE FIGURE WITH BITWONUMCAPTION
+\bitwonumcaption[fig:bi1]%
+ {}{Long \cs{bitwonumcaption}}%
+ {Bild}{ }{Lang \cs{bitwonumcaption}}
+\end{figure}
+\end{lcode}
+
+ \begin{shadefigure}
+% \centering
EXAMPLE FIGURE WITH BITWONUMCAPTION
\bitwonumcaption[fig:bi1]{}{Long \cs{bitwonumcaption}}{Bild}{ }{Lang \cs{bitwonumcaption}}
+ \end{shadefigure}
+
+ 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}
+\begin{figure}
+\centering
+EXAMPLE FIGURE WITH BIONENUMCAPTION
+\bionenumcaption[fig:bi3]%
+ {}{Long English \cs{bionenumcaption}}%
+ {Bild}{ }{Lang Deutsch \cs{bionenumcaption}}
\end{figure}
+\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
+ \begin{shadefigure}
+% \centering
EXAMPLE FIGURE WITH BIONENUMCAPTION
- \bionenumcaption[fig:bi3]{}{Long English \cs{bionenumcaption}}{Bild}{ }{Lang Deutsch \cs{bionenumcaption}}
- \end{figure}
+ \bionenumcaption[fig:bi3]%
+ {}{Long English \cs{bionenumcaption}}%
+ {Bild}{ }{Lang Deutsch \cs{bionenumcaption}}
+ \end{shadefigure}
\begin{syntax}
-\cmd{\bicaption}\oarg{label}\marg{short1}\marg{long1}\marg{NAME}\marg{long2} \\
+\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.
+\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.}
+
+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}
+\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{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
+ \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{figure}
+ \midbicaption{\precaption{}%
+ \postcaption{\rule{\linewidth}{0.4pt}}}
+ \bicaption[fig:bi2]{Short English \cs{bicaption}}{Longingly}%
+ {Bild}{Langlauf}
+ \end{shadefigure}
\begin{syntax}
-\cmd{\bicontcaption}\marg{long1}\marg{NAME}\marg{long2} \\
+\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}|
+\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}
\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 of the second caption with respect to the first.
+ 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}
+\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{}|.
+\cmd{\midbicaption}\verb?{...}? nulls the pre-caption line and adds
+a post-caption line for the second caption. The class initially specifies
+\verb?\midbicaption{}?.
+\index{bilingual captions|)}
\index{caption!bilingual|)}
- \subsection{Subcaptions}
+ \section{Subcaptions}
\index{caption!subcaption|(}
-
- 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.
-
-\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
+\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{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 caption listings for the float. If it is not present, then
+\meta{subtitle} is added to the listing.
- For example:
+ 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{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}
+\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}
\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}.
+ 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 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}.
+ 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}|(|\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)'.
+\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
+\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{figure}
+\end{lcode}
\begin{syntax}
-\cmd{\tightsubcaptions} \cmd{\loosesubcations} \\
+\cmd{\tightsubcaptions} \cmd{\loosesubcaptions} \\
\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}.
+\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.
\begin{syntax}
-\cmd{\subcaptionsize}\marg{font-size} \\
+\cmd{\subcaptionsize}\marg{size} \\
\cmd{\subcaptionlabelfont}\marg{fontspec} \\
\cmd{\subcaptionfont}\marg{fontspec} \\
\end{syntax}
-The size of the font used for subcaptions is set by \cmd{\subcaptionsize}.
-The default is:
+\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}
-\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:
-\begin{lcode}
\subcaptionlabelfont{\normalfont}
\subcaptionfont{\normalfont}
\end{lcode}
\begin{syntax}
\cmd{\subcaptionstyle}\marg{style} \\
+\cmd{\raggedleft} \cmd{\centering} \cmd{\raggedright} \cmd{\centerlastline} \\
\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.
+\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}
- 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}.
+\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|)}
-\begin{syntax}
- \cmd{\subtop}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
- \cmd{\subbottom}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
-\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.
+\section{Side captions}
- The \cmd{\subbottom} command is similar, except that the identifier
-and any \meta{subcaption} is placed below the \meta{text}.
+\index{caption!side|(}
- The main caption can be at either the top or the bottom of the float.
+ 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.
- For example:
+
+\begin{syntax}
+\senv{sidecaption}\oarg{fortoc}\marg{title}\oarg{label} \\
+ the body of the float \\
+\eenv{sidecaption} \\
+\end{syntax}
+\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}
\begin{figure}
-\subbottom{...} % captioned as (a) below
-\subtop{...} % captioned as (b) above
-\caption{...}
+ \begin{sidecaption}{An illustration}[fig:ill]
+ \centering
+ \includegraphics{...}
+ \end{sidecaption}
\end{figure}
\end{lcode}
+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}
- As another example, \fref{subfig:sf} and the next paragraph
-was produced by the code below.
+ 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{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}
+\begin{syntax}
+\senv{sidecontcaption}\marg{title}\oarg{label} \\
+ the body of the float \\
+\eenv{sidecontcaption} \\
+\end{syntax}
+\glossary(sidecontcaption)%
+ {\senv{sidecontcaption}\marg{title}\oarg{label}}%
+ {Environment for setting a continued sidecaption.}%
+Sidecaptions may be continued with the \Ie{sidecontcaption} environment.
- Figure \ref{subfig:sf} has two subfigures, namely \ref{sf:1}
-and \subcaptionref{sf:2}.
+\begin{syntax}
+\senv{sidenamedlegend}\oarg{fortoc}\marg{title} \\
+ the body of the float \\
+\eenv{sidenamedlegend} \\
+\end{syntax}
+\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}
+\senv{sidelegend}\marg{title} \\
+ the body of the float \\
+\eenv{sidelegend} \\
+\end{syntax}
+\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.
+
+
+
+
+\subsection{Tweaks}
+
+\begin{syntax}
+\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.
+
+\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 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}
- 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}
+\overridescapmargin{right}
\end{lcode}
+to fix this.
-
- 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 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).
\begin{syntax}
- \cmd{\contsubtop}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
- \cmd{\contsubbottom}\oarg{list-entry}\oarg{subcaption}\marg{text} \\
+\cmd{\sidecapfloatwidth}\marg{length} \\
\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}.
+\glossary(sidecapfloatwidth)%
+ {\cs{sidecapfloatwidth}\marg{length}}%
+ {Macro holding the width of a float with a sidecaption.}%
- For example:
+ The float is set in a \Ie{minipage} with width \cmd{sidecapfloatwidth},
+whose default definition is
\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}
+\newcommand*{\sidecapfloatwidth}{\linewidth}
+\end{lcode}
+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}
+\renewcommand*{\sidecapfloatwidth}{0.5\linewidth}
+\end{lcode}
+ 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}.
- 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.
+ 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}
-\index{caption!subcaption|)}
+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 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}
+\sidecapmargin{left}
+\end{lcode}
+
+ 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|)}
- \subsection{How LaTeX makes captions} \label{sec:ltx}
+ \section{How \ltx\ makes captions} \label{sec:ltx}
-\index{caption!LaTeX methods|(}
+\index{caption!\ltx\ methods|(}
- 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.
+ 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 LaTeX code
- or you want to make changes to LaTeX's style of captioning.
+ reading \ltx\ code
+ or you want to make changes to \ltx's style of captioning not supported
+by the class.
- The LaTeX kernel provides tools to help in the definition of captions,
+ The \ltx\ kernel provides tools to help in the definition of captions,
but it is the particular class that decides on their format.
\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}
-\def\caption{\refstepcounter\@captype \@dblarg{\@caption\@captype}}
+\def\caption{%
+ \refstepcounter\@captype \@dblarg{\@caption\@captype}}
\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,
+ \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}
@@ -9608,35 +18525,34 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
\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}
+\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}|}|.
+ 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
- |<--| above).
+ 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{\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
+ For example for the \Ie{figure} float\index{float} environment there is the
definition equivalent to
\begin{lcode}
\newcommand{\ext@figure}{lof}
@@ -9646,7 +18562,7 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
\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
+ for the \Ie{figure} environment there is the definition equivalent to
\begin{lcode}
\newcommand{\fnum@figure}{\figurename~\thefigure}
\end{lcode}
@@ -9660,54 +18576,66 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
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
+\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}
\begin{syntax}
\lnc{\abovecaptionskip}
\lnc{\belowcaptionskip} \\
\end{syntax}
+\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} 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.
+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 bold:
+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}
\renewcommand{\fnum@figure}{\textbf{\figurename~\thefigure}}
\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:
+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}
\makeatletter
\renewcommand{\fnum@figure}{......}
@@ -9715,13 +18643,14 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
\end{lcode}
\makeatletter
+\let\oldfnum@figure\fnum@figure
\renewcommand{\fnum@figure}{\textsc{\figurename~\thefigure}}
\makeatother
- \begin{figure}
+ \begin{shadefigure}
\centering
A THOUSAND WORDS\ldots
\caption{A picture is worth a thousand words}\label{fig:sc}
- \end{figure}
+ \end{shadefigure}
As an example, \fref{fig:sc} was created by the following code:
\begin{lcode}
@@ -9736,19 +18665,21 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
\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.
+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.
\makeatletter
\renewcommand{\fnum@figure}[1]{\textbf{\figurename~\thefigure} --- \sffamily}
\makeatother
- \begin{figure}
+ \begin{shadefigure}
\centering
ANOTHER THOUSAND WORDS\ldots
\caption{A different kind of figure caption}\label{fig:sf}
- \end{figure}
+ \end{shadefigure}
\begin{lcode}
\makeatletter
@@ -9762,45 +18693,54 @@ used in either the \meta{subcaption} or the \meta{text} arguments to
\end{figure}
\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| \\
+ 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 \\
- |\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.
+ 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.
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
+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.
-\index{caption!LaTeX methods|)}
+\makeatletter
+\let\fnum@figure\oldfnum@figure
+\makeatother
+\index{caption!\ltx\ methods|)}
- \subsection{Captions with footnotes}
+
+ \section{Footnotes in captions}
\index{caption!footnote|(}
\index{footnote!in caption|(}
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
+ 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.
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.
+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.
You will probably be surprised if you just do, for example:
\begin{lcode}
@@ -9809,10 +18749,11 @@ the \lof, use a
\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:
+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}
@@ -9826,9 +18767,10 @@ 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:
+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}
...
@@ -9837,10 +18779,12 @@ class, nor will an unexpected increase of the footnote number.
\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.
+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.
@@ -9850,461 +18794,27 @@ class, nor will an unexpected increase of the footnote number.
\index{caption|)}
-\section{Floats}
-
-
- \subsection{New float environments}
-
-\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:
-\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.
-
-
- The captioning 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
-\begin{lcode}
-\newfloat{X}{Z}{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.
-The following float environment and related commands are then created.
-
-\begin{syntax}
-\senv{X} float material \eenv{X} \\
-\senv{X*} float material \eenv{X*} \\
-\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|.
-
-\begin{syntax}
- \Icn{Zdepth} \\
-\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}|.
-
-
- 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
- ...
- \begin{diagram}
- \caption{A diagram} \label{diag1}
- ...
- \end{diagram}
- As diagram~\ref{diag1} shows ...
- \begin{minipage}{.9\textwidth}
- \fdiagcaption{Another diagram} \label{diag2}
- ...
- \end{minipage}
-
- In contrast to diagram~\ref{diag1}, diagram~\ref{diag2} provides ...
- \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|)}
-
-
-\subsection{New subfloats} \label{sec:newsub}
-
-\index{subfloat!new|(}
-
- 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.
-
-\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|.
-
- 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}.
-
- 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}
-\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}.
-
-\index{subfloat!new|)}
-
-
- \subsection{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.
-
- \begin{figure}
- \centering
- \hspace*{\fill}
- {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
- \hspace*{\fill}
- \caption{Float with two illustrations} \label{fig:mult1}
- \end{figure}
-
- 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.
- \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.
- \begin{lcode}
- \begin{figure}
- \centering
- \hspace*{\fill}
- {ILLUSTRATION 1} \hfill {ILLUSTRATION 2}
- \hspace*{\fill}
- \caption{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.
- \begin{lcode}
- \begin{figure}
- \centering
- \begin{minipage}{0.4\textwidth}
- \centering
- ILLUSTRATION 3
- \caption{Illustration 3} \label{fig:mult2}
- \end{minipage}
- \hfill
- \begin{minipage}{0.4\textwidth}
- \centering
- ILLUSTRATION 4
- \caption{Illustration 4} \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}
- \centering
- \begin{minipage}{0.4\textwidth}
- \centering
- ILLUSTRATION 3
- \caption{Illustration 3} \label{fig:mult2}
- \end{minipage}
- \hfill
- \begin{minipage}{0.4\textwidth}
- \centering
- ILLUSTRATION 4
- \caption{Illustration 4} \label{fig:mult3}
- \end{minipage}
- \end{figure}
-
- Keith Reckdahl~\cite{EPSLATEX} provides more examples of this
- kind of thing.
-
-\index{float!multiple|)}
-
-
- \subsection{Where LaTeX puts floats}
-
-\index{float!placement|(}
-
- 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.
-
-\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}.
-
-\begin{figure}
-\centering
-\drawparameterstrue
-\drawfloatpage
-\caption{Float and text page parameters}\label{fig:fpp}
-\end{figure}
-
-\begin{figure}
-\centering
-\drawparameterstrue
-\setlayoutscale{0.9}
-\drawfloat
-\caption{Float parameters}\label{fig:flp}
-\end{figure}
-
- \begin{table}
-\begin{adjustwidth}{-1cm}{-1cm}
- \centering
- \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
- \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 \\
- \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{\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
- \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
- \end{tabular}
-\end{adjustwidth}
- \end{table}
- Figures~\ref{fig:fpp} and~\ref{fig:flp} illustrate the many 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.
- 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!
- 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}
- 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
- 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}
-\renewcommand{\floatpagefraction}{0.01}
-\setlength{\@fpsep}{\textheight}
-\end{lcode}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% Original memman
- \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|)}
+%%%%%%%%%%%%%%% end original memman
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeleteShortVerb{\|}
-\MakeShortVerb{\=}
+%%%%\DeleteShortVerb{\|}
+%%%%\MakeShortVerb{\=}
%%%%\input{tabmanbody} %% rows & columns
%%%% tabmanbody.tex
\chapter{Rows and columns}
-\section{Introduction}
-
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},
@@ -10316,7 +18826,7 @@ environments. These are based partly on a merging of the
Much of the material in this chapter strongly reflects the
documentation of these packages.
- However, new kinds of tabular environments are also provided.
+ Additionaly, new kinds of tabular environments are also provided.
\section{General}
@@ -10327,6 +18837,20 @@ documentation of these packages.
\senv{tabular*}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabular*} \\
\senv{tabularx}\marg{width}\oarg{pos}\marg{preamble} rows \eenv{tabularx} \\
\end{syntax}
+\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}
@@ -10341,8 +18865,8 @@ Each row consists of elements separated by
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.
+all the columns. However, the \Ie{tabular*} and \Ie{tabularx} environments
+provide more control over the width through their \meta{width} argument.
\section{The preamble}
@@ -10352,26 +18876,29 @@ entries to appear. The preamble consists of a sequence of options, which
are listed in \tref{tab:tabpream}.
\begin{table}
- \begin{center}
+\begin{adjustwidth}{-5mm}{-5mm}
+ %\begin{center}
+\centering
\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{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
- =\parbox=\marg{width}. \\
- \texttt{b}\marg{width} & Coincides with =\parbox[b]=\marg{width}. \\
+ \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}, =p{..}=, =m{..}= or a =b{..}=
+ \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
@@ -10384,39 +18911,46 @@ are listed in \tref{tab:tabpream}.
\meta{decl} is inserted instead of a
vertical line, so this option doesn't
suppress the normally inserted space between
- columns in contrast to =@{...}=.\\
+ 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{center}
+\end{adjustwidth}
\end{table}
Examples of the options include:
\begin{itemize}
\item A flush left column with bold font can be specified
- with =>{\bfseries}l=.
+ with \verb?>{\bfseries}l?.
%% Companion, page 106.
+%\begin{egsource}{eg:tabcols}
\begin{lcode}
\begin{center}
-\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c} \toprule
+\begin{tabular}{>{\large}c >{\large\bfseries}l >{\large\itshape}c}
+ \toprule
A & B & C \\
100 & 10 & 1 \\ \bottomrule
\end{tabular}
\end{center}
\end{lcode}
+%\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
+\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 =\parindent= is
- \textsf{0pt}.
+ or \texttt{b}, the default value of \lnc{\parindent} is
+ 0pt.
%Companion, page 106.
@@ -10438,8 +18972,11 @@ A & B & C \\
\end{tabular}
\end{center}
- The \lnc{\parindent} can be changed with, for example
- =>{\setlength{\parindent}{1cm}}p=.
+ The \lnc{\parindent} for a particular column can be changed with,
+for example
+\begin{lcode}
+>{\setlength{\parindent}{1cm}}p
+\end{lcode}
%%Companion, page 107.
@@ -10460,14 +18997,14 @@ A & B & C \\
\end{center}
\item
- The specification =>{$}c<{$}= generates a column in math
+ 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 =c!{\hspace{1cm}}c= you get space between two
+ Using \verb?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
+ \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
@@ -10564,60 +19101,81 @@ entries with at most two decimal places after a~`$,$'.
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
+ 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.
- 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.
+ Be careful if you have table headings inserted, say, with
\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}
+\multicolumn{1}{c}{...}
+\end{lcode}
+ 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}
+D{.}{.}{-1}
\end{lcode}
+to produce a column centered on the `.', and the second column is set with
+\begin{lcode}
+D{.}{.}{1}
+\end{lcode}
+to produce a right aligned column.
+%\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}
+
+\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 & 1.2 &1.2 \\
- 11212.2& 11212.2&11212.2 \\
- .4 & .4 &.4
+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 & 1.2 &1.2 \\
- .4 & .4 &.4
+1 & 2 & 3 \\
+1.2 & 1.2 & 1.2 \\
+.4 & .4 & .4
\end{tabular}
\end{center}
+\end{egresultplain}
- In both of these tables the first column is set with =D{.}{.}{-1}=
+ 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 =D{.}{.}{1}= to produce a right aligned column.
+ 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
@@ -10628,22 +19186,25 @@ entries with at most two decimal places after a~`$,$'.
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
+\begin{lcode}
+D{+}{\,\pm\,}{3,3}
+\end{lcode}
+ 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}
- =>{=\meta{some declarations}=}{c}<{=\meta{some more
- declarations}=}=
+ \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}
- =\newcolumntype{x}{>{=\meta{some declarations}=}{c}<{=\meta{some
- more declarations}=}}=\hspace*{-3cm}
+ \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.
@@ -10651,8 +19212,12 @@ you want a column of this kind.
\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}
+\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}
@@ -10677,19 +19242,22 @@ columns in the same alignment. Defining:
\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{Notes}
+\subsection{Surprises}
\begin{itemize}
- \item A preamble of the form ={wx*{0}{abc}yz}= is treated as ={wxyz}=
+ \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 ={cc*{2}}= with an error in
+ \item A preamble such as \verb?{cc*{2}}? with an error in
a $*$-form will generate an error message
that is not particularly helpful.
@@ -10726,15 +19294,15 @@ defined using these declarations to be overriden.
\end{lcode}
instead.
- \item As noted by the \ltx{} book, a
+ \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
- =|l|l|l|l|= input such as =\multicolumn{2}{|c|}= in
+ \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 =|= takes no horizontal space. But in the class the
+ 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?|?.
@@ -10782,10 +19350,9 @@ to be indicated using \cmd{\left} and \cmd{\right} commands.
\end{array} \right] \]
- 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:
+ 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}
\[ \begin{array}({cc})a&b\\c&d\end{array} \]
\end{lcode}
@@ -10813,29 +19380,46 @@ Or, a litle more complex
z
\end{array} \]
- Similarly an environment equivalent to plain TeX's \cmd{\cases} could
- be defined by:\\
+ 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}
+
+\[ a = {\begin{array}|{*{20}{c}}|
+ x-\lambda & 1 & 0 \\
+ 0 & x-\lambda & 1 \\
+ 0 & & x-\lambda \\
+ \end{array}
+ }^{2} \]
+
+
+
+ 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
+ 0 & if $x=0$\\
+ \sin(x)/x & otherwise
\end{array} \]
\end{lcode}
- \DeleteShortVerb{\=}
\newcolumntype{L}{>{$}l<{$}}
\[ f(x)=\begin{array}\{{lL}.
- 0 &if $x=0$\\
- \sin(x)/x&otherwise
+ 0 & if $x=0$\\
+ \sin(x)/x & otherwise
\end{array} \]
- \MakeShortVerb{\=}
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 `=.='
+ Note that as the delimiters must always be used in pairs, the `\texttt{.}'
must be used to denote a `null delimiter'.
- This feature is especially useful if the =[t]= or =[b]=
+ 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:
@@ -10860,6 +19444,8 @@ earlier.
\left(\begin{array}[b]{c} 1\\2\\3 \end{array}\right)
\]
+
+
\section{Tables}
A table is one way of presenting a large amount of information
@@ -10868,9 +19454,11 @@ require several wordy paragraphs --- it is not only a picture that is worth
a thousand words.
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 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 have \emph{heads} (or \emph{headings}) at
+ 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
@@ -10878,31 +19466,55 @@ may include subheadings, often to specify the unit of measurement for numeric
data.
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.
+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.
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
+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.
+matter below it. To try and clarify, the parts of a table
+are shown diagrammatically in \tref{tab:tabparts}.
+
+\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 any vertical rules in a table, and this is
+ 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 only, and these should be single,
+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's that the visual clutter should
-be eliminated.
+no typesetting is done by hand any more, it is simply that the visual
+clutter should be eliminated.
- For example, in \tref{tab:2views}, \tref{tab:before} is from the \ltx{} book and
+ 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.
-\begin{lcode}
+should be cleaned up. Notice how both the revised code and the table
+are generally simpler than the originals.
+
\begin{table}
\centering
-\caption{Two views of one table} \label{tab:2views}
+\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}
@@ -10924,11 +19536,11 @@ should be cleaned up.
\end{tabular}
}
\end{table}
-\end{lcode}
+\begin{lcode}
\begin{table}
\centering
-\caption{Two views of one table} \label{tab:2views}
+\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}
@@ -10942,165 +19554,452 @@ should be cleaned up.
\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
+ 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}
-\subsection{Fear's rules} \label{sec:fear}
- 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.
+ 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}.
- 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}.
+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}
-\begin{syntax}
-\cmd{\toprule}\oarg{wd}
-\cmd{\bottomrule}\oarg{wd}
-\lnc{\heavyrulewidth} \\
-\cmd{\midrule}\oarg{wd}
-\lnc{\lightrulewidth} \\
-\end{syntax}
+ 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 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.
+\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}
+
+ 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}.
+
+\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}
+
+\section{Fear's rules}
+
+ 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|(}
+
+ 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.
- 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} \\
-\end{syntax}
-Similar to the normal \cmd{\cline} macro, \cmd{\cmidrule} draws a
-rule across the columns (numbered) \meta{a--b}.
-Generally, this rule
+\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 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
+ 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 braces or brackets for this optional argument. For example,
-the code
+ 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}
-\cmidrule(r){1-2}
+... \\ \cmidrule{2-3}\cmidrule{5-7}
\end{lcode}
-is used for \tref{tab:after}.
+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}.
-The default width is \lnc{\cmidrulewidth} but the optional
-\meta{wd} argument can be used to override this.
+ 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}
+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}.
- An example of the commands in use is given by the code used to
- produce the `after' example in \tref{tab:after} above.
-
- 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.
\begin{syntax}
-\cmd{\addlinespace}\oarg{wd}
+\cmd{\addlinespace}\oarg{width}
\lnc{\defaultaddspace} \\
\end{syntax}
-Think of \cmd{\addlinespace} as being a white rule of width \meta{wd}.
+\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}.}
+
+
+ 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.
+ less than a whole line space. If another rule follows
+the amount of whitespace is increased by \lnc{\doublerulesep}.
\begin{syntax}
-\cmd{\specialrule}\marg{wd}\marg{abovespace}\marg{belowspace} \\
+\cmd{\specialrule}\marg{width}\marg{abovespace}\marg{belowspace} \\
\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(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}.
+
+ 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}.
+
+ 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{Fills}
+
+\index{table!row fill|(}
+\index{array!row fill|(}
+
+ 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{\morecmidrules} \\
+\cmd{\downbracefill} \cmd{\hrulefill} \cmd{\upbracefill} \\
\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
+\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.}
+
+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.
+
+
\begin{lcode}
-\cmidrule{1-2}\cmidrule{1-2}
+\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 second command writes a rule that just overwrites the first
- one. Use
+
+\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}
+
+ 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.
+
\begin{lcode}
-\cmidrule{1-2}\morecmidrules\cmidrule{1-2}
+\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}
- 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).
- 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.
+\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}
-\subsection{Tabular environments}
+ You can define your own `fill'. For example:
+\begin{lcode}
+\newcommand*{\upbracketfill}{%
+ \vrule height 4pt depth 0pt\hrulefill%
+ \vrule height 4pt depth 0pt}
+\end{lcode}
+is a fill that has the appearance of a (horizontal) bracket. It can
+be used like this:
+\begin{lcode}
+\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}
+
+\newcommand*{\upbracketfill}{%
+ \vrule height 4pt depth 0pt\hrulefill\vrule height 4pt depth 0pt}
+
+\begin{displaymath}
+\begin{array}{cccc}
+1 & 2 & 3 & 4 \\
+a & \multicolumn{2}{c}{\upbracketfill} & d \\
+A & B & C & D
+\end{array}
+\end{displaymath}
+
+\index{array!row fill|)}
+\index{table!row fill|)}
+
+\section{Tabular environments}
+
+\index{tabular|(}
\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} \\
+\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}
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 overall width\index{tabular!controlling 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}.
+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.
+ \subsection{Examples}
+
The following code is used for a regular \Ie{tabular}.
\begin{lcode}
-\begin{center}
+\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.\\
+\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}
+\end{figure}
\end{lcode}
-\begin{center}
+\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 &
@@ -11110,18 +20009,18 @@ three &
column two, with the same width.\\
\hline
\end{tabular}
-\end{center}
+\end{figure}
+
The following examples use virtually the same contents, the major
differences are the specifications of the environment.
- The following \Ie{tabularx} is set with
-\begin{lcode}
-\begin{tabularx}{250pt}{|c|X|c|X|}
-\end{lcode}
-and the result is:
- \begin{center}
+\begin{figure}
+\centering
+\caption{Example \texttt{tabularx} and \texttt{tabular*} with widths of 250pt}
+\verb?\begin{tabularx}{250pt}{|c|X|c|X|}?
+
\begin{tabularx}{250pt}{|c|X|c|X|}
\hline
\multicolumn{2}{|c|}{Multicolumn entry!}&
@@ -11137,16 +20036,10 @@ and the result is:
column two, with the same width.\\
\hline
\end{tabularx}
- \end{center}
+\vspace{\onelineskip}
+
+\verb? \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}?
-The following \Ie{tabular*} is set with
-\begin{lcode}
- \begin{tabular*}{250pt}{|c|p{5.5pc}|c|p{5.5pc}|}
-\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!}&
@@ -11160,119 +20053,142 @@ lines spill over the right hand end of the apparent tabular width.
column two, with the same width.\\
\hline
\end{tabular*}
- \end{center}
+\end{figure}
-The next \Ie{tabular*} table is set with
+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.
+
+
+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}|}
+ \begin{tabular*}{300pt}%
+ {|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
\end{lcode}
- \begin{center}
- \begin{tabular*}{300pt}{|@{\extracolsep{\fill}}c|p{5.5pc}|c|p{5.5pc}|}
+\begin{figure}
+\centering
+\caption{Example \texttt{tabularx} and \texttt{tabular*} with widths of 300pt}
+\verb?\begin{tabularx}{300pt}{|c|X|c|X|}?
+
+ \begin{tabularx}{300pt}{|c|X|c|X|}
\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 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{tabular*}
- \end{center}
-
-
-The following \Ie{tabularx} is set with
-\begin{lcode}
-\begin{tabularx}{300pt}{|c|X|c|X|}
-\end{lcode}
-the result is:
+ \end{tabularx}
- \begin{center}
- \begin{tabularx}{300pt}{|c|X|c|X|}
+\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 depends on the
- width of the table.&
- three&
+ \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{tabularx}
- \end{center}
+ \end{tabular*}
+\end{figure}
+
+
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{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 ={ }=.
+ 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, \texttt{verb} and \texttt{verb*} may be used, but they may
+ {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
+ \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.
+ expanded several times may break certain \tx\ constructs.
\end{itemize}
\begin{syntax}
\cmd{\tracingtabularx} \\
\end{syntax}
+\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.
+
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
+ \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} preamble may include
+\cmd{\centering} declaration. Thus a \Ie{tabularx} format 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,
+ These format specifications may of course be saved using the
+ command, \cmd{\newcolumntype}\index{tabular!new column type}.
+After specifying, say,
\begin{lcode}
\newcolumntype{Y}{>{\small\raggedright\arraybackslash}X}
\end{lcode}
-then \texttt{Y} could be used in the \Ie{tabularx} preamble
+then \texttt{Y} could be used in the \Ie{tabularx} format
argument.
+
\begin{syntax}
\cmd{\tabularxcolumn} \\
\end{syntax}
+\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}=[t]=. You may want them set using, say, the
-\texttt{m} column, which corresponds to \cmd{\parbox}=[c]=. It is not
+ 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} preamble
+ 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.
@@ -11287,34 +20203,32 @@ This may be changed, for instance
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
+ 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 preamble argument of
+ A format argument of
\begin{lcode}
{>{\hsize=.5\hsize}X>{\hsize=1.5\hsize}X}
\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}
+ 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{enumerate}
- As with most rules, these may be broken if you know what you are
- doing.
+ \end{itemize}
- 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
+ \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
@@ -11326,18 +20240,21 @@ just as it does not work in the argument to any macro.
\begin{syntax}
\cmd{\TX@verb} \\
\end{syntax}
-\cmd{\TX@verb} is the `poor man's \cmd{\verb}'
-and is based on page 382 of the \tx Book. As
+\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 a \cmd{\verb*} version may well be useless.
+ 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 ensure that the real definition is restored afterwards.
+It must sure that the real definition is restored afterwards.
- This version of \cmd{\verb} is subject to the
+ 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
@@ -11347,46 +20264,253 @@ following restictions:
\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 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 =?`= and =!`= will appear as
- {\ttfamily?`} and {\ttfamily!`} if the \texttt{cmtt} font is
- being used.
+ \item The combinations \verb=?`= and \verb?!`? will appear as
+ {\ttfamily?`} and {\ttfamily!`} if the Computer Typewriter\index{Typewriter}
+ font is being used.
\end{enumerate}
+
+\index{tabular|)}
+
+\section{Spaces and rules}
+
+\subsection{Spacing}
+
+ Sometimes tabular rows appear vertically challenged.
+
+\begin{syntax}
+\cmd{\arraystretch} \\
+\end{syntax}
+\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}
+\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
+...
+\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}
+\lnc{\arrayrulewidth} \lnc{\doublerulesep} \\
+\end{syntax}
+\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, 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
+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
-on a caption at the top of each page, repeating the column heads, and
+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{preamble} rows \eenv{ctabular} \\
-\senv{ctabular*}\oarg{pos}\marg{width}\marg{preamble} rows \eenv{ctabular*} \\
+\senv{ctabular}\oarg{pos}\marg{format} rows \eenv{ctabular} \\
\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}
+\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 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}.
+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
@@ -11405,11 +20529,60 @@ 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 caption. For example:
+fixed\index{tabular!free!caption} caption\index{caption!fixed}.
+For example:
\begin{lcode}
\newfixedcaption{\freetabcaption}{table}
\end{lcode}
@@ -11417,86 +20590,131 @@ 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.
+\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 table below was set by \cmd{\autorows} using:
+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}
-\freetabcaption{Example automatic row ordered table}
+\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} (\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.
+ 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 which is large enough to accomodate
+ 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
+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 next examples illustrate the effect of the \meta{width} argument
-(the default value is 0pt).
+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}
-\freetabcaption{Changing the width of a row ordered table}
+\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, four, five, ... }
-\autorows[0.9\textwidth]{c}{5}{c}{one, two, three, four, five, ... }
+...
+\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}
-\freetabcaption{Changing the width of a row ordered table}
+\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}
-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.
+\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.
@@ -11506,166 +20724,54 @@ For instance:
\end{lcode}
\newcommand*{\comma}{,}
-The following examples illustrate these points.
+The examples in \fref{fig:acw}, from the following code elements,
+illustrate these points.
\begin{lcode}
-\freetabcaption{Changing the width of a column ordered table}
+\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, 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}
-\freetabcaption{Changing the width of a column ordered table}
+\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}
-
-\section{Spacing}
-
- 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]
-
- 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.)
+\index{tabular!automatic|)}
+\index{tabular!free|)}
-%%%%%%%%%%%%%%%%%%%%%%%%
-% end of tabman.tex
-%%%%%%%%%%%%%%%%%%%%%%%
-\DeleteShortVerb{\=}
-\MakeShortVerb{\|}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Page notes} \label{chap:mnotes}
-\chapter{Margin and foot notes} \label{chap:mnotes}
-
- 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 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}
@@ -11675,14 +20781,31 @@ that is put at the bottom of a page.
\begin{syntax}
\cmd{\footnote}\oarg{num}\marg{text} \\
-\cmd{\footnotemark}\oarg{num} \cmd{\footnotetext}\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.
-
+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}
@@ -11693,15 +20816,19 @@ 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 label. For example:
+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}}
...
@@ -11712,185 +20839,20 @@ In this manual, the last line above prints:
... The footnote\footref{fn:rabbits} on \pref{fn:rabbits} ... \\
\end{syntax}
- The parameters provided by the standard classes for controlling
-footnotes are illustrated in \fref{fig:fn}.
-
-\begin{figure}
-\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|.
-
-\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:
-\begin{lcode}
-\renewcommand{\footnoterule}{%
- \kern -3pt % call this kerna
- \hrule height 0.4pt width 0.4\columnwidth
- \kern 2.6pt % call this kernb
-}
-\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}
-
-\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]}
-\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{lcode}
-\footmarkstyle{\textsuperscript{#1}}
-\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
-\begin{lcode}
-\footmarkstyle{#1) }
-\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{syntax}
-\cmd{\foottextfont} \\
-\end{syntax}
-The text in the footnote 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
-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
-
-
-\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}
-\end{lcode}
-will cause footnotes to be typeset raggedright.
-
- 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}
-
-
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% 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}~\cite{FOOTMISC} and \Lpack{ledmac}~\cite{LEDMAC} packages,
-inserts a separator
+\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}
@@ -11901,25 +20863,93 @@ the separator. Its default definition is:
\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; they will also
-be typeset at the bottom of \cmd{\raggedbottom} pages as opposed to being
+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}
-Normally, each footnote starts a new paragraph. The class provides three
-other styles, making four in all. Following the \cmd{\twocolumnfootnotes}
+\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 after the \cmd{\threecolumnfootnotes}
-declaration. Footnotes are run together as a single paragraph after the
+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.
@@ -11941,16 +20971,79 @@ page with the title:
\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}
-
- 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
+\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}.
@@ -11963,7 +21056,7 @@ appended. These include \cs{footnoteQ}, \cs{footnotemarkQ},
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.
+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
@@ -11974,21 +21067,15 @@ set in italics at the normal footnote size:
\paragraphfootstyle{P}
\renewcommand{\thefootnoteP}{\roman{footnoteP}}
\footmarkstyleP{#1--}
-\renewcommand{\@makefnmarkS}{\hbox{\textsuperscript{\@thefnmarkP)}}}
-\renewcommand{\foottextfont}{\itshape\footnotesize}
+\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}
-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:
-\begin{lcode}
-\renewcommand{\thempfootnoteP}{\arabic{mpfootnoteP}}
-\end{lcode}
The \cmd{\newfootnoteseries} macro does not create series versions
of the footnote-related length commands, such as \lnc{\footmarkwidth}
@@ -11999,35 +21086,251 @@ 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{\footfudgefiddle} \\
+\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}
-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
+\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}
-\renewcommand{\footfufgefiddle}{70}
+\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}
-will at least go some way to curing the problem. You will probably have
-to do some experimentation to get a good value.
+
+\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}
-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
+\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}}
+\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
+This, as shown by \verb?\@fnsymbol{1},...\@fnsymbol{9}? produces the series:
+\begin{center}
+ \makeatletter
\@fnsymbol{1},
\@fnsymbol{2},
\@fnsymbol{3},
@@ -12039,17 +21342,20 @@ This, as shown by \verb?\@fnsymbol{1},...\@fnsymbol{9}? produces the series: \ma
\@fnsymbol{9}.
%\@fnsymbol{10} % out of bounds
\makeatother
+\end{center}
\makeatletter
\let\m@mold@fnsymbol\@fnsymbol
-\renewcommand{\@fnsymbol}[1]{\ensuremath{%
+\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
+ 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},
@@ -12060,9 +21366,10 @@ to \makeatletter\@fnsymbol{6}\makeatother): \makeatletter
\@fnsymbol{8}, and
\@fnsymbol{9}.
\makeatother
+\end{center}
You can obtain this sequence by redefining \cmd{\@fnsymbol} as:
\begin{lcode}
-\renewcommand{\@fnsymbol}[1]{\ensuremath{%
+\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}}
@@ -12072,144 +21379,133 @@ 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
-
-
-
-
-
-
-\section{Verbatim footnotes}
-
- The macro \cmd{\verbfootnote} can typeset a footnote that includes
-some verbatim text.
-
-\begin{syntax}
-\cmd{\verbfootnote}\oarg{num}\marg{text} \\
-\end{syntax}
-
- The next two paragraph are typeset by this code:
+ To get the footnote reference marks\index{reference mark} set with
+symbols use:
\begin{lcode}
- Below, footnote\footref{fn1} is a \cmd{\footnote} while
-footnote~\ref{fn2} is a \cmd{\verbfootnote}.
-
- 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.
+\renewcommand*{\thefootnote}{\fnsymbol{footnote}}
\end{lcode}
-
- Below, footnote\footref{fn1} is a \cmd{\footnote} while
-footnote~\ref{fn2} is a \cmd{\verbfootnote}.
-
- 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.
-
-
-
-\section{Sidebars}
-
- It appears that the \cmd{\sidebar} command, which was originally noted
-as being experimental, has been used successfully for a variety of tasks.
-
-\begin{syntax}
-\cmd{\sidebar}\marg{text} \\
-\cmd{\sidebarfont} \\
-\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
+or to use roman numerals instead of the regular arabic numbers:
\begin{lcode}
-\newcommand{\sidebarfont}{\normalfont}
+\renewcommand*{\thefootnote}{\roman{footnote}}
\end{lcode}
-
\begin{syntax}
-\cmd{\sidebarform} \\
+\cmd{\footnoterule} \\
\end{syntax}
+\glossary(footnoterule)%
+{\cs{footnoterule}}%
+{Rule separating footnotes from the main text.}
- Sidebars are normally narrow so text is set ragged right. More
-accurately, the text is set according to \cmd{\sidebarform} which is defined
-as:
+ The rule separating footnotes from the main text is specified
+by \cmd{\footnoterule}:
\begin{lcode}
-\newcommand{\sidebarform}{\rightskip=\z@ \@plus 2em}
+\newcommand*{\footnoterule}{%
+ \kern-3pt%
+ \hrule width 0.4\columnwidth
+ \kern 2.6pt}
\end{lcode}
-which is ragged right but with less raggedness than \cmd{\raggedright}
-would allow. As usual, you can change \cmd{\sidebarform}, for example:
+If you don't want a rule (but you might later), then the easiest method is:
\begin{lcode}
-\renewcommand{\sidebarform}{} % justified text
+\let\oldfootnoterule\footnoterule
+\renewcommand*{\footnoterule}{}
\end{lcode}
+and if you later want rules you can write:
+\begin{lcode}
+\let\footnoterule\oldfootnoterule
+\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.
+\index{footnote!styling|)}
-\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:
-\begin{lcode}
-\setsidebarheight{15\onelineskip}
-\end{lcode}
+\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.
-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.}
\section{Side notes}
- The vertical position of side notes specified via \cmd{\marginpar}
+ 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 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
+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 -2.08ex which seems to be the magical length that aligns the top of
-the note with the text line.
+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 margin. When
+ 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
@@ -12219,11 +21515,17 @@ respect to the column.
\begin{syntax}
\cmd{\sideparswitchtrue} \cmd{\sideparswitchfalse} \\
\cmd{\reversesidepartrue} \cmd{\reversesideparfalse} \\
-\cmd{\parnopar} \\
\end{syntax}
-
- The default placement can be changed by judicious use of the
-\cs{reversidepar*} and \cs{sideparswitch*} declarations. For two sided
+\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
@@ -12232,7 +21534,13 @@ 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
+\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
@@ -12242,14 +21550,15 @@ 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
+\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 has kindly provided example code for another
-form of a side note, as follows.
+ 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
@@ -12263,7 +21572,7 @@ form of a side note, as follows.
\newlength{\draftnotesignwidth}
\newcommand{\draftnote}[1]{\@bsphack%
{%% do not interfere with settings for other marginal notes
- \strictpagechecktrue%
+ \strictpagecheck%
\checkoddpage%
\setlength{\draftnotewidth}{\foremargin}%
\addtolength{\draftnotewidth}{\trimedge}%
@@ -12294,465 +21603,265 @@ or put it into a package (i.e., \file{.sty} file) without the
\cs{makeat...} commands.
+\section{Sidebars}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\clearpage
-\pagestyle{companion}
-\chapterstyle{companion}
-\defaultsecnum
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Signposts and decoration} \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}}
-
- This chapter is typeset using the \cstyle{companion} chapterstyle
-and the \pstyle{companion} pagestyle.
-
-\section{Introduction}
-
- 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}.
-
-
-\section{Page styles}
+ 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.}
- 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 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.
\begin{syntax}
-\cmd{\pagestyle}\marg{style} \\
-\cmd{\thispagestyle}\marg{style} \\
+\cmd{\sidebar}\marg{text} \\
\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.
+\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}
- 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}
+ 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}.
- 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}
+ 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}
- 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|.
-\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}.
+ 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{\leftmark} \cmd{\rightmark} \\
+\cmd{\setsidebars}\marg{hsep}\marg{width}\marg{vsep}\marg{topsep}\marg{font}\marg{height} \\
\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.
-
- 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.
-
+\glossary(setsidebars)%
+ {\cs{setsidebars}\marg{hsep}\marg{width}\marg{vsep}\marg{topsep}\marg{font}\marg{height}}%
+ {Sets the several sidebar parameters.}
-\section{Making headers and footers}
+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}
- 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.
+ Changing the marginpar parameters, for example with \cmd{\setmarginnotes},
+will not affect the sidebar parameters.
-\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
+ 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}
-\aliaspagestyle{part}{plain}
-\aliaspagestyle{chapter}{plain}
-\aliaspagestyle{cleared}{empty}
+...
+\settypeblocksize{40\baselineskip}{5in}{*}
+...
+\checkandfixthelayout
+\setsidebars{...}{...}{...}{...}{...}{\textheight}
\end{lcode}
-The macro \cmd{\copypagestyle} creates a \meta{new} pagestyle with the
-definitions being copies of those for the \meta{original} pagestyle.
+ 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'.
-\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}
-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}
-\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.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%% start membook
-\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.
-\begin{syntax}
-\lnc{\normalrulethickness} \\
-\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.
-\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}.
-\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}.
-\subsection{Example pagestyles}
- 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.
- 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}
- 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}
- 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}}
-}
-\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}
- Now issuing the command |\pagestyle{companion}| will produce pages
-typeset with \pstyle{companion} pagestyle headers\index{header}.
- 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.
-\subsection{Special headers}
- 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 manual \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}.
- 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}
-\makepagestyle{index}
- \makeheadrule{index}{\textwidth}{\normalrulethickness}
- \makeevenhead{index}{\rightmark}{}{\leftmark}
- \makeoddhead{index}{\rightmark}{}{\leftmark}
- \makeevenfoot{index}{\thepage}{}{}
- \makeoddfoot{index}{}{}{\thepage}
- 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}.
+%%%%% end membook
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
- 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.
-\index{float!page|(}
-\begin{syntax}
-\piif{ifonlyfloats}\marg{yes}\marg{no} \\
-\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.
- 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 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:
-\begin{lcode}
-\makepsmarks{floatcomp}{\companionpshook}
-\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.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\clearpage
+%%%\pagestyle{companion}
+%%\chapterstyle{companion}
+\defaultsecnum
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Decorative text} \label{chap:signposts}
-\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}
+\newcommand{\tepi}[2]{\epigraph{#1}{#2}}
-\index{float!page|)}
+% \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}}
-
- 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.
+% \tepi{The whole is more than the sum of the parts.}
+% {\textit{Metaphysica \\ Aristotle}}
- \subsection{The \texttt{epigraph} command}
+ %\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
@@ -12762,8 +21871,10 @@ package~\cite{EPIGRAPH} which is included in the class.
\begin{syntax}
\cmd{\epigraph}\marg{text}\marg{source} \\
\end{syntax}
- The command \cmd{\epigraph}
- typesets
+\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
@@ -12771,14 +21882,19 @@ package~\cite{EPIGRAPH} which is included in the class.
right of the \meta{text}.
- \subsection{The \texttt{epigraphs} environment}
-
\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
@@ -12788,32 +21904,50 @@ package~\cite{EPIGRAPH} which is included in the class.
\meta{text}.
-
- \subsection{General}
+ \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 |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.
+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{\epigraphtextposition}\marg{flush} \\
+ \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 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.
+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
+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.
@@ -12834,19 +21968,11 @@ a new environment like:
\end{lcode}
\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} \\
\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}.
@@ -12863,6 +21989,9 @@ of the \meta{source}.
\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.
@@ -12875,6 +22004,9 @@ it to, say \cmd{\footnotesize} by:
\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}.
@@ -12885,7 +22017,13 @@ it to, say \cmd{\footnotesize} by:
\lnc{\beforeepigraphskip} \\
\lnc{\afterepigraphskip} \\
\end{syntax}
- The two |...skip| commands specify the amount of vertical space inserted
+\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}.
@@ -12901,9 +22039,16 @@ it to, say \cmd{\footnotesize} by:
{\textit{Letters on a Regicide Peace}\\ \textsc{Edmund Burke}}
\end{lcode}
- \subsection{Epigraphs before chapter headings}
+ \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 |epigraphs| environment typeset
+ 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
@@ -12912,36 +22057,39 @@ it to, say \cmd{\footnotesize} by:
\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 |epigraphs| environment. By default, the
- epigraph will be typeset at the righthand margin\index{margin}.
+ \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. 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.
+ 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 |epigraphs| for the
- \meta{text} argument, you may have to so some positioning of the text
+ 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}
@@ -12951,7 +22099,7 @@ it to, say \cmd{\footnotesize} by:
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
+\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
@@ -12961,9 +22109,17 @@ to do some work yourself.
\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 |(0,-<distance>)|; the macro \cmd{\epigraphpicture}
+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}
@@ -12971,12 +22127,20 @@ chapter pagestyle, as in
...
\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
@@ -12995,6 +22159,10 @@ chapter pagestyle, as in
\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
@@ -13017,8 +22185,9 @@ chapter pagestyle, as in
\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 |\thispagestyle{empty}| (or |plain|)
- immediately after |\cleartoevenpage| to avoid a heading related to the
+ 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
@@ -13026,7 +22195,7 @@ chapter pagestyle, as in
you define a special chapter command for the purpose). For example:
\begin{lcode}
... end previous chapter.
- \cleartoevenpage[\thispagestyle{empty}] % skipped page, if any, to be empty
+ \cleartoevenpage[\thispagestyle{empty}] % a skipped page to be empty
\thispagestyle{plain}
\addtocounter{chapter}{1} % increment the chapter number
\setcounter{figure}{0} % initialise figure counter
@@ -13036,50 +22205,23 @@ chapter pagestyle, as in
\end{figure}
\addtocounter{chapter}{-1} % decrement the chapter number
- \chapter{Next chapter} % increments chapter & initialises figure numbers
+ \chapter{Next chapter} % increments chapter & resets figure numbers
\addtocounter{figure}{1} % to account for pre-chapter figure
\end{lcode}
- \subsection{Epigraphs on part pages}
+ \subsection{Epigraphs on book or part pages}
\index{epigraph|(}
- 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.
-
- \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}
-
- \item Start your document like:
- \begin{verbatim}
- \documentclass[...]{...}
- \usepackage{epigraph}
- \usepackage{epipart}
- \end{verbatim}
-
- \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}
+ 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
@@ -13088,23 +22230,42 @@ chapter pagestyle, as in
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}
+%\clearpage
+%\pagestyle{Ruled}
+%%\chapterstyle{demo}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Typesetting verse} \label{chap:verse}
+\chapter{Poetry} \label{chap:verse}
- This chapter uses the \cstyle{demo} chapterstyle and the \pstyle{Ruled}
-pagestyle.
-\section{Introduction}
-
- The typesetting of a poem should be really be dependent on the
+ 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
@@ -13114,15 +22275,18 @@ made solution for any particular piece of verse.
from~\cite{RUMOUR}.
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
+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.
- 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:
+\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 \\
@@ -13137,15 +22301,19 @@ 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]
+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}
+\begin{verse}\index[lines]{I used to love my garden}
\garden
\end{verse}
@@ -13173,10 +22341,12 @@ In black-eyed Susan's bed.
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
+ 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 indented, often alternate ones. To
+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}
@@ -13189,16 +22359,14 @@ And bigamy, sir, is a crime.'
\end{verse}
\end{lcode}
is typeset as:
-
-\begin{verse}
+\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}
-
-%\ablankline
+\vspace{\onelineskip}
Using the \Ie{alltt} environment you can put in the spacing via ordinary
spaces. That is, this:
@@ -13223,7 +22391,7 @@ 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.}:
+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
@@ -13248,15 +22416,22 @@ And bigamy, sir, is a crime.' \par
\vspace*{\onelineskip}
- This is about as much assistance as standard (La)TeX provides, except
+ 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 a following page break. You can also make judicious use
+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}, 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.
+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}
@@ -13269,10 +22444,11 @@ will arise.
The main aspects of typesetting poetry that differ from typesetting
plain text are:
\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
+\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}
@@ -13281,17 +22457,24 @@ 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}
+\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 |\begin{verse}[4em]|.
+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}, whereas verses usually look better if they
+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 will be typeset with the mid point of the length
-centered horizontally on the page.
+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
@@ -13301,100 +22484,244 @@ as the optional argument to the \Ie{verse} environment:
\begin{verse}[\versewidth]
\end{lcode}
- The vertical space between stanzas is the length \lnc{\stanzaskip}.
-It can be changed by the usual methods.
-
\begin{syntax}
-\cmd{\\} \cmd{\\*} \cmd{\\>} \verb?\\!? \\
+\lnc{\vleftmargin} \\
\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).
-
-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.
+\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.
- 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.
+\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 |\hspace*{\vgap}| for use
-at the start of an indented line of verse. The length \lnc{\vgap}
+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}.
- 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:
+\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 \\
-Come away with me.
+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}
-\vinphantom{Come away with me.} Impossible! \\
-\ldots
+``\,`\,``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}
-The above fragment from a poem was typeset by:
-\begin{lcode}
+\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 \\
-Come away with me.
+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}
-\vinphantom{Come away with me.} Impossible! \\
-\ldots
+\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{lcode}
+\end{egresult}
- \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}
-
-\noindent Come away with me and be my love --- Impossible. \\
-Come away with me \vinphantom{and be my love} --- Impossible.
-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}.
+\subsection{Indented lines}
-\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}.
+Within the \Ie{verse} environment stanzas are normally separated by a
+blank line in the input.
\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
+\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}
@@ -13402,175 +22729,412 @@ indenting the 2nd, 4th, etc., lines of the stanza by the length \lnc{\vgap}.
\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 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
+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., |3213245281|).
+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{\linenumberfrequency}\marg{nth} \\
-\cmd{\thepoemline} \\
-\cmd{\linenumberfont}\marg{font-decl} \\
-\lnc{\vrightskip} \\
+\cmd{\flagverse}\marg{flag} \\
+\lnc{\vleftskip} \\
\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}|.
-
- 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.
+\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{\flagverse}\marg{text} \\
-\lnc{\vleftskip} \\
-\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.
+\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{\poemtitle}\oarg{short}\marg{long} \\
-\cmd{\poemtitle*}\marg{long} \\
-\cmd{\poemtitlefont}\marg{font} \\
+\cmd{\thepoemline} \\
+\cmd{\linenumberfont}\marg{font-decl} \\
\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.
+\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}
-\lnc{\beforepoemtitleskip} \\
-\lnc{\afterpoemtitleskip} \\
+\cmd{\verselinenumbersright} \\
+\cmd{\verselinenumbersleft} \\
+\lnc{\vrightskip} \\
\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.
+\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{\poemtitlemark}\marg{title} \\
+\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}
-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).
+\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}
-\cmd{\poemtoc}\marg{sec} \\
+\lnc{\beforePoemTitleskip} \\
+\cmd{\PoemTitlenumfont} \\
+\lnc{\midPoemTitleskip} \\
+\cmd{\PoemTitlefont} \\
+\lnc{\afterPoemTitleskip} \\
\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.
+\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
-\subsection{Examples}
+\section{Examples}
Here are some sample verses using the class facilities.
-First our old Limerick friend, but titled and centered:
+First a Limerick, but titled\index{poem title} and centered:
\begin{lcode}
\renewcommand{\poemtoc}{subsection}
-\settocdepth{subsection}
-\poemtitle{A Limerick}
-\settowidth{\versewidth}{There was an old party of Lyme}
+\PlainPoemTitle
+\PoemTitle{A Limerick}
+\settowidth{\versewidth}{There was a young man of Quebec}
\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.'
+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 |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.}.
+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}
-\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.'
+\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 |altverse| environment. It
-is titled and centered.
+ 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{Loves Lost}
+\PoemTitle{Love's lost}
\begin{verse}[\versewidth]
\begin{altverse}
\garden
\end{altverse}
\end{verse}
\end{lcode}
-Note how the alternates lines are automatically indented in the
-typeset result below.
+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{Loves Lost}
-\begin{verse}[\versewidth]
+\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 of a poem. Here is one example of a macro for this:
+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}
-\newcommand{\attrib}[1]{%
+\providecommand{\attrib}[1]{%
\nopagebreak{\raggedleft\footnotesize #1\par}}
This can be used as in the next bit of doggerel.
\begin{lcode}
-\poemtitle{Fleas}
+\PoemTitle{Fleas}
\settowidth{\versewidth}{What a funny thing is a flea}
\begin{verse}[\versewidth]
What a funny thing is a flea. \\
@@ -13581,9 +23145,9 @@ Whoopee!
\attrib{Anonymous}
\end{lcode}
-\poemtitle{Fleas}
+\PoemTitle{Fleas}
\settowidth{\versewidth}{What a funny thing is a flea}
-\begin{verse}[\versewidth]
+\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. \\
@@ -13591,13 +23155,15 @@ Whoopee!
\end{verse}
\attrib{Anonymous}
+\vspace{\onelineskip}
%\ablankline
-The next example demonstrates the automatic line wrapping for overlong
-lines.
+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}
+\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, \\
@@ -13611,9 +23177,9 @@ And God saw that it was conservative.
\end{lcode}
%%\enlargethispage{\baselineskip}
-\poemtitle{In the Beginning}
+\PoemTitle{In the beginning}
\settowidth{\versewidth}{And objects at rest tended to remain at rest}
-\begin{verse}[\versewidth]
+\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, \\
@@ -13624,19 +23190,25 @@ 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 linebreak. It also
-has a slightly different title style.
+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}
+\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}
+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 \\
@@ -13645,14 +23217,17 @@ The clock does strike, by Algebra.
\attrib{Samuel Butler (1612--1680)}
\end{lcode}
-\renewcommand{\poemtitlefont}{\normalfont\large\itshape\centering}
-\poemtitle{Mathematics}
+%%\clearpage
+
+\renewcommand{\PoemTitlefont}{\normalfont\large\itshape\centering}
+\PoemTitle{Mathematics}
\settowidth{\versewidth}{Than Tycho Brahe, or Erra Pater:}
-\begin{verse}[\versewidth]
+\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}
+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 \\
@@ -13660,90 +23235,118 @@ 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 |patverse|
-environment. If you are typesetting a series of limericks you only
-need specify one \cmd{\indentpattern} for all of them.
+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}
-\poemtitle{The Young Lady of Ryde}
+\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.
+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}
-\poemtitle{The Young Lady of Ryde}
-\begin{verse}[\versewidth]
+\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.
+And made cider inside her inside.
\end{patverse}
\end{verse}
+\vspace{\onelineskip}
-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.
-\clearpage
+ 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}{Oh my darling, Clementine}
-\poemtitle{Clementine}
+\settowidth{\versewidth}{In a cavern, in a canyon,}
+\PoemTitle{Clementine}
\begin{verse}[\versewidth]
-\linenumberfrequency{3}
+\linenumberfrequency{2}
+\begin{altverse}
\flagverse{1.} In a cavern, in a canyon, \\
Excavating for a mine, \\
-Lived a miner, forty-niner, \label{vs:1} \\
+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 for ever. \\
-Dreadful sorry, Clementine. \\!
+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}{Oh my darling, Clementine}
-\poemtitle{Clementine}
-\begin{verse}[\versewidth]
-\linenumberfrequency{3}
+\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:1} \\
+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 for ever. \\
-Dreadful sorry, Clementine. \\!
+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 of |\indentpattern|. In
-this case it is defined as: \\
-|\indentpattern{0135554322112346898779775545653222345544456688778899}| \\
+ 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}
+\PoemTitle{Mouse's Tale}
\settowidth{\versewidth}{a mouse that morning}
\indentpattern{0135554322112346898779775545653222345544456688778899}
-\begin{verse}[\versewidth]
+\begin{verse}[\versewidth]\index[lines]{Fury said to}
\setlength{\vgap}{1em}
\begin{patverse}
\large Fury said to \\
@@ -13801,55 +23404,441 @@ and the result is shown on the next page.
\end{verse}
\attrib{Lewis Carrol, \textit{Alice's Adventures in Wonderland}, 1865}
-%%%%%%%%%%%%%%%%%%%%%%%%%
-\settocdepth{section}
-%%%%%%%%%%%%%%%%%%%%%%%%
-\chapter{Verbatims, boxes, and files}
+\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.
-\section{Introduction}
+ 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}
- 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.
+\vspace{\onelineskip}
+\noindent\textbf{Question 1.} Can you think of any improvements to
+ the definition of the \Ie{framedminipage} environment?
-\section{Verbatims}
+\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.
- 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.
-\begin{syntax}
-\cmd{\newcomment}\marg{comenv} \\
-\end{syntax}
-The macro \cmd{\newcomment} creates a new comment environment called
-\meta{comenv}. All text within the \meta{comenv} environment will be ignored.
\begin{syntax}
-\senv{comment} anything \eenv{comment} \\
-\end{syntax}
-The class provides one comment environment, namely the \Ie{comment}
-environment which is specified by
-\begin{lcode}
-\newcomment{comment}
+\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}
-This may be useful for `commenting out' large chunks of
-a source document.
+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}
-\cmd{\commentsoff}\marg{comenv} \\
-\cmd{\commentson}\marg{comenv} \\
+\senv{leftbar} text \eenv{leftbar} \\
\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}.
+\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.
@@ -13873,376 +23862,3901 @@ Remember to finagle the wingle!
...
\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.
+ 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}.
-\begin{syntax}
-\cmd{\MakeShortVerb}\marg{verbchar} \\
-\cmd{\DeleteShortVerb}\marg{verbchar} \\
-\end{syntax}
- 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{\?}|.
+\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}
-The \Ie{verbatim} and \Ie{verbatim*} environments are used for
-typesetting any length of verbatim text.
+\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{\setverbatimfont}\marg{font-decl} \\
+\cmd{\tabson}\oarg{number} \\
+\cmd{\tabsoff} \\
\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:
+\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}
-\setverbatimfont{\normalfont\small\ttfamily}
+\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}
-\cmd{\tabson}\oarg{num} \\
-\cmd{\tabsoff} \\
+\senv{fboxverbatim} anything \eenv{fboxverbatim} \\
\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.
+\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}
-\cmd{\wrappingon} \\
-\cmd{\wrappingoff} \\
-\lnc{\verbatimindent} \\
-\cmd{\verbatimbreakchar} \\
+\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}
-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.
+\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.
- 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:
+ 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}
-\renewcommand*{\verbatimbreakchar}{\char`\/}
+\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}
- 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.
+ Unless you are intimately familiar with the inner workings of the
+\Ie{verbatim} processing you deserve an explanation of the \Ie{lcode}
+definition.
- There is some more on verbatims in later sections.
+ 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}
-\section{Framed boxes}
+ 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.
- You can use framed boxes, looking like the syntax boxes here,
-in the standard LaTeX classes but they cannot break over a page.
- The \Ie{framed}, \Ie{shaded} and \Ie{leftbar} environments, which
-can break over a page, are from the \Lpack{framed} package~\cite{FRAMED}.
+\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}
-\senv{framed} text \eenv{framed} \\
-\senv{shaded} text \eenv{shaded} \\
-\senv{leftbar} text \eenv{leftbar} \\
+\cmd{\newoutputstream}\marg{stream} \\
+\cmd{\newinputstream}\marg{stream} \\
\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.
+\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}
-\lnc{\FrameRule} \lnc{\FrameSep} \cmd{\FrameHeightAdjust} \\
-\Itt{shadecolor} \\
+\cmd{\IfStreamOpen}\marg{stream}\marg{true-code}\marg{false-code} \\
\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:
+\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}
-\setlength{\FrameRule}{\fboxrule}
-\setlength{\FrameSep}{3\fboxsep}
-\newcommand{\FrameHeightAdjust}{0.6em}
+...
+\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}
-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:
+
+ If all were simple, in the document we could then just do
\begin{lcode}
-\usepackage{color}
-\definecolor{shadecolor}{gray}{0.75}
+\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}
-\cmd{\frameasnormaltrue} \cmd{\frameasnormalfalse} \\
+\ldots footnote parameters are shown in~\fref{fig:fn} on~\pref{fig:fn}. \\
\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{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}
-\makeoddhead{myheadings}{{\tiny Tiny header}}{}{\LARGE Large header}
+The chapter \textit{\titleref{chap:bringhurst}} describes \ldots
\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.
+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.
- 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.
\begin{syntax}
-\senv{fboxverbatim} anything \eenv{fboxverbatim} \\
+\cmd{\titleref}\marg{labstr} \\
\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.
+\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}
-\senv{boxedverbatim} anything \eenv{boxedverbatim} \\
+\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}
-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.
+\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{\bvbox} \cmd{\bvsides} \cmd{\bvtopandtail} \cmd{\nobvbox} \\
+\cmd{\bibintoc} \cmd{\nobibintoc} \\
\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}.
+\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{\bvtopofpage}\marg{text} \\
+\cmd{\cite}\oarg{detail}\marg{labstr-list} \\
\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
+\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}
-\bvtopofpage{\begin{center}\normalfont (Continued)\end{center}}
+\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{\linenumberfrequency}\marg{nth} \\
-\cmd{\linenumberfont}\marg{font-decl} \\
-\cmd{\resetbvlinenumber} \\
+\cmd{\bibsection} \\
\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}.
+\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{\bvnumbersinside} \\
-\cmd{\bvnumbersoutside} \\
+\cmd{\bibmark} \\
\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.
+\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}
- Verbatim tabbing, but not wrapping, applies to the \Ie{boxedverbatim}
-environment.
-\section{Files}
+\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}
- 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.
+\index{bibliography!list styling|(}
- 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{\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{\newoutputstream}\marg{stream} \\
-\cmd{\newinputstream}\marg{stream} \\
+\cmd{\setbiblabel}\marg{style} \\
\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.
+\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}
- If you try and create too many streams, TeX will tell you via an error
-message.
+\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}
-\cmd{\IfStreamOpen}\marg{stream}\marg{true-code}\marg{false-code} \\
+\lnc{\bibitemsep} \\
\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.
+\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{\openoutputfile}\marg{filename}\marg{stream} \\
-\cmd{\closeoutputstream}\marg{stream} \\
+\cmd{\bibliography}\marg{bibfile-list} \\
\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.
+\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.
- 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} \\
+\cmd{\nocite}\marg{labstr} \verb?\nocite{*}? \\
\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.
+\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{\addtostream}\marg{stream}\marg{text} \\
+\cmd{\bibliographystyle}\marg{style} \\
\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.
+\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{\openinputfile}\marg{filename}\marg{stream} \\
-\cmd{\closeinputstream}\marg{stream} \\
+\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}.
- 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.
- 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{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{\readstream}\marg{stream} \\
-\cmd{\readaline}\marg{stream} \\
+\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}
- 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.
+\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.
- 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).
\begin{syntax}
-\cmd{\verbatiminput}\marg{filename} \\
-\cmd{\readverbatim}\marg{stream} \\
-\cmd{\boxedverbatiminput}\marg{filename} \\
-\cmd{\readboxedverbatim}\marg{stream} \\
+\cmd{\preindexhook} \\
\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
+\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}
-\begin{verbatim}
- \input{...}
- \readstream{...}
-\end{verbatim}
+\renewcommand{\preindexhook}{Bold page numbers are used
+ to indicate the main reference for an entry.}
\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
+\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}
-\begin{boxedverbatim}
- \input{...}
- \readstream{...}
-\end{boxedverbatim}
+\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}
- Tabbing, wrapping and numbering are just as applicable to verbatim
-input texts as they are to the corresponding verbatim environments.
+\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}
+%\clearpage
+%\pagestyle{Ruled}
+%%\chapterstyle{demo}
%\chapterstyle{veelo}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{Miscellaneous} \label{chap:misc}
-\chapterprecis{In which we talk of many things, but not ships
- or shoes or sealing wax, nor cabbages and kings.}
+\setlength{\prechapterprecisshift}{-\onelineskip}
- This chapter uses the \cstyle{demo} chapterstyle and the \pstyle{Ruled}
-pagestyle. It started with the \cmd{\chapterprecis} command.
+\chapterprecis{In which we talk of many things, but not shoes
+ or ships or sealing wax, nor cabbages and kings.}
-\section{Introduction}
+\noindent This chapter started with the \cmd{\chapterprecis} command to add
+the above text, which is also added to the \prtoc.
- The class provides some minor additional facilities, which are described
+ The class provides a miscellany of minor facilities, which are described
here.
\section{Draft documents}
@@ -14253,6 +27767,9 @@ 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'.
@@ -14276,11 +27793,17 @@ a document throughout its lifecycle.
marking in the \Lclass{iso} class~\cite{ISOCLASS}.
\begin{syntax}
-\cmd{\changemarkstrue} \cmd{\changemarksfalse} \\
+\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{\changemarkstrue} declaration is in effect. Using \cmd{\changemarksfalse}
+\cmd{\changemarks} declaration is in effect. Using \cmd{\nochangemarks}
switches off any marking.
\begin{syntax}
@@ -14288,7 +27811,17 @@ switches off any marking.
\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
+\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
@@ -14301,10 +27834,25 @@ document.
\section{Trim marks}
- When the \Lclass{memoir} class \Lopt{showtrims} option is used, trim
+ 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.
@@ -14314,6 +27862,19 @@ at the middle of each side of the page.
\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
@@ -14327,6 +27888,36 @@ disables all kinds of trim marking.
\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.
@@ -14337,12 +27928,15 @@ around the borders of the page.
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
+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}
@@ -14353,20 +27947,29 @@ crosses. This is defined as
\put(0,-2){\line(0,1){4}}
\end{picture}}
\end{lcode}
-which produces a zero-sized picture of a 4cm cross.
+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}{%
+\providecommand*{\tmarkml}{}
+\renewcommand*{\tmarkml}{%
\begin{picture}(0,0){%
\unitlength 1mm
\thinlines
\put(-2,0){\line(-1,0){10}}
\end{picture}}}
-\providecommand{\tmarkmr}{}
-\renewcommand{\tmarkmr}{%
+\providecommand*{\tmarkmr}{}
+\renewcommand*{\tmarkmr}{%
\begin{picture}(0,0){%
\unitlength 1mm
\thinlines
@@ -14376,6 +27979,28 @@ try this:
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
@@ -14385,8 +28010,15 @@ 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.
@@ -14394,6 +28026,14 @@ and is analogous to the \cmd{\thepage} macro.
\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.
@@ -14414,7 +28054,7 @@ code
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}{%
+\newcommand*{\trimseqpage}{%
\begin{picture}(0,0)
\unitlength 1mm
\put(0,2){\makebox(0,0)[b]{Sheet: \thesheetsequence\ of \thelastsheet}}
@@ -14422,16 +28062,99 @@ trim marks. The following will note the sheet numbers above the page.
\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., |itemize|)
-and it can be annoying if there is a page break between the introduction
+ 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}
-Putting \cmd{\noprelistbreak} immediately before the |\begin{itemize}|
+\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.
@@ -14444,39 +28167,71 @@ package~\cite{CHNGCNTR}.
\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
+\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 |\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|.
+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}
-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|.
-
- 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
+\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 |\thectr|.
+the typesetting style use \cmd{\renewcommand} on \cs{thectr}.
\section{New new and provide commands}
@@ -14484,6 +28239,14 @@ the typesetting style use \cmd{\renewcommand} on |\thectr|.
\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}
@@ -14493,7 +28256,7 @@ 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 LaTeX kernel defines the \cmd{\providecommand} macro that acts
+ 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.
@@ -14505,9 +28268,23 @@ repetoire.
\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 |\new...|
+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.
@@ -14517,14 +28294,23 @@ but they do not produce any warning messages.
\section{Changing macros} \label{sec:addtodef}
- Commands are provided for extending simple macro definitions.
-Get the \Lpack{patchcmd} package~\cite{PATCHCMD} if you need
-to make other additions to definitions.
+ 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
@@ -14532,9 +28318,9 @@ 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 |\mymacro|:
+definitions of \verb?\mymacro?:
\begin{lcode}
-\newcommand{\mymacro}[1]{# is a violinist in spite of being tone deaf}
+\newcommand{\mymacro}[1]{#1 is a violinist in spite of being tone deaf}
\end{lcode}
and
\begin{lcode}
@@ -14558,7 +28344,7 @@ which is equivalent to
in spite of being tone deaf and a bagpiper}
\end{lcode}
-The \meta{prepend} and \meta{append} arguments may include LaTeX code,
+The \meta{prepend} and \meta{append} arguments may include \ltx\ code,
as shown in this extract from the class code:
\begin{lcode}
\addtoiargdef{\date}{}{%
@@ -14576,38 +28362,76 @@ to the original argument of the \meta{macro}.
\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 |\addto...| commands that counts when determining whether
-the equivalent |\renew...| is treated as 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 |\addto...| macros cannot be used to delete any code from
+ 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 that is starred.
+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 |*| arguments in the page layout
-macros (e.g., \cmd{\settypeblocksize}), or the |flushleft|, |center| and
-|flushright| strings for the \cmd{\makeheadposition} macro.
+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}
-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
+\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 |\| backslash character; strings are equal if and only if their
+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}
@@ -14628,38 +28452,62 @@ values. For example:
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
+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}.
+\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{\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
+\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{\strictpagecheckfalse} command is issued.
+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 |^_| (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
+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 LaTeX provides the \cmd{\newpage}, \cmd{\clearpage}
+ 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}.
@@ -14667,8 +28515,12 @@ page and starting a new one. The following is a bundling of the
\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.
+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
@@ -14679,6 +28531,15 @@ macro gives adequate results.
\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;
@@ -14700,8 +28561,12 @@ unless it gives a bad break or the pages must be flush bottom.
\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 |\clear...| version flushes out all
+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).
@@ -14710,7 +28575,15 @@ page (if there is one).
\cmd{\movetooddpage}\oarg{text} \\
\cmd{\cleartooddpage}\oarg{text} \\
\end{syntax}
-These macros are similar to the |\...evenpage| ones except that they jump
+\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
@@ -14723,10 +28596,16 @@ 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 Table of Contents to start on a verso page, like in
-\textit{The TeXbook} \cite{KNUTH84a}, then do this:
+the \toc\ to start on a verso page, like in
+\btitle{The TeXbook} \cite{TEXBOOK}, then do this:
\begin{lcode}
\cleartoverso
\tableofcontents
@@ -14734,12 +28613,14 @@ the Table of Contents to start on a verso page, like in
\section{Number formatting}
- 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
+ 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',
+ 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}
@@ -14764,12 +28645,23 @@ For instance: \\
\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:
@@ -14781,9 +28673,10 @@ of \cmd{\fnumbersep} is:
\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}{,}
+\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.
@@ -14793,6 +28686,17 @@ is no separation between any of the digits.
\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.
@@ -14800,8 +28704,9 @@ 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}}\fordinal{2} ->?
- \renewcommand{\ordscript}[1]{\textsuperscript{#1}}\fordinal{2} \\
+\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.
@@ -14818,6 +28723,18 @@ 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)
@@ -14826,7 +28743,7 @@ for ordinals like \ordinal{23}.
\subsection{Named numbers}
-
+\indextwo{named}{number}
\begin{syntax}
@@ -14834,6 +28751,17 @@ for ordinals like \ordinal{23}.
\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
@@ -14843,16 +28771,31 @@ lowercase words. The other two macros are similar, except that
\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}) ->? \\
+\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.
@@ -14863,6 +28806,15 @@ typeset the argument as a wordy ordinal.
\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
@@ -14877,19 +28829,32 @@ defined as:
\newcommand*{\tensunitsep}{-}
\end{lcode}
The next example shows how to achieve American typesetting.
-\begin{lcode}
+\begin{egsource}{eg:maxnum}
\renewcommand*{\namenumberand}{ }
\renewcommand*{\namenumbercomma}{ }
-The maximum number in TeX is \numtoname{2147483647} (i.e., \cardinal{2147483647}). ->
-\end{lcode}
+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}).
+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}
@@ -14916,6 +28881,11 @@ 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
@@ -14930,6 +28900,12 @@ typeset via:
\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
@@ -14938,32 +28914,40 @@ 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{lcode}
-In summary, fractions can be typeset like 3/4 or $\frac{3}{4}%
+\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{lcode}
+\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{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}.
+\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}
@@ -14973,15 +28957,29 @@ 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
-|MyArray|. The lowest and highest array indices are set to
+\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
@@ -14992,22 +28990,35 @@ For example:
\setarrayelement{MyArray}{23}{$2^{23}$}
\getarrayelement{MyArray}{23}{\result}
\end{lcode}
-will result in |\result| being defined as |\def\result{$2^{23}$}|.
+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
-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.
+\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.
@@ -15018,45 +29029,97 @@ that \meta{arrayname} is an array of characters, and defines the macro
\stringtoarray{MyArray}{Chars}
\arraytostring{MyArray}{\MyString}
\end{lcode}
-is equivalent to |\def\MyString{Chars}|.
+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 TRUE,
-otherwise it is set FALSE.
+(not less than zero). If it is then \piif{ifinteger} is set \ptrue,
+otherwise it is set \pfalse.
+
+\section{Checking the processor}
-\section{pdfLaTeX}
+\subsection{Checking for pdfLaTeX}
- 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
+ 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.
- 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.
+If you want a \file{dvi} file output use \ltx\ and if you want a
+\file{pdf} file use \pdfltx.
\begin{syntax}
-\piif{ifpdf} ... |\fi| \\
+\piif{ifpdf} ... \verb?\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:
+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 e.g., \pdfoutput=1 or \pdfoutput=0
+ code for pdfLaTeX only
\else
code for LaTeX only
\fi
\end{lcode}
-If there is no LaTeX specific code then don't write the |\else| part.
+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}
@@ -15066,6 +29129,9 @@ 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
@@ -15078,13 +29144,25 @@ in terms of numbers of lines of text.
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
+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.
@@ -15104,7 +29182,7 @@ in text mode you can combine spacing commands as:
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
@@ -15282,6 +29360,21 @@ 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}
@@ -15289,35 +29382,108 @@ declaration enables name referencing.
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.
+Table~\ref{tab:defwordsphrases} lists the macros, their default values,
+and where they used.
+\begin{comment}
\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}|)
+\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}
-The above definitions are simple --- for example
+\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*{\partname}{Part}
+\newcommand*{\partrefname}{Part~}
\end{lcode}
and so can be also changed simply.
@@ -15353,9 +29519,529 @@ its argument like a superscript\index{superscript}, so using
\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}{}
@@ -15368,6 +30054,7 @@ gave the required result\textsuperscript{\textregistered}.
\renewcommand{\afterchaptertitle}{%
\vskip\onelineskip \hrule\vskip\onelineskip}
}
+\end{comment}
\setsecheadstyle{\raggedright\scshape\MakeLowercase}
\setbeforesecskip{-\onelineskip}
@@ -15408,7 +30095,6 @@ gave the required result\textsuperscript{\textregistered}.
}
\makepsmarks{bringhurst}{%
- \let\@mkboth\markboth
\def\chaptermark##1{\markboth{##1}{##1}}
\def\sectionmark##1{\markright{##1}}
}
@@ -15425,10 +30111,14 @@ gave the required result\textsuperscript{\textregistered}.
\makeatother
+
+
+
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\cleardoublepage
\pagestyle{bringhurst}
-\chapterstyle{bringhurst}
+%%%\chapterstyle{bringhurst}
+\headstyles{bringhurst}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\chapter{An example design} \label{chap:bringhurst}
@@ -15439,11 +30129,9 @@ gave the required result\textsuperscript{\textregistered}.
\section{Introduction}
In this chapter I will work through a reasonably complete design
-exercise. The chapter is typeset using the results of the exercise.
-
- Rather than trying to invent something myself I am taking the design
+exercise. Rather than trying to invent something myself I am taking the design
of Bringhurst's
-\textit{The Elements of Typographic Style}~\cite{BRINGHURST92}
+\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
@@ -15454,31 +30142,38 @@ 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 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
+ 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 size of a page is 23 by 13.3cm. The foredge is 3.1cm and the
-top margin\index{margin} is 1.9cm.
+ 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, with 12pt leading
+ 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 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
+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 |\small| |\sfseries| CMR font will reasonably do for the
+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} level with the seventh
-line of the text in the typeblock\index{typeblock}. The recto headers\index{header} are typeset raggedright
+ 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,
@@ -15486,57 +30181,53 @@ 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 Table of Contents.
+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
+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
+with the page numbers immediately after the titles. There is no \lof\ or
\lot.
- Note that unlike the normal LaTeX use of fonts, essentially only three
+ 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
+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.
+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})
+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{41\onelineskip}{21pc}{*}
+\settypeblocksize{42\onelineskip}{21pc}{*}
\end{lcode}
- To make life easier, we'll do no trimming of the top of the stock\index{stock}
+ 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
+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.
@@ -15545,15 +30236,20 @@ to trim off the foredge.
\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} to be 3.1cm.
+ 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} 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
+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}).
@@ -15571,7 +30267,7 @@ the typeblock\index{typeblock}).
If this was for real, the page layout would have to be checked and
implemented.
\begin{lcode}
-\checkandfixthelayout
+\checkandfixthelayout[lines]
\end{lcode}
It is possible to implement this layout just for this chapter but
@@ -15579,8 +30275,9 @@ 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
+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}
@@ -15613,12 +30310,12 @@ page layout parameters for this design.} \label{fig:bplayout}
\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}.
+ 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.
+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}
@@ -15688,16 +30385,17 @@ 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
+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}.
+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}
@@ -15714,14 +30412,16 @@ 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}
+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.
+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}
+ 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
@@ -15756,12 +30456,12 @@ do the following, while making sure that the current \lnc{\unitlength}
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|)
+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 |\pwlayii|
+typeblock\index{typeblock}. I will use the length \lnc{\pwlayii}
to calculate the sum of \lnc{\marginparsep}
and \lnc{\marginparwidth}. Hence:
\begin{lcode}
@@ -15783,16 +30483,16 @@ 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|)
+(-(\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 |\...mark| macros.
+The next bit puts the chapter and section titles into the \verb?\...mark?
+macros.
\begin{lcode}
\makeatletter
\makepsmarks{bringhurst}{%
- \let\@mkboth\markboth
\def\chaptermark##1{\markboth{##1}{##1}}
\def\sectionmark##1{\markright{##1}}
}
@@ -15810,14 +30510,15 @@ chapter title as its argument.
\section{Captions and the \prtoc}
- 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:
+ 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
+ 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
@@ -15829,12 +30530,11 @@ the \cmd{\caption} command the same definition as the \cmd{\legend} command.
\let\caption\legend
\end{lcode}
-
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:
+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}
@@ -15845,8 +30545,9 @@ like this:
\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.
+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.
Only chapter titles are included in the \toc. To specify this we
use the \cmd{\settocdepth} command.
@@ -15854,7 +30555,7 @@ use the \cmd{\settocdepth} command.
\settocdepth{chapter}
\end{lcode}
- The \toc{} is typeset raggedright with no leaders and the page numbers
+ 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}
@@ -15869,7 +30570,8 @@ coming immediately after the chapter title. This is specified via:
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}?
+the preamble\index{preamble} of the particular document or into a separate
+package\index{package}?
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.
@@ -15877,7 +30579,8 @@ 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
+\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
@@ -15892,22 +30595,26 @@ putting
\end{lcode}
in your document's preamble\index{preamble}.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%% revert to the regular styles
+\clearpage
+%%%\memmansecheads
+%%%\chapterstyle{demo3}
+\headstyles{memman}
+\pagestyle{ruled}
\appendix
\appendixpage*
+%%\pagestyle{ruled}
-\chapterstyle{normal}
-\chapterstyle{section}
+%%\chapterstyle{normal}
+%%\chapterstyle{section}
+%%\chapterstyle{demo3}
\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}.
-
-\section{Introduction}
- The \Lclass{memoir} class does not provide for everything that you
+ 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 LaTeX distribution, and have supplemented these with some
+to have in your \ltx\ distribution, and have supplemented these with some
additional macros, some of which I will show you.
\section{Packages}
@@ -15919,13 +30626,16 @@ you do not have them please consider getting them, are:
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
+ 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).
+ 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 package that I used and you most likely do not have is
@@ -15947,7 +30657,7 @@ were drawn simply by:
\drawparameterstrue
\runinheadtrue
\drawheading{}
-\caption{Runin sectional headings} \label{fig:runsechead}
+\caption{Run-in sectional headings} \label{fig:runsechead}
\end{figure}
\end{lcode}
The package also lets you try experimenting with different layout
@@ -15960,99 +30670,117 @@ to draw some figures
\section{Macros}
- The preamble\index{preamble} of the manual contains many macro definitions, probably
-more than most documents would because:
+ 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 LaTeX commands, which require
+\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 LaTeX this manual satisfactorily, and so have copied various
+ 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}
-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.
+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.
\begin{syntax}
-\cmd{\pstyle}\marg{style} \\
+\cmd{\Ppstyle}\marg{pagestyle} \cmd{\pstyle}\marg{pagestyle} \\
\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
+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}
-\newcommand{\pstyle}[1]{\textsl{#1}\index{#1pages@\textsl{#1} (pagestyle)}}
+\newcommand*{\pstyle}[1]{\Ppstyle{#1}%
+ \index{#1 pages?\Ppstyle{#1} (pagestyle)}%
+ \index{pagestyle!#1?\Ppstyle{#1}}}
\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}.
+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{syntax}
-\cmd{\cstyle}\marg{style} \\
+\cmd{\Pcstyle}\marg{chapterstyle} \cmd{\cstyle}\marg{chapterstyle} \\
\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
+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]{\textsl{#1}\index{#1chaps@\textsl{#1} (chapterstyle)}}
+\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}.
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
+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.
-
-
\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}
+\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{center}}
+ \end{tightcenter}}
\end{lcode}
-It is implemented in terms of the \Ie{tabular} environment, which forms
+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 LaTeX processing occurs within the \Ie{syntax}
+\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.
+
\begin{syntax}
\senv{lcode} LaTeX code \eenv{lcode} \\
\end{syntax}
-I use the \Ie{lcode} environment for showing examples of LaTeX code. It
+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. It is defined with the help of the \Lpack{verbatim} package.
+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
-\Lpack{verbatim} package documentation~\cite{VERBATIM}. I wanted
-the environment to be a tight list so started off by defining some
-two helper items.
+class code~\cite{MEMCODE}. I wanted the environment to be a tight list
+and started off by defining 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}
+\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}
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.
+a list to 0pt (\cmd{\z@} is shorthand for 0pt). The length \lnc{\gparindent}
+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.
@@ -16061,35 +30789,3864 @@ in the environment.
{\verbatim@line{\hskip\gparindent}}
\small\setlength{\baselineskip}{\onelineskip}\verbatim}%
{\endverbatim
- \vspace{-\baselineskip}\noindent
-}
+ \vspace{-\baselineskip}\noindent}
\end{lcode}
- The fragment |{\hskip\gparindent}| puts \lnc{\gparindent} space at
+ The fragment \verb?{\hskip\gparindent}? puts \lnc{\gparindent} space at
the start of each line.
- The fragment |\small\setlength{\baselineskip}{\onelineskip}| sets the
+ 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 \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
+ 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.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{\ltx\ and \tx} \label{appendix:alltex}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ 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.
+
+ 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.
+
+ I like to think of the commands and
+macros as falling into one of several groups.
+\begin{itemize}
+
+\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}
+
+ 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.
+
+ 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]
+There are more things in heaven and \tx, Horatio, \\
+Than are dreamt of in your philosophy.
+\end{verse}
+
+\section{The \tx\ process}
+
+ 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.
+
+\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.
+
+\end{description}
+
+ 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.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{\ltx\ files} \label{sec:latexfiles}
+
+ 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.
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+\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 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{\@namedef}\marg{string} \\
+\cmd{\@nameuse}\marg{string} \\
+\end{syntax}
+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{\newdimen}\meta{cmd} \\
+\cmd{\newskip}\meta{cmd} \\
+\end{syntax}
+\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}
+\meta{dimen} = \meta{length} \\
+\meta{skip} = \meta{length} plus \meta{length} minus \meta{length} \\
+\end{syntax}
+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{\@plus} \cmd{\@minus} \\
+\end{syntax}
+\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{\z@} \\
+\Itt{fil} \Itt{fill} \Itt{filll} \\
+\end{syntax}
+\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{\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}
+These commands are all \tx\ primitives and are equivalent to vertical
+skips with some kind of infinite glue, as indicated below:
+\begin{lcode}
+\vfil -> \vskip 0pt plus 1fil
+\vfill -> \vskip 0pt plus 1fill
+\vfilneg -> \vskip 0pt minus 1fil
+\vss -> \vskip 0pt plus 1fil minus 1fil
+\end{lcode}
+
+\end{comment}
+
+ 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?
+
+\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}.
+
+ 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.
+
+\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.
+
+\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.
+
+\begin{comment}
+
+\tx\ has various \emph{conditional}\index{conditional}
+constructs of the form:
+\begin{lcode}
+\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?.
+
+\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).
+
+\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.
+
+\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}
+\newif\ifpeter
+...
+\ifpeter
+ My name is Peter.
+\else
+ Call me Ishmael.
+\fi
+\end{lcode}
+
+\end{comment}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\input{program} % programming chapter \label{chap:program}
+
+%% program.tex (La)TeX programming
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\chapter{Calculation and programming} \label{chap:program}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\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}
+
+\makeatother
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\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.
+
+\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.
+
+ 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.
+
+
+\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.
+
+\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}
+
+
+\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?.
+
+
+\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}
+\textit{dimension}: \meta{number}\meta{length-unit} \\
+\end{syntax}
+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}
+\cmd{\newdimen}\meta{dimen} \cmd{\newskip}\meta{skip} \\
+\end{syntax}
+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}
+\newdimen\mydimen
+\newskip\myskip
+\end{lcode}
+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{\@plus} \cmd{\@minus} \\
+\end{syntax}
+\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.
+
+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}
+\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}
+
+ 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{\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}).
+
+\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}
+\cmd{\settowidth}\marg{len}\marg{text} \\
+\cmd{\settoheight}\marg{len}\marg{text} \\
+\cmd{\settodepth}\marg{len}\marg{text} \\
+\end{syntax}
+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{\addtolength}\marg{len}\marg{glue} \\
+\end{syntax}
+\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{\z@} \\
+\Itt{fil} \Itt{fill} \Itt{filll} \\
+\end{syntax}
+\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{\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}
+These commands are all \tx\ primitives and are equivalent to vertical
+skips with some kind of infinite glue, as indicated below:
+\begin{lcode}
+\vfil -> \vskip 0pt plus 1fil
+\vfill -> \vskip 0pt plus 1fill
+\vfilneg -> \vskip 0pt minus 1fil
+\vss -> \vskip 0pt plus 1fil minus 1fil
+\end{lcode}
+
+
+
+\section{Programming}
+
+ 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}
+\cs{if...} \meta{test} \meta{true-text} [ \piif{else} \meta{false-text} ] \piif{fi} \\
+\end{syntax}
+\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}
+\cmd{\newif}\verb?\if?\meta{name} \\
+\end{syntax}
+\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}
+\newif\ifpeter
+...
+\ifpeter
+ My name is Peter.
+\else
+ Call me Ishmael.
+\fi
+\end{lcode}
+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}
+
+ 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}
+
+The \cmd{\@fibnext} macro calculates a term in the series, uses
+\cmd{\printfibterm} to print it, and decrements the \cmd{\fibtogo} count.
+\begin{lcode}
+\newcommand*{\@fibnext}{%
+ \fib=\fibprev
+ \advance\fib by \fibprevprev
+ \fibprevprev=\fibprev
+ \fibprev=\fib
+ \printfibterm
+ \advance\fibtogo \m@ne}
+\end{lcode}
+
+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}
+\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}
+\cmd{\@whilenum} \meta{ifnum test} \cmd{\do} \marg{body} \\
+\cmd{\@whiledim} \meta{ifdim test} \cmd{\do} \marg{body} \\
+\end{syntax}
+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}
+\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}
+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.
+
+Here's another version of the \cmd{\@fibseries} macro using \piif{ifcase}
+and \cmd{\@whilenum}.
+\begin{lcode}
+\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}
+
+ \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}.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+
+
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%\input{merrors} % errors chapter \label{chap:errors}
+
+% merrors.tex Chapter on (La)TeX errors/warnings
+
+
+\chapter{The terror of errors} \label{chap:errors}
+
+ 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.
+
+ \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.
+
+ 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}
+
+\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.}
+
+ In \ltx\ terms, the example can be translated into \\
+ \verb?`\newcommand{\a}[1]{...}'? and \verb?`\a}'?.
+
+ 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.
+
+%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}
+! 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}
+
+ 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}
+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}
+
+ 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.
+
+ 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.
+
+\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
+
+
+\index{TeX capacity exceeded ...|)}
+
+\end{plainlist}
+
+\index{TeX?\tx!error|)}
+\index{error!TeX?\tx|)}
+
+
+\section{\ltx\ errors}
+
+\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}
+\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.
+ ...
+
+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.
+
+
+%%%%\subsection{Errors}
+
+\begin{plainlist}
+
+%LTTAB
+\item[]\index{\cs{<} in mid line}
+ \textmess{\cs{<} in mid line}
+
+ A \cmd{\<} appears in the middle of a line in a \Ie{tabbing} environment;
+it should only come at the start of a line.
+
+%LTFSSDCL
+\item[]\index{... allowed only in math mode}
+ \textmess{... allowed only in math mode}
+
+ You have tried to use a math command in a non-math mode.
+
+
+%%%% BBBBBBBBBBBBBBBBBB
+
+%LTERROR
+\item[]\index{Bad \cs{line} or \cs{vector} argument}
+ \textmess{Bad \cmd{\line} or \cmd{\vector} argument}
+
+ 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}
+
+ \ltx\ does not know the name of the argument of a \cmd{\begin}.
+You have probably misspelled it.
+
+
+%%%% FFFFFFFFFFFFFFFFFFFFF
+
+%LTFILES
+\item[]\index{File not found ...}
+ \textmess{File not found. Type X to quit or <RETURN> to proceed
+ or enter new name (Default extension: ...)}
+
+ \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}.
+
+%LTERROR %LTOUTPUT
+\item[]\index{Float(s) lost}
+ \textmess{Float(s) lost}
+
+ Usually caused by having too many \cmd{\marginpar}s on a page.
+
+%LTFSSBAS
+%\item[] \textmess{Font family `..+..' unknown}
+
+%LTFSSTRC
+%\item[] \textmess{Font ... not found}
+
+
+
+%%%% IIIIIIIIIIIIIIIIII
+
+%LTERROR
+\item[]\index{Illegal character ...}
+ \textmess{Illegal character in array argument}
+
+ 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.
+
+%LTFILES
+\item[]\index{\cs{include} cannot be nested}
+ \textmess{\cmd{\include} cannot be nested}
+
+ A file that is \cmd{\include}d cannot \cmd{\include} any other files.
+
+
+%%%%% LLLLLLLLLLLLLLLL
+
+%LTCLASS
+\item[]\index{\cs{LoadClass} in package file}
+ \textmess{\cmd{\LoadClass} in package file}
+
+ 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.
+
+%LTLISTS
+\item[]\index{Lonely \cs{item} ...}
+ \textmess{Lonely \cmd{\item} --- perhaps a missing list environment}
+
+ An \cmd{\item} command appears to be outside any list environment.
+
+
+%%%% MMMMMMMMMMMMMMMM
+
+%LTFSSBAS
+%\item[] \textmess{Math alphabet identifier ...is undefined in math version `...'}
+% (Check the spelling or use the \cmd{\SetMathAlphabet} command)
+
+%LTFSSBAS %LTFSSDCL
+%\item[] \textmess{Math version `..' is not defined} (misspelled or need a package)
+
+
+%LTERROR
+\item[]\index{Missing \senv{document}}
+ \textmess{Missing \cs{begin}\{document\}}
+
+ 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.
+
+\item[]\index{Missing @-exp ...}
+ \textmess{Missing @-exp in array argument}
+
+ 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.
+
+\item[]\index{Missing p-arg ...}
+ \textmess{Missing p-arg in array argument}
+
+ 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.
+
+%%%% NNNNNNNNNNNNNNNN
+
+%LTERROR
+\item[]\index{No counter ... defined}
+ \textmess{No counter ... defined}
+
+ 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.
+
+
+%LTFSSDCL
+%\item[] \textmess{Not a command name: \cs{...}}
+
+%LTFSSTRC
+%\item[] \textmess{No declaration for shape ...}
+
+%LTPLAIN
+\item[]\index{No room for a new ...}
+ \textmess{No room for a new ...}
+
+ \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.
+
+%LTSECT
+\item[]\index{No title given?No \cs{title} given}
+ \textmess{No \cmd{\title} given}
+
+You did not put a \cmd{\title} command before using \cmd{\maketitle}.
+
+
+%LTERROR
+\item[]\index{Not in outer par mode}
+ \textmess{Not in outer par mode}
+
+ 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).
+
+
+%%%% 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.}
+
+
+%LTCLASS
+\item[]\index{Option clash for ...}
+ \textmess{Option clash for ...}
+
+ 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.
+
+%%%% PPPPPPPPPPPPPPPPPP
+
+%LTOUTPUT
+\item[]\index{Page height already too large}
+ \textmess{Page height already too large}
+
+ You are trying to use \cmd{\enlargethispage} when the page is already
+too large.
+
+
+%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}
+
+ There are unmatched \cmd{\pushtabs} and \cmd{\poptabs} in a
+\Ie{tabbing} environment.
+
+
+%%%% RRRRRRRRRRRRRRRR
+
+%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}
+
+ This is a problem in a class or package file. Complain to the author.
+
+%%%% SSSSSSSSSSSSSSSS
+
+%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}.
+
+%LTOUTPUT
+\item[]\index{Suggested extra height ...}
+ \textmess{Suggested extra height (...) dangerously large}
+
+ \ltx\ is concerned that you a trying to increase the page size
+ too much with the \cmd{\enlargthispage} command.
+
+
+%LTFSSDCL
+%\item[] \textmess{Symbol font ... not defined}
+
+%%%% TTTTTTTTTTTTTTTT
+
+%LTERROR %LTTAB
+\item[]\index{Tab overflow}
+ \textmess{Tab overflow}
+
+ In the \Ie{tabbing} environment a \cmd{\=} has exceeded \ltx's maximum
+number of tab stops.
+
+
+%LTCLASS
+\item[]\index{The file needs format ...}
+ \textmess{The file needs format ... but this is ...}
+
+ 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.
+
+%LTFNTCMD
+%\item[] \textmess{The font size command \cmd{\normalsize} is not defined:
+% there is probably something wrong with the class file}
+
+%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}
+\item \mbox{} \\
+...
+\end{lcode}
+
+%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.
+
+%LTFSSDCL
+%\item[] \textmess{This NFSS system isn't set up properly} (For encoding scheme ...
+% .../.../... do not form a valid font shape)
+
+%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)
+
+%LTERROR
+\item[]\index{Too deeply nested}
+ \textmess{Too deeply nested}
+
+ 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).
+
+%LTMATH
+\item[]\index{Too many columns ...}
+ \textmess{Too many columns in eqnarray environment}
+
+ An \Ie{eqnarray} environment has three \texttt{\&} column separators
+with no \cmd{\\} between.
+
+%LTFSSDCL
+%\item[] \textmess{Too many math alphabets used in version ...}
+
+%LTERROR
+\item[]\index{Too many unprocessed floats}
+ \textmess{Too many unprocessed floats}
+
+ 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.
+
+%LTCLASS
+\item[]\index{Two documentclass commands?Two \cs{documentclass} commands}
+ \textmess{Two \cmd{\documentclass} commands}
+
+ Your document has two \cmd{\documentclass} commands; only one is
+permitted.
+
+
+%LTCLASS
+\item[]\index{Two LoadClass commands?Two \cmd{\LoadClass} commands}
+ \textmess{Two \cmd{\LoadClass} commands}% (only one allowed)
+
+ 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.
+
+%LTFSSDCL
+%\item[] \textmess{Unknown symbol font ...}
+
+%LTCLASS
+\item[]\index{usepackage before documentclass?\cs{usepackage} before \cs{documentclass}}
+ \textmess{\cmd{\usepackage} before \cmd{\documentclass}}
+
+ In general, the \cmd{\usepackage} command can only be used in the
+preamble\index{preamble}.
+
+%%%% 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}
+
+ The argument of a \piif{verb} command runs past the end of the line.
+Perhaps you forgot to put in the correct ending character.
+
+%LTMISCEN
+\item[]\index{verb illegal in command argument?\cs{verb} illegal in command argument}
+ \textmess{\cs{verb} illegal in command argument}
+
+ A \piif{verb} cannot be part of the argument to another command.
+
+
+%%%%%%%%%%%%%%%%%%%%% TBD
+
+
+
+%LTVERS
+%\textmess{LaTeX source files more than 1 year old!}
+
+
+
+%LTFSSCMP
+%\textmess{*** What's this? NFSS release 0? ***}
+
+%LTFSSCMP
+%\textmess{*** NFSS release 1 command ... found
+% *** Recovery not possible. Use ...}
+
+%LTFSSCMP
+%\textmess{*** NFSS release 1 command \cmd{\newmathalphabet} found
+% *** Automatic recovery not possible}
+
+\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}
+... \ref{joe}... \cite{FRED96} ...
+\end{lcode}
+may produce warnings like
+\begin{lcode}
+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}
+during the document processing, and then at the end there will also
+be the warning:
+\begin{lcode}
+LaTeX Warning: There were undefined references.
+\end{lcode}
+
+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.
+
+\begin{plainlist}
+%%%% AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+
+%LTOUTPUT
+%\item[] \textmess{Active ... character found while output routine is active.
+% This may be a bug in a package you are using}
+
+
+%%%% BBBBBBBBBBBBBBBBBBBBBB
+
+
+%%%% CCCCCCCCCCCCCCCCCCCCCCC
+
+%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}.
+
+%LTBIBL
+\item[]\index{Citation ... undefined}
+ \textmess{Citation ... undefined}
+
+ The key in a \cmd{\cite} command was not defined by any \cmd{\bibitem}.
+
+%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.
+
+
+%LTFSSTRC
+%\item[] \textmess{Command \cmd{\tracingfonts} not provided. Use the 'tracefnt'
+% package. Command found: ...}
+
+%%%% 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 ...}
+
+ The contents of the optional argument to \cmd{\twocolumn} was too
+long to fit on the page.
+
+%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}
+
+ You have asked for too large (or too small) an oval or circle,
+ or too short a line, in a \Ie{picture}.
+
+%%%% RRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRRR
+
+%LTXREF
+\item[]\index{Reference ... on page ...}
+ \textmess{Reference ... on page ... undefined}
+
+ The argument of a \cmd{\ref} or \cmd{\pageref} has not been defined
+on the preceding run by a \cmd{\label} command.
+
+%%%% SSSSSSSSSSSSSSSSSSSSSS
+
+%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!}
+
+ This is only output at the end of the run.
+
+ 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}
+
+ This is only output at the end of the run.
+
+ At least one font had to be substituted.
+
+%%%% TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTT
+
+%LTOUTPUT
+\item[]\index{Text page ... contains only floats}
+ \textmess{Text page ... contains only floats}
+
+ The page should have included some textual material but there was
+no room for it.
+
+%LTXREF
+\item[]\index{There were multiply defined labels}
+ \textmess{There were multiply defined labels}
+
+ This is only output at the end of the run.
+
+ Two or more \cmd{\label} or \cmd{\cite} commands had the same argument.
+
+%LTXREF
+\item[]\index{There were undefined references}
+ \textmess{There were undefined references}
+
+ This is only output at the end of the run.
+
+ 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.
+
+%%%% UUUUUUUUUUUUUUUUUUUUUUUUUUUU
+
+%LTFILES
+\item[]\index{Unused global option(s) ...}
+ \textmess{Unused global option(s) [...]}
+
+ The listed options were not known to the document class or any packages
+you used.
+
+%%%% WWWWWWWWWWWWWWWWWWWWWWWWWWWWWWW
+
+%LTCLASS
+%\item[] \textmess{Writing text ... before \cs{end}\{...\} as last line of ...}
+
+
+%%%% YYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
+
+%LTCLASS
+%\item[] \textmess{You have requested class/package ... but the class/package provides ...}
+
+%LTCLASS
+\item[]\index{You have requested release ...}
+ \textmess{You have requested release ... of LaTeX but only release ... is available}
+
+ 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.
+
+%LTCLASS
+\item[]\index{You have requested version ...}
+ \textmess{You have requested version ... of class/package ... but only version
+ ... is available}
+
+ 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.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%LTCLASS
+%\textmess{... has been converted to Blank ...3e}
+
+
+%%LTFSSCMP
+%\textmess{*** NFSS release 1 command ... found
+% *** Update by using release 2 command ...}
+
+
+\end{plainlist}
+
+\index{LaTeX?\ltx!warning|)}
+\index{warning!LaTeX?\ltx|)}
+
+\section{Class errors}
+
+%%\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}
+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.
+
+
+%%%%%\subsection{Errors}
+
+\begin{plainlist}
+
+\item[]\index{... is negative}
+ \textmess{... is negative}
+
+ The value is negative. It should be at least zero.
+
+\item[]\index{... is not a counter}
+ \textmess{... is not a counter}
+
+ An argument that should be the name of a counter is not.
+
+\item[]\index{... is zero or negative}
+ \textmess{... is zero or negative}
+
+ The value must be greater than zero.
+
+
+\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}
+
+ You are trying to use the \Ie{patverse} or \Ie{patverse*} environment
+without having first defined a pattern.
+
+\item[]\index{Argument to \cs{setsidecappos} is not ...}
+ \textmess{Argument to \cmd{\setsidecappos} is not t or c or b}
+
+ The argument will be assumed to be \texttt{c}.
+
+\item[]\index{Argument to \cs{overridesidecapmargin} neither ...}
+ \textmess{Argument to \cmd{\overridesidecapmargin} neither left nor right}
+
+ The argument to \cmd{\overridesidecapmargin} must be either
+\texttt{left} or \texttt{right}. The attempted override will be ignored.
+
+
+\item[]\index{Cannot change a macro that has delimited arguments}
+ \textmess{Cannot change a macro that has delimited arguments}
+
+ You are using \cmd{patchcmd} on a macro that has delimted arguments.
+
+\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.
+
+\item[]\index{Font command ... is not supported}
+ \textmess{Font command ... is not supported}
+
+ 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 ...}
+
+ The \lnc{\footskip} is too large for the \lnc{\lowermargin}. Either
+increase the \lnc{\lowermargin} or decrease the \lnc{\footskip}.
+
+
+\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.
+
+
+\item[]\index{Illegal pream-token ...}
+ \textmess{Illegal pream-token (...): `c' used}
+
+ 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).
+
+
+\item[]\index{Index ... outside limits ...}
+ \textmess{Index ... outside limits for array ...} % (\cmd{\checkarrayindex}
+
+ Trying to access an index for the array data structure that is not between
+the low and high indices.
+
+
+\item[]\index{Limits for array ... }
+ \textmess{Limits for array ... are in reverse order}
+
+ The low index is not less than the high index in \cmd{\newarray}.
+
+
+\item[]\index{Missing arg: token ignored}
+ \textmess{Missing arg: token ignored} % (array/tabular)
+
+ The argument to a column specifier for a \Ie{array} or \Ie{tabular}
+is missing.
+
+
+
+\item[]\index{No array called ...}
+ \textmess{No array called ...} % (\cmd{\checkarrayindex}
+
+ You have tried to access an unknown array data structure.
+
+
+\item[]\index{Not defined: ...}
+ \textmess{Not defined: ...}
+
+ You are using \cmd{\patchcmd} on a macro that is not defined.
+
+\item[]\index{Not redefinable: ...}
+ \textmess{Not redefinable: ...}
+
+ You are using \cmd{\patchcmd} on a macro that it is unable to
+modify.
+
+
+
+\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.}
+
+ You have provided an unknown name for the optional argument to
+\cmd{\checkthelayout}. The default \texttt{classic} will be used instead.
+
+
+\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.
+
+\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 sum of the \lnc{\paperwidth} and the \lnc{\trimedge} is
+ larger than the \lnc{\stockwidth}. Either increase the \lnc{\stockwidth}
+ or reduce the others.
+
+\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.
+
+
+\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})
+
+ The combination of values in the arguments to one of the commands
+for page layout does not make sense.
+
+\item[]\index{The `extrafontsizes' option ...}
+ \textmess{The `extrafontsizes' option is required to use the `...pt' option}
+
+ 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.
+
+
+\item[]\index{Unknown document division ...}
+ \textmess{Unknown document division name (...)}
+
+ 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.
+
+\item[]\index{Unknown mark setting type ...}
+ \textmess{Unknown mark setting type `...' for ...mark}
+
+ 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}.
+
+\item[]\index{Unknown numbering type ...}
+ \textmess{Unknown numbering type ... for ...mark}
+
+ In \cmd{\createmark} the class expected either \texttt{shownumber} or
+\texttt{nonumber} for displaying the number. It will use
+\texttt{shownumber}.
+
+\item[]\index{Unrecognized argument for \cs{sidecapmargin}}
+ \textmess{Unrecognized argument for \cmd{\sidecapmargin}}
+
+ The argument to \cmd{\sidecaption} should be \texttt{left} or
+\texttt{right} or \texttt{inner} or \texttt{outer}.
+
+\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 ...}
+
+ 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.
+
+\item[]\index{You have used the `*pt' option but file ...}
+ \textmess{You have used the `*pt' option but file ... can't be found}
+
+ 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.
+
+\item[]\index{XeTeX is required to process this document}
+ \textmess{XeTeX is required to process this document}
+
+ 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.
+
+
+
+\end{plainlist}
+
+
+\index{error!memoir class|)}
+%%\index{memoir class!error|)}
+\Iclasssub{memoir}{error|)}
+
+\section{Class warnings}
+
+%%\index{memoir class!warning|(}
+\Iclasssub{memoir}{warning|(}
+\index{warning!memoir class|(}
+
+ These are introduced by \verb?Class memoir Warning:?
+
+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}
+
+ The following is an alphabeticised list of the class warnings.
+
+\begin{plainlist}
+
+%%%%%%%%%%%%%%%%%%%%%%%
+
+\item[]\index{... at index ... in pattern ...}
+ \textmess{... at index ... in pattern ... is not a digit}% (\cmd{\get@vsindent}
+
+ The character at the given position in the verse pattern is not a digit.
+
+\item[]\index{... is not a macro}
+ \textmess{... is not a macro}
+
+ Using \cmd{\addtodef} or \cmd{\addtoiargdef} you have tried to extend
+the definition of an unknown macro.
+
+\item[]\index{... is not an input stream}
+ \textmess{... is not an input stream}
+
+ 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}
+
+ You are trying to access a non-existent output stream.
+
+\item[]\index{Bad \cs{sidebarmargin} argument}
+ \textmess{Bad \cs{sidebarmargin} argument}
+
+ The argument to \cs{sidebarmargin} is not recognized. The class
+will use \texttt{right}.
+
+
+\item[]\index{Characters dropped after \eenv{...}}
+ \textmess{Characters dropped after \eenv{...}} % (\cmd{\verbatim@rescan}
+
+ At the end of a \Ie{verbatim} environment there should be no characters
+after the \eenv{...} on the same line.
+
+\item[]\index{Column ... is already defined}
+ \textmess{Column ... is already defined} % (tabulars
+
+ The column type has been defined by a previous \cmd{\newcolumntype}.
+
+
+\item[]\index{Counter ... already defined}
+ \textmess{Counter ... already defined}
+
+ For information only, the counter in \cmd{\providecounter}
+is already defined.
+
+\item[]\index{Do not use footnote ...?Do not use \cs{footnote} ...}
+ \textmess{Do not use \cmd{\footnote} in \cmd{\maketitle}. Use \cmd{\thanks} instead}
+
+ 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.
+
+\item[]\index{Environment ... already defined}
+ \textmess{Environment ... already defined}% (\cmd{\m@mprovenv}
+
+ For information only, the environment in \cmd{\provideenvironment}
+is already defined.
+
+
+\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.
+
+\item[]\index{Input stream ... is already defined}
+ \textmess{Input stream ... is already defined}
+
+ You are trying to use \cmd{\newinputstream} to create an already existing
+input stream.
+
+\item[]\index{Input stream ... is not open}
+ \textmess{Input stream ... is not open}% (\cmd{\instre@mandopen}
+
+ You are trying to access or close an input stream that is closed.
+
+\item[]\index{Input stream ... is open}
+ \textmess{Input stream ... is open}% (\cmd{\instre@mandclosed}
+
+ You are trying to open an input stream that is already open.
+
+\item[]\index{Length ... already defined}
+ \textmess{Length ... already defined}
+
+ For information only, the length in \cmd{\providelength}
+is already defined.
+
+
+
+\item[]\index{Marginpar on page ...}
+ \textmess{Marginpar on page ... moved by ...}
+
+ 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.)
+
+\item[]\index{No more to read from stream ...}
+ \textmess{No more to read from stream ...}% (\cmd{\readaline})
+
+ There is nothing left in the stream to be read.
+
+\item[]\index{Optional argument of twocolumn ...?Optional argument of \cs{twocolumn} ...}
+ \textmess{Optional argument of \cmd{\twocolumn} too tall on page ...}% (\cmd{\@topnewpage}
+
+ The contents of the optional argument to \cmd{\twocolumn} was too
+long to fit on the page.
+
+\item[]\index{Output stream ... is already defined}
+ \textmess{Output stream ... is already defined}
+
+ You are trying to use \cmd{\newoutputstream} to create an already existing
+output stream.
+
+\item[]\index{Output stream ... is not open}
+ \textmess{Output stream ... is not open}% (\cmd{\outstre@mandopen}
+
+ You are trying to access or close an output stream that is closed.
+
+\item[]\index{Output stream ... is open}
+ \textmess{Output stream ... is open}% (\cmd{\outstre@mandclosed}
+
+ You are trying to open an output stream that already open.
+
+\item[]\index{Redefining primitive column ...}
+ \textmess{Redefining primitive column ...} % (tabulars
+
+ The argument to \cmd{\newcolumntype} is one of the basic column types.
+
+
+
+\item[]\index{Stream ... is not open}
+ \textmess{Stream ... is not open}% (\cmd{stre@mverb@input} \cmd{\stre@mbvin}
+
+ You are trying to access a stream, either input or output, that is closed.
+
+
+\item[]\index{The ... font command is deprecated ...}
+ \textmess{The ... font command is deprecated. Use ... or ... instead}
+
+ You are using a deprecated font command. Consider using one of the
+alternatives.
+
+\item[]\index{The counter will not be printed ...}
+ \textmess{The counter will not be printed. The label is: ...}% (\cmd{\@@enum@}
+
+ The optional \meta{style} argument to the \Ie{enumerate} environment
+does not include one of the special characters.
+
+\item[]\index{Undefined index file ...}
+ \textmess{Undefined index file ...}% (\cmd{\@index}, \cmd{\@spindex}
+
+ You are trying to add an index entry to an unknown \file{idx} file.
+
+
+\item[]\index{Unknown toclevel for ...}
+ \textmess{Unknown toclevel for ...}
+
+ The division name you have used for \cmd{\settocdepth} is not
+recognized.
+
+
+
+\item[]\index{verb may be unreliable ...?\cs{verb} may be unreliable ...}
+ \textmess{\cs{verb} may be unreliable inside tabularx}
+
+ A \cs{verb} in a \Ie{tabularx} may work, but may not.
+
+\item[]\index{X columns too narrow ...}
+ \textmess{X columns too narrow (table too wide)} % (tabulars
+
+ The width of the X columns in a \Ie{tabularx} had to be made too narrow.
+
+\end{plainlist}
+
+\index{warning!memoir class|)}
+%%\index{memoir class!warning|)}
+\Iclasssub{memoir}{warning|)}
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%\endinput
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%% end mbooka
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
% back end
\backmatter
\clearpage
-\pagestyle{ruled}
-\chapterstyle{section}
+\pagestyle{plainmarkruled}
+%%\chapterstyle{section}
+
+\renewcommand*{\begintheglossaryhook}{\small}
+%%%\glossaryintoc
+\printglossary
\renewcommand{\prebibhook}{%
CTAN is the Comprehensive TeX Archive Network. Information on how to
@@ -16097,6 +34654,14 @@ access CTAN is available at \url{http://www.tug.org}.
\par\vspace{\onelineskip}}
\begin{thebibliography}{GMS94A}
+\small
+
+\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[Ado01]{ADOBEBOOK}
\emph{How to Create Adobe PDF eBooks}.
@@ -16119,13 +34684,6 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN as
\url{/macros/latex/contrib/misc/titleref.sty})
-\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})
-
\bibitem[Ars01b]{CHAPTERBIB}
Donald Arseneau.
\newblock \emph{The chapterbib package}.
@@ -16133,11 +34691,18 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN as
\url{/macros/latex/contrib/cite/chapterbib.sty})
+\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
- \newblock (ISBN 0--934977--22--4), 1992.
+ \newblock Italica Press, 1992.
+ \newblock ISBN 0--934977--22--4.
\bibitem[BDG89]{BIGELOW89}
Charles Bigelow, Paul Hayden Duensing and Linnea Gentry (Eds).
@@ -16179,11 +34744,11 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN as
\url{/macros/latex/base/alltt.dtx(ins)})
-\bibitem[Bri92]{BRINGHURST92}
+\bibitem[Bri99]{BRINGHURST99}
Robert Bringhurst.
\newblock \emph{The Elements of Typographic Style}.
- \newblock Hartley \& Marks
- \newblock (ISBN 0--88179--033--8), 1992.
+ \newblock Hartley \& Marks, second edition,
+ \newblock 1999. ISBN 0--88179--033--8.
\bibitem[Bur59]{BURT59}
C.~L.~Burt.
@@ -16205,13 +34770,6 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/required/tools})
-\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}.
@@ -16233,13 +34791,19 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/contrib/carlisle})
-\bibitem[Car99a]{TABULARX}
+\bibitem[Car99]{TABULARX}
David Carlisle.
\newblock \emph{The tabularx package}.
\newblock January, 1999.
\newblock (Available from CTAN in
\url{/macros/latex/required/tools})
+\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})
\bibitem[Car01]{DCOLUMN}
David Carlisle.
@@ -16248,13 +34812,14 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/required/tools})
-\bibitem[CR99]{GRAPHICX}
- David Carlisle and Sebastian Rahtz.
- \newblock \emph{The graphicx package}.
- \newblock February, 1999.
+\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})
+
\bibitem[CB99]{CHAPPELL99}
Warren Chappell and Robert Bringhurst.
\newblock \emph{A Short History of the Printed Word}.
@@ -16269,10 +34834,10 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/indexing/makeindex/paper})
-\bibitem[Chi93]{CMS93}
+\bibitem[Chi93]{CMS}
\newblock \emph{The Chicago Manual of Style}, Fourteenth Edition.
- \newblock The University of Chicago
- \newblock (ISBN 0--226--10389--7) 1993.
+ \newblock The University of Chicago, 1993.
+ \newblock ISBN 0--226--10389--7.
\bibitem[Coc02]{SUBFIGURE}
@@ -16285,8 +34850,8 @@ access CTAN is available at \url{http://www.tug.org}.
\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.
+ \newblock Copernicus, Springer-Verlag, 1996.
+ \newblock ISBN 0--387--97993--X.
\bibitem[Cra92]{CRAIG92}
James Craig.
@@ -16294,13 +34859,20 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock Watson-Guptill, NY,
\newblock 1992.
-\bibitem[Dal99]{NATBIB}
+\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})
+\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})
+
\bibitem[Deg92]{DEGANI92}
Asaf Degani.
\newblock \emph{On the Typography of Flight-Deck Documentation}.
@@ -16313,15 +34885,15 @@ access CTAN is available at \url{http://www.tug.org}.
\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.
+ \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
- \newblock (ISBN 0--7123--4563--9 \textsc{uk},
- 1--884718--44--2 \textsc{usa}), 1998.
+ \newblock The British Library and Oak Knoll Press, 1998.
+ \newblock ISBN 0--7123--4563--9 \textsc{uk},
+ 1--884718--44--2 \textsc{usa}.
\bibitem[Dow00]{PATCHCMD}
Michael J.~Downes.
@@ -16330,20 +34902,19 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/contrib/patchcmd})
-\bibitem[Eij92]{EIJKHOUT92}
+\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/}).
-\bibitem[Fai00]{FOOTMISC}
- Robin Fairbairns.
- \newblock \emph{footmisc --- a portmanteau package for customising
- footnotes in LaTeX2e}.
- \newblock March, 2000.
+\bibitem[Eij99]{COMMENT}
+ Victor Eijkhout.
+ \newblock \emph{comment.sty}
+ \newblock October, 1999.
\newblock (Available from CTAN in
- \url{/macros/latex/contrib/footmisc})
+ \url{/macros/???????????})
\bibitem[Fai98]{MOREVERB}
Robin Fairbairns.
@@ -16352,6 +34923,14 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/contrib/moreverb})
+\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})
+
\bibitem[FAQ]{FAQ}
Robin Fairbairns.
\newblock \emph{The UK TeX FAQ}.
@@ -16372,6 +34951,14 @@ access CTAN is available at \url{http://www.tug.org}.
\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}.
@@ -16383,34 +34970,33 @@ access CTAN is available at \url{http://www.tug.org}.
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.
+ \newblock Black Dog \& Leventhal Publishers Inc., 1998.
+ \newblock ISBN 1--57912--023--7.
\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}
+ \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 Publishing Company
- \newblock (ISBN 0--201--43311--7), 1999.
+ \newblock Addison-Wesley, 1999.
+ \newblock ISBN 0--201--43311--7.
\bibitem[Gou87]{GOULD87}
J.~D.~Gould \textit{et al}.
@@ -16423,17 +35009,17 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock \emph{British Journal of Psychology}, pp 203--212, 74:2, 1983.
\bibitem[HM01]{HELLER01}
- Steven Heller and Philip B.~Maggs (Eds).
+ Steven Heller and Philip B.~Meggs (Eds).
\newblock \emph{Texts on Type: Critical Writings on Typography}.
- \newblock Allworth Press
- \newblock (ISBN 1--58115--082--2), 2001.
+ \newblock Allworth Press, 2001.
+ \newblock ISBN 1--58115--082--2.
\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.
+ \newblock Oxford University Press, 1998.
+ \newblock ISBN 0--19--509686--X.
\bibitem[HK75]{HVISTENDAHL75}
J.~K.~Hvistendahl and M.~R.~Kahl.
@@ -16447,17 +35033,54 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock September, 1995.
\newblock (Available from CTAN in \url{/macros/latex/contrib/camel})
-\bibitem[Knu84]{KNUTH84a}
+\bibitem[Keh98]{XINDY}
+ Roger Kehr.
+ \newblock \emph{xindy: A flexible indexing system}.
+ \newblock February, 1998.
+ \newblock (Available from CTAN in \url{/indexing/xindy})
+
+\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})
+
+\bibitem[Knu84]{TEXBOOK}
Donald E.~Knuth.
\newblock \emph{The TeXbook}.
- \newblock Addison-Wesley Publishing Company
- \newblock (ISBN 0--201--13448--9), 1984.
+ \newblock Addison-Wesley, 1984.
+ \newblock ISBN 0--201--13448--9.
+
+\bibitem[Knu86]{TEXPROGRAM}
+ Donald E.~Knuth.
+ \newblock \emph{TeX: The Program}.
+ \newblock Addison-Wesley, 1986.
+ \newblock ISBN 0--201--13437--3.
+
+\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.
\bibitem[Lam94]{LAMPORT94}
Leslie Lamport.
\newblock \emph{LaTeX: A Document Preparation System}.
- \newblock Addison-Wesley Publishing Company
- \newblock (ISBN 0--201--52983--1), 1994.
+ \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})
\bibitem[LMB99]{CLASSES}
Leslie Lamport, Frank Mittelbach and Johannes Braams.
@@ -16468,14 +35091,35 @@ access CTAN is available at \url{http://www.tug.org}.
\bibitem[Law90]{LAWSON90}
Alexander Lawson.
\newblock \emph{Anatomy of a Typeface}.
- \newblock David R.~Godine
- \newblock (ISBN 0--87923--333--8), 1990.
+ \newblock David R.~Godine, 1990.
+ \newblock ISBN 0--87923--333--8.
+
+\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})
+
+\bibitem[Leh04]{FONTINST}
+ Philipp Lehman.
+ \newblock \emph{The Font Installation Guide}.
+ \newblock December 2004.
+ \newblock (Available from CTAN in
+ \url{/info/Type1fonts/fontinstallationguide})
\bibitem[Leu92]{LEUNEN92}
Mary-Claire van Leunen.
\newblock \emph{A Handbook for Scholars}.
- \newblock Oxford University Press
- \newblock (ISBN 0--19--506954--4), 1992.
+ \newblock Oxford University Press, 1992.
+ \newblock ISBN 0--19--506954--4.
+
+\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.
\bibitem[Lon91]{MULTIND}
F.~W.~Long.
@@ -16483,6 +35127,18 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock August, 1991.
\newblock (Available from CTAN as \url{/macros/latex209/contrib/misc/multind.sty})
+\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})
+
+\bibitem[Mad07]{MEMEXSUPP}
+ Lars Madsen.
+ \newblock \emph{The Memoir Experimental Support Package}.
+ \newblock 2007.
+ \newblock (Available from CTAN in \url{/macros/latex/contrib/memexsupp})
+
\bibitem[McD98]{SECTSTY}
Rowland McDonnell.
\newblock \emph{The sectsty package}.
@@ -16493,29 +35149,22 @@ access CTAN is available at \url{http://www.tug.org}.
\bibitem[McL75]{MCLEAN75}
Ruari McLean.
\newblock \emph{Jan Tschichold: Typographer}.
- \newblock David R.~Godine
- \newblock (ISBN 0--87923--841--0), 1975.
+ \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
- \newblock (ISBN 0--500--68022--1), 1980.
+ \newblock Thames \& Hudson, 1980.
+ \newblock ISBN 0--500--68022--1.
\bibitem[McL95]{MCLEAN95}
Ruari McLean (Ed).
\newblock \emph{Typographers on Type}.
- \newblock W.~W.~Norton \& Co.
- \newblock (ISBN 0--393--70201--4), 1995.
-
-\bibitem[Mit95]{DOC}
- Frank Mittelbach.
- \newblock \emph{The doc and shortvrb packages}.
- \newblock May, 1995.
- \newblock (Available from CTAN in
- \url{/macros/latex/base})
+ \newblock W.~W.~Norton \& Co., 1995.
+ \newblock ISBN 0--393--70201--4.
-\bibitem[Mit95]{SHORTVRB}
+\bibitem[Mit95]{DOCSHORTVRB}
Frank Mittelbach.
\newblock \emph{The doc and shortvrb packages}.
\newblock May, 1995.
@@ -16542,11 +35191,17 @@ access CTAN is available at \url{http://www.tug.org}.
\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
- \newblock (ISBN 1--56792--004--7), 1999.
+ \newblock David R. Godine, 1999.
+ \newblock ISBN 1--56792--004--7.
\bibitem[NG98]{SIDECAP}
Rolf Niespraschk and Hubert G\"{a}\ss{}lein.
@@ -16575,6 +35230,26 @@ access CTAN is available at \url{http://www.tug.org}.
\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})
+
+\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
@@ -16609,6 +35284,11 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock `Type and how to make it most legible'.
\newblock \emph{Design Research International}, 1972.
+\bibitem[Rei07]{REINGOLD07}
+ Edward M. Reingold.
+ \newblock `Writing numbers in words in TeX'.
+ \newblock TUGboat, 28, 2 pp 256--259, 2007.
+
\bibitem[RAE71]{ROBINSON71}
D.~O.~Robinson, M.~Abbamonte and S.~H.~Evans.
\newblock `Why serifs are important: The perception of small print'.
@@ -16617,21 +35297,24 @@ access CTAN is available at \url{http://www.tug.org}.
\bibitem[Rog43]{ROGERS43}
Bruce Rogers.
\newblock \emph{Paragraphs on Printing}.
- \newblock William E. Rudge's Sons, Inc.
- \newblock (no ISBN), 1943.
+ \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
- \newblock (no ISBN), 1949.
+ \newblock October House, 1949.
+
+\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.
\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.
+ \newblock Oxford University Press, 1994.
+ \newblock ISBN 0--19--508714--3.
\bibitem[SRR99]{VERBATIM}
Rainer Sch\"{o}pf, Bernd Raichle and Chris Rowley.
@@ -16646,22 +35329,55 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock \emph{Dynamics in Document Design}.
\newblock Wiley \& Sons, 1997.
+\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})
+
+\bibitem[Thi98]{ORNAMENTAL}
+ Christina Thiele.
+ \newblock `Hey --- it works: Ornamental rules'.
+ \newblock \emph{TUGboat},
+ \newblock vol. 19, no. 4, p 427, December 1998.
+
\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.
+\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.
+\bibitem[Tob00]{SETSPACE}
+ Geoffrey Tobin.
+ \newblock \emph{setspace.sty}.
+ \newblock December, 2000.
+ \newblock (Available from CTAN in
+ \url{/macros/latex/contrib/setspace})
+
\bibitem[Tsc91]{TSCHICHOLD91}
Jan Tschichold.
\newblock \emph{The Form of the Book}.
- \newblock Lund Humphries
- \newblock (ISBN 0--85331--623--6), 1991.
+ \newblock Lund Humphries, 1991.
+ \newblock ISBN 0--85331--623--6.
+
+\bibitem[Tuf83]{TUFTE83}
+ Edward R. Tufte.
+ \newblock \emph{The Visual Display of Quantative Information}.
+ \newblock Graphics Press, 1983.
+
\bibitem[Ume99]{GEOMETRY}
Hideo Umeki.
@@ -16674,24 +35390,22 @@ access CTAN is available at \url{http://www.tug.org}.
\bibitem[Whe95]{WHEILDON95}
Colin Wheildon.
\newblock \emph{Type \& Layout}.
- \newblock Strathmore Press
- \newblock (ISBN 0--9624891--5--8), 1995.
+ \newblock Strathmore Press, 1995.
+ \newblock ISBN 0--9624891--5--8.
+
+\bibitem[Wil00]{CATALOGUE}
+ Graham Williams.
+ \newblock \emph{The TeX Catalogue}.
+ \newblock (Latest version on CTAN as \url{/help/Catalogue/catalogue.html})
\bibitem[Wil93]{ADRIANWILSON93}
Adrian Wilson.
\newblock \emph{The Design of Books}.
- \newblock Chronicle Books
- \newblock (ISBN 0--8118--0304--X), 1993.
+ \newblock Chronicle Books, 1993.
+ \newblock ISBN 0--8118--0304--X.
-\bibitem[Wil99a]{LAYOUTS}
- Peter Wilson.
- \newblock \emph{The layouts package}.
- \newblock January, 1999.
- \newblock (Available from CTAN in
- \url{/macros/latex/contrib/layouts})
-
\bibitem[Wil99b]{TOCVSEC2}
Peter Wilson.
\newblock \emph{The tocvsec2 package}.
@@ -16821,44 +35535,118 @@ access CTAN is available at \url{http://www.tug.org}.
\newblock (Available from CTAN in
\url{/macros/latex/contrib/booklet})
-\bibitem[Wil03]{LEDMAC}
+\bibitem[Wil03a]{LAYOUTS}
+ Peter Wilson.
+ \newblock \emph{The layouts package}
+ \newblock November, 2003.
+ \newblock (Available from CTAN in
+ \url{/macros/latex/contrib/layouts})
+
+\bibitem[Wil03b]{LEDMAC}
Peter Wilson.
- \newblock \emph{ledmac: A presumptuous attaempt to port EDMAC and TABMAC
+ \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})
+\bibitem[Wil04a]{GLISTER3}
+ Peter Wilson.
+ \newblock `Glisterings'.
+ \newblock TUGboat, 25, 2 pp 201--202, 2004.
+
+\bibitem[Wil04b]{PAGENOTE}
+ Peter Wilson.
+ \newblock \emph{The pagenote package}
+ \newblock September, 2004.
+ \newblock (Available from CTAN in
+ \url{/macros/latex/contrib/pagenote})
+
+\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})
+
+\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})
+
+\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})
+
+\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})
+
+\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})
+
\bibitem[Wil??]{RUMOUR}
Peter Wilson.
\newblock \emph{A Rumour of Humour: A scientist's commonplace book}.
\newblock To be published?
+\bibitem[Wul53]{WULLING-FOOTNOTES}
+ Emerson G. Wulling.
+ \newblock \emph{A Comp's-Eye View of Footnotes}.
+ \newblock Sumac Press, 1953.
\bibitem[Zac69]{ZACHRISSOM69}
B.~Zachrissom.
\newblock \emph{Studies in the Legibility of Printed Text}.
\newblock Almqvist \& Wiksell, Stockholm, 1969.
+\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
- \newblock (ISBN 0--910672--35--0), 2000.
+ \newblock The Grolier Club, 2000.
+ \newblock ISBN 0--910672--35--0.
\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]
+
\cleardoublepage
\pagestyle{empty}
\null\vfil
@@ -16871,9 +35659,9 @@ the indexed topic.\vskip\onelineskip}
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
+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}
@@ -16886,1026 +35674,3 @@ Computer Modern family.
\endinput
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%%%%%%%%%
-patchit The addendum
-%%%%%%%%%%%
-
-% memmanadd.tex Addendum to the Memoir class user manual
-% Author: Peter Wilson
-% Copyright 2002, 2003 Peter R. Wilson
-% All rights reserved
-
-
-
-%\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}
-
-%%%%%%\usepackage{amsmath}
-
-\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
-
-
-%\showindexmarktrue
-
-\newcommand{\theclass}{memoir}
-
-\providecommand{\tx}{TeX}
-\providecommand{\ltx}{LaTeX}
-
-\newsubfloat{table}
-
-
-\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...}
-\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}}
-
-\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{"!}}}
-
-% 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
-}
-
-%%%% 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}
-
-%%%%%%%%%%%% for experiments
-
-%\renewenvironment{lcode}{\@zeroseps
-% \renewcommand{\verbatim@startline}{\verbatim@line{ * }}
-% \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-% {\endverbatim
-% \vspace{-\baselineskip}
-% \noindent % need the \noindent
-%}
-
-%\renewenvironment{bcode}{\@zeroseps
-% \renewcommand{\verbatim@processline}{%
-% * \the\verbatim@line\par}%
-% \small\setlength{\baselineskip}{\onelineskip}\verbatim}%
-% {\endverbatim\noindent} % need the \noindent
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%%%%% LaTeX syntax
-\newenvironment{syntax}{\begin{center}
- \begin{tabular}{|p{0.9\linewidth}|} \hline}%
- {\hline
- \end{tabular}
- \end{center}}
-
-%%%%%%%%%%%%%%%%%% index pagestyle
-\makepagestyle{index}
- \makeheadrule{index}{\textwidth}{\normalrulethickness}
- \makeevenhead{index}{\rightmark}{}{\leftmark}
- \makeoddhead{index}{\rightmark}{}{\leftmark}
- \makeevenfoot{index}{\thepage}{}{}
- \makeoddfoot{index}{}{}{\thepage}
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-%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.
-
-%% 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
-
-%%\chapterstyle{veelo}
-
-
-\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}
-
-%%% 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
-
-
-\bibliographystyle{alpha}
-
-\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}}
-
-\newcommand{\noidxnum}[1]{}
-
-\newcommand{\Note}{\textbf{NOTE:}}
-
-%%% subfigures
-\newsubfloat{figure}
-\tightlists
-
-%% end preamble
-\typeout{The end of the preamble, begin document is next}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\begin{document}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-%% list subfigures
-\setcounter{lofdepth}{2}
-
-\index{counter|noidxnum}
-\index{file|noidxnum}
-\index{environment|noidxnum}
-\index{length|noidxnum}
-\index{package|noidxnum}
-\index{option|noidxnum}
-
-\index{pagestyle|noidxnum}
-\index{chapterstyle|noidxnum}
-
-\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}
-
-%%% ToC down to subsections
-\settocdepth{subsection}
-\frontmatter
-\pagestyle{empty}
-
-
-% ToC, etc
-\pagenumbering{roman}
-%%\pagestyle{headings}
-\pagestyle{ruled}
-\chapterstyle{demo}
-%%\chapterstyle{veelo}
-
-% change sections and subsections
-\setsecheadstyle{\bfseries\raggedright}
-\setsubsecheadstyle{\scshape\raggedright}
-\setsubsubsecheadstyle{\itshape\raggedright}
-
-
-%% 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
-
-%%% 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
-
-
-
-%% 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
-
-
-\cleardoublepage
-\pagenumbering{arabic}
-\mainmatter
-
-
-
-
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\DeleteShortVerb{\|}
-\MakeShortVerb{\=}
-\input{tabmanbody} %% rows & columns
-\DeleteShortVerb{\=}
-\MakeShortVerb{\|}
-%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
-\chapterstyle{veelo}
-\chapter{Miscellaneous} \label{chap:misc}
-
-\section{Chapter style}
-
- 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.
-
-\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}
-
-\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}
-
- 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).
-
- As a demonstration, this chapter uses the \cstyle{veelo} chapterstyle.
-The style works best for chapters that start on recto pages.
-
-
-\section{Cross referencing} \label{sec:xref}
-
-%This is section \currenttitle.
-
- 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}.
-
-
- 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
-
- There are two packages, \Lpack{nameref} and \Lpack{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.
-
-\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.
-
-\section{Needing space}
-
- 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.
-
- Generally speaking, use \cmd{\needspace} in preference to \cmd{\Needspace}
-unless it gives a bad break or the pages must be flush bottom.
-
-\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}
-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$).
-
-\section{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}
-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{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.
-
-\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}.
-
-
-\section{Framed boxes}
-
- 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.
-
-\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}
-
-\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}
-
- 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.
-
-\section{Captions}
-
- The \cmd{\captionstyle} macro has been extended so that it is now
-possible to separately specify the style for short and long
-captions.
-
-\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}.
-
- 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.
-
-\section{Hung paragraphs}
-
- As noted eleswhere the sectioning commands use the internal
-\cmd{\@hangfrom} as part of the formatting of the titles.
-
-\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.
-
-\chapterstyle{demo}
-\chapter{Memoir and packages} \label{chap:mempack}
-
- 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.
-
- 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.
-
- 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}
-
- 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.
-
- 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.
-
-
-
-% 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}
-
-
-\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
-
-
-\end{document}
-
-
-
-
-
-