summaryrefslogtreecommitdiff
path: root/usergrps/uktug/baskervi/4_2/goossens.tex
diff options
context:
space:
mode:
Diffstat (limited to 'usergrps/uktug/baskervi/4_2/goossens.tex')
-rw-r--r--usergrps/uktug/baskervi/4_2/goossens.tex2244
1 files changed, 2244 insertions, 0 deletions
diff --git a/usergrps/uktug/baskervi/4_2/goossens.tex b/usergrps/uktug/baskervi/4_2/goossens.tex
new file mode 100644
index 0000000000..0e470f77ca
--- /dev/null
+++ b/usergrps/uktug/baskervi/4_2/goossens.tex
@@ -0,0 +1,2244 @@
+% Prevent infinite loops
+\def\LaTeXo{\LaTeX~2.09}
+\let\Otemize =\itemize
+\let\Onumerate =\enumerate
+\let\Oescription =\description
+% Zero the vertical spacing parameters
+\def\Nospacing{\itemsep=0pt\topsep=0pt\partopsep=0pt\parskip=0pt\parsep=0pt}
+% Redefine the environments in terms of the original values
+\newenvironment{Itemize}{\Otemize\Nospacing}{\endlist}
+\newenvironment{Enumerate}{\Onumerate\Nospacing}{\endlist}
+\newenvironment{Description}{\Oescription\Nospacing}{\endlist}
+
+\makeatletter
+\input b-conv.sty
+\let\origverbatim\verbatim
+\def\verbatim{\par\@verbatim\small
+ \frenchspacing\@vobeyspaces\verbatim@start}
+\makeatother
+
+\def\AmS{{\protect\the\textfont2 A}\kern-.1667em\lower
+ .5ex\hbox{\protect\the\textfont2 M}\kern
+ -.125em{\protect\the\textfont2 S}}
+\renewcommand{\AmSLaTeX}{\mbox{\AmS-\LaTeX}}
+
+\renewcommand{\meta}[1]{$\langle$\itshape #1\/$\rangle$}
+\renewcommand{\labelitemi}{{\bfseries --}}
+
+\title{\LaTeXe{}, an overview}
+
+\author[Michel Goossens]{Michel Goossens\\CN Division, CERN, CH1211
+ Gen\\lq\nobreak{}eve 23, Switzerland\\ \texttt{goossens@cern.ch}}
+
+\begin{Article}
+
+\begin{abstract}
+This article gives an overview of the new or extended
+user commands available with \LaTeXe, the new \LaTeX{} release,
+compared to the previous version \LaTeXo.
+After introducing the new preamble commands,
+the extensions for defining new commands and environments,
+and handling length and boxes are discussed.
+The new font selection commands are explained,
+both for text and math, and it is shown how to
+easily use different font families.
+A list of supported class and package files is given
+and new possibilities for controlling page contents and floats
+are discussed.
+Most of this material is described in much greater detail
+in \lq\lq\nobreak{}The \LaTeX{} Companion\rq\rq\nobreak{}~\cite{bib-Companion} and in the
+second edition of the \LaTeX{} Reference Manual~\cite{bib-Lamport}.
+\end{abstract}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Why \LaTeXe?}
+
+\LaTeX{} became generally available in 1986; its
+popularity has increased ever since, and many
+extensions have been developed.
+Unluckily, these extensions were included in incompatible
+formats, \eg \lq\lq\nobreak{}standard\rq\rq\nobreak{} \LaTeX{} with and without \NFSS{},
+\SliTeX, \AmSLaTeX, and so on.
+From the \LaTeX{} source alone, it was difficult to determine
+for which of these (or other) formats a document was composed
+and, because different sites could have different configuration,
+document portability was a problem.
+
+Already in 1989 at the Stanford TUG Conference Frank Mittelbach
+and Rainer Sch\"opf got together with Leslie Lamport to discuss these
+(and other) topics and they published their ideas
+about possible ways to evolve \LaTeX{} in
+TUGBoat~\cite{Mittelbach:TB10-3-400-401,Mittelbach:TB11-3-337-345}.
+This lead a few years later to the start of
+the long-term \LaTeX3 project
+\cite{Mittelbach:TB13-1-96-101,Rowley:TB13-3-390-391,%
+ Mittelbach:TB13-4-510-515,Mittelbach:TTN3-1-7-11}.
+
+However, to help end the confusion for the present
+\LaTeX{} users, after a meeting in Spring 1993 between Leslie Lamport
+and Frank Mittelbach in Mainz, it was decided to release an upgraded
+version of \LaTeX, called \LaTeXe{}, which was officially announced
+in August 1993 at the TUG Conference at Aston.
+
+Its stated aims are:
+
+\begin{Itemize}
+\item bring all extensions back under a single format;
+\item prevent proliferation of mutually incompatible
+ dialects of \LaTeXo{};
+\item \NFSS{} becomes the \lq\lq\nobreak{}standard\rq\rq\nobreak{} font selection scheme;
+\item make style files like \textsf{amstex}
+ (formerly \AmSLaTeX{} format) or
+ \textsf{slides} (formerly \SliTeX{} format)
+ into extension packages, all using the same base format;
+\item add a small number of often-requested features;
+\item retain the \lq\lq\nobreak{}touch and feel\rq\rq\nobreak{}, or the \lq\lq\nobreak{}flavour\rq\rq\nobreak{} of \LaTeXo{}.
+\end{Itemize}
+
+The first beta version of \LaTeXe{} was released at the end of 1993,
+while the first production release is foreseen for \lq\lq\nobreak{}Spring 1994\rq\rq\nobreak{}.
+After that, twice a year (in \lq\lq\nobreak{}Spring\rq\rq\nobreak{} and \lq\lq\nobreak{}Autumn\rq\rq\nobreak{}) consolidation
+releases are planned, in order to keep all versions of the files in
+synchronization. Bug reports are handled centrally by inviting the
+users to fill out an electronic form, distributed with the \LaTeXe{}
+distribution, and sending it via electronic mail to
+\Lit{latex-bugs@rus.uni-stuttgart.de}.
+Note that only bug reports referring to the last
+two releases will be considered.
+You can also subscribe to the \LaTeXe{} discussion list
+on \Lit{LATEX-2E@DHDURZ1.BITNET} and post questions (and answers)
+to that list.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Initial and preamble commands}
+
+In this section commands which can only be used before
+or in the preamble will be discussed.
+The first two below can only appear \emph{before}
+the \Lcs{documentclass} command.
+
+\subsection*{Initial commands}
+
+\BDefCmo{NeedsTeXFormat}{format-name}{release-date}
+
+This command, which is normally present in package and class files,
+can also be useful in user documents to make sure that the file
+is run with \LaTeXe.
+Users who try and run it with \LaTeXo{} or plain \TeX{} will get
+a reasonably clear error message.
+An example is
+
+\begin{verbatim}
+\NeedsTeXFormat{LaTeX2e}[1994/02/01]
+\end{verbatim}
+
+If you want to make sure that your document can be processed at
+another site, it could make sense that you include all packages
+and files that your document needs together with the main file.
+\LaTeXe{} provides the following syntax to facilitate this
+
+\begin{BDef}
+\DefEm{filecontents}{file-name} \\
+\qquad \meta{file-contents} \\
+\LEND{filecontents}
+\end{BDef}
+
+When your document file is run through \LaTeXe{} the body of each
+\Lenv{filecontents} environment is written verbatim to a file
+whose name is given as the argument \Larg{file-name}.
+If a file with such a name already exists
+in any of the directories \lq\lq\nobreak{}visible\rq\rq\nobreak{} to \TeX{} only an
+informative message is given, the body of the environment is
+by-passed, and the file is not replaced.
+
+\subsection*{Preamble commands}
+
+The next commands in the preamble are specifically designed to differentiate
+\LaTeXe{} documents from those needing \LaTeXo{}.
+
+\BDefComo{documentclass}{option-list}{class-name}{release-date}
+
+This command or \lq\lq\nobreak{}declaration\rq\rq\nobreak{} replaces the
+\LaTeXo{} command \Lcs{documentstyle}.
+
+There must be exactly one \Lcs{documentclass} declaration in a document,
+and it must come first (except for the \lq\lq\nobreak{}initial\rq\rq\nobreak{} commands described
+above).
+
+
+\noindent
+\Larg{option-list}: list of options that each can
+modify the formatting of
+document elements defined in the \Larg{class-name} file
+or in packages loaded with \Lcs{usepackage} declarations,
+as described below.
+
+\noindent
+\Larg{class-name}: name of the class file (file extension \Lfn{cls}).
+
+\noindent
+\Larg{release-date} (optional) specifies release date of the
+class file, using the format \Lit{YYYY/MM/DD}.
+If a version of the class older than this date is found,
+a warning is issued.
+
+\BDefComo{documentstyle}{option-list}{style-name}{release-date}
+
+This command, which is supported for compatibility reasons, is
+similar to \Lcs{documentclass}, but it loads a
+\lq\lq\nobreak{}compatibility mode\rq\rq\nobreak{} which redefines certain commands to
+act as they did in \LaTeXo{} and thus allows you to run your old files
+unchanged through \LaTeXe. Note, however, that in this mode, you
+\emph{cannot} use any of the
+\LaTeXe{} extensions described in this article.
+
+You can define new or change existing document elements
+by loading package files with \Lcs{usepackage}, whose syntax is:
+
+\BDefComo{usepackage}{option-list}{package-name}{release-date}
+
+\noindent
+\Larg{package-name}: name of the package (file extension \Lfn{sty});
+a package can
+\begin{Itemize}
+ \item define new document elements;
+ \item modify elements defined in the class file;
+ \item extend the range of documents that can be processed.
+\end{Itemize}
+
+\noindent
+\Larg{option-list}: list of options, each of which can modify
+the formatting of elements defined in the package.
+
+\noindent
+\Larg{release-date}: (optional) earliest desired release date
+of package file (see \Lcs{documentclass} command above).
+
+Any number of\ \Lcs{usepackage} are allowed, but \LaTeXe{} makes sure
+that each package is only loaded once.
+On top of processing the list of options specified in the
+argument \Larg{option-list} on its \Lcs{usepackage} command,
+each package also processes the option \Larg{option-list} on
+the \Lcs{documentclass} command.
+
+\BDefC{listfiles}
+
+To help you get an overview of the files
+read in by your document during processing, you can place a
+\Lcs{listfiles} command in the preamble of your document.
+This will display the list of all files used at the end of the run.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{Example of document preambles}
+
+The following preamble references the \Lclass{article} class
+with the (global) options \Loption{twocolumn}
+and \Loption{a4paper}, and loads the \Lpack{multicol} and \Lpack{babel}
+packages,
+the latter with the \Loption{german} and \Loption{french} options.
+Other document parameters (\eg the \Lit{textheight}) can also be
+specified.
+
+\begin{verbatim}
+ \documentclass[twocolumn,a4paper]{article}
+ \usepackage{multicol}
+ \usepackage[german,french]{babel}
+ \addtolength{\textheight}{2cm}
+ \begin{document}
+ ...
+ \end{document}
+\end{verbatim}
+
+The following shows three equivalent ways of specifying
+the loading of packages.
+
+\begin{verbatim}
+ \documentclass[german]{book}
+ \usepackage[german]{babel}
+ \usepackage[german]{varioref}
+ \usepackage{multicol}
+ \usepackage{epic}
+\end{verbatim}
+
+Somewhat less verbose is:
+
+\begin{verbatim}
+ \documentclass[german]{book}
+ \usepackage[german]{babel,varioref}
+ \usepackage{multicol,epic}
+\end{verbatim}
+
+With \Loption{german} as global option you can write:
+
+\begin{verbatim}
+ \documentclass[a4paper,german]{book}
+ \usepackage{babel,varioref,multicol,epic}
+\end{verbatim}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+A complex document might look something like the following:
+
+\begin{verbatim}
+\NeedsTeXFormat{LaTeX2e}[1994/05/01]
+\begin{filecontents}{varioref.sty}
+ .... % Code for varioref package
+\end{filecontents}
+\listfiles % print list of files referenced
+\documentclass[a4paper,german]{book} % book class
+\usepackage{varioref}
+\begin{document}
+%--------------------- front matter of document
+\maketitle
+\section*{...} % e.g. section named "Preface"
+\tableofcontents % chapter with table of contents
+\listoffigures % chapter with list of figures
+\listoftables % chapter with list of tables
+%--------------------- body of the document
+\part{...}
+\chapter{...}
+ \section{...}
+\chapter{...}
+\part{...}
+%--------------------- back matter of document
+\appendix
+\chapter{...} % chapters labelled appendix
+\chapter{...}
+\begin{thebibliography}
+ ... % bibliography entries
+\end{thebibliography}
+\begin{theindex}
+ ... % index entries
+\end{theindex}
+\end{document}
+\end{verbatim}
+
+Note that, to ensure that the recipient of the document can process
+the file correctly, the code of the \Lpack{varioref}
+package is shipped with the file inside a \Lenv{filecontents}
+environment.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Option processing}
+
+Options that are specified in the \Larg{option-list} argument
+of the \Lcs{documentclass} or \Lcs{usepackage} commands are
+handled as follows:
+
+\begin{Enumerate}
+\item They are first divided into two types, \emph{local} and \emph{global}:
+ \begin{Itemize}
+ \item for a \emph{class}, the options from its \Lcs{documentclass} command are
+ local and there are no global options;
+ \item for a \emph{package}, the options from its \Lcs{usepackage} command are
+ local but the options from the \Lcs{documentclass} command are global.
+ \end{Itemize}
+\item The local and global options that have been declared within the current
+ class or package are processed first, normally
+ in their order of declarations, thus
+ their order in \Larg{option-list} is irrelevant.
+\item Any local options not declared in the current class or
+ package are then processed. For document classes, this usually
+ means that they are ignored, except for this fact being recorded by
+ adding the option to a list of \lq\lq\nobreak{}unused options\rq\rq\nobreak{}; they may, of
+ course, be used later since they become global options for every
+ package subsequently loaded. For packages, usually
+ an error message is produced, giving the choice of retyping the
+ option name in case it is incorrect.
+\end{Enumerate}
+
+Finally, when the \LBEG{document} command is reached \LaTeXe{}
+will produce a list of all global
+options not used by the class or any package file, and issue
+a warning message for each.
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Defining new commands and environments}
+
+This section and the following describe commands and environments
+that are used inside the document body
+(\ie after the \LBEG{document}) command.
+Let us first look at what is available for defining new
+commands and environments.
+
+\subsection*{Defining commands}
+
+Commands are defined or redefined in \LaTeX{} with:
+
+\begin{BDef}
+\Lcs{newcommand}\Largb{\bs{}mycom}\Largs{narg}\Largs{default}\texttt{\%}\\
+\phantom{\Lcs{newcommand}}\Largb{command definition}\\[1mm]
+\Lcs{renewcommand}\Largb{\bs{}mycom}\Largs{narg}\Largs{default}\texttt{\%}\\
+\phantom{\Lcs{renewcommand}}\Largb{command definition}\\[1mm]
+\Lcs{providecommand}\Largb{\bs{}mycom}\Largs{narg}\Largs{default}\texttt{\%}\\
+\phantom{\Lcs{providecommand}}\Largb{command definition}
+\end{BDef}
+
+The first and second commands show enhancements with respect to
+\LaTeXo{} by providing
+the possibility to have an \emph{optional} argument
+when (re)defining a user command.
+If there is a second optional parameter to \Lcs{newcommand}, etc.,
+then the command being defined has an optional parameter,
+with \Larg{default} value if not specified
+The last form is useful for general purpose files that are included in a
+document and over which the user does not always have control
+(\eg \BibTeX{} databases).
+If \Lcs{mycom} is not yet defined, the \Lcs{providecommand} will act
+as \Lcs{newcommand} and define it, otherwise the existing definition
+is kept.
+
+The number of arguments, which \emph{includes} the optional argument,
+is in the range \Lit{0\(\le\)\Larg{narg}\(\le\)9}.
+If the command has no arguments, then
+the \Lit{[0]} can be omitted.
+Inside the \textit{command definition} part, the
+arguments are referenced as \Lit{#1} to \Lit{#\Larg{narg}},
+the optional argument, if present, being the first one.
+
+For example, compare the following commands, with no,
+one mandatory, one optional, and one optional and one mandatory argument,
+allowing the user more freedom in each case.
+\begin{verbatim}
+\newcommand{\seq}{x_{0},\ldots\,x_{n}}
+\newcommand{\seqm}[1]{#1_{0},\ldots\,#1_{n}}
+\newcommand{\seqo}[1][k]{x_{0},\ldots\,x_{#1}}
+\newcommand{\seqom}[2][k]{#2_{0},\ldots\,#2_{#1}}
+$$\seq\quad\seqm{z}$$
+$$\seqo\quad\seqo[l]$$
+$$\seqom{y}\quad\seqom[i]{q}$$
+\end{verbatim}
+This gives:
+\newcommand{\seq}{x_{0},\ldots\,x_{n}}
+\newcommand{\seqm}[1]{#1_{0},\ldots\,#1_{n}}
+\newcommand{\seqo}[1][k]{x_{0},\ldots\,x_{#1}}
+\newcommand{\seqom}[2][k]{#2_{0},\ldots\,#2_{#1}}
+$$\seq\quad\seqm{z}$$
+$$\seqo\quad\seqo[l]$$
+$$\seqom{y}\quad\seqom[i]{q}$$
+
+If a command should work both in math and in
+text mode, special care should be taken in its definition.
+In \LaTeXe{} you have the following command:
+
+\BDefCm{ensuremath}{math code}
+
+As its name implies \Lmcs{ensuremath} ensures that its argument is
+always typeset in math mode by surrounding it if necessary with
+\Lit{$} signs.
+For instance, the above can be rewritten as:
+\begin{verbatim}
+\renewcommand{\seq}{\ensuremath{x_{0},\ldots\,x_{n}}}
+\renewcommand{\seqm}[1]{%
+ \ensuremath{#1_{0},\ldots\,#1_{n}}}
+\seq,\quad\seqm{z} or $\seq,\quad\seqm{z}$
+\end{verbatim}
+\renewcommand{\seq}{\ensuremath{x_{0},\ldots\,x_{n}}}
+\renewcommand{\seqm}[1]{\ensuremath{#1_{0},\ldots\,#1_{n}}}
+\seq,\quad\seqm{z} or $\seq,\quad\seqm{z}$
+
+\subsection*{Defining New Environments}
+
+In \LaTeXo{}, environments are defined or redefined with the commands:
+
+\begin{BDef}
+\DefCmomm{newenvironment}{name}{narg}{begdef}{enddef} \\
+\DefCmomm{renewenvironment}{name}{narg}{begdef}{enddef}
+\end{BDef}
+
+The number of arguments is in the range
+\Lit{0\(\le\)\Larg{narg}\(\le\)9}; and, in
+the case of no parameters, you can omit \Lit{[0]}.
+Inside the definition part, \Larg{begdef}, these
+parameters are referenced as \Lit{#1} to \Lit{#\Larg{narg}}.
+If arguments are present, then
+they are defined when \emph{entering} the environment
+by specifying them on the command \verb=\begin{myenv}= as
+shown below.
+
+\begin{BDef}
+\LBEG{myenv}\lcb\Larg{arg\(_1\)}\rcb\Lit{...}\lcb\Larg{arg\(_{\mathrm{k}}\)}\rcb
+\end{BDef}
+
+When \emph{exiting} an environment with the command \verb=\end{myenv}=
+no parameters can be specified.
+Moreover, the parameters specified with the
+\verb=\begin{myenv}= command when entering the environment (see above)
+are no longer available in the definition part
+\Larg{enddef} where you define the actions which should
+take place when leaving the \Larg{myenv} environment.
+
+As with commands, in \LaTeXe{} you can now also define environments
+with an optional (first) argument.
+
+\begin{BDef}
+\Lcs{newenvironment}\Largb{myenv}\Largs{narg}\Largs{default}\texttt{\%}\\
+\phantom{\Lcs{newenvironment}}\Largb{begdef}\Largb{enddef}
+\end{BDef}
+
+The default for the optional argument is given between the second
+pair of square brackets \Largs{default}.
+Inside the \Larg{begdef} part, which is executed when
+the environment \Larg{myenv} is entered, the optional argument
+can be accessed with \Lit{#1},
+while the mandatory arguments (when present) are addressed
+as \Lit{#2} to \Lit{#\Larg{narg}}.
+When the \Larg{myenv} environment is used without an
+optional parameter, \Lit{#1} will contain the string specified
+as \Largs{default}.
+
+As an example, a variant,
+\Lmenv{deflist}, of a \Lenv{description} environment
+will be constructed.
+The \Lmenv{deflist} environment behaves somewhat like a
+standard \LaTeX{} \Lenv{description} environment
+if it is used without an optional argument.
+If an optional argument is specified, then the width of the
+description label will be put equal to the width of the argument.
+Thus, by specifying the widest entry in the list as
+an optional argument, you ensure
+that the description parts of all entries line up nicely.
+
+The result below first shows the (default) behaviour of the
+\Lenv{deflist}
+list and then what it looks like when using the optional argument.
+
+\begin{verbatim}
+\newenvironment{deflist}[1][\quad]%
+ {\begin{list}{}{
+ \renewcommand{\makelabel}[1]{\textbf{##1}\hfil}%
+ \settowidth{\labelwidth}{\textbf{#1}}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}}}
+ {\end{list}}
+\begin{deflist}
+\item[First] This is a short term.
+\item[Long term] This is a long term.
+\item[Even longer term] A very long term.
+\end{deflist}
+\begin{deflist}[Even longer term]
+ .....
+\end{deflist}
+\end{verbatim}
+
+\newenvironment{deflist}[1][\quad]%
+ {\begin{list}{}{%
+ \renewcommand{\makelabel}[1]{\emph{##1}\hfil}%
+ \settowidth{\labelwidth}{\emph{#1}}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}}}
+ {\end{list}}
+\begin{deflist}
+\item[First] This is a short term.
+\item[Long term] This is a long term.
+\item[Even longer term] A very long term.
+\end{deflist}
+\begin{deflist}[Even longer term]
+\item[First] This is a short term.
+\item[Long term] This is a long term.
+\item[Even longer term] A very long term.
+\end{deflist}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Playing with lengths}
+
+
+Lengths can be defined, set and changed by the following commands.
+
+\begin{BDef}
+\DefCm{newlength}{cmd} & \qquad \DefCmm{setlength}{cmd}{len}\\
+\DefCmm{addtolength}{cmd}{len}\\
+\DefCmm{settowidth}{cmd}{text} & \qquad\Lcs{width}\\
+\DefCmm{settoheight}{cmd}{text}& \qquad\Lcs{height}\\
+\DefCmm{settodepth}{cmd}{text} & \qquad\Lcs{depth} \\
+ & \qquad\Lcs{totalheight}
+\end{BDef}
+
+The new \Lcs{settoheight} and \Lcs{settodepth} commands,
+in analogy with the \Lcs{settowidth} command, already
+present in \LaTeXo{}, allow one to \lq\lq\nobreak{}measure\rq\rq\nobreak{} the height and
+depth of some \TeX{} material.
+The lengths \Lcs{width}, \Lcs{height}, \Lcs{depth}, and
+\Lcs{totalheight} are also new in \LaTeXe{}, and can be used
+inside the box commands described in the next section.
+
+For ease of reference an overview of \TeX{}\rq\nobreak{}s units of length is
+given below.
+
+\begin{center}
+\small
+\def\pip{\vrule height 4 true pt }
+\begin{tabbing}
+\Lit{dd}\ \= xxx \kill% \hspace{.68\linewidth} \= xxx \kill
+\Lit{sp} \> scaled point (65536~sp = 1~pt) \TeX\rq\nobreak{}s smallest unit. \\
+\Lit{pt} \> point = \(\frac{1}{72.27}\)~in = 0.351~mm
+ \` \hbox to 1 pt{\pip\hrulefill\pip} \\
+\Lit{bp} \> big point (72~bp = 1~in), also PostScript point
+ \` \hbox to 1 bp{\pip\hrulefill\pip} \\
+\Lit{dd} \> Did\^ot point \( = \frac{1}{72}\) of a French inch,
+ \(= 0.376\)~mm
+ \` \hbox to 1 dd{\pip\hrulefill\pip} \\
+%
+\Lit{mm} \> millimeter = 2.845~pt
+ \` \hbox to 1 mm {\pip\hrulefill\pip} \\
+%
+\Lit{pc} \> pica = 12~pt = 4.218~mm
+ \` \hbox to 1 pc{\pip\hrulefill\pip} \\
+%
+\Lit{cc} \> cicero = 12~dd = 4.531~mm
+ \` \hbox to 1 cc{\pip\hrulefill\pip} \\
+%
+\Lit{cm} \> centimeter = 10~mm =2.371~pc
+ \` \hbox to 1 cm{\pip\hrulefill\pip} \\
+%
+\Lit{in} \> inch = 25.4~mm = 72.27~pt = 6.022~pc
+ \` \hbox to 1 in{\pip\hrulefill\pip} \\
+%
+\Lit{ex} \> height of a small \lq\lq\nobreak{}x\rq\rq\nobreak{} for the current font
+ \` \hbox to 1 ex{\pip\hrulefill\pip} \\
+%
+\Lit{em} \> width of capital \lq\lq\nobreak{}M\rq\rq\nobreak{} in current font
+ \` \hbox to 1 em{\pip\hrulefill\pip} \\
+%
+\Lit{mu} \> math mode unit (18~mu = 1~em)
+ \` \hbox to .12em{\pip\hrulefill\pip} \\
+%
+\end{tabbing}
+\end{center}
+
+The following lines show how length commands are created,
+defined, changed, and used.
+They work, most of the time, both for rigid and rubber lengths.
+
+\begin{verbatim}
+\newlength{\Mylen} Mylen = \the\Mylen
+\end{verbatim}
+
+\newlength{\Mylen} Mylen = \the\Mylen
+
+\begin{verbatim}
+\setlength{\Mylen}{10mm} Mylen = \the\Mylen
+\setlength{\Mylen}{5mm plus 1mm minus .5mm}
+\par Mylen = \the\Mylen % Use a rubber length
+\end{verbatim}
+
+\setlength{\Mylen}{10mm} Mylen = \the\Mylen
+\setlength{\Mylen}{5mm plus 1mm minus .5mm}
+\par Mylen = \the\Mylen % Use a rubber length
+\begin{verbatim}
+\setlength{\Mylen}{1em} One em is \the\Mylen;
+\addtolength{\Mylen}{1pc} add one pica \the\Mylen.
+\end{verbatim}
+
+\setlength{\Mylen}{1em} One em is \the\Mylen;
+\addtolength{\Mylen}{1pc} add one pica \the\Mylen.
+
+\begin{verbatim}
+\settowidth{\Mylen}{May} The width is \the\Mylen
+\settowidth{\Mylen}{\Large May} and now \the\Mylen.
+
+\settoheight{\Mylen}{May} The height is \the\Mylen
+\settoheight{\Mylen}{\Large May} and now \the\Mylen.
+
+\settodepth{\Mylen}{May} The depth is \the\Mylen
+\settodepth{\Mylen}{\Large May} and now \the\Mylen.
+\end{verbatim}
+
+\settowidth{\Mylen}{May} The width is \the\Mylen
+\settowidth{\Mylen}{\Large May} and now \the\Mylen.
+
+\settoheight{\Mylen}{May} The height is \the\Mylen
+\settoheight{\Mylen}{\Large May} and now \the\Mylen.
+
+\settodepth{\Mylen}{May} The depth is \the\Mylen
+\settodepth{\Mylen}{\Large May} and now \the\Mylen.
+
+
+\lq\lq\nobreak{}Rubber\rq\rq\nobreak{} (variable) lengths are very useful for placing information
+on the page.
+
+\begin{BDef}
+ \Lmskip{fill}
+\end{BDef}
+
+This is a rubber length with a natural length of zero.
+It can stretch to any positive value and its value should not be changed!
+
+\BDefCm{stretch}{dec\_num}
+
+This is a more useful rubber length, since
+\Lmskip{fill} is equivalent to \Lit{\Lmcs{stretch}\lcb1\rcb}.
+More generally, \Lit{\Lmcs{stretch}\lcb\Larg{dec\_num}\rcb}
+has a stretchability of \Larg{dec\_num} times \Lmskip{fill}.
+It can be used to fine-tune the positioning of text horizontally or vertically.
+
+Examples of the use of these stretchable lengths for controlling
+the horizontal and vertical page layout are given below.
+
+\begin{verbatim}
+\newcommand{\HS}[1][1.]{\hspace{\stretch{#1}}}
+\begin{center}
+left \hfill right\\
+left \HS[.5]\fbox{$\frac{1}{3}$}\hfill right\\
+left \HS middle \hfill right\\
+left \hrulefill\ middle \hrulefill\ right\\
+left \dotfill\ right\\
+left \dotfill\ \HS[.5] \dotfill\ right\\
+left \dotfill\ \HS \dotfill\ right\\
+left \dotfill\ \HS[2.] \dotfill\ right
+\end{center}
+\end{verbatim}
+\newcommand{\HS}[1][1.]{\hspace{\stretch{#1}}}
+\begin{center}
+left \hfill right\\
+left \HS[.5]\fbox{$\frac{1}{3}$}\hfill right\\
+left \HS middle \hfill right\\
+left \hrulefill\ middle \hrulefill\ right\\
+left \dotfill\ right\\
+left \dotfill\ \HS[.5] \dotfill\ right\\
+left \dotfill\ \HS \dotfill\ right\\
+left \dotfill\ \HS[2.] \dotfill\ right
+\end{center}
+
+\begin{verbatim}
+\documentclass{article}
+\usepackage{times}
+\thispagestyle{empty}
+\newcommand{\HRule}{\rule{\linewidth}{1mm}}
+\setlength{\parindent}{0mm}
+\setlength{\parskip}{0mm}
+\begin{document}
+ \vspace*{\stretch{1}}
+ \HRule
+ \begin{flushright}
+ \Huge Geoffrey Chaucer\\[5mm]
+ The Canterbury Tales
+ \end{flushright}
+ \HRule
+ \vspace*{\stretch{2}}
+ \begin{center}
+ \Large\textsc{London 1400}
+ \end{center}
+\end{document}
+\end{verbatim}
+
+\begin{center}
+\fbox{\epsfig{bbllx=90pt,bblly=160pt,bburx=520pt,bbury=720pt,%
+ file=vspaceex.eps,height=9cm}}
+\end{center}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{Page Markup---Several Kinds of Boxes}
+
+Boxes are at the very heart of \TeX{}\rq\nobreak{}s basic typesetting paradigm,
+and \LaTeX{} provides several commands which make it easy to make
+use of this functionality.
+
+\begin{BDef}
+\DefCm{mbox}{text}\hspace*{1em}\DefCoom{makebox}{width}{pos}{text} \\
+
+\DefCm{fbox}{text}\hspace*{1em}\DefCoom{framebox}{width}{pos}{text} \\
+\end{BDef}
+
+In addition to centreing the text with positional argument \Lit{[c]}
+(the default), you can position the text flush left (\Lit{[l]}) or
+flush right (\Lit{[r]}). \LaTeXe{} also offers you an \Lit{[s]}
+specifier that will stretch your \Larg{text} from the left margin to
+the right margin of the box provided it contains some stretchable
+space.
+As already mentioned in the previous section,
+\LaTeXe{} also allows you to make use of four special length
+parameters inside the
+\Larg{width} argument of the box commands:
+\Lmdim{width}, \Lmdim{height}, \Lmdim{depth}, and
+\Lmdim{totalheight}.
+These parameters specify the natural size of the \Larg{text},
+where \Lmdim{totalheight} is the sum of \Lmdim{height} and \Lmdim{depth}.
+
+The examples below show how these various parameters are used
+to control the layout in the box. Note that use is also
+made of the \Lpack{calc} package, which allows arithmetic operations
+in the arguments of the commands.
+
+\begin{verbatim}
+\framebox{A few words of advice} \par
+\framebox[\width + 6mm][s]{A few words of advice}
+\par \framebox[1.5\width]{A few words of advice}
+\end{verbatim}
+
+\framebox{A few words of advice} \par
+\framebox[\width + 6mm][s]{A few words of advice}
+\par \framebox[1.5\width]{A few words of advice}
+
+
+\BDefComm{rule}{lift}{width}{total\_height}
+
+Rules come in handy for controlling the height of a box.
+Together with the new \LaTeX{} commands for measuring the
+height and depth of your boxes, they allow you to
+perform micro-typographic adjustments for tuning the
+visual presentation of your document elements.
+
+\begin{verbatim}
+\newsavebox{\Maybox}\savebox{\Maybox}{\Large May}
+\newlength{\Mdp}\settodepth{\Mdp}{\usebox{\Maybox}}
+\newlength{\Mht}\settoheight{\Mht}{\usebox{\Maybox}}
+\addtolength{\Mht}{\Mdp}
+
+\framebox[1.6\width+1em][s]{\usebox{\Maybox}}
+\quad
+\framebox[1.6\width+1em][s]{\usebox{\Maybox}%
+ \rule[-2\Mdp]{0mm}{2\Mht}}
+\end{verbatim}
+
+\newsavebox{\Maybox}\savebox{\Maybox}{\Large May}
+\newlength{\Mdp}\settodepth{\Mdp}{\usebox{\Maybox}}
+\newlength{\Mht}\settoheight{\Mht}{\usebox{\Maybox}}
+\addtolength{\Mht}{\Mdp}
+
+\framebox[1.6\width+1em][s]{\usebox{\Maybox}}
+\quad
+\framebox[1.6\width+1em][s]{\usebox{\Maybox}%
+ \rule[-2\Mdp]{0mm}{2\Mht}}
+
+Zero-width boxes are also useful in other circumstances.
+
+\begin{verbatim}
+\begin{center}
+A centred sentence.\makebox[0cm][l]{$^{123}$}\\
+Some more text in the middle. \\
+\makebox[0cm][r]{$^{321}$}A centred sentence.\\
+\end{center}
+\noindent\makebox[0cm][r]{\(\Leftrightarrow\)}%
+As seen in the margin of the current line, boxes
+with a vanishing width can stick out in the margin.
+\end{verbatim}
+
+\begin{center}
+A centred sentence.\makebox[0cm][l]{$^{123}$}\\
+Some more text in the middle. \\
+\makebox[0cm][r]{$^{321}$}A centred sentence.\\
+\end{center}
+\noindent\makebox[0cm][r]{\(\Leftrightarrow\)}%
+As seen in the margin of the current line, boxes
+with a vanishing width can stick out in the margin.
+
+\subsection*{Moving boxes}
+
+Boxes can be moved up or down by the command:
+
+\BDefCmoom{raisebox}{lift}{depth}{height}{contents}
+
+The simple example below shows its principle of use.
+
+\begin{verbatim}
+\begin{flushleft}
+x111x \raisebox{-1ex}{downward} x222x \\
+x333x \raisebox{1ex}{upward} x444x \\[1em]
+x111x \raisebox{-1ex}[0cm][0cm]{downward} x222x\\
+x333x \raisebox{1ex}[0cm]{upward} x444x
+\end{flushleft}
+\end{verbatim}
+
+\begin{flushleft}
+x111x \raisebox{-1ex}{downward} x222x \\
+x333x \raisebox{1ex}{upward} x444x \\[1em]
+x111x \raisebox{-1ex}[0cm][0cm]{downward} x222x\\
+x333x \raisebox{1ex}[0cm]{upward} x444x
+\end{flushleft}
+
+A more useful example is the generation of text \lq\lq\nobreak{}between\rq\rq\nobreak{}
+two rows in a table (by \lq\lq\nobreak{}hiding\rq\rq\nobreak{} the boxes\rq\nobreak{} content from
+\TeX{}.)
+
+\begin{verbatim}
+\begin{center}
+\begin{tabular}{|c|c|c|} \hline
+ & \multicolumn{2}{c|}{title}\\\cline{2-3}
+\raisebox{1.5ex}[0cm][0cm]{100}
+ & A & B \\\hline
+20000000 & 10 & 10 \\\hline
+\end{tabular}
+\end{center}
+\end{verbatim}
+
+\begin{center}
+\begin{tabular}{|c|c|c|} \hline
+ & \multicolumn{2}{c|}{title}\\\cline{2-3}
+\raisebox{1.5ex}[0cm][0cm]{100}
+ & A & B \\\hline
+20000000 & 10 & 10 \\\hline
+\end{tabular}
+\end{center}
+
+Finally, when your printer driver allows it, you can
+rotate boxes.
+In this case the use of the various
+box dimension parameters becomes apparent.
+
+\begin{verbatim}
+\newcommand{\DoT}[1]{\begin{turn}{45}#1\end{turn}}
+x1 \DoT{\fbox{Not so Good.}} x2
+\DoT{\raisebox{\depth}{\fbox{I like it.}}} x3
+\DoT{\raisebox{-\height}{\fbox{Bad Choice.}}} x4
+\end{verbatim}
+
+\bigskip
+
+\newcommand{\DoT}[1]{\begin{turn}{45}#1\end{turn}}
+x1 \DoT{\fbox{Not so Good.}} x2
+\DoT{\raisebox{\depth}{\fbox{I like it.}}} x3
+\DoT{\raisebox{-\height}{\fbox{Bad Choice.}}} x4
+
+\subsection*{Placing parboxes and minipages}
+
+In \LaTeXo{}, boxes which can contain more than one paragraph are defined
+as follows.
+
+\begin{BDef}
+\DefComm{parbox}{pos}{width}{text} \\[1mm]
+\DefEom{minipage}{pos}{width} \\
+\qquad\Larg{text} \\
+\LmEND{minipage}
+\end{BDef}
+
+A simple example of its use is the following
+
+\begin{verbatim}
+\parbox{.3\linewidth}{This is the
+ contents of the left-most parbox.}
+\hfill Centerline \hfill
+\parbox{.3\linewidth}{This is the right-most parbox.
+ Note that the typeset text looks sloppy because
+ \LaTeX{} cannot nicely balance the material
+ in these narrow columns.}
+\end{verbatim}
+
+\parbox{.3\linewidth}{This is the
+ contents of the left-most parbox.}
+\hfill Centerline \hfill
+\parbox{.3\linewidth}{This is the
+ right-most parbox.
+ Note that the typeset
+ text looks sloppy because \LaTeX{}
+ cannot nicely balance the material
+ in these narrow columns.}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{Generalized parboxes and minipages}
+
+Sometimes it is helpful to predefine the vertical dimension of a
+paragraph box. For this \LaTeXe{} has additional optional
+arguments for \Lmenv{minipage} and \Lmcs{parbox}.
+
+\begin{BDef}
+\DefCooom{parbox}{pos}{height}{inner-pos}{width}\Largb{text} \\
+\DefEooom{minipage}{pos}{height}{inner-pos}{width}\\
+\qquad\Larg{text}\\
+\LmEND{minipage}
+\end{BDef}
+
+The \Larg{inner-pos} determines the position of \Larg{text} within
+the box. It can be \Lit{t}, \Lit{c}, \Lit{b}, or \Lit{s}. If not
+specified, the value of \Larg{pos} will be used. You can think of
+\Larg{height} and \Larg{inner-pos} as the vertical equivalent of the
+\Larg{width} and \Larg{pos} arguments of a \Lcs{makebox}.
+If you use the \Lit{s} position
+the \Larg{text} will be vertically stretched to fill the given
+\Larg{height}.
+Thus, in this case you are responsible for providing vertically
+stretchable space if necessary using, for example, \Lcs{vspace}
+or \Lcs{vfill} commands.
+
+As with the other box commands you can use \Ldim{height},
+\Ldim{totalheight}, and so on to refer to the natural dimensions of the
+box when specifying the optional argument.
+
+\begin{verbatim}
+xx \fbox{\parbox[b][1.5\height][s]
+ {30mm}{Some text on top. \par\vfill
+ In the middle. \par\vfill
+ And a few lines on the
+ bottom of the box.}}
+ \fbox{\parbox[b][\height+\baselineskip][s]
+ {30mm}{This time a few lines on the
+ top of the box. But only one
+ line \par\vfill down here.}} xx
+\end{verbatim}
+
+xx \fbox{\parbox[b][1.5\height][s]
+ {30mm}{Some text on top. \par\vfill
+ In the middle. \par\vfill
+ And a few lines on the
+ bottom of the box.}}
+ \fbox{\parbox[b][\height+\baselineskip][s]
+ {30mm}{This time a few lines on the
+ top of the box. But only one
+ line \par\vfill down here.}} xx
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{Manipulating Boxed Material}
+
+Material can be typeset once and then stored inside a named box, so that its
+contents can be retrieved later.
+\LaTeX{} offers the following commands for dealing with this situation.
+
+\begin{BDef}
+\DefCm{newsavebox}{cmd} & \quad declare box \\
+\DefCmm{sbox}{cmd}{text} & \quad fill box \\
+\DefCmoom{savebox}{cmd}{width}{pos}{text}& \quad fill box \\
+\DefCm{usebox}{cmd} & \quad use contents\\[1mm]
+\DefEm{lrbox}{cmd} & \quad fill box \\
+\qquad\Larg{text} \\
+\LmEND{lrbox}
+\end{BDef}
+
+Note that the environment \Lenv{lrbox} is an addition in \LaTeXe{}.
+\Larg{cmd} should be a box register previously allocated with
+\Lmcs{newsavebox}.
+The environment \Lmenv{lrbox} will save \Larg{text} in
+this box for later use with \Lmcs{usebox}. Leading and trailing spaces
+are ignored. Thus, \Lmenv{lrbox} is basically the environment form of
+\Lmcs{sbox}. You can make good use of this environment if you want to
+save the body of some environment in a box for further processing. For
+example, the following code defines the environment
+\Lmenv{fminipage}
+that works like a \Lenv{minipage} but surrounds its body with a frame.
+Note the use of the optional argument for controlling the width
+of the boxed minipage, and the fact that
+verbatim material can be used inside.
+To be able to do the arithmetic operations
+you will also need to have the \Lpack{calc} package loaded.
+
+\begin{verbatim}
+\newsavebox{\fminibox}
+\newlength{\fminilength}
+\newenvironment{fminipage}
+ [1][\linewidth]% default width is \linewidth
+ {\setlength{\fminilength}%
+ {#1-2\fboxsep-2\fboxrule}%
+ \begin{lrbox}{\fminibox}%
+ \begin{minipage}{\fminilength}}
+ {\end{minipage}\end{lrbox}%
+ \noindent\fbox{\usebox{\fminibox}}}
+\end{verbatim}
+
+\newsavebox{\fminibox}
+\newlength{\fminilength}
+\newenvironment{fminipage}
+ [1][\linewidth]% default width is \linewidth
+ {\setlength{\fminilength}%
+ {#1-2\fboxsep-2\fboxrule}%
+ \begin{lrbox}{\fminibox}%
+ \begin{minipage}{\fminilength}}
+ {\end{minipage}\end{lrbox}%
+ \noindent\fbox{\usebox{\fminibox}}}
+
+\begin{verbatim}
+\begin{fminipage}
+ In this environment verbatim text like
+ \verb=\fminibox= can be used.
+\end{fminipage}
+\end{verbatim}
+
+\begin{fminipage}
+ In this environment verbatim text like
+ \verb=\fminibox= can be used.
+\end{fminipage}
+
+\begin{verbatim}
+\begin{fminipage}[.5\linewidth]
+ ....
+\end{fminipage}
+\end{verbatim}
+
+\begin{fminipage}[.5\linewidth]
+ In this environment verbatim text like
+ \verb=\fminibox= can be used.
+\end{fminipage}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\subsection*{For hackers only: a list with two optional parameters}
+
+What if we want to define a command or environment
+with, \eg \emph{two} optional arguments?
+Suppose we want a list where we are able to specify not only
+the width of the label, but also whether the list should be \lq\lq\nobreak{}dense\rq\rq\nobreak{}
+or not, \ie we want a syntax like:
+
+\begin{verbatim}
+\begin{Description}[<margin>][<style>]
+\end{verbatim}
+
+In this case we use a trick
+(and the packages \Lmpack{calc} and \Lmpack{ifthen})
+and introduce a multiple-step definition.
+The example also shows how one can parameterize the various
+typographic parameters for the
+list so that they can be controlled more easily
+(\eg the alignment of the label, its font, and the width of the margin).
+
+\begin{verbatim}
+\newcommand{\Descriptionlabel}[1]{%
+ \mbox{\Descriptionfont #1}\hfil}
+
+\newcommand\Descriptionfont{\itshape}
+\newcommand\Descriptionmargin{}
+
+\newenvironment{Description}[1][\kern\leftmargin]
+ {\renewcommand\Descriptionmargin{#1}\xdescription}
+ {\endlist}
+
+\newcommand{\xdescription}[1][normal]{%
+ \list{}{\settowidth{\labelwidth}%
+ {\mbox{\Descriptionfont\Descriptionmargin}}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \let\makelabel\Descriptionlabel
+ \ifthenelse{\equal{#1}{compact}}%
+ {\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{.5\topsep}}{}%
+ }}
+\end{verbatim}
+
+\newcommand{\Descriptionlabel}[1]{%
+ \mbox{\Descriptionfont #1}\hfil}
+
+\newcommand\Descriptionfont{\itshape}
+\newcommand\Descriptionmargin{}
+
+\renewenvironment{Description}[1][\kern\leftmargin]
+ {\renewcommand\Descriptionmargin{#1}%
+ \xdescription
+ }
+ {\endlist}
+
+\newcommand{\xdescription}[1][normal]
+ {\list{}{\settowidth{\labelwidth}%
+ {\mbox{\Descriptionfont\Descriptionmargin}}%
+ \setlength{\itemindent}{0pt}%
+ \setlength{\leftmargin}{\labelwidth+\labelsep}%
+ \let\makelabel\Descriptionlabel
+ \ifthenelse{\equal{#1}{compact}}%
+ {\setlength{\itemsep}{0pt}%
+ \setlength{\topsep}{.5\topsep}}{\itemsep2mm}%
+ }}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{verbatim}
+Text before text before text before text before
+\begin{Description}
+ \item[First] This is the first item in the list.
+ \item[Veryyy long] This is a veryyy long item.
+ \item[] This is an empty item.
+\end{Description}
+
+\begin{Description}[Veryyy long]
+ ...
+\end{Description}
+
+\begin{Description}[Veryyy long][compact]
+ ...
+\end{Description}
+\end{verbatim}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Text before text before text before text before
+\begin{Description}
+\item[First] This is the first item in the list.
+\item[Veryyy long] This is a veryyy long item.
+\item[] This is an empty item.
+\end{Description}
+
+\begin{Description}[Veryyy long]
+\item[First] This is the first item in the list.
+\item[Veryyy long] This is a veryyy long item.
+\item[] This is an empty item.
+\end{Description}
+
+\begin{Description}[Veryyy long][compact]
+\item[First] This is the first item in the list.
+\item[Veryyy long] This is a veryyy long item.
+\item[] This is an empty item.
+\end{Description}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+
+\section{Font commands---an overview}
+
+This section covers the user commands in \LaTeXe{} for specifying
+fonts, both in text as in mathematics. We also mention some of the
+more popular fonts packages and say a few words on compatibility with
+\LaTeXo{}.
+
+The first question you can naturally ask yourself is why
+new font commands were introduced at all.
+To answer this question let us mention that \LaTeXo{}
+font commands had a few idiosyncrasies:
+\begin{itemize}
+\item their syntax, \ie \verb|{\it foo}| rather than \verb|\it{foo}|, which
+ is unlike the syntax of (most) other \LaTeX{} commands
+ (safe the size-changing series), which are specified with arguments;
+\item the font commands were not \emph{orthogonal}, \eg
+ \verb|\bf\sf| produces medium-weight sans, \ie only the inner
+ font command is honoured;
+\item some font substitutions were taking place \lq\lq\nobreak{}behind our backs\rq\rq\nobreak{},
+ \eg \verb|\tiny\tt| produces tiny roman, since it was assumed that
+ at such a small size the difference is hardly visible, so that
+ one can as well use a font already loaded;
+\item italic corrections must be introduced by hand, \eg
+ one has to write \verb|{\em my text\/}|, and even this is not
+ correct in all circumstances.
+\end{itemize}
+
+\LaTeXe{} addresses these problems by introducing
+the following new text font commands:
+\begin{itemize}
+\item[] \verb|\textmd{|\textmd{This is medium text}\verb|}|
+\item[] \verb|\textbf{|\textbf{This is bold text}\verb|}|
+\item[] \verb|\textup{|\textup{This is upright text\/}\verb|}|
+\item[] \verb|\textit{|\textit{This is italic text\/}\verb|}|
+\item[] \verb|\textsl{|\textsl{This is slanted text\/}\verb|}|
+\item[] \verb|\textsc{|{T\footnotesize HIS IS SMALL CAPS TEXT}\verb|}|
+\item[] \verb|\textrm{|\textrm{This is roman text}\verb|}|
+\item[] \verb|\textsf{|\textsf{This is sans text}\verb|}|
+\item[] \verb|\texttt{|\texttt{This is typewriter text}\verb|}|
+\end{itemize}
+Plus \verb|\emph{|\emph{This is emphasized text}\verb|}|.
+
+The size changing commands remain unchanged (\ie \Lcs{large},
+\Lcs{scriptsize}, \etc are still valid).
+
+These commands do not have the problems of the \LaTeXo{} commands,
+because:
+
+\begin{itemize}
+\item their syntax is the same as for the other \LaTeX{} commands;
+\item \verb|\textbf{\textsf{|\textbf{\textsf{text}}\verb|}}| produces bold
+ sans;
+\item \verb|{\tiny\texttt{|{\tiny\texttt{text}}\verb|}}| produces tiny
+ typewriter;
+\item \verb|\emph{|\emph{text}\verb|}| does \emph{not} need \verb|\/|.
+\end{itemize}
+Note that there are still some restrictions, for instance,
+\verb|\textbf{\texttt{|\texttt{text}\verb|}}| produces
+medium typewriter for lack of a bold Computer Modern typewriter font,
+but at least \LaTeXe{} warns you about the substitution.
+
+In the area of math fonts,
+\LaTeXe{} provides the following new commands:
+
+\begin{itemize}
+\item[] \verb|\mathnormal{|$\mathnormal{This~is~normal~math~italic}$\verb|}|
+\item[] \verb|\mathcal{|$\mathcal{MATH~CALLIGRAPHIC}$\verb|}|
+\item[] \verb|\mathrm{|$\mathrm{This~is~roman~in~math}$\verb|}|
+\item[] \verb|\mathbf{|$\mathbf{This~is~bold~in~math}$\verb|}|
+\item[] \verb|\mathsf{|$\mathsf{This~is~sans~in~math}$\verb|}|
+\item[] \verb|\mathit{|$\mathit{This~is~text~italic~in~math}$\verb|}|
+\item[] \verb|\mathtt{|$\mathtt{This~is~typewriter~in~math}$\verb|}|
+\end{itemize}
+
+Note that these commands do not work outside mathematics.
+
+It is now relatively easy (if you have the fonts) to
+replace Computer Modern with other font families.
+Various packages for popular fonts are already available, for example:
+\begin{itemize}
+\item In the area of PostScript fonts \verb|\usepackage{times}| provides Adobe Times,
+ \verb|\usepackage{palatino}| Adobe Palatino,
+ \verb|\usepackage{lucidbrb}| Y\&Y\rq\nobreak{}s LucidaBright and
+ LucidaNewMath, \etc;
+\item \verb|\usepackage{amssymb}| provides the AMS fonts;
+\item \verb|\usepackage{pandora}| allows you to use the Pandora fonts;
+\item \verb|\usepackage{euler}| lets you experiment with Hermann
+ Zapf\rq\nobreak{}s Euler font family.
+\end{itemize}
+
+\LaTeXo{}\rq\nobreak{}s old font commands (\Lcs{rm}, \Lcs{bf}, \etc) are still
+available in \LaTeXe{}, but they are \emph{not} part of the \lq\lq\nobreak{}kernel\rq\rq\nobreak{}.
+They are now defined in the document class files, where the definitions
+of the size changing commands, like \Lcs{huge}, \Lcs{tiny}, have
+always resided.
+It is thus up to the document designer to define
+how the old font commands behave.
+Note, however, that for the \lq\lq\nobreak{}standard classes\rq\rq\nobreak{}
+(\Lclass{article}, \Lclass{book}, \etc) the old
+font commands behave as they did in \LaTeXo{}.
+
+One more word about about \LaTeXo{} compatibility.
+A document beginning with \Lcs{documentstyle} is run in
+\emph{compatibility mode}, which emulates \LaTeX{} without NFSS.
+If you want to emulate \LaTeX{} with NFSS you should say:
+\begin{verbatim}
+ \documentstyle[newlfont]{...}
+\end{verbatim}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section[]{Standard Classes in \LaTeXe}
+
+This section discusses the files that come with the \LaTeXe{} distribution
+and lists some of the packages which are already adapted to \LaTeXe{}.
+
+Files associated to \LaTeXe{} are characterized by the extensions:
+\begin{flushleft}
+\textit{name}\texttt{.cls} for class files;\\
+\textit{name}\texttt{.clo} for external option files;\\
+\textit{name}\texttt{.sty} for package files\\
+\textit{name}\texttt{.cfg} for runtime configuration files
+\end{flushleft}
+
+The \lq\lq\nobreak{}standard\rq\rq\nobreak{} document classes distributed with \LaTeXe{} are
+\Lclass{article}, \Lclass{report}, \Lclass{book}, \Lclass{letter},
+\Lclass{slide}, \Lclass{proc}, and \Lclass{ltxdoc}.
+Below, we say a few words about each one of them.
+
+\noindent\Lclass{article}, \Lclass{report}, \Lclass{book}
+\begin{Itemize}
+\item[--] they behave like the old \LaTeXo{} styles;
+\item[--] \Loption{twocolumn} and \Loption{openbib} are now internal options;
+\item[--] a set of new internal options was added:
+ \Loption{a4paper}, \Loption{a5paper}, \Loption{b5paper},
+ \Loption{letterpaper}, \Loption{legalpaper},
+ \Loption{executivepaper}, \Loption{landscape}.
+\end{Itemize}
+\noindent \Lclass{letter}
+\begin{Itemize}
+\item[--] it behaves like the old style;
+\item[--] it has a set of new internal options:
+ \Loption{a4paper}, \Loption{a5paper}, \Loption{b5paper},
+ \Loption{letterpaper}, \Loption{legalpaper},
+ \Loption{executivepaper}.
+\end{Itemize}
+\noindent \Lclass{slide}
+\begin{Itemize}
+\item[--] it behaves like the old style, but used with \LaTeXe;
+\item[--] it supports local font configuration by looking for
+ \texttt{sfonts.cfg};
+\item[--] it has a set of new internal options:
+ \Loption{a4paper}, \Loption{a5paper}, \Loption{b5paper},
+ \Loption{letterpaper}, \Loption{legalpaper},
+ \Loption{executivepaper}, \Loption{landscape};
+\item[--] the option \Loption{twocolumn} is not supported.
+\end{Itemize}
+\noindent \Lclass{proc}
+\begin{Itemize}
+\item[--] it is no longer an option but a \emph{document class};
+\item[--] it is built on the \Lclass{article} class;
+\item[--] it disallows options \Loption{a5paper}, \Loption{b5paper},
+ \Loption{onecolumn}, \Loption{titlepage}.
+\end{Itemize}
+\noindent \Lclass{ltxdoc}
+\begin{Itemize}
+\item[--] it is used to format the \LaTeXe\ source code;
+\item[--] it is built on \Lclass{article} and requires the \Lpack{doc} package;
+\item[--] it looks for the configuration file \texttt{ltxdoc.cfg};
+\item[--] it defines the commands \Lcs{DocInclude} and \Lcs{GetFileInfo};
+\item[--] it disallows the option \Loption{a5paper}.
+\end{Itemize}
+
+Presently the following packages are available:
+\begin{Itemize}
+ \item \Lpack{ifthen}, for building control structures.
+ It provides on top of
+ \Lcs{ifthenelse} and \Lcs{whiledo} available previously with
+ \LaTeXo{}, the new
+ commands \Lcs{newboolean}, \Lcs{setboolean}, and \Lcs{boolean}.
+ \item \Lpack{makeidx}, \Lpack{showidx},
+ to help you make indexes.
+ \item \Lpack{doc}, \Lpack{shortvrb}, for generating class and
+ package file documentation.
+ \item \Lpack{oldlfont}, \Lpack{newlfont}, for compatibility with
+ \LaTeXo{} and version 1 of the NFSS.
+ \item \Lpack{latexsym}
+ \LaTeXe\ no longer loads the \texttt{lasy} fonts by default;
+ if needed they become available by loading this package.
+ Note that they are not necessary when either \Lpack{amsfonts} or
+ \Lpack{amssymb} is used.
+ \item \Lpack{exscale} allows for different math extension fonts.
+ \item \Lpack{eufrak} and \Lpack{euscript} give access to the Euler
+ fraktur and script alphabets, \Lpack{oldgerm} to Haralambous\rq\nobreak{}
+ beautiful old German fonts, while \Lpack{pandora} allows you to
+ use Billawala\rq\nobreak{}s Pandora font family.
+ \item \Lpack{syntonly} will make \LaTeX{} only check the syntax of
+ your document, while \Lpack{tracefnt}, with its various options
+ \Loption{errorshow}, \Loption{warningshow}, \Loption{infoshow},
+ and \Loption{debugshow}, allows you to trace NFSS as \LaTeX{}
+ processes your document.
+ \item \Lpack{varioref}
+ provides a way to automatically adapt the text of
+ a reference, depending on the position of the \Lcs{label}.
+\end{Itemize}
+
+Many other packages on CTAN already work with \LaTeXe{}
+or will soon be converted. In the first category one finds
+\Lpack{a4}, \Lpack{epsfig}, \Lpack{exams}, \Lpack{labels},
+\Lpack{layout}, the NTG document class family \Lclass{artikel1}, \Lclass{rapport3},
+\etc, \Lpack{subeqnarray}, \Lpack{psnfss}, \Lpack{textfit}, while the
+latter contains the \Lpack{babel} collection,
+\Lpack{changebar}, \Lclass{ltugboat} and friends,
+the \lq\lq\nobreak{}Mainz\rq\rq\nobreak{} packages \Lpack{array}, \Lpack{ftnright},
+\Lpack{multicol}, \Lpack{theorem}, \Lpack{verbatim}, and \Lpack{supertabular}.
+
+\section{Miscellaneous goodies}
+
+This section describes some features which are perhaps not used every
+day, but which can come in handy for solving certain practical
+document preparation problems.
+
+\subsection{Controlling page breaks}
+
+Sometimes, when preparing the \emph{final} version of your document,
+you might need to help \LaTeX\ break the pages in a suitable way.
+\LaTeXo{} had commands like \Lcs{clearpage}, \Lcs{samepage}, \etc,
+while \LaTeXe\ provides, in addition, commands which increase or
+decrease the height of the \emph{current} page from its \lq\lq\nobreak{}natural\rq\rq\nobreak{} height
+\Lcs{textheight} by an amount \Larg{size}.
+
+\begin{BDef}
+\DefCm{enlargethispage}{size} \\
+\DefCm{enlargethispage*}{size}
+\end{BDef}
+
+For example,
+\verb!\enlargethispage{-\baselineskip}}! decreases the length
+of the current page by one line, while
+\verb!\enlargethispage*{2\baselineskip}}! makes it two lines longer
+than usual.
+
+The starred form also shrinks any vertical white space on the page as
+much as possible, so as to fit the maximum amount of text onto the
+page.
+
+\subsection{Floats}
+
+A new command and a new \lq\lq\nobreak{}float specifier\rq\rq\nobreak{} will allow you more
+control over \LaTeX\rq\nobreak{}s float placement algorithm.
+
+\BDefCo{suppressfloats}{placement}
+
+This command stops any further floating environments from being placed
+on the current page.
+The optional argument \Larg{placement} can be either
+\Lit{t} or \Lit{b} (not both), and in this case the restriction applies only to putting
+further floats at the top or at the bottom.
+
+\begin{BDef}
+Extra float placement specifier: \ \texttt{!}
+\end{BDef}
+
+This can be used, along with at least one of \texttt{h}, \texttt{t},
+\texttt{b} and \texttt{p}, in the float placement optional argument.
+
+If a \texttt{!} is present then, just for this particular float,
+whenever it is processed by the float mechanism the following are
+ignored:
+\begin{itemize}
+\item all restrictions on the number of floats which can appear;
+\item all explicit restrictions on the amount of space on a text page
+which may be occupied by floats or must be occupied by text.
+\end{itemize}
+The mechanism will, however, still attempt to ensure that pages are
+not overfull and that floats of the same type are printed in the
+correct order.
+
+Note that its presence has no effect on the production of float pages.
+
+A \texttt{!} placement specifier overrides the effect of any \Lcs{suppressfloats}
+command for this particular float.
+
+\section*{Bibliography}
+
+\begin{thebibliography}{1}
+\bibitem{bib-Companion}
+Michel Goossens, Frank Mittelbach and Alexander Samarin.
+\newblock \emph{The \LaTeX{} Companion}.
+\newblock Addison-Wesley, Reading, USA, 1994.
+
+\bibitem{bib-Lamport}
+Leslie Lamport.
+\newblock {\em {\LaTeX}---A Document Preparation System.
+ Second edition}
+\newblock Addison-Wesley, Reading, USA, 1994.
+
+\bibitem{Mittelbach:TB10-3-400-401}
+Frank Mittelbach and Rainer Sch{\"{o}}pf.
+\newblock Towards \LaTeX{} 2.10.
+\newblock {\em TUGBoat}, 10(3):400--401, November 1990.
+
+\bibitem{Mittelbach:TB11-3-337-345}
+Frank Mittelbach.
+\newblock {{E-\TeX: Guidelines for future \TeX{} extensions}}.
+\newblock {\em TUGBoat}, 11(3):337--345, September 1990.
+
+\bibitem{Mittelbach:TB13-1-96-101}
+Frank Mittelbach and Chris Rowley,
+\newblock \LaTeXo{} $\hookrightarrow$ \LaTeX3.
+\newblock {\em TUGBoat}, 13(1):96-101, April 1992.
+
+\bibitem{Rowley:TB13-3-390-391}
+Chris Rowley.
+\newblock \LaTeX3 update.
+\newblock {\em TUGBoat}, 13(3):390-391, October 1992.
+
+\bibitem{Mittelbach:TB13-4-510-515}
+Frank Mittelbach and Chris Rowley and Michael Downes.
+Volunteer work for the \LaTeX3 project.
+\newblock {\em TUGBoat}, 13(4):510-515, December 1992.
+
+\bibitem{Mittelbach:TTN3-1-7-11}
+Frank Mittelbach and Chris Rowley.
+\newblock Volunteer work for the \LaTeX3 project.
+\newblock {\em \TeX{} and TUG NEWS}, 3(1):7-11, January 1994.
+
+\end{thebibliography}
+
+\end{Article}
+
+\endinput
+
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Making Your Own Lists}
+
+Format of generic \Lenv{list} environment:
+
+\begin{BDef}
+ \DefEmm{list}{default\_label}{decls}\\ \quad \Larg{item\_list}\\
+ \LEND{list}
+\end{BDef}
+
+\Larg{default\_label} text for label when \Lcs{item} command
+issued without optional argument.
+
+\Larg{decls} modify geometrical parameters of
+\Lenv{list} environment
+
+
+Several \LaTeX{} environments use \Lenv{list} (e.g., \Lenv{quote},
+\Lenv{quotation}, \Lenv{center}, \Lenv{flushleft}, and
+\Lenv{flushright}). They have only one item, and the
+\Lit{\Lcs{item}[]} command is specified in the environment definition.
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{slide}
+\footnotesize
+\setlength{\unitlength}{.29mm}
+\hspace*{14mm}\begin{picture}(240,250)(0,10)
+% ===================== Following text ========================
+\put(0,30){\line(0,-1){20}\line(1,0){240}}
+\put(240,10){\line(0,1){20}}
+\put(120,20){\makebox(0,0){\emph{Text following list}}}
+\put(120,45){\vector(0,-1){15}\vector(0,1){15}
+ \makebox(0,0)[l]{\ttfamily\bs topsep + \bs parskip
+ [+ \bs partopsep]}}
+% ========================= Item 2 ============================
+\put(210,90){\line(0,-1){30}\line(-1,0){120}}
+\put(90,80){\line(0,1){10}\line(-1,0){20}}
+\put(70,60){\line(0,1){20}\line(1,0){140}}
+\put(128,75){\makebox(0,0)[l]{\emph{Item 2}}}
+\put(10,80){\framebox(45,10){\emph{Label}}}
+\put(120,100){\vector(0,-1){10}\vector(0,1){10}
+ \makebox(0,0)[l]{\ttfamily\bs itemsep + \bs parsep}}
+% ==================== Item 1 Paragraph 2 =====================
+\put(70,110){\line(0,1){20}\line(1,0){140}}
+\put(100,130){\line(0,1){10}\line(-1,0){30}}
+\put(210,140){\line(0,-1){30}\line(-1,0){110}}
+\put(128,134){\makebox(0,0)[l]{\emph{Item 1}}}
+\put(128,117){\makebox(0,0)[l]{\emph{Paragraph 2}}}
+\put(120,150){\vector(0,-1){10}\vector(0,1){10}
+ \makebox(0,0)[l]{\ttfamily\bs parsep}}
+\put(85,140){\vector(-1,0){15}\vector(1,0){30}}
+\put(85,145){\makebox(0,0)[b]{\ttfamily\bs listparindent}}
+% ==================== Item 1 Paragraph 1 =====================
+\put(210,210){\line(0,-1){50}\line(-1,0){120}}
+\put(90,200){\line(0,1){10}\line(-1,0){20}}
+\put(70,160){\line(0,1){40}\line(1,0){140}}
+\put(128,195){\makebox(0,0)[l]{\emph{Item 1}}}
+\put(128,175){\makebox(0,0)[l]{\emph{Paragraph 1}}}
+\put(35,175){\makebox(0,0)[t]{\rule{0mm}{4mm}\ttfamily\bs leftmargin}}
+\put(35,175){\vector(1,0){35}\vector(-1,0){70}}
+\put(10,200){\framebox(45,10){\emph{Label}}}
+\put(33,196){\makebox(0,0)[t]{\rule{0mm}{4mm}\ttfamily\bs labelwidth}}
+\put(33,196){\vector(1,0){22}\vector(-1,0){45}}% for \labelwidth
+\put(95,197){\makebox(0,0)[t]{\rule{0mm}{4mm}\ttfamily\bs itemindent}}
+\put(80,196){\vector(1,0){10}\vector(-1,0){20}}% for \itemindent
+\put(80,210){\vector(1,0){10}\vector(-1,0){35}}% for \labelsep
+\put(73,215){\makebox(0,0)[b]{\rule[-2mm]{0mm}{5mm}\ttfamily\bs labelsep}}
+\put(225,210){\vector(1,0){15}\vector(-1,0){30}}
+\put(210,206){\makebox(0,0)[l]{\ttfamily\bs rightmargin}}
+\put(120,225){\vector(0,-1){15}\vector(0,1){15}
+ \makebox(0,0)[l]{\ttfamily\bs topsep + \bs parskip
+ [+ \bs partopsep]}}
+% ===================== Preceding text ========================
+\put(0,240){\line(0,1){20}\line(1,0){240}}
+\put(240,240){\line(0,1){20}}
+\put(120,250){\makebox(0,0){\emph{Text preceding list}}}
+\end{picture}
+
+\end{slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newcommand\showlen[1]{\makebox[#1]%
+ {\rule{.5pt}{2mm}\hrulefill\rule{.5pt}{2mm}}} \tabcolsep1mm
+\newcommand{\SHOWDIMS}%
+{{\ttfamily \begin{tabular}{@{}lrl@{}} \bs leftmargin& \Leftmargin &
+\showlen{\leftmargin}\\ \bs itemindent& \Itemindent &
+\showlen{\itemindent}\\ \bs labelwidth& \Labelwidth &
+\showlen{\labelwidth}\\ \bs labelsep & \Labelsep & \showlen{\labelsep}
+\end{tabular}}}
+\newcommand{\SHOWLAB}{\makebox[\labelwidth]{%
+ \rule{.5pt}{2mm}\hfill\mbox{label}\hfill\rule{.5pt}{2mm}}}
+
+\begin{Slide}{Example of list parameters}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{10mm}\def\Labelwidth{10mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{4mm}}\def\Itemindent{4mm}
+ \renewcommand{\makelabel}[1]{\hfil\emph{#1}}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Example of list parameters (cont.)}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{10mm}\def\Labelwidth{10mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{0mm}}\def\Itemindent{0mm}
+ \renewcommand{\makelabel}[1]{\hfil\emph{#1}}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Example of list parameters (cont.)}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{14mm}\def\Labelwidth{14mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{4mm}}\def\Itemindent{4mm}
+ \renewcommand{\makelabel}[1]{\hfil\emph{#1}}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Example of list parameters (cont.)}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{14mm}\def\Labelwidth{14mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{0mm}}\def\Itemindent{0mm}
+ \renewcommand{\makelabel}[1]{\hfil\emph{#1}}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Example of list parameters (cont.)}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{14mm}\def\Labelwidth{14mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{4mm}}\def\Itemindent{4mm}
+ \renewcommand{\makelabel}[1]{\emph{#1}\hfil}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS\\
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Example of list parameters (cont.)}
+
+ Preceeding text. Preceeding text. Preceeding text. Preceeding
+ text.
+\begin{list}{}{%
+ \setlength{\leftmargin}{14mm}\def\Leftmargin{14mm}
+ \setlength{\labelwidth}{14mm}\def\Labelwidth{14mm}
+ \setlength{\labelsep}{4mm}\def\Labelsep{4mm}
+ \setlength{\itemindent}{0mm}}\def\Itemindent{0mm}
+ \renewcommand{\makelabel}[1]{\emph{#1}\hfil}
+
+\item[\SHOWLAB] first para first item first para first item
+
+ \SHOWDIMS\\
+
+ second para first item second para first item
+
+\item[label] first para second item first para second item
+
+\item[very long label] first para third para first para third para
+\end{list}
+
+\end{Slide}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\begin{Slide}{Option naming conventions in \LaTeXe{}}
+
+\begin{description}
+\item[\emph{Language options}] Language dependent \lq\nobreak{}fixed
+ strings\rq\nobreak{} should use options compatible with the babel package.
+\item[\emph{Paper size options}] The standard classes
+ support the options \Loption{letterpaper}, \Loption{legalpaper}, \Loption{executivepaper},
+ \Loption{a4paper}, \Loption{a5paper}, \Loption{b5paper}; any paper size can be modified by
+ the option \Loption{landscape}.
+\item[\emph{Driver options}] Many graphics related
+ packages need to know dvi-driver (syntax of \Lcs{special} command.
+ Currently the list includes: \Loption{emtex}, \Loption{dvips}, \Loption{oztex}, etc.
+\item[\emph{Debugging options}] \Loption{errorshow},
+ \Loption{warningshow}, \Loption{infoshow}, \Loption{debugshow}, \Loption{pausing}
+\end{description}
+
+\end{Slide}
+
+\section{The font selection commands of \LaTeXe}
+
+\begin{itemize}
+\item the \LaTeXe{} font selection model
+\item the user\rq\nobreak{}s interface
+\item the designer\rq\nobreak{}s interface
+\item the installer\rq\nobreak{}s interface
+\end{itemize}
+
+\section{\LaTeXo{} font selection}
+
+Declaring new fonts in \LaTeXo{} was \emph{difficult}.
+
+Using a text font other than CM meant redefining 50 or so internal
+commands:
+\begin{verbatim}
+ \font\twlrm=ptmr at 12pt
+\end{verbatim}
+Adding new math fonts involved lots of low-level hacking with
+\verb|\newfam|, \verb|\font| and \verb|\@addfontinfo|.
+
+Many people thought that \LaTeX=CM.
+
+This was improved with Mittelbach and Sch\"opf\rq\nobreak{}s \emph{New Font Selection
+Scheme} (\emph{NFSS}).
+
+NFSS~2 is part of \LaTeXe.
+
+\section{Font selection model}
+
+A \LaTeX{} font is defined by:
+\begin{itemize}
+\item an \emph{encoding}, e.g.~\lq\nobreak{}\TeX{} text\rq\nobreak{}
+\item a \emph{family}, e.g.~\lq\nobreak{}Computer Modern\rq\nobreak{}
+\item a \emph{series}, e.g.~\lq\nobreak{}Bold extended\rq\nobreak{}
+\item a \emph{shape}, e.g.~\lq\nobreak{}Italic\rq\nobreak{}
+\item a \emph{size}, e.g.~\lq\nobreak{}10pt\rq\nobreak{}
+\end{itemize}
+In this case, the font is
+{\fontfamily{cmr}\fontseries{bx}\fontshape{it}\selectfont
+cmbxi10}.
+
+\section{Encodings}
+
+An \emph{encoding} says which characters a font contains.
+
+Some encodings are:
+\begin{itemize}
+\item \verb|OT1| Latin, e.g.~CM roman
+\item \verb|OT2| Cyrillic, e.g.~CM cyrillic
+\item \verb|OT3| International phonetic alphabet, e.g.~WSU IPA
+\item \verb|U| Unknown
+\end{itemize}
+Note \lq\nobreak{}\verb|O|\rq\nobreak{} means \lq\nobreak{}old\rq\nobreak{} means \lq\nobreak{}7-bit\rq\nobreak{}.
+
+\section{Families}
+
+A \emph{family} says what the name of the font collection is.
+
+Some families are:
+\begin{itemize}
+\item \verb|cmr| Computer Modern Roman
+\item \verb|cmss| Computer Modern Sans
+\item \verb|cmtt| Computer Modern Typewriter
+\item \verb|ptm| Adobe Times Roman
+\item \verb|phv| Adobe Helvetica
+\end{itemize}
+
+\section{Series and shape}
+
+The \emph{series} and \emph{shape}
+say what the appearance
+of a font is.
+
+Some series are:
+\begin{itemize}
+\item \verb|m| medium
+\item \verb|bx| \textbf{bold extended}
+\end{itemize}
+Some shapes are:
+\begin{itemize}
+\item \verb|n| \lq\nobreak{}normal\rq\nobreak{}
+\item \verb|sl| \textsl{slanted}
+\item \verb|sc| {\scriptsize SMALL CAPS}
+\end{itemize}
+
+\section{Size}
+
+The \emph{size} says how large a font should be.
+
+Some sizes are:
+\begin{itemize}
+\item \verb|5| {\fontsize{5}{5} 5pt}
+\item \verb|10| {\fontsize{10}{10} 10pt}
+\item \verb|14.4| {\fontsize{14.4}{14.4} 14.4pt}
+\end{itemize}
+Together, these five parameters determine every \LaTeX{} font.
+For example:
+\begin{itemize}
+\item \verb|OT1/cmr/bx/it/10| is
+ {\fontfamily{cmr}\fontseries{bx}\fontshape{it}\selectfont
+ cmbxi10}
+\item \verb|OT1/cmss/m/n/10| is cmss10
+\item \verb|OML/cmm/m/it/10| is $\mathnormal{cmmi10}$
+\end{itemize}
+
+\section{User\rq\nobreak{}s interface}
+
+The most important user command for selecting fonts is
+\verb|\documentclass|.
+The document class sets:
+\begin{itemize}
+\item the families for roman, sans and typewriter
+\item the effects of \verb|\rm|, \verb|\bf|, \verb|\huge|, etc.
+\item how \emph{logical} structure (e.g.~\verb|\section|) maps to
+ \emph{optical} structure (e.g.~12pt bold)
+\end{itemize}
+The user commands:
+\begin{itemize}
+\item \verb|\textrm|, \verb|\textsf| \& \verb|\texttt| change the family
+\item \verb|\textmd| \& \verb|\textbf| change the series
+\item \verb|\textup|, \verb|\textit|, \verb|\textsl| \& \verb|\textsc|
+ change the shape
+\end{itemize}
+
+\section{Designer\rq\nobreak{}s interface}
+
+The document class designer has to set:
+\begin{itemize}
+\item the families for roman, sans and typewriter
+\item the effects of \verb|\rm|, \verb|\bf|, \verb|\huge|, etc.
+\item how \emph{logical} structure maps to
+ \emph{optical} structure
+\end{itemize}
+The commands defined by the class include:
+\begin{itemize}
+\item \verb|\rmdefault|, \verb|\sfdefault|, \verb|\ttdefault|, etc.
+\item \verb|\rm|, \verb|\bf|, \verb|\huge|, etc.
+\item \verb|\section|, \verb|\maketitle|, etc.
+\end{itemize}
+For example, to say a document is set in Adobe Times, just say:
+\begin{verbatim}
+ \renewcommand{\rmdefault}{ptm}
+\end{verbatim}
+
+The designer\rq\nobreak{}s commands are:
+\begin{itemize}
+\item \verb|\fontencoding{|\emph{encoding}\verb|}|
+\item \verb|\fontfamily{|\emph{family}\verb|}|
+\item \verb|\fontseries{|\emph{series}\verb|}|
+\item \verb|\fontshape{|\emph{shape}\verb|}|
+\item \verb|\fontsize{|\emph{size}\verb|}{|\emph{baselineskip}\verb|}|
+\item \verb|\selectfont|
+\end{itemize}
+For example:
+\begin{verbatim}
+ {\fontfamily{cmtt}\fontshape{sl}
+ \selectfont hello}
+\end{verbatim}
+produces {\fontfamily{cmtt}\fontshape{sl}\selectfont hello}.
+
+\section{Installer\rq\nobreak{}s interface}
+
+The font installer has to say how the \LaTeX{} font selection model
+relates to \TeX{} fonts, for example that \verb|OT1/cmtt/m/n/10| is
+\verb|cmtt10|.
+
+This is done with \emph{font definition} (\emph{fd}) files.
+
+For each \emph{encoding} and \emph{family} there is a file
+\emph{encodingfamily}\verb|.fd|, e.g.~\verb|OT1cmtt.fd|.
+
+This uses the commands:
+\begin{quotation}
+\verb|\DeclareFontFamily{|\emph{encoding}\verb|}{|%
+ \emph{family}\verb|}|\\\hspace*{2em}\verb|{|\emph{commands}\verb|}|
+\\
+\verb|\DeclareFontShape{|\emph{encoding}\verb|}{|%
+ \emph{family}\verb|}|\\\hspace*{2em}\verb|{|\emph{series}\verb|}{|%
+ \emph{shape}\verb|}{|\emph{loading}\verb|}{|%
+ \emph{commands}\verb|}|
+\end{quotation}
+
+For example, a simple \verb|OT1ptm.fd| file is:
+\begin{verbatim}
+ \DeclareFontFamily{OT1}{ptm}{}
+ \DeclareFontShape{OT1}{ptm}
+ {m}{n}{<-> ptmr}{}
+ \DeclareFontShape{OT1}{ptm}
+ {b}{n}{<-> ptmb}{}
+ \DeclareFontShape{OT1}{ptm}
+ {m}{it}{<-> ptmri}{}
+ \DeclareFontShape{OT1}{ptm}
+ {b}{it}{<-> ptmbi}{}
+\end{verbatim}
+(The real \verb|OT1ptm.fd| file is a bit more complicated.)
+
+The \emph{loading-commands} can be size-specific, for example:
+\begin{verbatim}
+ \DeclareFontShape{OT1}{ptmv}{m}{n}{
+ <-11>ptmr10
+ <11->ptmr
+ }{}
+\end{verbatim}
+The \emph{loading-commands} also have options for:
+\begin{itemize}
+\item substituting fonts
+\item generating font names from sizes automatically
+\item running \LaTeX{} commands every time a font is loaded
+\end{itemize}
+
+\section{Mathematics and PostScript}
+
+\section{Math font model}
+
+A \LaTeX{} math font is defined by:
+\begin{itemize}
+\item a \emph{math version}, e.g.~\lq\nobreak{}normal\rq\nobreak{}
+\item a \emph{math group}, e.g.~\lq\nobreak{}symbols\rq\nobreak{}
+\item a \emph{math style}, e.g.~\lq\nobreak{}scriptstyle\rq\nobreak{}
+\item a \emph{text size}, e.g.~\lq\nobreak{}10pt\rq\nobreak{}
+\end{itemize}
+In this case, the font is 7pt $\scriptstyle\mathcal{CMSY}$.
+
+\section{Math versions}
+
+A math version says which groups are available in math mode.
+
+Some math versions are:
+\begin{itemize}
+\item \verb|normal| standard groups
+\item \verb|bold| bold groups
+\end{itemize}
+Other math versions could include different subject areas
+(e.g.~\verb|chemistry|) or national styles (e.g.~\verb|french|).
+
+\section{Math groups}
+
+A math group says which encoding, family, series and shape the font has.
+
+There are two sorts of groups.
+
+\emph{Symbol} groups are used with symbol commands like
+\verb|\otimes|. Some symbol groups are:
+\begin{itemize}
+\item \verb|operators| $\mathrm{roman~letters}$
+\item \verb|letters| $\mathnormal{math~italic}$
+\item \verb|symbols| $\mathcal{SYMBOLS}$
+\item \verb|bigsymbols| big symbols such as $\sum$
+\end{itemize}
+
+\emph{Alphabet} groups are used with font commands like
+\verb|\mathcal|. Some alphabet groups are:
+\begin{itemize}
+\item \verb|\mathrm| $\mathrm{roman~letters}$
+\item \verb|\mathnormal| $\mathnormal{math~italic}$
+\item \verb|\mathcal| $\mathcal{CALLIGRAPHIC}$
+\item \verb|\mathbf| $\mathbf{bold}$
+\end{itemize}
+Note that some groups are both symbol and alphabet groups.
+
+\section{Math styles}
+
+A math style says how large a font is compared with the text font. The
+three math styles are:
+\begin{itemize}
+\item \verb|textstyle| the size of text
+\item \verb|scriptstyle| the size of subscripts
+\item \verb|scriptscriptstyle| the size of subsubscripts
+\end{itemize}
+
+\section{User interface}
+
+Is mostly unchanged.
+
+Classes and packages change the available math versions and groups.
+
+\verb|\normalmath| and \verb|\boldmath| change the math version.
+
+\verb|\mathrm|, \verb|\mathnormal|, \verb|\mathcal| and \verb|\mathbf|
+change the math group.
+
+Commands like \verb|^| or \verb|\frac| change the math style.
+
+\section{Designer interface}
+
+Designers can provide new math versions and math groups, e.g.:
+\begin{verbatim}
+ \DeclareMathVersion{normal}
+ \DeclareSymbolFont{operators}
+ {OT1}{cmr}{m}{n}
+ \DeclareMathAlphabet{\mathit}
+ {OT1}{cmr}{m}{it}
+\end{verbatim}
+Symbol groups can have symbol declarations, e.g.:
+\begin{verbatim}
+ \DeclareMathSymbol{\alpha}
+ {\mathord}{letters}{"0B}
+\end{verbatim}
+Symbol groups are less effecient than alphabet groups.
+
+\section{PostScript fonts--User\rq\nobreak{}s and designer\rq\nobreak{}s interface}
+
+As far as \LaTeX{} is concerned, PostScript fonts are just fonts like any
+other (but the device driver may disagree).
+
+So to select Times as a user:
+\begin{verbatim}
+ \usepackage{times}
+\end{verbatim}
+As a designer:
+\begin{verbatim}
+ \renewcommand{\rmdefault}{ptm}
+\end{verbatim}
+
+\section{Installer\rq\nobreak{}s interface}
+
+The \verb|psnfss| software contains the \LaTeX{} PostScript fonts.
+
+It contains:
+\begin{itemize}
+\item a set of \LaTeX{} packages
+\item a set of font definition (\verb|fd|) files
+\item a set of \TeX{} font metric (\verb|tfm|) files
+\end{itemize}
+For example Adobe Times is used with:
+\begin{itemize}
+\item \verb|times.sty|
+\item \verb|T1ptm.fd|
+\item \verb|ptmrq.tfm|, \verb|ptmriq.tmf|, \verb|ptmbq.tfm| and
+ \verb|ptmbiq.tfm|
+\end{itemize}
+
+\section{Document portability}
+
+The \verb|psnfss| package does \emph{not} say how the fonts should be
+printed. For example:
+\begin{itemize}
+\item with \verb|dvips| or Oz\TeX they can be printed using virtual fonts
+\item with Textures or \verb|dvipsone| they can be
+ printed using font re-encodings
+\end{itemize}
+But since every \LaTeX{} site has the same \verb|tfm| files, documents will
+be portable.
+
+A document may have three different encodings:
+\begin{itemize}
+\item the input encoding (e.g.~Macintosh)
+\item the internal encoding (e.g.~Cork)
+\item the driver encoding (e.g.~Adobe Standard)
+\end{itemize}
+\LaTeX{} supports the Cork internal encoding for PostScript fonts, but
+doesn\rq\nobreak{}t specify input or driver encodings, so:
+\begin{itemize}
+\item documents are portable (since all documents use the \verb|T1|
+ encoding)
+\item documents can use specialist encodings (e.g.~Macintosh or ANSI)
+\end{itemize}
+
+Often users are unclear about why the alignment
+of their paragraph boxes (or minipages) appears the
+way it does.
+To help explain the observed behaviour a few examples
+are presented below, which hopefully,
+clarify some of the issues.
+
+
+\newcommand{\HR}{\rule{.5em}{0.4pt}}
+\begin{verbatim}
+\newcommand{\HR}{\rule{.5em}{0.4pt}}
+\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ A A A A A A A A A A A A A A A
+ \end{minipage} xx
+ \begin{minipage}[t]{20}
+ B B B B B B B B B B B B B B B B B B B B B B B B
+ \end{minipage}
+\end{minipage}\HR
+\begin{minipage}[b]{20mm} C C C C C C C \end{minipage}\HR
+\end{verbatim}
+
+\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ A A A A A A A A A A A A A A A
+ \end{minipage} xx
+ \begin{minipage}[t]{20mm}
+ B B B B B B B B B B B B B B B B B B B B B B B B
+ \end{minipage}
+\end{minipage}\HR
+\begin{minipage}[b]{20mm} C C C C C C C \end{minipage}\HR
+
+\begin{verbatim}
+ ...
+ \end{minipage}
+ \par\vspace*{0mm}
+\end{minipage}\HR
+\begin{minipage}[b]{20mm} C C C C C C C \end{minipage}\HR
+\end{verbatim}
+
+\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ A A A A A A A A A A A A A A A
+ \end{minipage} xx
+ \begin{minipage}[t]{20mm}
+ B B B B B B B B B B B B B B B B B B B B B B B B
+ \end{minipage}
+ \par\vspace*{0mm}
+\end{minipage}\HR
+\begin{minipage}[b]{20mm} C C C C C C C \end{minipage}\HR
+
+\begin{verbatim}
+\HR
+\begin{minipage}[b]{20mm}
+ A A A A A A A A A A A A A A A
+\end{minipage}\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ B B B B B B B B B B B B B B B B B B B B B B B B gg jj
+ \end{minipage} xx
+ \begin{minipage}[t]{20mm} C C C C C C C \end{minipage}
+ \par\vspace*{0mm}
+\end{minipage}\HR
+\end{verbatim}
+
+\HR
+\begin{minipage}[b]{20mm}
+ A A A A A A A A A A A A A A A
+\end{minipage}\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ B B B B B B B B B B B B B B B B B B B B B B B B gg jj
+ \end{minipage} xx
+ \begin{minipage}[t]{20mm} C C C C C C C \end{minipage}
+ \par\vspace*{0mm}
+\end{minipage}\HR
+
+\begin{verbatim}
+\settodepth{\Mylen}{gj}
+ ...
+ \begin{minipage}[t]{12mm} C C C C C C C \end{minipage}
+ \par\vspace*{-\Mylen}
+\end{minipage}\HR
+\end{verbatim}
+
+\settodepth{\Mylen}{gj}
+\HR
+\begin{minipage}[b]{20mm}
+ A A A A A A A A A A A A A A A
+\end{minipage}\HR
+\begin{minipage}[b]{50mm}
+ \begin{minipage}[t]{20mm}
+ B B B B B B B B B B B B B B B B B B B B B B B B gg jj
+ \end{minipage} xx
+ \begin{minipage}[t]{20mm} C C C C C C C \end{minipage}
+ \par\vspace*{-\Mylen}
+\end{minipage}\HR