[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
preliminary EuroTeX paper for review
- To: math-font-discuss@cogs.susx.ac.uk
- Subject: preliminary EuroTeX paper for review
- From: Ulrik Vieth <vieth@thphy.uni-duesseldorf.de>
- Date: Fri, 5 Dec 1997 12:27:00 +0100
Hi all,
I am circulating a preliminary version of the draft EuroTeX paper
which is due for submission on December 15th (final paper by February).
The paper is now at some 15 Cah-GUT pages + 3 pages of references
+ 7 pages of appendices for the font tables (not included here).
At present, only the first part of the paper is stable, while the
second part still remains sketchy and incomplete. I hope to be able
to work on filling the gaps during the weekend, but I wanted to put
out a preliminary version for review as early as possible, since
I will be away next week from Wednesday to Friday, which would only
leave the last weekend before submission for the finishing touches.
If you have any comments, additions, or suggestions, please let me
know as soon as possible. In particular, I'd like to hear about:
- if the account of the history of the MFG in the introduction
is represented accurately (Barbara, Frank, Alan?)
- if the motivation section is convincing enough, or if there
any improvements to make
The earliest references on math-font activities I could find was
Joerg's DTK-article about EuroTeX'91 and a message from Alan
to TEX-FONTS in November 1991 mentioning a preliminary proposal
circulated at the Nordic TUG meeting. Anyone got more info?
Hoping for your helpful comments,
Cheers, Ulrik.
P.S. In case you want to know: Yes, I did enjoy `playing the library'
and collecting all sorts of related references. Hope this will
make for a good start of a bibliography on math font related stuff.
P.P.S. About the cah-gut.bst file: I started with custom-bib and
eventually resorted to a little hacking to get I wanted. (\noopsort
was broken due to the function attempting to purify the year field.)
As for formatting the author list, it still doesn't do exactly what
it should, namely to produce something like
"First \textsc{Author} and Second \textsc{Author},"
instead of
"\textsc{First Author {\upshape and} Second Author},"
(which is what it currently does). Any takers?
---- cut here ----
#!/bin/sh
# This is a shell archive (produced by GNU sharut 4.2.1).
# To extract the files from this archive, save it to some FILE, remove
# everything before the `!/bin/sh' line above, then type `sh FILE'.
#
# Made on 1997-12-05 05:31 MET by <vieth@zarquon>.
# Source directory was `/home/vieth/misc/math-font/papers/ulrik/eurotex-paper'.
#
# Existing files will *not* be overwritten unless `-c' is specified.
#
# This shar contains:
# length mode name
# ------ ---------- ------------------------------------------
# 47491 -rw-r--r-- mfg-euro.tex
# 11249 -rw-r--r-- mfg-euro.bib
# 7509 -rw-r--r-- mfg-euro.bbl
# 52 -rw-r--r-- refcahiers.tex
# 18643 -rw-r--r-- cah-gut.cls
# 26070 -rw-r--r-- cah-gut.bst
#
save_IFS="${IFS}"
IFS="${IFS}:"
gettext_dir=FAILED
locale_dir=FAILED
first_param="$1"
for dir in $PATH
do
if test "$gettext_dir" = FAILED && test -f $dir/gettext \
&& ($dir/gettext --version >/dev/null 2>&1)
then
set `$dir/gettext --version 2>&1`
if test "$3" = GNU
then
gettext_dir=$dir
fi
fi
if test "$locale_dir" = FAILED && test -f $dir/shar \
&& ($dir/shar --print-text-domain-dir >/dev/null 2>&1)
then
locale_dir=`$dir/shar --print-text-domain-dir`
fi
done
IFS="$save_IFS"
if test "$locale_dir" = FAILED || test "$gettext_dir" = FAILED
then
echo=echo
else
TEXTDOMAINDIR=$locale_dir
export TEXTDOMAINDIR
TEXTDOMAIN=sharutils
export TEXTDOMAIN
echo="$gettext_dir/gettext -s"
fi
if (echo "testing\c"; echo 1,2,3) | grep c >/dev/null; then
if (echo -n testing; echo 1,2,3) | sed s/-n/xn/ | grep xn >/dev/null; then
shar_n= shar_c='
'
else
shar_n=-n shar_c=
fi
else
shar_n= shar_c='\c'
fi
touch -am 1231235999 $$.touch >/dev/null 2>&1
if test ! -f 1231235999 && test -f $$.touch; then
shar_touch=touch
else
shar_touch=:
echo
$echo 'WARNING: not restoring timestamps. Consider getting and'
$echo "installing GNU \`touch', distributed in GNU File Utilities..."
echo
fi
rm -f 1231235999 $$.touch
#
$echo $shar_n 'x -' 'lock directory' "\`_sh04235': "$shar_c
if mkdir _sh04235; then
$echo 'created'
else
$echo 'failed to create'
exit 1
fi
# ============= mfg-euro.tex ==============
if test -f 'mfg-euro.tex' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'mfg-euro.tex' '(file already exists)'
else
$echo 'x -' extracting 'mfg-euro.tex' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'mfg-euro.tex' &&
\documentclass[draft]{cah-gut}
\usepackage[english]{babel}
\usepackage{mflogo,url,cite}
\usepackage{amssymb}
X
% hacks for english version (fixing an obscurity in cah-gut.cls)
X
\let\keywords\undefined
\let\endkeywords\undefined
\newenvironment{keywords}{\quotation
X \noindent\small\textbf{Keywords}:
X \textrm\bgroup
}{\egroup\endquotation \normalsize}
X
% ==============================================================
X
% from ltugboat.cls
X
\makeatletter
\DeclareRobustCommand{\La}%
X {L\kern-.36em
X {\sbox\z@ T%
X \vbox to\ht0{\hbox{$\m@th$%
X \csname S@\f@size\endcsname
X \fontsize\sf@size\z@
X \math@fontsfalse\selectfont
X A}%
X \vss}%
X }}
\DeclareRobustCommand{\AllTeX}%
X {(\La\kern-.075em)\kern-.075em\TeX}
\DeclareRobustCommand{\AmS}%
X {$\mathcal{A}$\kern-.1667em\lower.5ex
X \hbox{$\mathcal{M}$}\kern-.125em$\mathcal{S}$}
\DeclareRobustCommand{\AmSTeX}{\AmS-\TeX}
\DeclareRobustCommand{\AmSLaTeX}{\AmS-\LaTeX}
X
\def\endash{--}
\def\emdash{---}
\def\thinskip{\hskip 0.16667em\relax}
\def\d@sh#1#2{\unskip#1\thinskip#2\thinskip\ignorespaces}
\def\dash{\d@sh\nobreak\endash}
\def\Dash{\d@sh\nobreak\emdash}
\def\hyph{-\penalty\z@\hskip\z@skip }
\def\slash{/\penalty\z@\hskip\z@skip }
\makeatother
X
% ==============================================================
X
% needed in BibTeX database
X
\def\PS{Post\-Script}
X
% cheap replacements for TUGboat macros
X
\providecommand{\acro}[1]{{\small #1}\@}
\providecommand{\cs} [1]{\texttt{\char`\\#1}}
X
\providecommand{\meta}[1]{\ensuremath{\langle\textit{#1}\rangle}}
X
% document-specific markup
X
\providecommand{\Filename}[1]{\texttt{#1}}
\providecommand{\Option} [1]{\textsf{#1}}
\providecommand{\Package} [1]{\texttt{#1}}
X
% markup for old and new encodings
X
\def\OT#1{{\small OT}$_{#1}$}
\def\OML{{\small OML}\@}
\def\OMS{{\small OMS}\@}
\def\OMX{{\small OMX}\@}
X
\def\T#1{{\small T}$_{#1}$}
\def\TS#1{{\small TS}$_{#1}$}
\def\MC{{\small MC}\@}
\def\MSP{{\small MS}$_{\mathrm{P}}$}
\def\MS#1{{\small MS}$_{#1}$}
\def\MXP{{\small MX}$_{\mathrm{P}}$}
\def\MX#1{{\small MX}$_{#1}$}
X
\def\LY#1{{\small LY}$_{#1}$}
\def\MY#1{{\small MY}$_{#1}$}
X
% ==============================================================
X
\title{Towards a new Math Font Encoding for~\AllTeX{}}
X
\author{%
X Matthias \textsc{Clasen}\textsuperscript{1}
X and Ulrik \textsc{Vieth}\textsuperscript{2}}
X
\affiliation{%
X \leavevmode
X \llap{\normalfont\textsuperscript{1}}%
X Albert-Ludwigs-Universit{\"a}t Freiburg\\
X Institut f{\"u}r Mathematische Logik\\
X D-79104 Freiburg, Germany\\
X {\normalfont\texttt{clasen@mathematik.uni-freiburg.de}}\\
X \\
X \llap{\normalfont\textsuperscript{2}}%
X Heinrich-Heine-Universit{\"a}t D{\"u}sseldorf\\
X Institut f{\"u}r Theoretische Physik~II\\
X D-40225 D{\"u}sseldorf, Germany\\
X {\normalfont\texttt{vieth@thphy.uni-duesseldorf.de}}\\
}
X
\titlehead{Towards a new Math Font Encoding for~\AllTeX{}}
\authorhead{Matthias Clasen and Ulrik Vieth}
X
\begin{document}
\maketitle
X
\begin{abstract}
X This paper presents a snapshot of ongoing work towards a
X prototype implementation of new 8-bit math font encodings for
X \AllTeX{}, based on the `Aston' proposal presented at the
X TUG~'93 conference. The design goals and technical
X considerations that have led to the present font table layouts
X are summarized and the contents and organization of the
X individual encodings are presented in detail. Finally, some
X alternative approaches and some remaining open problems are
X discussed.
\end{abstract}
\begin{keywords}
X mathematical typesetting, font encodings, symbol fonts
\end{keywords}
X
% ==============================================================
X
\section{Introduction and Background}
\label{sec:intro}
X
When the arrival of \TeX{}~3.0 made it possible to overcome the
limitations of 7-bit fonts, it didn't take long until an
encoding for 8-bit text fonts to support the needs of European
languages was developed and agreed at the European \TeX{}
conference in September~1990 \cite{Beebe:TB11-2-171,
X Bien:TB11-2-175, Ferguson:TB11-4-514}. When the first
implementations of these `Cork' encoded fonts became available
during 1991, it was soon recognized that new 8-bit math font
encodings were also eventually needed to overcome the
inter-dependencies between text fonts and math fonts, and the
first informal discussions on math font encoding issues began
taking place at workshops on \TeX{} conferences and on the
\texttt{TEX-FONTS} mailing lists.
X
To focus these efforts, a working group on extended math font
encodings was initiated in 1992 and formally established as a
joint \LaTeX3 Project / TUG Technical Working Group, officially
chaired by Barbara Beeton of the American Mathematical Society
(AMS). In the summer of 1993, \GUT{} sponsored a three month
research activity of Justin Ziegler at the University of Mainz
to work together with the \LaTeX3 project on coordinating the
math font related developments. During this time, a number of
technical studies were conducted and an outline of a proposed
new math font encoding was put together and presented at the
TUG~`93 conference \cite{Jeffrey:TB14-3-293}. Following the
conference, an electronic mailing list
\texttt{math-font-discuss} (see section~\ref{sec:info}) was
established, and a number of details of this `Aston' proposal
were worked out during six weeks of very active discussions.
Unfortunately, work came to a halt shortly after Justin Ziegler
had to leave the scene, and the only actual result was a \LaTeX3
Technical Report \cite{Ziegler:1994} published in mid-1994,
which went largely unnoticed despite several public
announcements \cite{LaTeX3:TTN3-1-7, LaTeX3:TTN4-2-17}.
X
After this first effort was left unfinished, it somehow took
until early 1997 before discussions on math font encodings and
related issues were revived on the \texttt{LATEX-L} mailing list
and work towards an actual implementation of the `Aston'
proposal as outlined in Justin Ziegler's report was resumed,
starting with a \texttt{fontinst}-based prototype
\cite{Clasen:1997} developed by Matthias Clasen with
contributions by Ulrik Vieth and others. At the time of writing
(in late 1997), preliminary implementations of the Computer
Modern, Concrete, and AMS Euler versions of the new math font
encodings are near complete, but may still require further
testing and fine-tuning. Additional versions based on standard
PostScript (Times Roman with Adobe Symbol), the commercial
MathTime and Lucida New~Math font sets, or the Mathematica
symbol fonts are under development and will hopefully be
completed by the time of the conference.
X
FIXME: The following paragraph needs to be updated when
the structure of the paper is completed.
X
In the following sections, we shall give an overview of the
ongoing work on new math font encodings and their
implementations. In section~\ref{sec:motivation}, we begin with
a review of the motivation behind the Math Font Group and the
situation of math fonts versus text fonts in general. In
section~\ref{sec:summary-old} we summarize the contents and
organization of \TeX's old math font encodings, before we
present an outline of the new encodings in
section~\ref{sec:outline-new}. The design goals influencing the
organization of the font table layouts are reviewed in
section~\ref{sec:design-goals}, followed by a detailed
discussion of the individual font encodings in
section~\ref{sec:details-new}. Finally, we conclude this paper
with a discussion of implementation issues and some remaining
open questions in sections~\ref{sec:implementation}
and~\ref{sec:discussion}.
X
X
X
\section{Motivation}
\label{sec:motivation}
X
Based on the number of assigned \texttt{UniqueID}s for Adobe
Type~1 fonts, it~was estimated in 1993 that there were more than
14,000 text fonts available \cite{Horn:TB14-3-282}, while there
were only relatively few math fonts, and even fewer of these
were actually usable with \TeX{}. Among the available math
fonts we have Computer Modern \cite{Knuth:1986:VolE}, Concrete
with AMS Euler \cite{Knuth:TB10-1-31}, Concrete Math
\cite{Vieth:concmath}, Times Roman with Adobe Symbol
\cite{Jeffrey:TB15-3-263}, the commercial MathTime and Lucida
New~Math font sets, and the Mathematica symbol fonts
\cite{Wolfram:1996:Mathematica}. Each of these font sets uses a
different encoding, and each requires its own selection of
\AllTeX{} macros.
X
At the time when the goals of the Math Font Group were
formulated in 1993, setting up \LaTeX{} (actually \LaTeX{}~2.09)
to use any other math fonts than 7-bit Computer Modern was a
very difficult task and often required writing complex
\emph{ad~hoc} macro packages for each font. In the meantime,
however, the introduction of \LaTeXe{} as the new standard
version of \LaTeX{} has established the New Font Selection
Scheme (NFSS2) as the new standard font selection interface
\cite{Rahtz:TB14-2-132, Goossens:1994:LC}, which has eased the
situation a bit.
X
Using a different text font family, either employing the old
({\OT1}) or the `Cork' ({\T1}) encoding, has become almost
trivial. Setting up a new text font for use with \LaTeX{} is
no longer a big deal either, since almost any font can be set
up with little effort using well-established font installation
utilities such as \texttt{fontinst} \cite{Rahtz:TB14-2-107,
X Jeffrey:TB14-3-285, Jeffrey:fontinst, Goossens:1997:LGC}
or \texttt{VFInst} \cite{Hoenig:VFInst} (which is basically a
fancy Perl script serving as a front-end to \texttt{fontinst}).
In addition, the text companion encoding ({\TS1}), originally
suggested as part of the `Aston' proposal, has also become a
reality \cite{Knappen:Euro95, Knappen:TB17-2-99,
X Rahtz:textcomp}, providing a place for non-mathematical
symbols that will ultimately be taken out of the math fonts.
X
Using a different math font family, on the other hand, still
requires a dedicated \LaTeX{} package in each case.
(Fortunately, such support packages are available in most cases
nowadays, either contributed by volunteers or commissioned by
font suppliers \cite{Jensen:beton, Jensen:euler, Vieth:concmath,
X Mittelbach:mathtime, Rahtz:lucidabr}.) Setting up new math
font sets for use with \TeX{} also remains a very difficult and
non-trivial task due to the diversity of different encodings and
the awkward inter-dependencies between text fonts and math
fonts in the existing encodings.
X
General purpose utilities to install new math fonts or to set up
text fonts as faked math fonts have also been developed
recently, but the scope of tools such as \texttt{MathInst} or
\texttt{MathKit} \cite{Hoenig:MathInst, Hoenig:MathKit} remains
limited and still requires a certain amount of manual
intervention for fine-tuning. Moreover, the proper choice of
text and math typefaces that mix well is a delicate issue that
requires taste and typographical experience
\cite{Bouche:Cah25-1, Hoenig:1998:Unbound}.
X
X
X
\section{Summary of the old math font encodings}
\label{sec:summary-old}
X
Before we go into the details of the proposed new math font
encodings and the layout of the new font tables, it may be a
good idea to review how the old encodings are organized, so
that it will be clear what we will be discussing.
X
In the current default \AllTeX{} math setup the mathematical
glyphs are organized in four families, which are shown in
Appendix~F of \emph{The \TeX{}book}.
X
Family~0 contains an {\OT1}-encoded upright roman font
(e.\,g.~\texttt{cmr}), which is used for a variety of purposes:
It is used as the operator font for typesetting multi-letter
operators such as `$\log$' or `$\lim$', and it serves as the
\cs{mathrm} math alphabet, which is used by default for digits
and uppercase Greek letters, while the Latin alphabet and
lowercase Greek are taken from the math italics font. Finally,
it provides access to various symbols, such as the math accents,
some delimiters, and the `$+$'~and~`$=$' signs. Since the
{\OT1} encoding contains the upright Greek capitals, it is not
possible to simply substitute a {\T1}-encoded text font in its
place. Moreover, is is important to keep in mind that the
`$=$'~sign is used for another purpose as the extension module
for double arrows, which implies that it has to match the size
and shape of the arrowheads in the math symbol font and cannot
simply be taken from a different text typeface.
X
Family~1 contains an {\OML}-encoded math italics font
(e.\,g.~\texttt{cmmi}), which is used as the default font for
single-letter identifiers. Even though this font contains a
complete Latin and Greek alphabet in italics shape, the Greek
capitals are traditionally taken from the upright roman font,
unless the \cs{mathnormal} math alphabet is selected
specifically.%
\footnote{This setup apparently matches the American typesetting
X tradition, but typesetting rules applicable in certain fields
X of sciences may call for a different setup
X \cite{Knappen:Euro92}. Still other conventions seem to apply
X in the French typesetting tradition, which apparently favors
X upright shape not only for Greek capitals, but also for
X lowercase Greek letters.}
% source: Thierry Bouche, message on math-font-discuss
%
Finally, this font also contains a small number of mathematical
symbols and, strangely, the oldstyle digits
\oldstylenums{0123456789} which are not used in mathematical
typesetting. Most of the symbols, however, such as the slash
(`$/$') or the punctuation marks are needed for kerning with
the Latin or Greek letters, and therefore have to live in the
same font table.
%
Interestingly, the MathTime {\MY1} font layout derived from
{\OML} replaces the oldstyle digits and a few symbols by the
upright Greek capitals, so that these can be kerned with the
italics lowercase Greek letters as well.
X
Family~2 contains an {\OMS}-encoded math symbol font
(e.\,g.~\texttt{cmsy}), which contains the calligraphic alphabet
(\cs{mathcal}) and many more mathematical symbols, but also some
text symbols which do not really belong into a math font, such
as `$\P$' and~`$\S$' or the playing card symbols. Among the
mathematical glyphs, there are a few symbols such as `$\nabla$'
or~`$\amalg$' that strongly depend on the design of the Greek
letters in the math italics font and therefore may have to be
replaced when switching to another typeface, while most of the
geometric symbols could be left unchanged. Finally, this font
also contains the small radical sign (`$\surd$'), which is
likely to cause problems to non-\TeX{}nical software since it
happens to hang below the baseline for obscure technical
reasons.
X
Family~3 contains an {\OMX}-encoded math extension font
(e.\,g.~\texttt{cmex}), which collects all the big operators,
growing delimiters and radicals, and the wide accents. These
glyphs are all specific to \TeX{} since they have very unusual
font metrics. For instance, the big radicals must hang below
the baseline since their height determines the thickness of the
rule to be placed on top of the root. The big delimiters and
operators are likewise placed below the baseline, apparently for
no good reason, except perhaps that they could be designed to
re-use the same values of \acro{TFM} heights and depths as used
for the radicals anyway.%
\footnote{The Error Log of \TeX{} \cite{Knuth:1989:Errors} seems
X to indicate that \TeX{}78 used to center big delimiters on the
X math axis with respect to their depth only, while \TeX{}82
X uses their height and depth, which would allow placing the
X glyphs in a vertically centered position, better suited for
X use with non-\TeX{}nical typesetting systems. (Log entry
X \#168, dated 21~March 1978.)}
X
The first four math families are the very minimum that is
required for typesetting a math formula with \TeX{}. In
particular, families~2 and~3 are special in that they are
expected to have a certain number of \verb|\fontdimen|
parameters, mostly dealing with the placement of sub- and
superscript, numerators and denominators in fractions, and
limits on big operators.
X
Plain \TeX{} and \LaTeX{}~2.09 occupy a number of additional
math families for extra math alphabets such as text italics,
bold, typewriter, or sans~serif, which may be of interest in
typesetting computer programs, but are relatively rare in
mathematics. In \LaTeXe{} these math families are no longer
needed since the switching between math alphabets is implemented
differently.
X
If the \texttt{latexsym} package is used to access the extra
\LaTeX{} symbols that used to be built into \LaTeX{}~2.09, one
extra math family is allocated dynamically, giving a total of
five families. If the \texttt{amssymb} package is used instead,
providing access to many more math symbols used in \AmSLaTeX{}
and a Blackboard Bold (or `open face') math alphabet, two extra
math families are needed, giving a total of six families.
An extra Fraktur (or `black letter') math alphabet is also
available in \AmSLaTeX{}, but no extra math family is needed
for that.
X
Since there is a significant overlap between the \LaTeX{}
symbols and the \AmS{} symbols, it seems plausible that both
sets of symbols including the Blackboard Bold and Fraktur
alphabets can be allocated in the new encoding within six
families. Some non-mathematical symbols such as the Yen sign,
the Maltese cross, or the circled `R'~and~`S' will be taken out,
and a suitable place for them will have to be found in the
{\TS1} text symbol encoding.
X
X
X
\section{Outline of the new math font encodings}
\label{sec:outline-new}
X
The goal of the Math Font Group (MFG) is to develop a
comprehensive new math font encoding for use with \AllTeX{} (and
possibly other typesetting systems), consisting of some six
256-character font tables that contain a symbol complement
sufficient to ensure compatibility with the existing encoding
and provide room for many new symbols that have been requested
or suggested during the group's discussions.
X
The original `Aston' proposal \cite{Jeffrey:TB14-3-293}
consisted of six encodings (not counting the {\TS1} text symbol
encoding), which were organized as follows:
\begin{quote}
\begin{tabular}{@{}ll@{}}
X {\T1} & math operators (`Cork' text encoding) \\
X {\MC} & math core encoding \\
X {\MX{}} & math extension encoding \\
X {\MSP} & math symbol privilege encoding \\
X {\MS1} & math symbol additional 1 encoding \\
X {\MS2} & math symbol additional 2 encoding \\
\end{tabular}
\end{quote}
In this proposal, the {\MC}-encoded math core font more or less
subsumes the role of the {\OML}-encoded math letters font
(\texttt{cmmi}), the {\MX{}} encoding replaces {\OMX}
(\texttt{cmex}), and the three {\MS{n}} encodings replace {\OMS}
(\texttt{cmsy}) and the additional \AmS{} symbol fonts
(\texttt{msam} and~\texttt{msbm}).
X
Each of the new encodings will provide room for up to
256~glyphs, which may seem like a lot given only 128~glyphs in
the old encodings, but this may actually turn out to be a severe
constraint if all the requests for new symbols are taken into
account. A particular problematic case is the math extension
encoding ({\MX{}}), where the addition of each new pair of big
delimiters may easily consume between 8~and 16~slots for the
usual four sizes and the extensible versions. The situation
only gets worse if additional intermediate or extra-big sizes of
delimiters and radicals are to be included as well, following an
idea first implemented in Yannis Haralambous' \texttt{yhmath}
package \cite{Haralambous:yhmath}.
X
As a result of all this, the original proposal was modified and
the original {\MX{}} encoding was split into two encodings, so
that we end up with:
\begin{quote}
\begin{tabular}{@{}ll@{}}
X {\MXP} & math extension privilege encoding \\
X {\MX1} & math extension additional 1 encoding \\
\end{tabular}
\end{quote}
In the basic version (using no more than the traditional sizes)
both of these font layouts will contain a number of empty slots
in a so-called \emph{variable area}, which may be filled in an
extended version at the font designer's disposal without
requiring changes to the \AllTeX{} macros. There may even be
several extended versions, adding only the intermediate or
extra-big sizes or both.
X
X
X
\section{Design goals and design choices}
\label{sec:design-goals}
X
FIXME: The whole of this section may need a better organization.
The problem is that we have to present the list of encodings
before discussing the design goals, since the discussion may
need to refer to the encodings. On the other hand, discussing
the design goals, already brings up a number of points that will
be repeated later in the review of the detailed font layouts.
X
X
The actual font layouts of the new math font encodings outlined
in the previous section are the result of a trade-off between a
number of factors, such as technical constraints, the
requirement for compatibility with the existing encodings, the
desire for simplicity and orthogonality, and the availability of
symbols in various font sets. Most importantly, the layout of
the new font tables should be designed to avoid the inherent
problems of the existing encoding, and it should make it as
simple as possible to install new sets of math fonts.
X
X
\subsection{Compatibility requirements}
X
The most important design goal is, of course, to ensure
compatibility with the symbol complement provided in the old
math font encodings discussed in section~\ref{sec:summary-old}.
In practice, this means that all existing symbols in the old
encodings must be represented somewhere in the new encodings,
with the only exception of a few non-mathematical glyphs that
will taken out explicitly. In addition, the composite glyphs
that are presently constructed by combining several glyphs
should also be represented as glyphs of their own wherever
possible.
X
Since the number of \TeX's math families is limited to a total
of~16, the new encoding should not take more room than the old
one did. In particular, it should be possible to achieve
compatibility with Plain \TeX{} or \LaTeX{} within four families
(encoded as {\T1}, {\MC}, {\MSP}, {\MXP}) as well as
compatibility with \AmSTeX{} or \AmSLaTeX{} within six families
(including {\MS1} and {\MS2} as well). If possible, it might be
a good idea to include the \LaTeX{} symbols within the first
four families as well, so that compatibility with the
\LaTeX{}~2.09 symbol complement could be achieved with one
family less than previously required. However, the latter is
only a secondary goal, and it wouldn't be a problem if some of
these symbols ended up elsewhere in the first six families.
X
\subsection{Technical considerations}
X
Apart from compatibility requirements, technical reasons are
perhaps the second most important factor. The primary result of
these considerations is that all symbols linked to other symbols
by any special means such as kerning, ligaturing, or the
\texttt{charlist} and \texttt{extensible} features in \TeX's
font metrics files must live together in the same font table.
Another result is that all symbols of variable family must
occupy the same slots in each font table to make the family
switching mechanism between \cs{mathrm}, \cs{mathnormal},
\cs{mathcal}, etc.\ work properly. If some characters are
unavailable, these slots should better be left empty and not be
allocated otherwise to avoid surprises.
X
FIXME: rewrite the following paragraph, mention the evolution
from OML (Greek italic + Latin italic), MathTime MY1 (one
complete set of Greek, but two sets of Greek capitals), to MC
(two complete sets of Greek)
X
X
\paragraph{Kerning:}
All characters that may need to be kerned with the default math
alphabet must live together in the {\MC} encoding. As a
consequence, the default Latin alphabet (math italics) will be
accompanied by two complete sets of Greek (upright and italics),
even though this may cause some complications when switching
between the two sets. Similarly, all the non-letter symbols that
may be needed for kerning with the Latin or Greek alphabets
(e.\,g.\ punctuation marks, delimiters, etc.) must be included
in this encoding as well, leaving very little room for
anything else.
X
FIXME: the following paragraph is plain wrong: long arrows in
MSP are handled by kerning, not by ligaturing, but ligaturing
does a play an important role in the arrow kit (introduced later).
Also mention the Greek control glyphs?
X
\paragraph{Ligaturing:}
As with kerning, all symbols implemented involving ligatures
also must live together in one font table. In a math symbol
font, ligatures are usually rare or non-existent, but they may
be put to good use when constructing composite symbols, such as
long arrows that are composed of an arrowhead, an arrow tail, and
an extension module. In Plain \TeX{}, a \cs{joinrel} macro was
used to combine building blocks taken from different fonts.
However, if care is taken to put all the building blocks into
one font table, the same effect may be achieved automatically
through the ligaturing mechanism.
X
\paragraph{Extensible symbols:}
As it is already the case in the {\OMX} encoding, all symbols in
the {\MX{n}} encodings linked through \texttt{charlist}s, such
as big delimiters of increasing height or wide accents of
increasing width, must live together. The positive side-effect
of this is that this allows to keep all \TeX{}-specific symbols
with unusual properties together in one or two math extension
fonts, so that the remaining symbol fonts will be unaffected
and as normal as possible.
X
\subsection{Simplicity and Orthogonality}
X
FIXME: Rewrite the following into a normal paragraph.
X
\begin{itemize}
\item avoid inter-dependencies between text fonts and math
X fonts, so don't use family~0 for any other purposes than the
X operator font or the \cs{mathrm} math alphabet,
\item avoid using symbols for different purposes, allocate
X separate glyphs for each purpose, even if that means several
X copies of the same symbol,
\item keep all Greek letters and letter-like symbols together
X in one font,
\item keep all humanist ``shapy'' symbols together and keep
X them separate from the geometric ``non-shapy'' symbols,
\item don't take design similarity too far, take availability
X and frequency of symbols into account,
\end{itemize}
X
X
X
\section{Details of the new font encodings}
\label{sec:details-new}
X
\paragraph{Common features:}
Each of the new font layouts (with the only exception
of~{\MX{n}}) will provide room for a complete math alphabet,
each in a different style, consisting of digits, letters, and
the dotless `\i'~and~`\j'. To allow switching between math
families, these glyphs will occupy the same slots in each font
table, even if only a subset is available, following the layout
to the {\T1} encoding.
%
In addition, each of the new encodings will reserve slot~32 as a
`space' glyph, which may not be needed for math typesetting in
\TeX{} but may help to make the fonts usable with other
software. Finally, slot~127 (\acro{ASCII} \texttt{DEL}) will
serve as the `skewchar', which is only used to encode accent
positioning information in kern pairs and will never be used for
actual typesetting.
X
\subsection{The T1-encoded math operator font}
X
Family~0 of the new math setup will contain a {\T1}-encoded
upright roman math operator font. This font encoding will only
be used for typesetting multi-letter operators such as `$\log$'
or `$\lim$', and to access the Latin letters of the \cs{mathrm}
math alphabet. Unlike its {\OT1}-encoded counterpart, it will
not be used for anything other than letters of the Latin
alphabet, so as not to create any unwanted inter-dependencies
between text fonts and math fonts.
X
The decision to use {\T1} encoding was primarily based on the
assumption that this encoding will ultimately be used as the new
default encoding for text fonts anyway, which would allow
arbitrary text fonts to be used for the multi-letter operators.
As long as only the \acro{ASCII} letters are used, any other
encodings with an \acro{ASCII}-subset would do just as well,
including {\T4}~(African FC-fonts) \cite{Knappen:TB14-2-104},
\texttt{8a}~(Adobe Standard), \texttt{8r}~(\TeX{}~Base1), or
{\LY1}~(Y\&Y's \TeX{}~'n~\acro{ANSI} encoding).
X
Although the math operator font will use the same encoding as
the text font ({\T1}~by default), it does not necessarily have
to be a text font. In particular, it may have the glyph width
and italic correction adjusted to produce good subscript and
superscript positioning, as long as this is not to the detriment
of setting multi-letter operators.
X
X
\subsection{The MC-encoded math core font}
X
The {\MC}-encoded math core font will represent the real
work-horse of the new math font encoding. As mentioned in the
previous section, the {\MC} encoding will include two complete
Greek alphabets (upright and italic), along with the default
Latin alphabet (italics) and the default numerals (upright).
In addition to the slash (`$/$') and the punctuation marks
that were included in the {\OML} encoding for kerning reasons,
the {\MC} encoding will also contain the basic-size delimiters
(parentheses, square brackets, curly braces, angle brackets).
X
Other letter-like glyphs (such as the Hebrew letters or the
`$\Re$'~and~`$\Im$' from {\OMS}) as well the so-called Humanist
symbols that strongly depend on the font design (e.\,g.\
`$\ast$', `$\dagger$', `$\ddagger$', etc.) will also be included
in the {\MC} encoding, but the motivation for this is
orthogonality of the font layouts. As long as the symbols
contained in the {\MS{n}} encodings can be restricted to
geometric symbols only, there is a chance that the same version
of {\MS{n}} may be used in combination with different versions
of {\MC} (e.\,g.\ Computer Modern, Concrete, and Euler).
X
The font will also contain enough font dimensions to be used as
family~2, since the positioning of subscripts and superscripts
depends much more on the math core font than the symbol fonts.
X
%% Greek control glyph and switching between upright/italic
X
%% allocation of default Greek in CM, Euler, Mathematica, ...
X
None of the encodings will specify bold or sans glyphs, since
these are expected to be kept in separate bold or sans math
fonts, with the same encoding. The glyphs which are most
commonly requested in bold will be placed in the {\MC} encoding,
so if many bold glyphs are used in a document, only one extra
{\MC} encoded family containing bold glyphs needs to be used.
If few bold glyphs are requested, these can be set using macros
similar to \cs{boldsymbol} from \AmSTeX{} or the \texttt{bm}
package.
X
X
\subsection{The MS-encoded math symbol fonts}
X
The {\MSP}, {\MS1} and {\MS2} encodings will contain the
geometric glyphs from {\OT1}, {\OML}, {\OMS} and the AMS symbol
fonts, plus frequently requested new glyphs such as
\cs{mapsfrom}. In addition, each symbol font will contain an
additional math alphabet, complete with upper and lower case,
dotless~i and~j and the digits:
\begin{itemize}
\item {\MSP} will contain Calligraphic or Script
\item {\MS1} will contain Blackboard Bold (`open face')
\item {\MS2} will contain Fraktur (`black letter')
\end{itemize}
X
All of the geometric glyphs used in Plain \TeX{} and \LaTeX{}
will be kept in the {\MSP} encoding, so compatibility with Plain
\TeX{} or \LaTeX{} can be achieved by loading four families,
encoded as {\T1}, {\MSP}, {\MC} and {\MXP}. Compatibility with
\AmSTeX{} or \AmSLaTeX{} can be achieved by loading six
families, encoded as {\T1}, {\MSP}, {\MC}, {\MXP}, {\MS1} and
{\MS2}.
X
X
\paragraph{The arrow kit.}
The upper half of the {\MS2} encoding is reserved for the
``arrow kit''. This means on the one hand that a lot of pieces
for building arrows---heads, stems and tails---are collected
here \cite{Jeffrey:1993a}. On the other hand, it means that
\TeX's ligature mechanism is used to automatically select the
proper glyphs. We have implemented the following syntax for
arrows, which is inspired by, but different from the syntax
proposed in \cite{Jeffrey:1993b}:
\begin{displaymath}
X \meta{left\_head}[\meta{none}][\meta{stem\_modifier}]
X \meta{extension}^{*}\meta{right\_head}[\meta{none}]
\end{displaymath}
Here \meta{left\_head} and \meta{right\_head} can be chosen
among 24~arrow heads, the \meta{extension} pieces can specify a
negation, a gap or an extension, which may also be gaped or
negated. The \meta{stem\_modifier} can be used to produce
dotted or squiggly arrows.
X
An additional benefit of this approach to arrow construction is
that only the head glyphs and the ``control glyphs'' used for
the \meta{stem\_modifier} and \meta{extension} pieces are
directly accessed through macros. The rest of the arrow kit is
a ``variable area'' which can vary from font to font without
sacrificing compatibility. (Each font has to provide a proper
ligature program though!)
X
X
\subsection{The MX-encoded math extension fonts}
X
The {\MXP} and {\MX1} encodings will contain all the \TeX{}-specific
glyphs from \verb|cmex|, \verb|msam|, and \verb|msbm|, plus
frequently requested glyphs such as longer math accents, double
brackets, and \cs{bigsqcap}.
X
Family~3 will contain an {\MXP} encoded font.
X
X
X
\section{User Interface}
\label{sec:user-interface}
X
Together with the font layouts and the virtual font
implementations, we have developed a set of macros to make the
new math font encodings accessible from within \LaTeX{}
\cite{Clasen:1997:newmath}, consisting of the following
components:
X
\begin{description}
\item[\Filename{fontmath.cfg}] is a configuration file that may
X be used to generate a \LaTeX{} format with the new math setup
X included. It provides all the macros needed for compatibility
X with the standard \LaTeX{} math setup, mostly consisting of
X \cs{DeclareMathSymbol} statements and similar to establish
X the control sequence names to access the math symbols.
X
\item[\Filename{newmath.sty}] is a \LaTeX{} package file that
X provides some additional macros which can be enabled through
X package options such as \Option{amssymb} (extra symbols in the
X {\MS1} and {\MS2} encodings), \Option{extraops} (extra
X operators and delimiters in the {\MX1} encoding),
X or~\Option{accents} (special macros for over- and underaccents).
X It also provides the infrastructure for changes to the math
X layouts through so-called \Filename{*.mfd} files (see below).
X
\item[\Filename{oldmath.sty}] ia a \LaTeX{} package file that
X reverts to the traditional \LaTeX{} math setup. This can be
X used to process old files which require the traditional math
X setup, even if the \LaTeX{} format includes the new math
X setup.
X
\item[\Filename{*.mfd} files] (math font definitions) are files
X that describe the individual math layouts.
X Each `\Filename{.mfd}' file establishes a mapping between the
X predefined math families and one particular set of virtual
X fonts implementing the new encodings. In addition, the
X `\Filename{.mfd}' files may also introduce adjustments to
X various parameters influencing \TeX's math typesetting such as
X the values of \cs{thinmuskip}, \cs{medmuskip},
X and~\cs{thickmuskip} or the sizes of \cs{textstyle},
X \cs{scriptstyle}, and~\cs{scriptscriptstyle} fonts.
X
\item[\Filename{*.fd} files] (font definitions) are used as
X usual to establish a mapping between symbolic NFSS font
X attributes and external font file names. The eventual font
X names of the virtual fonts implementing the new encodings
X have not been finalized yet and may be subject to change.
\end{description}
X
The packages \Package{newmath} and \Package{oldmath} have been
designed to work equally well with standard \LaTeX{} formats and
modified \LaTeX{} formats containing the new math setup (i.\,e.\
formats built using \Filename{fontmath.cfg}). With the new math
setup, changing the math layout no longer requires loading a
special-purpose macro package and simply means adding the
appropriate option to the \verb|\usepackage{newmath}| statement.
A list of available package options (i.\,e.\ currently supported
math layouts) is given in Table~\ref{tab:math-layouts}.
X
\begin{table}
X \leavevmode
X \centering
X \begin{tabular}{@{}ll@{}}
X \textbf{Math Layout} & \textbf{Option} \\[3pt]
X Computer Modern & \Option{cm} (default) \\
X Concrete / Concrete Math & \Option{concrete} \\
X Concrete / AMS Euler & \Option{euler} \\
X Times / Adobe Symbol & \Option{mathptm} \\
X Times / Mathematica & \Option{mathematica} \\
X Times / MathTime & \Option{mathtime} \\
X Lucida New Math & \Option{lucida} \\[6pt]
X \end{tabular}
X \caption{Currently supported math layouts in \texttt{newmath.sty}.}
X \label{tab:math-layouts}
\end{table}
X
So far the development of the user interface has focused on
\LaTeX{} only. However, a Plain \TeX{} interface also needs
developed eventually to fulfill the goals of developing a new
encoding suitable for use with \AllTeX{}. For most of the code,
preparing a Plain \TeX{} version simply means rewriting
\cs{DeclareMathSymbol} statements into straight-forward
\cs{mathchardef} or \cs{mathcode} assignments.
X
X
\section{Implementation Issues}
\label{sec:implementation}
X
\subsection{Virtual Fonts}
X
%% which versions are available CM, Concrete, Euler, Times/Symbol, etc.
%% how many variants (e.g. cmsy/rsfs, msbm/bbold/bbm, etc.)
X
\subsection{\MF{} work}
X
X
\section{Discussion}
\label{sec:discussion}
X
\subsection{Is there a better way?}
X
\paragraph{Replacing T1/MC by MA/MA?}
In the present proposal, the {\MC} font is supposed to include
the default (italic) Latin alphabet combined with two sets of
Greek, while the {\T1}-encoded font provides the upright Latin
alphabet. Since this may cause complications when trying to
switch math alphabets for Greek letters, an alternative idea
was brought up to the effect of replacing the {\T1}/{\MC} combo
by a combination of two fonts in a math-alternate encoding,
each containing only one set of Latin and Greek. Although
this approach may seem attractive, it loses the ability to
have kerning between the upright and italics greek letters.
X
X
\paragraph{Splitting MX?}
In the present proposal, it was decided to split the originally
proposed {\MX{}} encoding into {\MXP} and {\MX1} soon after the
implementation work began. For compatibility, all existing
symbols from {\OMX} must be included in {\MXP}, while all newly
introduced symbols were placed into {\MX1}, leaving enough room
in both font tables to include some extra sizes. The question
remains whether there may be good reasons to put some of the
most frequently requested new symbols (e.\,g. the semantic
brackets $[\![ \dots ]\!]$ and some big operators) into {\MXP},
or whether there might be an advantage in having only a single
combined {\MX{}} by default which may be replaced by two
{\MX{n}} fonts only when an optional \LaTeX{} package is loaded.
X
X
\paragraph{Design similarity or availability?}
In the original `Aston' proposal, design similarity was proposed
as one of the major factors to consider in the distribution of
symbols among the {\MSP} and {\MS1} encodings. While this is not
a bad idea by itself, there is a slight danger, that the argument
is taken too far, leading to the inclusion of rare or unusual
symbols that would be absent is most implementations. If the
availability of symbols is given a higher priority, it will seem
preferable to arrange symbols differently, so that {\MSP} will
be as complete as possible in a particular implementation, while
{\MS1} might remain nearly empty.
X
X
\subsection{More Symbols?}
X
FIXME: The following is probably too verbose and should be
shortened to the most essential points.
X
Here's a list of various new letter-like symbols which have been
proposed during the group's discussion. Some of these have been
implemented, but others may be regarded as highly questionable:
\begin{itemize}
\item a variant uppercase Greek Chi
X \\
X This character is a new idea that was requested by some
X high-energy physicists, who would like to have an uppercase
X Greek~`Chi' that was clearly distinguishable from a Latin~`X'.
X At present, some slots have been reserved, but it remains to
X be seen if and how they may be filled. (Some \MF{} work will
X be required.)
X
\item a variant lowercase Greek beta
X \\
X This character appears in classical Greek text typesetting,
X but it is not well established in modern math typesetting.
X (For example, it doesn't appear in the ISO standards about
X typesetting symbols in physics.) It is available in some
X Unicode fonts, e.\,g.\ in Yannis Haralambous' OmegaTimes
X \cite{Haralambous:TB17-2-126}, but it seems unreasonable to
X include it in the new math fonts, since it will be missing
X in almost all implementations.
X
\item the archaic Greek numerals (Digamma, Koppa, Sampi)
X \\
X These characters do exist in the Mathematica symbol fonts
X \cite{Wolfram:1996:Mathematica} (in upper- and lowercase), and
X also in OmegaTimes \cite{Haralambous:TB17-2-126}, but most
X other font sets will at best provide a `digamma' which does
X have a well-establish function in math mode and is also
X included in the \AmS{} fonts.
X
\item the Icelandic eth and thorn
X \\
X These characters were reported to be used for some special
X kinds of averaged differentials in some branch of physics.
X (Penrose and Rindler: Spinors and space-time, Cambridge, 1984)
X The `eth' but not the `thorn' does exist in the \AmS{} fonts.
X At present, slots for both of them have been reserved in the
X {\MC} encoding, but in case there is not enough room they
X might also be taken from {\T1}.
X
\item the hbar and lambda-bar symbols
X \\
X The symbol $\hbar$ (or $\hslash$) is a widely-used and
X well-established notation in quantum mechanics, denoting
X Planck's constant over~$2\pi$. In Plain \TeX{}, $\hbar$ as a
X macro, but the \AmS{} fonts a ready-mode and some other font
X sets (Mathematica, Lucida) do provide a more robust ready-made
X symbol. The barred or slashed $\lambda$ denotes a wavelength
X over~$2\pi$ and is also provided in some font sets
X (Mathematica, Lucida).
\end{itemize}
X
X
\section{Further Information}
\label{sec:info}
X
The public discussions of the Math Font Group have been taking
place on an electronic mailing list \url{math-font-discuss},
which may be subscribed to by sending a message to the list
owner at the address
\begin{verbatim}
X math-font-request@cogs.susx.ac.uk
\end{verbatim}
Archives of discussion papers, technical reports, preliminary
test implementations, as well as complete mail archives are
available at the MFGG home page on the World Wide Web
at
\begin{verbatim}
X http://www.tug.org/twg/mfg/
\end{verbatim}
It is planned to publish a more detailed report, once the
remaining issues have been sorted out, either as a
\emph{TUGboat} article or as a \LaTeX3 Technical Report.
X
X
\clearpage
\section*{Acknowledgements}
X
We wish to thank Frank Mittelbach of the \LaTeX3 Project for his
encouragement especially during the early phase of the project
and for arranging support of our work. We also wish to express
our special thanks to Berthold Horn of Y\&Y~Inc. for kindly
providing us with ``evaluation copies'' of the MathTime and
Lucida New Math font sets. Finally, we also wish to thank Karl
Berry for providing an account on \texttt{www.tug.org} to
establish a home page and an archive for the Math Font Group.
X
X
\bibliographystyle{cah-gut}
\bibliography{mfg-euro}
X
\end{document}
X
X
% ==============================================================
X
\clearpage
\appendix
X
\parskip=0pt
\abovedisplayskip=0pt
\belowdisplayskip=0pt
X
\newcount\firstchar
\newcount\lastchar
X
\def\fulltable{\firstchar=0 \lastchar=256}
\def\lowerhalf{\firstchar=0 \lastchar=128}
\def\upperhalf{\firstchar=128 \lastchar=256}
X
%% code from testfont.tex (MFbook, App. H), with modifications
X
\newcount\m \newcount\n \newcount\p \newdimen\dim
\def\startfont{\font\testfont=\fontname \spaceskip=0pt
X \testfont \setbaselineskip
X \ifdim\fontdimen6\testfont<10pt \rightskip=0pt plus 20pt
X \else\rightskip=0pt plus 2em \fi
X \spaceskip=\fontdimen2\testfont % space between words (\raggedright)
X \xspaceskip=\fontdimen2\testfont
X \advance\xspaceskip by\fontdimen7\testfont}
\def\setbaselineskip{\setbox0=\hbox{\n=0
\loop\char\n \ifnum \n<255 \advance\n 1 \repeat}
\baselineskip=6pt \advance\baselineskip\ht0 \advance\baselineskip\dp0 }
\def\oct#1{\hbox{\rm\'{}\kern-.2em\it#1\/\kern.05em}} % octal constant
\def\hex#1{\hbox{\rm\H{}\tt#1}} % hexadecimal constant
\def\setdigs#1"#2{\gdef\h{#2}% \h=hex prefix; \0\1=corresponding octal
X \m=\n \divide\m by 64 \xdef\0{\the\m}%
X \multiply\m by-64 \advance\m by\n \divide\m by 8 \xdef\1{\the\m}}
\def\testrow{\setbox0=\hbox{\penalty 1\def\\{\char"\h}%
X \\0\\1\\2\\3\\4\\5\\6\\7\\8\\9\\A\\B\\C\\D\\E\\F%
X \global\p=\lastpenalty}} % \p=1 if none of the characters exist
\def\oddline{\cr
X \noalign{\nointerlineskip}
X \multispan{19}\hrulefill&
X \setbox0=\hbox{\lower 2.3pt\hbox{\hex{\h x}}}\smash{\box0}\cr
X \noalign{\nointerlineskip}}
\newif\ifskipping
\def\evenline{\loop\skippingfalse
X \ifnum\n<\lastchar \m=\n \divide\m 16 \chardef\next=\m
X \expandafter\setdigs\meaning\next \testrow
X \ifnum\p=1 \skippingtrue \fi\fi
X \ifskipping \global\advance\n 16 \repeat
X \ifnum\n=\lastchar \let\next=\endchart\else\let\next=\morechart\fi
X \next}
\def\morechart{\cr\noalign{\hrule\penalty5000}
X \chartline \oddline \m=\1 \advance\m 1 \xdef\1{\the\m}
X \chartline \evenline}
\def\chartline{&\oct{\0\1x}&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&\:&&}
\def\chartstrut{\lower4.5pt\vbox to14pt{}}
\def\table{$$\global\n=\firstchar
X \halign to\hsize\bgroup
X \chartstrut##\tabskip0pt plus10pt&
X &\hfil##\hfil&\vrule##\cr
X \lower6.5pt\null
X &&&\oct0&&\oct1&&\oct2&&\oct3&&\oct4&&\oct5&&\oct6&&\oct7&\evenline}
\def\endchart{\cr\noalign{\hrule}
X \raise11.5pt\null&&&\hex 8&&\hex 9&&\hex A&&\hex B&
X &\hex C&&\hex D&&\hex E&&\hex F&\cr\egroup$$\par}
\def\:{\setbox0=\hbox{\char\n}%
X \ifdim\ht0>7.5pt\reposition
X \else\ifdim\dp0>2.5pt\reposition\fi\fi
X \box0\global\advance\n 1 }
\def\reposition{\setbox0=\vbox{\kern2pt\box0}\dim=\dp0
X \advance\dim 2pt \dp0=\dim}
\def\centerlargechars{
X \def\reposition{\setbox0=\hbox{$\vcenter{\kern2pt\box0\kern2pt}$}}}
X
% ==============================================================
X
\section{Math Core Encoding, CM version}
\enlargethispage{2\baselineskip}
\fulltable
\def\fontname{xma1000}\startfont\table
\newpage
X
\section{Math Core Encoding, Euler version}
\enlargethispage{2\baselineskip}
\fulltable
\def\fontname{xea1000}\startfont\table
\newpage
X
\section{Math Symbol Primary Encoding}
\enlargethispage{3\baselineskip}
\fulltable
\def\fontname{xmc1000}\startfont\table
\newpage
X
\section{Math Symbol 1 Encoding}
\enlargethispage{2\baselineskip}
\fulltable
\def\fontname{xmd1000}\startfont\table
\newpage
X
\section{Math Symbol 2 Encoding}
\enlargethispage{2\baselineskip}
\fulltable
\def\fontname{xme1000}\startfont\table
\newpage
X
\section{Math Extension 1 Encoding}
\enlargethispage{2\baselineskip}
\centerlargechars\lowerhalf
\def\fontname{xmbs1000}\startfont\table
\vfill\newpage
\centerlargechars\upperhalf
\def\fontname{xmbs1000}\startfont\table
\vfill\newpage
X
\section{Math Extension 2 Encoding}
\centerlargechars\fulltable
\def\fontname{xmfs1000}\startfont\table
\vfill\newpage
X
\end{document}
X
% ==============================================================
X
%%% Local Variables:
%%% mode: latex
%%% fill-column: 64
%%% TeX-master: t
%%% End:
X
SHAR_EOF
$shar_touch -am 1205045897 'mfg-euro.tex' &&
chmod 0644 'mfg-euro.tex' ||
$echo 'restore of' 'mfg-euro.tex' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'mfg-euro.tex:' 'MD5 check failed'
fcca22b9c2f628db27d3ee4685b14a08 mfg-euro.tex
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'mfg-euro.tex'`"
test 47491 -eq "$shar_count" ||
$echo 'mfg-euro.tex:' 'original size' '47491,' 'current size' "$shar_count!"
fi
fi
# ============= mfg-euro.bib ==============
if test -f 'mfg-euro.bib' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'mfg-euro.bib' '(file already exists)'
else
$echo 'x -' extracting 'mfg-euro.bib' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'mfg-euro.bib' &&
@preamble{"\newcommand{\noopsort}[1]{}"}
X
@String{TUGboat = "TUGboat"}
@String{TTN = "{\TeX} and TUG News"}
X
%% TUGboat
X
@Article{Knuth:TB10-1-31,
X author = "Donald~E. Knuth",
X title = "{Typesetting \emph{Concrete Mathematics}}",
X journal = TUGboat,
X year = "1989",
X volume = "10",
X number = "1",
X pages = "31--36",
}
X
@Article{Mittelbach:TB10-2-222,
X author = "Frank Mittelbach and Rainer Sch{\"o}pf",
X title = "{A new font selection scheme for {\TeX} macro
X packages\Dash The basic macros}",
X journal = TUGboat,
X year = "1989",
X volume = "10",
X number = "2",
X pages = "222--238",
}
X
@Article{Beebe:TB11-2-171,
X author = "Nelson Beebe",
X title = "{Character set encoding}",
X journal = TUGboat,
X year = "1990",
X volume = "11",
X number = "2",
X pages = "171--175",
}
X
@Article{Bien:TB11-2-175,
X author = "Janusz S. Bie{\'n}",
X title = "{On standards for computer modern font extensions}",
X journal = TUGboat,
X year = "1990",
X volume = "11",
X number = "2",
X pages = "175--183",
}
X
@Article{Mittelbach:TB11-2-297,
X author = "Frank Mittelbach and Rainer Sch{\"o}pf",
X title = "{The new font family selection\Dash User interface
X to standard {\LaTeX}}",
X journal = TUGboat,
X year = "1990",
X volume = "11",
X number = "2",
X pages = "297--305",
}
X
@Article{Ferguson:TB11-4-514,
X author = "Michael Ferguson",
X title = "{Report on multilingual activities}",
X journal = TUGboat,
X year = "1990",
X volume = "11",
X number = "4",
X pages = "514--516",
}
X
@Article{Knappen:TB14-2-104,
X author = "J{\"o}rg Knappen",
X title = "{Fonts for Africa: The FC-fonts}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "2",
X pages = "104--106",
}
X
@Article{Rahtz:TB14-2-107,
X author = "Sebastian Rahtz",
X title = "{Implementing the extended {\TeX} layout using PS
X fonts}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "2",
X pages = "107--117",
}
X
@Article{Rahtz:TB14-2-132,
X author = "Sebastian Rahtz",
X title = "{Essential NFSS2}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "2",
X pages = "132--137",
}
X
@Article{Horn:TB14-3-282,
X author = "Berthold Horn",
X title = "{Where are the math fonts?}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "3",
X pages = "282--284",
}
X
@Article{Jeffrey:TB14-3-285,
X author = "Alan Jeffrey",
X title = "{A {\PS} font installation package written in
X {\TeX}}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "3",
X pages = "285--292",
}
X
@Article{Jeffrey:TB14-3-293,
X author = "Alan Jeffrey",
X title = "{Math font encodings: A workshop summary}",
X journal = TUGboat,
X year = "1993",
X volume = "14",
X number = "3",
X pages = "293--295",
}
X
@Article{Jeffrey:TB15-3-263,
X author = "Alan Jeffrey",
X title = "{{\PS} font support in {\LaTeXe}}",
X journal = TUGboat,
X year = "1994",
X volume = "15",
X number = "3",
X pages = "263--268",
}
X
@Article{Knappen:TB17-2-99,
X author = "J{\"o}rg Knappen",
X title = "{The DC fonts 1.3: Move towards stability and
X completeness}",
X journal = TUGboat,
X year = "1996",
X volume = "17",
X number = "2",
X pages = "99--101",
}
X
@Article{Haralambous:TB17-2-126,
X author = "Yannis Haralambous",
X title = "{{$\Omega$}{Times} and {$\Omega$}{Helvetica} fonts
X under development: {Step One}}",
X journal = TUGboat,
X year = "1996",
X volume = "17",
X number = "2",
X pages = "126--146",
}
X
%% TeX and TUG News
X
@Article{LaTeX3:TTN3-1-7,
X author = "Frank Mittelbach and Chris Rowley",
X title = "{\LaTeX3 News in 1993}",
X journal = TTN,
X year = 1994,
X volume = "3",
X number = "1",
X pages = "7--11",
}
X
@Article{LaTeX3:TTN4-2-17,
X author = "Frank Mittelbach and Chris Rowley",
X title = "{Math Font Encoding}",
X journal = TTN,
X year = 1994,
X volume = "4",
X number = "2",
X pages = "17--18",
}
X
%% Cahiers GUTenberg
X
@Article{Bouche:Cah25-1,
X author = {Thierry Bouche},
X title = {{Sur la diversit{\'e} des fontes math{\'e}matiques}},
X journal = "Cahiers GUTenberg",
X year = "1996",
X volume = "??",
X number = "25",
X pages = "1--24",
}
X
X
%% Proceedings
X
@InProceedings{Knappen:Euro92,
X author = {J{\"o}rg Knappen},
X title = {{Changing the appearance of math}},
X booktitle = {{Proceedings of the 7th European {\TeX} Conference,
X September 14--18, 1992, Prague, Czechoslovakia}},
X editor = {{Ji\v{r}\'{\i} Zlatu\v{s}ka}},
X year = "1992",
X month = sep,
X pages = "212--216",
X publisher = {{$\mathcal{CS}$}TUG},
}
X
@InProceedings{Knappen:Euro95,
X author = {J{\"o}rg Knappen},
X title = {{The release 1.2 of the Cork encoded DC fonts and
X the text companion symbol fonts}},
X booktitle = {{Proceedings of the 9th European {\TeX} Conference,
X September 4--8, 1995, Arnheim, The Netherlands}},
X editor = {Wietse Dol},
X year = "1995",
X month = sep,
X pages = "239--254",
X publisher = {{$\mathcal{NTG}$}},
}
X
X
%% Books
X
@Book{Knuth:1986:VolE,
X author = "Donald~E. Knuth",
X title = "Computer Modern Typefaces",
X volume = "E",
X publisher = "Addison-Wesley",
X year = "{\noopsort{1996e}}1986",
X series = "Computers \& Typesetting",
}
X
@Article{Knuth:1989:Errors,
X author = "Donald~E. Knuth",
X title = "The Errors of {\TeX}",
X journal = "Software\Dash Practice and Experience",
X year = "1989",
X volume = "19",
X number = "7",
X pages = "607--681",
X note = "reprinted as Chapters~9--10 of \cite{Knuth:1992:LP}"
}
X
@Book{Knuth:1992:LP,
X author = "Donald~E. Knuth",
X title = "Literate Programming",
X publisher = "Center for the Study of Language and
X Information\slash Cambridge University Press",
X year = "1992",
X series = "CSLI Lecture Notes No.~27",
}
X
@Book{Goossens:1994:LC,
X author = "Michel Goossens and Frank Mittelbach and Alexander
X Samarin",
X title = "The {\LaTeX} Companion",
X publisher = "Addison-Wesley",
X year = "1994",
}
X
@Book{Goossens:1997:LGC,
X author = "Michel Goossens and Frank Mittelbach and Sebastian
X Rahtz",
X title = "The {\LaTeX} Graphics Companion",
X publisher = "Addison-Wesley",
X year = "1997",
}
X
@Book{Wolfram:1996:Mathematica,
X author = "Stephen Wolfram",
X title = "The Mathematica Book",
X publisher = "Wolfram Media\slash Cambridge University Press",
X year = "1996",
X edition = "3rd",
}
X
@Book{Hoenig:1998:Unbound,
X author = "Alan Hoenig",
X title = "{\TeX} Unbound: {\LaTeX} and {\TeX} Stategies for
X Fonts, Graphics, and More",
X publisher = "Oxford University Press",
X year = "1998",
}
X
X
%% Utilities
X
@Misc{Hoenig:VFInst,
X author = {Alan Hoenig},
X title = {{The \texttt{VFinst} virtual font installer}},
X year = "{\noopsort{1997a}}1997",
X month = apr,
X note = {available from \url{CTAN:fonts/utilities/vfinst/}},
}
X
@Misc{Hoenig:MathInst,
X author = {Alan Hoenig},
X title = {{\texttt{MathInst}: New math fonts for {\TeX}}},
X year = "{\noopsort{1997b}}1997",
X month = may,
X note = {available from
X \url{CTAN:fonts/utilities/mathinst/}},
}
X
@Misc{Hoenig:MathKit,
X author = {Alan Hoenig},
X title = {{Hundreds of new math fonts with \texttt{MathKit}}},
X year = "{\noopsort{1997c}}1997",
X month = may,
X note = {available from
X \url{CTAN:fonts/utilities/mathkit/}},
}
X
X
%% MFG Papers and Reports
X
@Misc{Jeffrey:1993a,
X author = {Alan Jeffrey},
X title = {{Requirements for setting arrows}},
X year = "{\noopsort{1993a}}1993",
X month = aug,
X note = {available from \url{CTAN:info/ltx3pub/arrowreq.tex}},
}
X
@Misc{Jeffrey:1993b,
X author = {Alan Jeffrey},
X title = {{Control glyphs for arrows}},
X year = "{\noopsort{1993b}}1993",
X month = aug,
X note = {available from \url{CTAN:info/ltx3pub/arrocont.tex}},
}
X
@TechReport{Ziegler:1994,
X author = {Justin Ziegler},
X title = {{Technical Report on Math Font Encodings}},
X institution = {},
X type = {{\LaTeX3 Project Documentation}},
X year = "1994",
X month = jun,
X note = {available from \url{CTAN:info/ltx3pub/l3d007.tex}},
}
X
@TechReport{Clasen:1997,
X author = {Matthias Clasen},
X title = {{An implementation of new math fonts}},
X institution = {},
X type = {{Technical Report}},
X year = "1997",
X note = {in preparation},
}
X
@Misc{Clasen:1997:newmath,
X author = {Matthias Clasen},
X title = {{A new implementation of {\LaTeX} math}},
X note = {source documentation of \url{newmath.dtx}},
X year = "1997",
}
X
X
%% LaTeX packages
X
@Misc{Jeffrey:fontinst,
X author = {Alan Jeffrey},
X title = {The \texttt{fontinst} package},
X note = {available from
X \url{CTAN:fonts/utilities/fontinst/doc/fontinst.tex}},
X year = "1994",
X month = jun,
}
X
@Misc{Haralambous:yhmath,
X author = {Yannis Haralambous},
X title = {{My humble addtions to {\AllTeX} mathematics}},
X note = {available from
X \url{CTAN:macros/latex/contrib/supported/yhmath/}},
X year = "1996",
X month = jan,
}
X
@Misc{Vieth:concmath,
X author = {Ulrik Vieth},
X title = {The \texttt{concmath} package},
X note = {available from
X \url{CTAN:macros/latex/contrib/supported/concmath/}},
X year = "1997",
X month = oct,
}
X
@Misc{Jensen:beton,
X author = {Frank Jensen},
X title = {The \texttt{beton} package},
X note = {available from
X \url{CTAN:macros/latex/contrib/supported/beton/}},
X year = "{1992--95}",
}
X
@Misc{Jensen:euler,
X author = {Frank Jensen},
X title = {The \texttt{euler} package},
X note = {available from
X \url{CTAN:macros/latex/contrib/supported/euler/}},
X year = "{1992--95}",
}
X
@Misc{Rahtz:textcomp,
X author = {Sebastian Rahtz},
X title = {The \texttt{textcomp} package for using text
X companion fonts},
X note = {available from
X \url{CTAN:fonts/psfonts/ts1/}},
X year = "{1995--97}",
}
X
@Misc{Mittelbach:mathtime,
X author = {Frank Mittelbach and David Carlisle},
X title = {The \texttt{mathtime} and \texttt{mathpi} packages},
X note = {available from
X \url{CTAN:macros/latex/packages/psnfss/}},
X year = "1997",
}
X
@Misc{Rahtz:lucidabr,
X author = {Sebastian Rahtz and David Carlisle},
X title = {The \texttt{lucidabr} package},
X note = {available from
X \url{CTAN:macros/latex/packages/psnfss/}},
X year = "1997",
}
X
X
X
SHAR_EOF
$shar_touch -am 1204232797 'mfg-euro.bib' &&
chmod 0644 'mfg-euro.bib' ||
$echo 'restore of' 'mfg-euro.bib' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'mfg-euro.bib:' 'MD5 check failed'
ca916cfbd9796df112e69c42b3a556c1 mfg-euro.bib
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'mfg-euro.bib'`"
test 11249 -eq "$shar_count" ||
$echo 'mfg-euro.bib:' 'original size' '11249,' 'current size' "$shar_count!"
fi
fi
# ============= mfg-euro.bbl ==============
if test -f 'mfg-euro.bbl' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'mfg-euro.bbl' '(file already exists)'
else
$echo 'x -' extracting 'mfg-euro.bbl' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'mfg-euro.bbl' &&
\newcommand{\noopsort}[1]{}
\begin{thebibliography}{10}
\newcommand{\enquote}[1]{``#1''}
X
\bibitem{Beebe:TB11-2-171}
\textsc{Nelson Beebe}, \enquote{{Character set encoding}}, \textit{TUGboat},
X Vol.~11, No.~2, 171--175, 1990.
X
\bibitem{Bien:TB11-2-175}
\textsc{Janusz~S. Bie{\'n}}, \enquote{{On standards for computer modern font
X extensions}}, \textit{TUGboat}, Vol.~11, No.~2, 175--183, 1990.
X
\bibitem{Bouche:Cah25-1}
\textsc{Thierry Bouche}, \enquote{{Sur la diversit{\'e} des fontes
X math{\'e}matiques}}, \textit{Cahiers GUTenberg}, Vol.~??, No.~25, 1--24,
X 1996.
X
\bibitem{Clasen:1997:newmath}
\textsc{Matthias Clasen}, \enquote{{A new implementation of {\LaTeX} math}},
X 1997, source documentation of \url{newmath.dtx}.
X
\bibitem{Clasen:1997}
\textsc{Matthias Clasen}, \enquote{{An implementation of new math fonts}},
X {Technical Report}, 1997, in preparation.
X
\bibitem{Ferguson:TB11-4-514}
\textsc{Michael Ferguson}, \enquote{{Report on multilingual activities}},
X \textit{TUGboat}, Vol.~11, No.~4, 514--516, 1990.
X
\bibitem{Goossens:1997:LGC}
\textsc{Michel Goossens, Frank Mittelbach, {\upshape and} Sebastian Rahtz},
X \textit{The {\LaTeX} Graphics Companion}, Addison-Wesley, 1997.
X
\bibitem{Goossens:1994:LC}
\textsc{Michel Goossens, Frank Mittelbach, {\upshape and} Alexander Samarin},
X \textit{The {\LaTeX} Companion}, Addison-Wesley, 1994.
X
\bibitem{Haralambous:yhmath}
\textsc{Yannis Haralambous}, \enquote{{My humble addtions to {\AllTeX}
X mathematics}}, Jan. 1996, available from
X \url{CTAN:macros/latex/contrib/supported/yhmath/}.
X
\bibitem{Haralambous:TB17-2-126}
\textsc{Yannis Haralambous}, \enquote{{{$\Omega$}{Times} and
X {$\Omega$}{Helvetica} fonts under development: {Step One}}},
X \textit{TUGboat}, Vol.~17, No.~2, 126--146, 1996.
X
\bibitem{Hoenig:VFInst}
\textsc{Alan Hoenig}, \enquote{{The \texttt{VFinst} virtual font installer}},
X Apr. {\noopsort{1997a}}1997, available from
X \url{CTAN:fonts/utilities/vfinst/}.
X
\bibitem{Hoenig:MathInst}
\textsc{Alan Hoenig}, \enquote{{\texttt{MathInst}: New math fonts for {\TeX}}},
X May {\noopsort{1997b}}1997, available from
X \url{CTAN:fonts/utilities/mathinst/}.
X
\bibitem{Hoenig:MathKit}
\textsc{Alan Hoenig}, \enquote{{Hundreds of new math fonts with
X \texttt{MathKit}}}, May {\noopsort{1997c}}1997, available from
X \url{CTAN:fonts/utilities/mathkit/}.
X
\bibitem{Hoenig:1998:Unbound}
\textsc{Alan Hoenig}, \textit{{\TeX} Unbound: {\LaTeX} and {\TeX} Stategies for
X Fonts, Graphics, and More}, Oxford University Press, 1998.
X
\bibitem{Horn:TB14-3-282}
\textsc{Berthold Horn}, \enquote{{Where are the math fonts?}} \textit{TUGboat},
X Vol.~14, No.~3, 282--284, 1993.
X
\bibitem{Jeffrey:TB14-3-285}
\textsc{Alan Jeffrey}, \enquote{{A {\PS} font installation package written in
X {\TeX}}}, \textit{TUGboat}, Vol.~14, No.~3, 285--292, 1993.
X
\bibitem{Jeffrey:TB14-3-293}
\textsc{Alan Jeffrey}, \enquote{{Math font encodings: A workshop summary}},
X \textit{TUGboat}, Vol.~14, No.~3, 293--295, 1993.
X
\bibitem{Jeffrey:1993a}
\textsc{Alan Jeffrey}, \enquote{{Requirements for setting arrows}}, Aug.
X {\noopsort{1993a}}1993, available from \url{CTAN:info/ltx3pub/arrowreq.tex}.
X
\bibitem{Jeffrey:1993b}
\textsc{Alan Jeffrey}, \enquote{{Control glyphs for arrows}}, Aug.
X {\noopsort{1993b}}1993, available from \url{CTAN:info/ltx3pub/arrocont.tex}.
X
\bibitem{Jeffrey:TB15-3-263}
\textsc{Alan Jeffrey}, \enquote{{{\PS} font support in {\LaTeXe}}},
X \textit{TUGboat}, Vol.~15, No.~3, 263--268, 1994.
X
\bibitem{Jeffrey:fontinst}
\textsc{Alan Jeffrey}, \enquote{The \texttt{fontinst} package}, Jun. 1994,
X available from \url{CTAN:fonts/utilities/fontinst/doc/fontinst.tex}.
X
\bibitem{Jensen:beton}
\textsc{Frank Jensen}, \enquote{The \texttt{beton} package}, {1992--95},
X available from \url{CTAN:macros/latex/contrib/supported/beton/}.
X
\bibitem{Jensen:euler}
\textsc{Frank Jensen}, \enquote{The \texttt{euler} package}, {1992--95},
X available from \url{CTAN:macros/latex/contrib/supported/euler/}.
X
\bibitem{Knappen:Euro92}
\textsc{J{\"o}rg Knappen}, \enquote{{Changing the appearance of math}}, in
X \textit{{Proceedings of the 7th European {\TeX} Conference, September 14--18,
X 1992, Prague, Czechoslovakia}}, edited by {Ji\v{r}\'{\i} Zlatu\v{s}ka},
X {$\mathcal{CS}$}TUG, 212--216, Sep. 1992.
X
\bibitem{Knappen:TB14-2-104}
\textsc{J{\"o}rg Knappen}, \enquote{{Fonts for Africa: The FC-fonts}},
X \textit{TUGboat}, Vol.~14, No.~2, 104--106, 1993.
X
\bibitem{Knappen:Euro95}
\textsc{J{\"o}rg Knappen}, \enquote{{The release 1.2 of the Cork encoded DC
X fonts and the text companion symbol fonts}}, in \textit{{Proceedings of the
X 9th European {\TeX} Conference, September 4--8, 1995, Arnheim, The
X Netherlands}}, edited by Wietse Dol, {$\mathcal{NTG}$}, 239--254, Sep. 1995.
X
\bibitem{Knappen:TB17-2-99}
\textsc{J{\"o}rg Knappen}, \enquote{{The DC fonts 1.3: Move towards stability
X and completeness}}, \textit{TUGboat}, Vol.~17, No.~2, 99--101, 1996.
X
\bibitem{Knuth:1989:Errors}
\textsc{Donald~E. Knuth}, \enquote{The Errors of {\TeX}}, \textit{Software\Dash
X Practice and Experience}, Vol.~19, No.~7, 607--681, 1989, reprinted as
X Chapters~9--10 of \cite{Knuth:1992:LP}.
X
\bibitem{Knuth:TB10-1-31}
\textsc{Donald~E. Knuth}, \enquote{{Typesetting \emph{Concrete Mathematics}}},
X \textit{TUGboat}, Vol.~10, No.~1, 31--36, 1989.
X
\bibitem{Knuth:1992:LP}
\textsc{Donald~E. Knuth}, \textit{Literate Programming}, CSLI Lecture Notes
X No.~27, Center for the Study of Language and Information\slash Cambridge
X University Press, 1992.
X
\bibitem{Knuth:1986:VolE}
\textsc{Donald~E. Knuth}, \textit{Computer Modern Typefaces}, Vol.~E of
X \textit{Computers \& Typesetting}, Addison-Wesley, {\noopsort{1996e}}1986.
X
\bibitem{Mittelbach:mathtime}
\textsc{Frank Mittelbach {\upshape and} David Carlisle}, \enquote{The
X \texttt{mathtime} and \texttt{mathpi} packages}, 1997, available from
X \url{CTAN:macros/latex/packages/psnfss/}.
X
\bibitem{LaTeX3:TTN3-1-7}
\textsc{Frank Mittelbach {\upshape and} Chris Rowley}, \enquote{{\LaTeX3 News
X in 1993}}, \textit{{\TeX} and TUG News}, Vol.~3, No.~1, 7--11, 1994.
X
\bibitem{LaTeX3:TTN4-2-17}
\textsc{Frank Mittelbach {\upshape and} Chris Rowley}, \enquote{{Math Font
X Encoding}}, \textit{{\TeX} and TUG News}, Vol.~4, No.~2, 17--18, 1994.
X
\bibitem{Rahtz:TB14-2-132}
\textsc{Sebastian Rahtz}, \enquote{{Essential NFSS2}}, \textit{TUGboat},
X Vol.~14, No.~2, 132--137, 1993.
X
\bibitem{Rahtz:TB14-2-107}
\textsc{Sebastian Rahtz}, \enquote{{Implementing the extended {\TeX} layout
X using PS fonts}}, \textit{TUGboat}, Vol.~14, No.~2, 107--117, 1993.
X
\bibitem{Rahtz:textcomp}
\textsc{Sebastian Rahtz}, \enquote{The \texttt{textcomp} package for using text
X companion fonts}, {1995--97}, available from \url{CTAN:fonts/psfonts/ts1/}.
X
\bibitem{Rahtz:lucidabr}
\textsc{Sebastian Rahtz {\upshape and} David Carlisle}, \enquote{The
X \texttt{lucidabr} package}, 1997, available from
X \url{CTAN:macros/latex/packages/psnfss/}.
X
\bibitem{Vieth:concmath}
\textsc{Ulrik Vieth}, \enquote{The \texttt{concmath} package}, Oct. 1997,
X available from \url{CTAN:macros/latex/contrib/supported/concmath/}.
X
\bibitem{Wolfram:1996:Mathematica}
\textsc{Stephen Wolfram}, \textit{The Mathematica Book}, Wolfram Media\slash
X Cambridge University Press, 3rd ed., 1996.
X
\bibitem{Ziegler:1994}
\textsc{Justin Ziegler}, \enquote{{Technical Report on Math Font Encodings}},
X {\LaTeX3 Project Documentation}, Jun. 1994, available from
X \url{CTAN:info/ltx3pub/l3d007.tex}.
X
\end{thebibliography}
SHAR_EOF
$shar_touch -am 1205021297 'mfg-euro.bbl' &&
chmod 0644 'mfg-euro.bbl' ||
$echo 'restore of' 'mfg-euro.bbl' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'mfg-euro.bbl:' 'MD5 check failed'
584583667400a4ae4017424dc7fe034c mfg-euro.bbl
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'mfg-euro.bbl'`"
test 7509 -eq "$shar_count" ||
$echo 'mfg-euro.bbl:' 'original size' '7509,' 'current size' "$shar_count!"
fi
fi
# ============= refcahiers.tex ==============
if test -f 'refcahiers.tex' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'refcahiers.tex' '(file already exists)'
else
$echo 'x -' extracting 'refcahiers.tex' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'refcahiers.tex' &&
\NoC{31}
\DateC{congr{\`e}s Euro\TeX{}, avril 1998}
SHAR_EOF
$shar_touch -am 1205050597 'refcahiers.tex' &&
chmod 0644 'refcahiers.tex' ||
$echo 'restore of' 'refcahiers.tex' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'refcahiers.tex:' 'MD5 check failed'
53fad09c1a9b6d7923063ed991b8815e refcahiers.tex
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'refcahiers.tex'`"
test 52 -eq "$shar_count" ||
$echo 'refcahiers.tex:' 'original size' '52,' 'current size' "$shar_count!"
fi
fi
# ============= cah-gut.cls ==============
if test -f 'cah-gut.cls' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'cah-gut.cls' '(file already exists)'
else
$echo 'x -' extracting 'cah-gut.cls' '(binary)'
sed 's/^X//' << 'SHAR_EOF' | uudecode &&
begin 600 cah-gut.cls
M)2!#;&%S<V4@9&4@9&]C=6UE;G0@8V%H+6=U="YC;',@<&]U<B!L97,@0V%H
M:65R<R!'551E;F)E<F<*)2!E="!L97,@<'5B;&EC871I;VYS(&5X8V5P=&EO
M;FYE;&QE<PHE"B4@0VQA<W-E('!R979U92!P;W5R($QA5&58,F4@=6YI<75E
M;65N=`I<3F5E9'-495A&;W)M871[3&%495@R97T*)2!);F9O<FUA=&EO;G,@
M9&EV97)S97,*7%!R;W9I9&5S0VQA<W-[8V%H+6=U='T*("`@("`@("!;,3DY
M-B\P-B\Q.2!V,BXP-BXT($-L87-S92!D97,@0V%H:65R<R!'551E;F)E<F==
M"B4@4&%S(&0G87)T:6-L92!P<F5S96YT97,@82!L)VET86QI96YN90I<1&5C
M;&%R94]P=&EO;GML86YD<V-A<&5]>UQ`;&%T97AE<G)[3W!T:6]N(&YO="!S
M=7!P;W)T961])0H@("![?7T*)2!!=71R97,@;W!T:6]N<R!A=71O<FES965S
M"EQ$96-L87)E3W!T:6]N*GLE"B`@("!<4&%S<T]P=&EO;G-4;T-L87-S("![
M7$-U<G)E;G1/<'1I;VY]>V%R=&EC;&5]?0HE(%1R86ET96UE;G0@9&5S(&]P
M=&EO;G,*7%!R;V-E<W-/<'1I;VYS"B4@0VAA<F=E;65N="!D92!L82!C;&%S
M<V4@9&4@8F%S92!A<G1I8VQE"EQ,;V%D0VQA<W-;='=O<VED95U[87)T:6-L
M97T*)0HE)24E)24E)24E)24E)2!&24-(2452($5.($-/55)3($1%(%12059!
M55@N+BX@)24E)24E)24E)24E)24E)24E"B4*7'1Y<&5O=71[1F5U:6QL92!P
M<F]V:7-O:7)E(&1E('-T>6QE(&1E<R!#86AI97)S($=55&5N8F5R9RP@=F5R
M<VEO;B`R+C`V+C0@*#$Y+S8O.38I?0HE"B4@97-P86-E(&%J;W5T92!A<')E
M<R`M+2T@9&%N<R!H96%D97)S('!A<B!$96YI<R!':7)O=2!$+D<N(#$Y+S8O
M.38*)2!C;W)R:6=E('!A<B!%+E`N('!O=7(@<&(@9&4@<VAI<&]U="P@;W5F
M("$A(2!L92`R-2\T+SDV"B4E($-E='1E('9E<G-I;VX@82!L97,@=F%L975R
M<R!C;W)R:6=E97,@<&]U<B!L97,@<&%R86UE=')E<R!L:65S(&$@;"=I;7!O
M<VET:6]N"B4@82!L82!D96UA;F1E(&1E(&PG:6UP<FEM97)I92!D92!L)W5N
M:79E<G-I=&4@9&4@4F5N;F5S(#$N($HN02X@,C4O-R\Y-0HE(&5T(&1E("!L
M)VEM<')I;65R:64@3&]U:7,M:F5A;B!A($=A<"`H8V8@36%U<FEC92!,875G
M:65R(2D@2BY!+B`Q,"\P.2\Y-0HE('%U:2!D96UA;F1E('5N92!L87)G975R
M('!A<&EE<B`\(#$W+C5C;2`H9"=O=2!R961U8W1I;VX@9&4@=&5X='=I9'1H
M*0HE(&5T(&$@;&$@<W5I=&4@9'4@0T$@9'4@,3(O,#DO.34@;W4@:6P@82!E
M=&4@9&ET('%U)V5N(&%Y86YT('5N92!H875T975R(&1E"B4@;&$@<&%G92!P
M87!I97(@9&4@,C(N-"!C;2!O;B!P;W5V86ET(&9A:7)E(#(@97AE;7!L86ER
M97,@<&%R(&-O<&EE(`HE('-U<B!$=6-O=&5C:"`H9"=O=2!M;V1I9B!D92`I
M("`@("`@("`@("`@($HN02X@,3,O,#DO.34*)24@4&%R(&%I;&QE=7)S(#H*
M)2!,92!T:71R92!C;W5R86YT($-A:&EE<G,@1U5496YB97)G(&5S="!M:7,@
M96X@:71A;&EQ=64@*#$P+SDO.34I"B4@;&4@9F]L:6]T86=E(&$@;&EE=2!D
M97-O<FUA:7,@9&%N<R!L92!H96%D97(@*#$S+S`Y+SDU*0HE)2!#971T92!V
M97)S:6]N(&1U(#$O,B!C;VYT:65N="!D97,@;6]D:69S(')E8V]M;6%N9&5E
M<R!P87(@5&AI97)R>2!";W5C:&4*)2!P;W5R(')E;65T=')E(&5N('!O:6YT
M<R!C97)T86EN<R!P87)A;65T<F5S(&1O;FYE<R!E;B!C;0HE($QE<R!N=6WI
M<F]S(&1E(&9O;W1N;W1E<R!O;G0@Z73I(&%D87!TZ7,@X"!,851E6#)E(%0N
M0BX@,C$O,3(O.34@*'-I9VYA;&4*)2!A=7-S:2!P87(@8F5R;F%R9"!G875L
M;&4@"B4E)24E)24E)24E)24E)24E)24E)24E)24E)24*)2!H>7!H96YA=&EO
M;B!C;VUM86YD<R`H1F]R($U,5&58*0I<:69X7&9H>7!H7'5N9&5F:6YE9%QR
M96QA>%QE;'-E("4@<VD@7&9H>7!H(&5S="!C;VYN=2P@;VX@<W5P<&]S92!<
M96AY<&@@8V]N;G4*("`@7&EF>%QE;FAY<&A<=6YD969I;F5D7&QE=%QE;FAY
M<&@]7&5H>7!H7&9I"B`@(%QI9GA<9G)H>7!H7'5N9&5F:6YE9%QL971<9G)H
M>7!H/5QF:'EP:%QF:0I<9FD*"EQN97=C;VUM86YD>UQ'551]>UQM8F]X>WM<
M<V,@1U54?65N8F5R9WU]"@I<;F5W8V]M;6%N9'M<3F]#?5LQ77M<9V1E9EQ.
M0$-[(S%]?0H@(%Q.;T-[7'-T<FEN9S\_?0I<;F5W8V]M;6%N9'M<1&%T94-]
M6S%=>UQG9&5F7$1`=&5#>R,Q?7T*("!<9VQO8F%L7&QE=%Q$0'1E0UQE;7!T
M>0H*"EQD969<<V5C='-I>F5[7$!S971F;VYT<VEZ95QS96-T<VEZ95Q`>&EV
M<'1[,C%P='U]("`@("`@)2!T:71R92!S96-T:6]N"EQD969<<W5B<V5C='-I
M>F5[7$!S971F;VYT<VEZ95QS=6)S96-T<VEZ95Q`>&EP='LQ-'!T?7T@)2!T
M:71R92!S;W5S+7-E8W1I;VX@"EQD969<86)S='-I>F5[7$!S971F;VYT<VEZ
M95QA8G-T<VEZ95Q`=FEI:7!T>S$Q<'1]?2`@("`@)2!A8G-T<F%C=`I<9&5F
M7&-A<'1S:7IE>UQ`<V5T9F]N='-I>F5<8V%P='-I>F5`>'!T>S$R<'1]?2`@
M("`@("`@("4@;&5G96YD97,*7&1E9EQT:71L97-I>F5[7$!S971F;VYT<VEZ
M95QT:71L97-I>F5<0'AX<'1[,C5P='U]("`@("`E($=R86YD('1I=')E"EQD
M969<875T:'-I>F5[7$!S971F;VYT<VEZ95QA=71H<VEZ95Q`>&EP='LQ-'!T
M?7T@("`@("`@)2!A=71E=7(*7&1E9EQA9F9I;'-I>F5[7$!S971F;VYT<VEZ
M95QA9F9I;'-I>F5<0'AP='LQ,G!T?7T@("`@("`E($%F9FEL:6%T:6]N"@HE
M($$@34]$249)15(N+BX*7&1E9EQ`8VET97A;(S%=(S)[7&EF0&9I;&5S=UQI
M;6UE9&EA=&5<=W)I=&5<0&%U>&]U='M<<W1R:6YG7&-I=&%T:6]N>R,R?7U<
M9FD*("!<9&5F7$!C:71E87M]7$!C:71E>UQ`9F]R7$!C:71E8CH](S)<9&\*
M("`@('M<0&-I=&5A7&1E9EQ`8VET96%[+"!]7$!I9G5N9&5F:6YE9`H@("`@
M("`@>V)`7$!C:71E8GU[>UQB9B`_?5Q`=V%R;FEN9PH@("`@("`@>T-I=&%T
M:6]N(&!<0&-I=&5B)R!O;B!P86=E(%QT:&5P86=E(%QS<&%C92!U;F1E9FEN
M961]?24*7&AB;WA[7&-S;F%M92!B0%Q`8VET96)<96YD8W-N86UE?7U]>R,Q
M?7T*"EQN97=C;VUM86YD7&%F9FEL:6%T:6]N6S%=>UQG9&5F7$!A9F9I;&EA
M=&EO;GLC,7U]"B`@7&=D969<0&%F9FEL:6%T:6]N>T%F9FEL:6%T:6]N(&EN
M8V]N;G5E(#]]"@HE(&5S<&%C96UE;G0@=&ET<F4*7&1E9EQT:71L97-P>UQL
M:7-T>WU[7&QE9G1M87)G:6XP<&-]7&ET96U;77T*7&QE=%QE;F1T:71L97-P
M/5QE;F1L:7-T"@I<<F5N97=C;VUM86YD>UQ`;6%K971I=&QE?7M<;F5W<&%G
M90H@7&YU;&P@7'9S<&%C92I[+3(X<'1]"B!<8F5G:6Y[=&ET;&5S<'T*("![
M7'1I=&QE<VEZ92`*("`@7&AY<&AE;F-H87)<9F]N=#TM,5QR86=G961R:6=H
M="`*("`@7$!T:71L92!<<&%R?0H@(%QV<VMI<"`X<'0@7&AR=6QE(%QV<VMI
M<"`Q-'!T("`@("`@("`@("`@("`@("`*("![7&%U=&AS:7IE(%Q`875T:&]R
M(%QP87)]"B`@7'9S:VEP(#9P="`*("![7&%F9FEL<VEZ95QI="!<0&%F9FEL
M:6%T:6]N(%QP87)]"EQE;F1[=&ET;&5S<'T*(%QP87(@7'9S:VEP(#$V<'1]
M"@I<<F5N97=C;VUM86YD>UQM86ME=&ET;&5]>UQP87(*7&)E9VEN9W)O=7`*
M7&1E9EQ`9FYD;W1[7&YU;&Q]"EQD969<=&AE9F]O=&YO=&5[7&9N<WEM8F]L
M>V9O;W1N;W1E?7T*7&1E9EQ`;6%K969N;6%R:WM<:&)O>"`*('1O(#!P='M<
M0'1E>'1S=7!E<G-C<FEP='M<0'1H969N;6%R:WU]?2`E(%0N0BX@,C$O,3(O
M.34*7&EF0'1W;V-O;'5M;B`*7'1W;V-O;'5M;EM<0&UA:V5T:71L95T@"EQE
M;'-E(%QN97=P86=E"EQG;&]B86Q<0'1O<&YU;5QZ0"!<0&UA:V5T:71L92!<
M9FE<=&AI<W!A9V5S='EL97MT:71R97U<0'1H86YK<PI<96YD9W)O=7`*7'-E
M=&-O=6YT97)[9F]O=&YO=&5]>S!]"EQL971<;6%K971I=&QE7')E;&%X"EQL
M971<0&UA:V5T:71L95QR96QA>`I<9V1E9EQ`=&AA;FMS>WU<9V1E9EQ`875T
M:&]R>WU<9V1E9EQ`=&ET;&5[?5QL971<=&AA;FMS7')E;&%X?0H*7')E;F5W
M8V]M;6%N9'M<86)S=')A8W1]>UQQ=6]T871I;VY<;F]I;F1E;G1<<VUA;&Q[
M7&)F($%B<W1R86-T?2X*7&5M7&EF>%QE;FAY<&A<=6YD969I;F5D7')E;&%X
M7&5L<V5<96YH>7!H7&9I?0I<9&5F7&5N9&%B<W1R86-T>UQE;F1Q=6]T871I
M;VX*7&YO<FUA;'-I>F5<<FU<:69X7&9R:'EP:%QU;F1E9FEN961<<F5L87A<
M96QS95QF<FAY<&A<9FE]"@HE7')E+BXN"EQN97=C;VUM86YD>UQR97-U;65]
M>UQQ=6]T871I;VY<;F]I;F1E;G1<<VUA;&Q[7&)F(%)<)V5S=6U<)V5]+@I<
M<FU<:69X7&9R:'EP:%QU;F1E9FEN961<<F5L87A<96QS95QF<FAY<&A<9FE]
M"EQD969<96YD<F5S=6UE>UQE;F1Q=6]T871I;VX*7&YO<FUA;'-I>F5<:69X
M7&9R:'EP:%QU;F1E9FEN961<<F5L87A<96QS95QF<FAY<&A<9FE]"@HE7')E
M+BXN"EQN97=C;VUM86YD>UQK97EW;W)D<WU[7'%U;W1A=&EO;EQN;VEN9&5N
M=%QS;6%L;%QT97AT8F9[36]T<R!C;&5F?7XZ(`I<=&5X=')M7&)G<F]U<'T*
M7&1E9EQE;F1K97EW;W)D<WM<96=R;W5P7&5N9'%U;W1A=&EO;B!<;F]R;6%L
M<VEZ97T*"EQ`:69U;F1E9FEN961[8VAA<'1E<GU[7&YE=V-O=6YT97)[8VAA
M<'1E<GU]>UQ`861D=&]R97-E='MC:&%P=&5R?7MP87)T?7TE"EQN97=C;VUM
M86YD>UQC:&%P=&5R;6%R:WU;,5U[?24@9V]B8FQE('1H92!S96-O;F0@87)G
M=6UE;G0*7&YE=V-O;6UA;F1[7&-H87!T97)]>UQ`<W1A<G1S96-T:6]N>V-H
M87!T97)]>S!]>UQZ0'U[+3$R<'0@<&QU<R`M,G!T(&UI;G5S)0HM,G!T?7LQ
M,'!T('!L=7,@,7!T(&UI;G5S(#%P='U[7'-E8W1S:7IE7')A9V=E9')I9VAT
M>UQB9EQ`8VAA<&%P<%QS<&%C97U]?24*"EQR96YE=V-O;6UA;F1[7'-E8W1I
M;VY]>UQ`<W1A<G1S96-T:6]N('MS96-T:6]N?7LQ?7M<>D!]>RTQ,G!T('!L
M=7,@+3)P="!M:6YU<R`*+3)P='U[,3!P="!P;'5S(#%P="!M:6YU<R`Q<'1]
M>UQR97-E=$!F;VYT7'-E8W1S:7IE7')A9V=E9')I9VAT?7T*"EQR96YE=V-O
M;6UA;F1[7'-U8G-E8W1I;VY]>UQ`<W1A<G1S96-T:6]N>W-U8G-E8W1I;VY]
M>S)]>UQZ0'TE"GLM,3!P="!P;'5S("TR<'0@;6EN=7,@+3%P='TE"GLX<'0@
M<&QU<R`Q<'0@;6EN=7,@,7!T?7M<<W5B<V5C='-I>F5<8F9<<F%G9V5D<FEG
M:'1]?0I<<F5N97=C;VUM86YD>UQS=6)S=6)S96-T:6]N?7M<0'-T87)T<V5C
M=&EO;GMS=6)S=6)S96-T:6]N?7LS?7M<>D!]>RTX<'0@<&QU<R`*+3)P="!M
M:6YU<R`M,7!T?7LV<'0@<&QU<R`Q<'0@;6EN=7,@,2!P='U[7'-U8G-E8W1S
M:7IE7&ET7')A9V=E9')I9VAT?7T*7')E;F5W8V]M;6%N9'M<<&%R86=R87!H
M?7M<0'-T87)T<V5C=&EO;@I[<&%R86=R87!H?7LT?7M<>D!]>S9P="!P;'5S
M(#)P="!M:6YU<R`R<'1]>RTQ96U]>UQN;W)M86QS:7IE7&)F?7T*7')E;F5W
M8V]M;6%N9'M<<W5B<&%R86=R87!H?7M<0'-T87)T<V5C=&EO;@I[<W5B<&%R
M86=R87!H?7LT?7M<<&%R:6YD96YT?7LV<'0@<&QU<R`R<'0@;6EN=7,@"C)P
M='U[+3%E;7U[7&YO<FUA;'-I>F5<8F9]?0H*7&YE=V5N=FER;VYM96YT>V%B
M<W1]>UQL:7-T>WU[7&QE9G1M87)G:6XP<&-]7&%B<W1S:7IE7&ET96U;77TE
M(`I[7&5N9&QI<W1<=G-K:7`M-W!T?2`@"@I<;F5W8V]M;6%N9'M<;&ES=&5L
M86)E;'U[)%QB=6QL970D?0I<<V5T=&]W:61T:'M<;&%B96QW:61T:'U[7&QI
M<W1E;&%B96Q]"EQN97=E;G9I<F]N;65N='ML:7-T97U[7&QI<W1[?7M<<V5T
M=&]W:61T:'M<;&%B96QW:61T:'U[7&QI<W1E;&%B96Q]"EQL969T;6%R9VEN
M7&QA8F5L=VED=&A<861V86YC95QL969T;6%R9VEN7&QA8F5L<V5P7')I9VAT
M;6%R9VEN,'!T7&QA8F5L<V5P,'!T"EQI=&5M<V5P,'!T(%QL971<;6%K96QA
M8F5L7&QI<W1E;&%B96Q]7'-M86QL?7M<96YD;&ES='T*"EQN97=E;G9I<F]N
M;65N='ME;G5M97)A=&EO;GU[7&QI<W1[>UQS;6%L;"!<87)A8FEC>V5N=6UI
M?2Y<('U])0I[7'-E='1O=VED=&A[7&QA8F5L=VED=&A]>WM<<VUA;&P@,2Y<
M('U]"EQL969T;6%R9VEN7&QA8F5L=VED=&A<861V86YC95QL969T;6%R9VEN
M7&QA8F5L<V5P7')I9VAT;6%R9VEN,'!T7&QA8F5L<V5P,'!T"EQI=&5M<V5P
M,'!T(%QU<V5C;W5N=&5R>V5N=6UI?7U<<VUA;&Q]>UQE;F1L:7-T?0H*7&1E
M9EQ`<V5C=",Q(S(C,R,T(S4C-ELC-UTC.'M<:69N=6T@(S(^7&-`<V5C;G5M
M9&5P=&@*("`@("!<9&5F7$!S=G-E8WM]7&5L<V4@"B`@("`@7')E9G-T97!C
M;W5N=&5R>R,Q?5QE9&5F7$!S=G-E8WM<8W-N86UE('1H92,Q7&5N9&-S;F%M
M97LN?5QH<VMI<"`Q96T@?5QF:0H@("`@(%Q`=&5M<'-K:7!A(",U7')E;&%X
M"B`@("`@(%QI9F1I;2!<0'1E;7!S:VEP83Y<>D`@"B`@("`@("`@7&)E9VEN
M9W)O=7`@(S9<<F5L87@*("`@("`@("`@(%Q`:&%N9V9R;VU[7&AS:VEP(",S
M7')E;&%X7$!S=G-E8WU[7&EN=&5R;&EN97!E;F%L='D@7$!-(",X7'!A<GT*
M("`@("`@("!<96YD9W)O=7`*("`@("`@(%QC<VYA;64@(S%M87)K7&5N9&-S
M;F%M97LC-WU<861D8V]N=&5N='-L:6YE"B`@("`@("`@('MT;V-]>R,Q?7M<
M:69N=6T@(S(^7&-`<V5C;G5M9&5P=&@@7&5L<V4*("`@("`@("`@("`@("`@
M("`@("`@(%QP<F]T96-T7&YU;6)E<FQI;F5[7&-S;F%M92!T:&4C,5QE;F1C
M<VYA;65]7&9I"B`@("`@("`@("`@("`@("`@("`@(S=]7&5L<V4*("`@("`@
M("!<9&5F7$!S=G-E8VAD>R,V7&AS:VEP(",S7$!S=G-E8R`C.%QC<VYA;64@
M(S%M87)K7&5N9&-S;F%M90H@("`@("`@("`@("`@("`@("`@("`@>R,W?5QA
M9&1C;VYT96YT<VQI;F4*("`@("`@("`@("`@("`@("`@("`@("`@("`@>W1O
M8WU[(S%]>UQI9FYU;2`C,CY<8T!S96-N=6UD97!T:"!<96QS90H@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@(%QP<F]T96-T7&YU;6)E<FQI;F5[7&-S
M;F%M92!T:&4C,5QE;F1C<VYA;65]7&9I"B`@("`@("`@("`@("`@("`@("`@
M("`@(S=]?5QF:0H@("`@(%Q`>'-E8W1[(S5]?0H*)4-O<G)I9V4G($-H4@I<
M<F5N97=C;VUM86YD>UQR969N86UE?7M27"=E9EPG97)E;F-E<R!B:6)L:6]G
M<F%P:&EQ=65S?0I<9&5F7'1H96)I8FQI;V=R87!H>2,Q>UQS96-T:6]N*GM<
M8FEB;F%M97TE"EQL:7-T>UM<87)A8FEC>V5N=6UI?5U]>UQS971T;W=I9'1H
M7&QA8F5L=VED=&A[6R,Q77U<;&5F=&UA<F=I;EQL86)E;'=I9'1H"EQA9'9A
M;F-E7&QE9G1M87)G:6Y<;&%B96QS97!<=7-E8V]U;G1E<GME;G5M:7U])5QS
M;6%L;"`E2BY!+B`S,2\P-R\Y-0I]7&QE=%QE;F1T:&5B:6)L:6]G<F%P:'D]
M7&5N9&QI<W0@"EQN97=I9EQI9D!R97-T;VYE8V]L"@I<9&5F7'1H96EN9&5X
M>UQ`<F5S=&]N96-O;'1R=65<:69`='=O8V]L=6UN7$!R97-T;VYE8V]L9F%L
M<V5<9FD@7&-O;'5M;G-E<')U;&4*7'I`(%QC;VQU;6YS97`@,S5P=%QT=V]C
M;VQU;6Y;7'-E8W1I;VXJ>UQI;F1E>&YA;65]70I<<&%R:6YD96YT7'I`"EQP
M87)S:VEP7'I`('!L=7,@+C-P=%QR96QA>%QL971<:71E;5Q`:61X:71E;7T@
M7&1E9EQ`:61X:71E;7M<<&%R7&AA;F=I;F1E;G0*-#!P='T@7&1E9EQS=6)I
M=&5M>UQP87)<:&%N9VEN9&5N="`T,'!T(%QH<W!A8V4J>S(P<'1]?0I<<F5N
M97=C;VUM86YD>UQS=6)S=6)I=&5M?7M<<&%R7&AA;F=I;F1E;G0@-#!P="!<
M:'-P86-E*GLS,'!T?7T*7')E;F5W8V]M;6%N9'M<96YD=&AE:6YD97A]>UQI
M9D!R97-T;VYE8V]L7&]N96-O;'5M;EQE;'-E7&-L96%R<&%G95QF:7T*7')E
M;F5W8V]M;6%N9'M<:6YD97AS<&%C97U[7'!A<B!<=G-K:7`@,3!P="!P;'5S
M(#5P="!M:6YU<R`S<'1<<F5L87A]"@I<;&]N9UQD969<0&UA:V5F;G1E>'0C
M,7M<<&%R:6YD96YT(#%E;5QN;VEN9&5N="`*("`@("`@("`@("`@7&AB;W@@
M=&\@,2XX96U[7$!T97AT<W5P97)S8W)I<'1[7$!T:&5F;FUA<FM]?2,Q?2`E
M(%0N0BX@,C$O,3(O.34*"@I<<V5T;&5N9W1H7'1E>'1F;&]A='-E<'LQ,UQP
M0"!<0'!L=7,@,EQP0"!<0&UI;G5S(#1<<$!]"@HE7&1E9EQC87!T:6]N>UQR
M969S=&5P8V]U;G1E<EQ`8V%P='EP92!<0&1B;&%R9WM<0&-A<'1I;VY<0&-A
M<'1Y<&5]?0HE7&QO;F=<9&5F7$!C87!T:6]N(S%;(S)=(S-[7'!A<EQA9&1C
M;VYT96YT<VQI;F5[7&-S;F%M90HE("!E>'1`(S%<96YD8W-N86UE?7LC,7U[
M7'!R;W1E8W1<;G5M8F5R;&EN97M<8W-N86UE"B4@('1H92,Q7&5N9&-S;F%M
M97U[7&EG;F]R97-P86-E<R`C,GU]7&)E9VEN9W)O=7`*)2`@("!<0'!A<F)O
M>')E<W1O<F4*)2`@("!<8V%P='-I>F4*)2`@("!<0&UA:V5C87!T:6]N>UQC
M<VYA;64@9FYU;4`C,5QE;F1C<VYA;65]>UQI9VYO<F5S<&%C97,@(S-]7'!A
M<@HE("!<96YD9W)O=7!]"@I<<V5T;&5N9W1H7&%B;W9E8V%P=&EO;G-K:7![
M,5QP0'T*)5QL;VYG7&1E9EQ`;6%K96-A<'1I;VXC,2,R>PHE("`@7'9S:VEP
M(#%P="`E(&%L;6]S="!N;R!S:VEP(&%T(&%L;`HE("`@7'-E=&)O>%Q`=&5M
M<&)O>&%<:&)O>'LC,7XC,GT*)2`@(%QI9F1I;2!<=V1<0'1E;7!B;WAA(#Y<
M:'-I>F4@("`E($E&(&QO;F=E<B!T:&%N(&]N92!L:6YE.@HE("`@("`@(%QU
M;FAB;WA<0'1E;7!B;WAA7'!A<B`@("`@("4@("!42$5.('-E="!A<R!O<F1I
M;F%R>2!P87)A9W)A<&@N"B4@("`@(%QE;'-E("`@("`@("`@("`@("`@("`@
M("`@("`@)2`@($5,4T4@(&-E;G1E<BX*)2`@("`@("!<:&)O>"!T;UQH<VEZ
M97M<:&9I;%QB;WA<0'1E;7!B;WAA7&AF:6Q]"B4@("!<9FE]"@I<<V5T8V]U
M;G1E<GMT;W!N=6UB97)]>S%]"EQR96YE=V-O;6UA;F1[7&)O='1O;69R86-T
M:6]N?7LP+C`Q?0H*7&YE=V-O;6UA;F1[7'1I=&QE:&5A9'U;,5U[7&=D969<
M0'1I=&QE:&5A9'LC,7U]"EQN97=C;VUM86YD>UQA=71H;W)H96%D?5LQ77M<
M9V1E9EQ`875T:&]R:&5A9'LC,7U]"@I<;&]N9UQD969<875T:&]R(S%[7&1E
M9EQ`875T:&]R>R,Q?0H@("`@("`@("`@("`@("`@("`@7&EF>%Q`875T:&]R
M:&5A9%QU;F1E9FEN961<;&5T7'!`875T:&]R:&5A9%Q`875T:&]R"B`@("`@
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("!<96QS95QL971<
M<$!A=71H;W)H96%D7$!A=71H;W)H96%D7&9I"B`@("`@("`@("`@("`@("`@
M('T*7&=L;V)A;%QL971<<$!A=71H;W)H96%D7')E;&%X)2!A(&=O;V0@9&5F
M875L="!F;W(@+G1O8R!F:7)S="!R96%D($)'(#,O,B\Y-`I<9VQO8F%L7&QE
M=%QP0'1I=&QE7')E;&%X"EQL;VYG7&1E9EQT:71L92,Q>UQD969<0'1I=&QE
M>R,Q?5QL971<<$!T:71L95Q`=&ET;&4*("`@("`@("`@("`@("`@("`@7&%D
M9'1O8V]N=&5N='-[=&]C?7M<<')O=&5C=%QC;VYT96YT<VQI;F5[<V]M;6%I
M<F5]"B`@("`@("`@("`@("`@("`@('M<<')O=&5C=%QP0&%U=&AO<FAE861<
M<')O=&5C=%QS<&%C93I<<W!A8V4*("`@("`@("`@("`@("`@("`@(%QP<F]T
M96-T7'!`=&ET;&5]>UQT:&5P86=E?7T*("`@("`@("`@("`@("`@("!]"@HE
M)24E('9E<G-I;VX@86YC:65N;F4@879A;G0@;6]D:68@9'4@,3,O,#DO.34@
M2BY!+@HE7&1E9EQG0&YE<F%L:&5A9'M<=G-K:7`@,3!P="!<:&)O>"!T;UQT
M97AT=VED=&A[7&AR=6QE9FEL;'U])2`@0D<@.2\R+SDT"B5<9VQO8F%L7&QE
M=%QG96YE<F%L:&5A9%QR96QA>"4@96UP='D@<&%G97-T>6QE(&1E9F%U;'0@
M0D<@.2\R+SDT"B4@"B5<9&5F7'!S0&=U='M<;&5T7$!M:V)O=&A<0&=O8F)L
M971W;R4*)2`@("`@("`@("`@(%QL971<9V5N97)A;&AE861<9T!N97)A;&AE
M860E($)'(#DO,B\Y-`HE("`@("!<9&5F7$!E=F5N:&5A9'M<;F]R;6%L<VEZ
M95QI='LE"B5<:69X7$!A=71H;W)H96%D7'5N9&5F:6YE9%Q`875T:&]R7&5L
M<V5<0&%U=&AO<FAE861<9FE]7&AF:6Q])0HE("`@("!<9&5F7$!O9&1F;V]T
M>UQR;5QH9FEL7'1H97!A9V5]7&1E9EQ`;V1D:&5A9'M<;F]R;6%L<VEZ95QI
M=%QH9FEL>R4@("`*)5QI9GA<0'1I=&QE:&5A9%QU;F1E9FEN961<0'1I=&QE
M7&5L<V5<0'1I=&QE:&5A9%QF:7U])0HE("`@("!<9&5F7$!E=F5N9F]O='M<
M<FU<=&AE<&%G95QH9FEL?7T*("`@("`@("`@("`@("`@("`*"B4E(%9E<G-I
M;VX@;6]D:69I964@2BY!+B`Q,R\P.2\Y-2!P;W5R(&UE='1R92!F;VQI;W1A
M9V4@9&%N<R!H96%D97)S"EQD969<9T!N97)A;&AE861[7'9S:VEP(#$P<'0@
M7&AB;W@@=&]<=&5X='=I9'1H>UQH<G5L969I;&Q]?24@($)'(#DO,B\Y-`I<
M9VQO8F%L7&QE=%QG96YE<F%L:&5A9%QR96QA>"4@96UP='D@<&%G97-T>6QE
M(&1E9F%U;'0@0D<@.2\R+SDT"@I<9&5F7'!S0&=U='M<;&5T7$!M:V)O=&A<
M0&=O8F)L971W;R4*("`@("`@("`@("`@7&QE=%QG96YE<F%L:&5A9%QG0&YE
M<F%L:&5A9"4@0D<@.2\R+SDT"B`@("`@7&1E9EQ`979E;FAE861[7')M7'1H
M97!A9V5<;F]R;6%L<VEZ95QI=%QH9FEL>R4*7&EF>%Q`875T:&]R:&5A9%QU
M;F1E9FEN961<0&%U=&AO<EQE;'-E7$!A=71H;W)H96%D7&9I?7TE"B`@("`@
M7&1E9EQ`;V1D9F]O='M]"EQD969<0&]D9&AE861[7&YO<FUA;'-I>F5<:71[
M)0I<:69X7$!T:71L96AE861<=6YD969I;F5D7$!T:71L95QE;'-E7$!T:71L
M96AE861<9FE]7&AF:6Q<<FU<=&AE<&%G97TE"B`@("`@7&1E9EQ`979E;F9O
M;W1[?7T*"@HE('!A<R!B96%U(&-A<B!D97!E;F1A;G0@9&4@;&$@9F]N=&4L
M(&$@<F5V;VER+B!"1R`R-"\Q,B\Y,PHE7&=D969<4'1I;G5M97)O>VY<8VAA
M<B<P,C=])2!P;'5S('1A<F0@;VX@=71I;&ES97)A(%QN=6UE<F\@9&4@9G)E
M;F-H+G-T>0HE7&=D969<4'1I;G5M97)O>VY<8VAA<B<P,#9])2!P<F]V:7-O
M:7)E('!O=7(@8V]D86=E($-O<FL*)2!%4"`R-2\P-R\Y-0I<1&5C;&%R951E
M>'13>6UB;VQ[7%!T:61E9WU[3U0Q?7LR,WT*7$1E8VQA<F5497AT4WEM8F]L
M>UQ0=&ED96=]>U0Q?7LV?0I<9V1E9EQ0=&EN=6UE<F][;EQK97)N+2XQ,F5M
M7%!T:61E9WT*("`@("`@("`@("`@("`@("`@("`@("`@("`@)2!Q9"!I;"!A
M9&]P=&5R82!T;W5T97,@;&5S('1A:6QL97,N(`I<9&5F7'!S0'1I=')E>UQL
M971<0&UK8F]T:%Q`9V]B8FQE='=O)0H@("`@("`@("`@("!<;&5T7&=E;F5R
M86QH96%D7&=`;F5R86QH96%D)2!"1R`Y+S(O.30*("`@7&1E9EQ`979E;FAE
M861[7')M7'1H97!A9V5<:&9I;'M<9F]O=&YO=&5S:7IE7$5T870@)2!"1R`R
M,"\Q+SDT(&5T($HN02X@,3,O,#DO.34*("`@7'1E>'1I='M#86AI97)S($=5
M5&5N8F5R9WT@7%!T:6YU;65R;WM]7$Y`0WM]("TM+2`E($1'(#$Y+S8O.30*
M("`@("`@("`@("`@7$1`=&5#?7TE("`E2BY!+B`Q,"\P.2\Y-2`@"B`@(%QD
M969<0&]D9&AE861[>UQF;V]T;F]T97-I>F5<171A="`E($)'(#(P+S$O.30*
M("`@7'1E>'1I='M#86AI97)S($=55&5N8F5R9WT@7%!T:6YU;65R;WM]7$Y`
M0WM]("TM+2`E($1'(#$Y+S8O.30*("`@("`@("`@("`@7$1`=&5#?5QH9FEL
M7')M7'1H97!A9V5])2`E2BY!+B`Q,"!E="`Q,R\P.2\Y-0HE("`@("!<9&5F
M7$!O9&1F;V]T>UQR;5QH9FEL7'1H97!A9V5])2`@("`@("`@("5*+D$N(#$S
M+S`Y+SDU"B4@("`@(%QD969<0&5V96YF;V]T>UQR;5QT:&5P86=E7&AF:6Q]
M("`@("`@("`@)4HN02X@,3,O,#DO.34*?0H*)2!0;W5R('5T:6QI<V5R(&QE
M(&9O<FUA="!C86AI97)S+G-T>2!D86YS(&1E<R`*)2!O8V-A<VEO;B!P87)T
M:6-U;&EE<F5S+BXN($-H+B!2+B`R-"\P-2\Y-`I<9V1E9EQ%;E1E=&4C,7L*
M("!<9&5F7'!S0'1I=')E>UQL971<0&UK8F]T:%Q`9V]B8FQE='=O)0H@("`@
M("`@("`@("`@(%QL971<9V5N97)A;&AE861<9T!N97)A;&AE860E"B4@("`@
M(%QD969<0&5V96YH96%D>UQH9FEL;'M<9F]O=&YO=&5S:7IE(",Q?7TE("`@
M("`@("`@("`@)2!*+D$N(#$S+S`Y+SDU"B4@("`@(%QD969<0&]D9&AE861[
M>UQF;V]T;F]T97-I>F4@(S%]7&AF:6QL?24@("`@("`@("`@("`@)2!*+D$N
M(#$S+S`Y+SDU"B`@("`@(%QD969<0&5V96YH96%D>UQR;5QT:&5P86=E7&AF
M:6Q[7&9O;W1N;W1E<VEZ92`C,7U])2`@)2!*+D$N(#$S+S`Y+SDU"B`@("`@
M7&1E9EQ`;V1D:&5A9'M[7&9O;W1N;W1E<VEZ92`C,7U<:&9I;%QR;5QT:&5P
M86=E?24@("`@)2!*+D$N(#$S+S`Y+SDU"B4@("`@("`@7&1E9EQ`;V1D9F]O
M='M<<FU<:&9I;%QT:&5P86=E?24@("`@("`@)2!*+D$N(#$S+S`Y+SDU"B`@
M("`@7&1E9EQ`;V1D9F]O='M]("`@("`@("`@("`@("`@("`@("`@("`@("`@
M)2!*+D$N(#$S+S`Y+SDU"B4@("`@("`@7&1E9EQ`979E;F9O;W1[7')M7'1H
M97!A9V5<:&9I;'U]?2`@("`@)2!*+D$N(#$S+S`Y+SDU"B`@("`@7&1E9EQ`
M979E;F9O;W1[?7U]("`@("`@("`@("`@("`@("`@("`@("`@)2!*+D$N(#$S
M+S`Y+SDU"@I<9'-`='=O<VED90HE0G)I8V]L86=E($-H+B!2+B`Q-2\Q,B\Y
M-"P@;6]D:69I92!%/B!0+B`R-2\P-"\Y-@I<9&5F7$!O=71P=71P86=E>R4*
M7&)E9VEN9W)O=7`@("`@("`@("`@("4@=&AE(%QE;F1G<F]U<"!I<R!P=70@
M:6X@8GD@7&%F=&5R9W)O=7`*("!<;&5T(%QP<F]T96-T(%QN;V5X<&%N9`H@
M(%Q`<F5S971A8W1I=F5C:&%R<PH@(%QL971<+5Q`9&ES8VAY<&@*("!<;&5T
M7"=<0&%C8VE<;&5T7&!<0&%C8VEI7&QE=%P]7$!A8V-I:6D*("!<;&5T7%Q<
M0&YO<FUA;&-R"B`@7&QE=%QP87)<0$!P87(@("`@("`@("`@)24@,34@4V5P
M(#@W"B`@7'-H:7!O=70@7'9B;WA[)0H@("`@7'-E=$!T>7!E<V5T0'!R;W1E
M8W0*("`@(%QA9G1E<F=R;W5P(%QE;F1G<F]U<`H@("`@7&%F=&5R9W)O=7`@
M7'-E=$!T>7!E<V5T0'!R;W1E8W0*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`E(&-O<G)E8W0_(&]R(&IU<W0@<F5S=&]R92!B>2!E;F1I;F<*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`E('1H92!G<F]U<#\*
M("!<:69`<W!E8VEA;'!A9V4*("`@(%QG;&]B86Q<0'-P96-I86QP86=E9F%L
M<V5<0&YA;65U<V5[<'-`7$!S<&5C:6%L<W1Y;&5])0H@(%QF:0H@(%QI9D!T
M=V]S:61E"B`@("!<:69O9&1<8V]U;G1<>D`@7&QE=%Q`=&AE:&5A9%Q`;V1D
M:&5A9"!<;&5T7$!T:&5F;V]T7$!O9&1F;V]T"B`@("`@("`@(%QL971<0'1H
M96UA<F=I;EQO9&1S:61E;6%R9VEN"B`@("!<96QS92!<;&5T7$!T:&5H96%D
M7$!E=F5N:&5A9`H@("`@("`@7&QE=%Q`=&AE9F]O=%Q`979E;F9O;W0@7&QE
M=%Q`=&AE;6%R9VEN7&5V96YS:61E;6%R9VEN"B`@("!<9FD*("!<9FD*("!<
M<F5S971`9F]N=`H@(%QN;W)M86QS:7IE"B`@7&)A<V5L:6YE<VMI<%QZ0'-K
M:7`@7&QI;F5S:VEP7'I`<VMI<"!<;&EN97-K:7!L:6UI=%QZ0`H@("`@7$!B
M96=I;F1V:0H@("`@7'9S:VEP(%QT;W!M87)G:6X*("`@(%QM;W9E<FEG:'1<
M0'1H96UA<F=I;B!<=F)O>"![)0H@("`@("!<<V5T8F]X7$!T96UP8F]X82!<
M=F)O>"!T;UQH96%D:&5I9VAT>R4*("`@("`@("!<=F9I;`H@("`@("`@(%QC
M;VQO<D!H8F]X"B`@("`@("`@("!<;F]R;6%L8V]L;W(*("`@("`@("`@(%QH
M8D!X=$!<=&5X='=I9'1H('LE"B`@("`@("`@("`@(%QL970@7&QA8F5L(%Q`
M9V]B8FQE"B`@("`@("`@("`@(%QL970@7&EN9&5X(%Q`9V]B8FQE"B`@("`@
M("`@("`@(%QL970@7&=L;W-S87)Y(%Q`9V]B8FQE("4E(#(Q($IU;B`Y,0H@
M("`@("`@("`@("!<0'1H96AE860*("`@("`@("`@("`@?24*("`@("`@("![
M7'9S<&%C92I[,3!P='U<:&)O>"!T;UQT97AT=VED=&A[7&AR=6QE9FEL;'U]
M"B`@("`@("`@7&-O;&]R0&5N9&)O>`H@("`@("`@('TE("`@("`@("`@("`@
M("`@("`@("`@("`@)24@,C(@1F5B(#@W"B`@("`@(%QD<%Q`=&5M<&)O>&$@
M7'I`"B`@("`@(%QB;WA<0'1E;7!B;WAA"B`@("`@(%QV<VMI<"!<:&5A9'-E
M<`H@("`@("!<8F]X7$!O=71P=71B;W@*("`@("`@7&)A<V5L:6YE<VMI<"!<
M9F]O='-K:7`*("`@("`@7&-O;&]R0&AB;W@*("`@("`@("!<;F]R;6%L8V]L
M;W(*("`@("`@("!<:&)`>'1`7'1E>'1W:61T:'LE"B`@("`@("`@("!<;&5T
M(%QL86)E;"!<0&=O8F)L90H@("`@("`@("`@7&QE="!<:6YD97@@7$!G;V)B
M;&4@("`@("`E)2`R,B!&96(@.#<*("`@("`@("`@(%QL970@7&=L;W-S87)Y
M(%Q`9V]B8FQE("`@)24@,C$@2G5N(#DQ"B`@("`@("`@("!<0'1H969O;W0*
M("`@("`@("`@('TE"B`@("`@(%QC;VQO<D!E;F1B;W@*("`@("`@?24*("`@
M('TE"EQG;&]B86P@7$!C;VQH="!<=&5X=&AE:6=H=`I<<W1E<&-O=6YT97)[
M<&%G97TE"EQL971<9FER<W1M87)K7&)O=&UA<FL*?0H*)2!H96%D:6YG(&YE
M961S(&$@8F%R"@HE7'-E=&QE;F=T:%QO9&1S:61E;6%R9VEN>S!M;7T@("`@
M"B5<<V5T;&5N9W1H7&5V96YS:61E;6%R9VEN>S,U;6U]("`E2BY!+B`R-2\W
M+SDU"EQS971L96YG=&A<;V1D<VED96UA<F=I;GLM,FUM?2`@("`E2BY!+B`Q
M,R\P.2\W-0I<<V5T;&5N9W1H7&5V96YS:61E;6%R9VEN>S0R;6U]("`@)4HN
M02X@,3,O,#DO.34@-VUM/31X("XU("LH-"XU+3(I;6T*7'-E=&QE;F=T:%QM
M87)G:6YP87)W:61T:"![,2XW-6-M?2`@"EQS971L96YG=&A<;6%R9VEN<&%R
M<V5P>S$P<'1]"EQS971L96YG=&A<;6%R9VEN<&%R<'5S:'LW7'!`?0I<<V5T
M;&5N9W1H7'1O<&UA<F=I;GLR+C=C;7T@)4HN02X@,C4O-R\Y-0I<<V5T;&5N
M9W1H7&AE861H96EG:'1[,6-M?0I<<V5T;&5N9W1H7&AE861S97![,31P='T*
M7'-E=&QE;F=T:%QF;V]T<VMI<'LQ8VU]"B5<<V5T;&5N9W1H7'1E>'1H96EG
M:'1[-30V<'1]("5*+D$N(#$Q+S`Y+SDU"EQS971L96YG=&A<=&5X=&AE:6=H
M='LU,#=P='T@)50N0BX@,C$O,3(O.34@*#$W+CAC;2D@"B5<<V5T;&5N9W1H
M7'1E>'1W:61T:'LQ,BXT-6-M?0I<<V5T;&5N9W1H7'1E>'1W:61T:'LQ,F-M
M?2`@("`E($HN02X@,3$O,#DO.34*7'-E=&QE;F=T:%QC;VQU;6YS97![,3!P
M='T*7'-E=&QE;F=T:%QC;VQU;6YS97!R=6QE>S!P='T*7'-E=&QE;F=T:%QF
M;V]T;F]T97-E<'LX+C1P='T*7'-E=&QE;F=T:'M<<VMI<%QF;V]T:6YS?7LQ
M,"XX7'!`(%Q`<&QU<R`T7'!`(%Q`;6EN=7,@,EQP0'T*7'-E=&QE;F=T:%QF
M;&]A='-E<"`@("![,31<<$`@7$!P;'5S(#)<<$`@7$!M:6YU<R`R7'!`?0I<
M<V5T;&5N9W1H7'1E>'1F;&]A='-E<'LR,%QP0"!<0'!L=7,@,EQP0"!<0&UI
M;G5S(#1<<$!]"EQS971L96YG=&A<:6YT97AT<V5P("`@>S$T7'!`(%Q`<&QU
M<R`R7'!`(%Q`;6EN=7,@,EQP0'T*7'-E=&QE;F=T:%QD8FQF;&]A='-E<"`@
M("![,31<<$`@7$!P;'5S(#)<<$`@7$!M:6YU<R`T7'!`?0I<<V5T;&5N9W1H
M7&1B;'1E>'1F;&]A='-E<'LR,%QP0"!<0'!L=7,@,EQP0"!<0&UI;G5S(#1<
M<$!]"EQS971L96YG=&A<0&9P=&]P>S!<<$`@7$!P;'5S(#%F:6Q]"EQS971L
M96YG=&A<0&9P<V5P>S$P7'!`(%Q`<&QU<R`R9FEL?0I<<V5T;&5N9W1H7$!F
M<&)O='LP7'!`(%Q`<&QU<R`Q9FEL?0I<<V5T;&5N9W1H7$!D8FQF<'1O<'LP
M7'!`(%Q`<&QU<R`Q9FEL?0I<<V5T;&5N9W1H7$!D8FQF<'-E<'LQ,%QP0"!<
M0'!L=7,@,F9I;'T*7'-E=&QE;F=T:%Q`9&)L9G!B;W1[,%QP0"!<0'!L=7,@
M,69I;'T*7'-E=&QE;F=T:%QP87)T;W!S97![,UQP0"!<0'!L=7,@,EQP0"!<
M0&UI;G5S(#)<<$!]"EQS971L96YG=&A<<&%R<VMI<'LQ+C%E>"!P;'5S(#%P
M='T*7'-E=&QE;F=T:%QP87)I;F1E;G1[,2XU96U]"EQS971L96YG=&A<=&]P
M<V5P>S$P<'0@<&QU<R`T<'0@;6EN=7,@-G!T?0I<<V5T;&5N9W1H7&ET96US
M97![-7!T('!L=7,@,BXU<'0@;6EN=7,@,7!T?0H*7$!L;W=P96YA;'1Y("`@
M-3$@"EQ`;65D<&5N86QT>2`@,34Q(`I<0&AI9VAP96YA;'1Y(#,P,0I<0&)E
M9VEN<&%R<&5N86QT>2`M7$!L;W=P96YA;'1Y"EQ`96YD<&%R<&5N86QT>2`@
M("U<0&QO=W!E;F%L='D*7$!I=&5M<&5N86QT>2`@("`@+5Q`;&]W<&5N86QT
M>0H*7'-E=&QE;F=T:%QH9G5Z>GLR<'1]"EQH8F%D;F5S<R`@("`@("`@,3`P
M,#`*7&AY<&AE;G!E;F%L='D@("`U,`I<97AH>7!H96YP96YA;'1Y(#4P"@I<
M<V5T8V]U;G1E<GMT;W!N=6UB97)]>S-]"EQR96YE=V-O;6UA;F1[7'1O<&9R
M86-T:6]N?7LN.3E]"EQR96YE=V-O;6UA;F1[7'1E>'1F<F%C=&EO;GU[+C`Q
M?0H*7&-L=6)P96YA;'1Y("`Q,#`P,`I<=VED;W=P96YA;'1Y(#$P,#`P"@I<
M<F5N97=C;VUM86YD>UQL86)E;&ET96UI?7LM+2U]"EQR96YE=V-O;6UA;F1[
M7&QA8F5L:71E;6EI?7LM+7T*7')E;F5W8V]M;6%N9'M<;&%B96QI=&5M:6EI
M?7LM?0H*7'-L;W!P>0I<9G)E;F-H<W!A8VEN9PH*7&QE=%Q`371I7&UA:V5T
M:71L90I<9&5F7&UA:V5T:71L97M<<&%G97-T>6QE>V=U='T*("`@("`@("`@
M("`@("`@7'1H:7-P86=E<W1Y;&5[=&ET<F5]"B`@("`@("`@("`@("`@(%Q`
M371I?0H*)2!P87,@8F5A=2!C87(@9&5P96YD86YT(&1E(&QA(&9O;G1E+"!A
M(')E=F]I<BX@0D<@,C0O,3(O.3,*)2`H;&$@<&QU<&%R="!S92!R971R;W5V
M92!D86YS(&9R96YC:"YS='DI"EQD969<871[>UQC:&%R("<Q,#!]?0I<9&5F
M7&)O:7M[7'1T7&-H87(@)S$S-'U]"EQD969<8VER8V]N9FQE>&5[>UQC:&%R
M("<Q,S9]?0I<9&5F7'1I;&1[>UQC:&%R("<Q-S9]?0I<9&5F7&1E9W)E>UQK
M97)N+2XS96U[7&-H87(@)S`R-WU]"B4E(')E;6]V92!T:&4@,R!F;VQL;W=I
M;F<@;&EN97,@:68@>6]U(&1O;B=T('1H92!G=6EL;"!F;VYT+@HE7&EF>%QO
M9W5I;&Q<=6YD969I;F5D("4@(&YO<FUA;&QY(&1E9FEN960@:6X@9G)E;F-H
M+G-T>2!"1R`R,"\Q.30*)5QF;VYT7'1R;VT]9W5I;&P*)5QD969<;V=U:6QL
M>WM<=')O;2!!?5QN;V)R96%K7&UB;WA[7&AG;'5E+C(U96U]7&YO8G)E86M]
M"B5<9&5F7&9G=6EL;'M<;F]B<F5A:UQM8F]X>UQH9VQU92XR-65M?5QN;V)R
M96%K>UQT<F]M($)]7"Q]"B5<9FD*"EQL971<0&%F=&5R:6YD96YT9F%L<V5<
M0&%F=&5R:6YD96YT=')U90I<0&%F=&5R:6YD96YT=')U90H*)2!"1R`R-"\Q
M,B\Y,R`Z"B4@8V4@;B=E<W0@<&%S(&QA(&)O;FYE('!L86-E(&1A;G,@;&4@
M<W1Y;&4L(&$@;65T=')E(&1A;G,@<F5F8V%H:65R<RYT97@@"B5<3F]#>S$T
M?0HE7$1A=&5#>TUA<G,@,3DY,WT*7&QE=%Q%=&%T7')E;&%X)2!V86QE=7(@
M<&%R(&1E9F%U="X*7$EN<'5T269&:6QE17AI<W1S>W)E9F-A:&EE<G,N=&5X
M?7M]>UQT>7!E;W5T>V-A:&EE<G,N<W1Y(#H@9FEC:&EE<B!R969C86AI97)S
M+G1E>"!N;VX@=')O=79E)RY]?0H*)2!T86YT('%U92!L82!D871E(&XG97-T
M('!A<R!F:6=E92!I;"!S)V%G:70@9"=U;B!B<F]U:6QL;VX*7&EF>%Q$0'1E
M0UQE;7!T>24@9&5F875T($)'(#(P+S`Q+SDT"B`@("!<9&5F7$1`=&5#>UQT
M;V1A>7TE(')E9&5F:6YE(&ET('=I=&@@=&AE(&-U<G)E;G0@;&%N9W5A9V4@
M0D<@,C4O,#$O.30*("`@(%QI9GA<171A=%QR96QA>%QG9&5F7$5T871[0G)O
M=6EL;&]N(&0G87)T:6-L92!P;W5R(&QE<R!]7&9I)0I<9FDE"@I<:69X7&9R
M:'EP:%QU;F1E9FEN961<<F5L87A<96QS95QF<FAY<&A<9FD*"@HE($-E('%U
M:2!S=6ET(&5S="!D86YS(&9R96YC:"YS='D@970@:6YD97!E;F1A;G0@9&5S
M(&9O;G1E<RX*)5QG9&5F7$%L;%1E6'M[7')M*$Q<:V5R;BTN,S9E;5QR86ES
M92XS97A<:&)O>'M<<V,@87U<:V5R;BTN,35E;2DE"B4@("`@("`@("`@("`@
M(%1<:V5R;BTN,38V-V5M7&QO=V5R+C=E>%QH8F]X>T5]7&ME<FXM+C$R-65M
M6'U]"EQD969<4V]M;6%I<F5#>UQD969<<V]M;6%I<F5N86UE>UQC96YT97(*
M("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@7$AU9V4@0V%H:65R
M<R!<1U54>WT@7$Y`0UQ<7$1`=&5#7%P*("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@("`@7&UE9'-K:7`*("`@("`@("`@("`@("`@("`@("`@("`@
M("`@("`@("`@7$QA<F=E(%,@3R!-($T@02!)(%(@15Q<"B`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@("`@(%QV<W!A8V5[,6-M?7T*("`@("`@("`@
M("`@("`@7&EF>%QS;VUM86ER95QU;F1E9FEN961<9&5F7'-O;6UA:7)E6S1=
M>UQS;VUM86ER96YA;65]7&9I"B`@("`@("`@("`@("`@(%QL971<4V%V94YL
M/5Q<"B`@("`@("`@("`@("`@(%QD969<3&EG;F530R,C,2,C,GM<8F=R;W5P
M7&1E9EQ<>UQ3879E3FQ<:'-P86-E*GLP+C<U8VU]?0H@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("`@(%QN;VEN9&5N="`C(S$@7&1O=&9I;&Q<(",C
M,@H@("`@("`@("`@("`@("`@("`@("`@("`@("`@("`@(%QE9W)O=7!<7'T*
M("`@("`@("`@("`@("`@7&)G<F]U<%QL971<;$!S;VUM86ER95Q,:6=N95-#
M7&QE=%QT:&%N:W-<0&=O8F)L90H@("`@("`@("`@("`@("!<<V]M;6%I<F5;
M-%T*("`@("`@("`@("`@("`@7&5G<F]U<`H@("`@("`@("`@("`@('TE(&9I
M;B!D92!<4V]M;6%I<F5#"@I<9&5F7&5N9%-O;6UA:7)E0WM<=G-P86-E*GLQ
M8VU]7&)G<F]U<`H@("`@("`@("`@("`@("`@("!<8V5N=&5R"B`@("`@("`@
M("`@("`@("`@(%)<)V5D86-T:6]N(&1E<R![7&5M($-A:&EE<G,@7$=55'U<
M7`H@("`@("`@("`@("`@("`@("!C+V\@27)I<V$O26YR:6$L(&-A;7!U<R!U
M;FEV97)S:71A:7)E(&1E($)E875L:65U7%P*("`@("`@("`@("`@("`@("`@
M1BTS-3`T,B!296YN97,@8V5D97@L($9R86YC95Q<"B`@("`@("`@("`@("`@
M("`@("`@("`@("`@("`@("!<96=R;W5P?0I<9V1E9EQL0'-O;6UA:7)E(S$C
M,GM]"@I<9&5F7$!U9F][7&1E9EQF:6=U<F5N86UE>WM<<V,@1FEG=7)E?7TE
M"B`@("`@("`@("!<9&5F7'1A8FQE;F%M97M[7'-C(%1A8FQE?7U])24@"EQ`
M=69O)2!*+D$N($%V<FEL(#DV("AA=F%I="!D:7-P87)U+BXN/RD*"@HE)24E
M)24E)24E)24E)24E)24@1FEN(&EN8VQU<VEO;B`E)24E)24E)24E)24E)24E
M)24*7&5N9&EN<'5T"B4E(`HE)2!&:6X@9'4@9FEC:&EE<B`\/"!C86@M;V9F
-9W5T+F-L<R`^/BPN"B4E
`
end
SHAR_EOF
$shar_touch -am 1108010597 'cah-gut.cls' &&
chmod 0644 'cah-gut.cls' ||
$echo 'restore of' 'cah-gut.cls' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'cah-gut.cls:' 'MD5 check failed'
cbc8d8471586c1309a0a27bc1efc07e3 cah-gut.cls
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'cah-gut.cls'`"
test 18643 -eq "$shar_count" ||
$echo 'cah-gut.cls:' 'original size' '18643,' 'current size' "$shar_count!"
fi
fi
# ============= cah-gut.bst ==============
if test -f 'cah-gut.bst' && test "$first_param" != -c; then
$echo 'x -' SKIPPING 'cah-gut.bst' '(file already exists)'
else
$echo 'x -' extracting 'cah-gut.bst' '(text)'
sed 's/^X//' << 'SHAR_EOF' > 'cah-gut.bst' &&
%%
%% This is file `cah-gut.bst',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% merlin.mbs (with options: `,nmft-sc,nmand-rm,tit-qq,atit-u,vnum-nr,volp-com,jwdvol,pre-pub,isbn,edpar,edby,blk-com,ppx,abr,mth-bare,ord,etal-it,em-it,nfss')
%% ----------------------------------------
%% *** Cahiers GUTenberg ***
%%
X %-------------------------------------------------------------------
X % The original source file contains the following version information:
X % \ProvidesFile{merlin.mbs}[1996/12/16 3.82 (PWD)]
X %
X % NOTICE:
X % This file may be used for non-profit purposes.
X % It may not be distributed in exchange for money,
X % other than distribution costs.
X %
X % The author provides it `as is' and does not guarantee it in any way.
X %
X % Copyright (C) 1994, 1995, 1996 Patrick W. Daly
X %-------------------------------------------------------------------
X % For use with BibTeX version 0.99a or later
X %-------------------------------------------------------------------
X % This bibliography style file is intended for texts in ENGLISH
X % This is a numerical citation style, and as such is standard LaTeX.
X % It requires no extra package to interface to the main text.
X % The form of the \bibitem entries is
X % \bibitem{key}...
X % Usage of \cite is as follows:
X % \cite{key} ==>> [#]
X % \cite[chap. 2]{key} ==>> [#, chap. 2]
X % where # is a number determined by the ordering in the reference list.
X % The order in the reference list is alphabetical by authors.
X %---------------------------------------------------------------------
X
ENTRY
X { address
X author
X booktitle
X chapter
X edition
X editor
X howpublished
X institution
X isbn
X journal
X key
X month
X note
X number
X organization
X pages
X publisher
X school
X series
X title
X type
X volume
X year
X }
X {}
X { label }
X
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
X
FUNCTION {init.state.consts}
{ #0 'before.all :=
X #1 'mid.sentence :=
X #2 'after.sentence :=
X #3 'after.block :=
}
X
STRINGS { s t }
X
FUNCTION {output.nonnull}
{ 's :=
X output.state mid.sentence =
X { ", " * write$ }
X { output.state after.block =
X { add.period$ write$
X newline$
X "\newblock " write$
X }
X { output.state before.all =
X 'write$
X { add.period$ " " * write$ }
X if$
X }
X if$
X mid.sentence 'output.state :=
X }
X if$
X s
}
X
FUNCTION {output}
{ duplicate$ empty$
X 'pop$
X 'output.nonnull
X if$
}
X
FUNCTION {output.check}
{ 't :=
X duplicate$ empty$
X { pop$ "empty " t * " in " * cite$ * warning$ }
X 'output.nonnull
X if$
}
X
FUNCTION {fin.entry}
{ add.period$
X write$
X newline$
}
X
FUNCTION {new.block}
{ output.state before.all =
X 'skip$
X { after.block 'output.state := }
X if$
}
X
FUNCTION {new.sentence}
{ output.state after.block =
X 'skip$
X { output.state before.all =
X 'skip$
X { after.sentence 'output.state := }
X if$
X }
X if$
}
X
FUNCTION {add.blank}
{ " " * before.all 'output.state :=
}
X
FUNCTION {date.block}
{
X skip$
}
X
FUNCTION {not}
{ { #0 }
X { #1 }
X if$
}
X
FUNCTION {and}
{ 'skip$
X { pop$ #0 }
X if$
}
X
FUNCTION {or}
{ { pop$ #1 }
X 'skip$
X if$
}
X
FUNCTION {non.stop}
{ duplicate$
X "}" * add.period$
X #-1 #1 substring$ "." =
}
X
FUNCTION {new.block.checka}
{ empty$
X 'skip$
X 'new.block
X if$
}
X
FUNCTION {new.block.checkb}
{ empty$
X swap$ empty$
X and
X 'skip$
X 'new.block
X if$
}
X
FUNCTION {new.sentence.checka}
{ empty$
X 'skip$
X 'new.sentence
X if$
}
X
FUNCTION {new.sentence.checkb}
{ empty$
X swap$ empty$
X and
X 'skip$
X 'new.sentence
X if$
}
X
FUNCTION {field.or.null}
{ duplicate$ empty$
X { pop$ "" }
X 'skip$
X if$
}
X
FUNCTION {emphasize}
{ duplicate$ empty$
X { pop$ "" }
X { "\textit{" swap$ * "}" * }
X if$
}
X
FUNCTION {scaps}
{ duplicate$ empty$
X { pop$ "" }
X { "\textsc{" swap$ * "}" * }
X if$
}
X
FUNCTION {roman.list}
{ duplicate$ empty$
X { pop$ "" }
X { "{\upshape " swap$ * "}" * }
X if$
}
X
FUNCTION {roman.cite}
{ duplicate$ empty$
X { pop$ "" }
X { "{\normalfont " swap$ * "}" * }
X if$
}
X
FUNCTION {capitalize}
{ "u" change.case$ "t" change.case$ }
X
FUNCTION {space.word}
{ " " swap$ * " " * }
X
X % Here are the language-specific definitions for explicit words.
X % Each function has a name bbl.xxx where xxx is the English word.
X % The language selected here is ENGLISH
FUNCTION {bbl.and}
{ "and"}
X
FUNCTION {bbl.editors}
{ "editors" }
X
FUNCTION {bbl.editor}
{ "editor" }
X
FUNCTION {bbl.edby}
{ "edited by" }
X
FUNCTION {bbl.edition}
{ "ed." }
X
FUNCTION {bbl.volume}
{ "Vol." }
X
FUNCTION {bbl.of}
{ "of" }
X
FUNCTION {bbl.number}
{ "No." }
X
FUNCTION {bbl.nr}
{ "No." }
X
FUNCTION {bbl.in}
{ "in" }
X
FUNCTION {bbl.pages}
{ "" }
X
FUNCTION {bbl.page}
{ "" }
X
FUNCTION {bbl.chapter}
{ "Chap." }
X
FUNCTION {bbl.techrep}
{ "Tech. Rep." }
X
FUNCTION {bbl.mthesis}
{ "Master's thesis" }
X
FUNCTION {bbl.phdthesis}
{ "Ph.D. thesis" }
X
FUNCTION {bbl.first}
{ "1st" }
X
FUNCTION {bbl.second}
{ "2nd" }
X
FUNCTION {bbl.third}
{ "3rd" }
X
FUNCTION {bbl.fourth}
{ "4th" }
X
FUNCTION {bbl.fifth}
{ "5th" }
X
FUNCTION {bbl.st}
{ "st" }
X
FUNCTION {bbl.nd}
{ "nd" }
X
FUNCTION {bbl.rd}
{ "rd" }
X
FUNCTION {bbl.th}
{ "th" }
X
MACRO {jan} {"Jan."}
X
MACRO {feb} {"Feb."}
X
MACRO {mar} {"Mar."}
X
MACRO {apr} {"Apr."}
X
MACRO {may} {"May"}
X
MACRO {jun} {"Jun."}
X
MACRO {jul} {"Jul."}
X
MACRO {aug} {"Aug."}
X
MACRO {sep} {"Sep."}
X
MACRO {oct} {"Oct."}
X
MACRO {nov} {"Nov."}
X
MACRO {dec} {"Dec."}
X
FUNCTION {eng.ord}
{ duplicate$ "1" swap$ *
X #-2 #1 substring$ "1" =
X { bbl.th * }
X { duplicate$ #-1 #1 substring$
X duplicate$ "1" =
X { pop$ bbl.st * }
X { duplicate$ "2" =
X { pop$ bbl.nd * }
X { "3" =
X { bbl.rd * }
X { bbl.th * }
X if$
X }
X if$
X }
X if$
X }
X if$
}
X
MACRO {acmcs} {"ACM Computing Surveys"}
X
MACRO {acta} {"Acta Informatica"}
X
MACRO {cacm} {"Communications of the ACM"}
X
MACRO {ibmjrd} {"IBM Journal of Research and Development"}
X
MACRO {ibmsj} {"IBM Systems Journal"}
X
MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
X
MACRO {ieeetc} {"IEEE Transactions on Computers"}
X
MACRO {ieeetcad}
X {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
X
MACRO {ipl} {"Information Processing Letters"}
X
MACRO {jacm} {"Journal of the ACM"}
X
MACRO {jcss} {"Journal of Computer and System Sciences"}
X
MACRO {scp} {"Science of Computer Programming"}
X
MACRO {sicomp} {"SIAM Journal on Computing"}
X
MACRO {tocs} {"ACM Transactions on Computer Systems"}
X
MACRO {tods} {"ACM Transactions on Database Systems"}
X
MACRO {tog} {"ACM Transactions on Graphics"}
X
MACRO {toms} {"ACM Transactions on Mathematical Software"}
X
MACRO {toois} {"ACM Transactions on Office Information Systems"}
X
MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
X
MACRO {tcs} {"Theoretical Computer Science"}
X
INTEGERS { nameptr namesleft numnames }
X
FUNCTION {format.names}
{ 's :=
X #1 'nameptr :=
X s num.names$ 'numnames :=
X numnames 'namesleft :=
X { namesleft #0 > }
X { s nameptr
X "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
X nameptr #1 >
X {
X namesleft #1 >
X { ", " * t * }
X {
X numnames #2 >
X { "," * }
X 'skip$
X if$
X t "others" =
X { " " * "et~al." emphasize * }
X { bbl.and roman.list space.word * t * }
X if$
X }
X if$
X }
X 't
X if$
X nameptr #1 + 'nameptr :=
X namesleft #1 - 'namesleft :=
X }
X while$
}
X
FUNCTION {format.names.ed}
{ 's :=
X #1 'nameptr :=
X s num.names$ 'numnames :=
X numnames 'namesleft :=
X { namesleft #0 > }
X { s nameptr
X "{ff~}{vv~}{ll}{, jj}"
X format.name$ 't :=
X nameptr #1 >
X {
X namesleft #1 >
X { ", " * t * }
X {
X numnames #2 >
X { "," * }
X 'skip$
X if$
X t "others" =
X { " " * "et~al." emphasize * }
X { bbl.and roman.list space.word * t * }
X if$
X }
X if$
X }
X 't
X if$
X nameptr #1 + 'nameptr :=
X namesleft #1 - 'namesleft :=
X }
X while$
}
X
FUNCTION {format.authors}
{ author empty$
X { "" }
X {
X author format.names scaps
X }
X if$
}
X
FUNCTION {format.editors}
{ editor empty$
X { "" }
X {
X editor format.names scaps
X editor num.names$ #1 >
X { " (" * bbl.editors * ")" * }
X { " (" * bbl.editor * ")" * }
X if$
X }
X if$
}
X
FUNCTION {format.in.editors}
{ editor empty$
X { "" }
X { editor format.names.ed
X }
X if$
}
X
FUNCTION {format.isbn}
{ isbn empty$
X { "" }
X {
X "ISBN " isbn * }
X if$
}
X
FUNCTION {format.title}
{ title empty$
X { "" }
X { title
X "\enquote{" swap$ *
X non.stop
X { "}, " * }
X { "} " * }
X if$
X }
X if$
}
X
FUNCTION {end.quote.title}
{ title empty$
X 'skip$
X { before.all 'output.state := }
X if$
}
X
FUNCTION {output.bibitem}
{ newline$
X "\bibitem{" write$
X cite$ write$
X "}" write$
X newline$
X ""
X before.all 'output.state :=
}
X
FUNCTION {n.dashify}
{ 't :=
X ""
X { t empty$ not }
X { t #1 #1 substring$ "-" =
X { t #1 #2 substring$ "--" = not
X { "--" *
X t #2 global.max$ substring$ 't :=
X }
X { { t #1 #1 substring$ "-" = }
X { "-" *
X t #2 global.max$ substring$ 't :=
X }
X while$
X }
X if$
X }
X { t #1 #1 substring$ *
X t #2 global.max$ substring$ 't :=
X }
X if$
X }
X while$
}
X
FUNCTION {word.in}
{ bbl.in
X " " * }
X
FUNCTION {format.date}
{ year empty$
X { month empty$
X { "" }
X { "there's a month but no year in " cite$ * warning$
X month
X }
X if$
X }
X { month empty$
X 'year
X { month " " * year * }
X if$
X }
X if$
}
X
FUNCTION {format.btitle}
{ title emphasize
}
X
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
X { "~" }
X { " " }
X if$
X swap$ * *
}
X
FUNCTION {either.or.check}
{ empty$
X 'pop$
X { "can't use both " swap$ * " fields in " * cite$ * warning$ }
X if$
}
X
FUNCTION {format.bvolume}
{ volume empty$
X { "" }
X { bbl.volume volume tie.or.space.connect
X series empty$
X 'skip$
X { bbl.of space.word * series emphasize * }
X if$
X "volume and number" number either.or.check
X }
X if$
}
X
FUNCTION {format.number.series}
{ volume empty$
X { number empty$
X { series field.or.null }
X { output.state mid.sentence =
X { bbl.number }
X { bbl.number capitalize }
X if$
X number tie.or.space.connect
X series empty$
X { "there's a number but no series in " cite$ * warning$ }
X { bbl.in space.word * series * }
X if$
X }
X if$
X }
X { "" }
X if$
}
X
FUNCTION {is.num}
{ chr.to.int$
X duplicate$ "0" chr.to.int$ < not
X swap$ "9" chr.to.int$ > not and
}
X
FUNCTION {extract.num}
{ duplicate$ 't :=
X "" 's :=
X { t empty$ not }
X { t #1 #1 substring$
X t #2 global.max$ substring$ 't :=
X duplicate$ is.num
X { s swap$ * 's := }
X { pop$ "" 't := }
X if$
X }
X while$
X s empty$
X 'skip$
X { pop$ s }
X if$
}
X
FUNCTION {convert.edition}
{ edition extract.num "l" change.case$ 's :=
X s "first" = s "1" = or
X { bbl.first 't := }
X { s "second" = s "2" = or
X { bbl.second 't := }
X { s "third" = s "3" = or
X { bbl.third 't := }
X { s "fourth" = s "4" = or
X { bbl.fourth 't := }
X { s "fifth" = s "5" = or
X { bbl.fifth 't := }
X { s #1 #1 substring$ is.num
X { s eng.ord 't := }
X { edition 't := }
X if$
X }
X if$
X }
X if$
X }
X if$
X }
X if$
X }
X if$
X t
}
X
FUNCTION {format.edition}
{ edition empty$
X { "" }
X { output.state mid.sentence =
X { convert.edition "l" change.case$ " " * bbl.edition * }
X { convert.edition "t" change.case$ " " * bbl.edition * }
X if$
X }
X if$
}
X
INTEGERS { multiresult }
X
FUNCTION {multi.page.check}
{ 't :=
X #0 'multiresult :=
X { multiresult not
X t empty$ not
X and
X }
X { t #1 #1 substring$
X duplicate$ "-" =
X swap$ duplicate$ "," =
X swap$ "+" =
X or or
X { #1 'multiresult := }
X { t #2 global.max$ substring$ 't := }
X if$
X }
X while$
X multiresult
}
X
FUNCTION {format.pages}
{ pages empty$
X { "" }
X { pages multi.page.check
X { bbl.pages pages n.dashify tie.or.space.connect }
X { bbl.page pages tie.or.space.connect }
X if$
X }
X if$
}
X
FUNCTION {format.journal.pages}
{
X pages empty$
X 'skip$
X { duplicate$ empty$
X { pop$ format.pages }
X { ", " * pages n.dashify * }
X if$
X }
X if$
}
X
FUNCTION {format.vol.num.pages}
{ volume field.or.null
X volume empty$
X 'skip$
X { bbl.volume "~" * swap$ * }
X if$
X number empty$
X 'skip$
X {
X ", " bbl.nr * number tie.or.space.connect *
X volume empty$
X { "there's a number but no volume in " cite$ * warning$ }
X 'skip$
X if$
X }
X if$
X format.journal.pages
}
X
FUNCTION {format.chapter.pages}
{ chapter empty$
X 'format.pages
X { type empty$
X { bbl.chapter }
X { type "l" change.case$ }
X if$
X chapter tie.or.space.connect
X pages empty$
X 'skip$
X { ", " * format.pages * }
X if$
X }
X if$
}
X
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
X { "" }
X { editor empty$
X { word.in booktitle emphasize * }
X { word.in booktitle emphasize *
X ", " *
X bbl.edby
X *
X " " *
X format.in.editors *
X }
X if$
X }
X if$
}
X
FUNCTION {empty.misc.check}
{ author empty$ title empty$ howpublished empty$
X month empty$ year empty$ note empty$
X and and and and and
X key empty$ not and
X { "all relevant fields are empty in " cite$ * warning$ }
X 'skip$
X if$
}
X
FUNCTION {format.thesis.type}
{ type empty$
X 'skip$
X { pop$
X type "t" change.case$
X }
X if$
}
X
FUNCTION {format.tr.number}
{ type empty$
X { bbl.techrep }
X 'type
X if$
X number empty$
X { "t" change.case$ }
X { number tie.or.space.connect }
X if$
}
X
FUNCTION {format.article.crossref}
{
X key empty$
X { journal empty$
X { "need key or journal for " cite$ * " to crossref " * crossref *
X warning$
X ""
X }
X { word.in journal emphasize * }
X if$
X }
X { word.in key * " " *}
X if$
X " \cite{" * crossref * "}" *
}
X
FUNCTION {format.crossref.editor}
{ editor #1 "{vv~}{ll}" format.name$
X editor num.names$ duplicate$
X #2 >
X { pop$ " " * "et~al." emphasize * }
X { #2 <
X 'skip$
X { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
X { " " * "et~al." emphasize * }
X { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ * }
X if$
X }
X if$
X }
X if$
}
X
FUNCTION {format.book.crossref}
{ volume empty$
X { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
X word.in
X }
X { bbl.volume volume tie.or.space.connect
X bbl.of space.word *
X }
X if$
X editor empty$
X editor field.or.null author field.or.null =
X or
X { key empty$
X { series empty$
X { "need editor, key, or series for " cite$ * " to crossref " *
X crossref * warning$
X "" *
X }
X { series emphasize * }
X if$
X }
X { key * }
X if$
X }
X { format.crossref.editor * }
X if$
X " \cite{" * crossref * "}" *
}
X
FUNCTION {format.incoll.inproc.crossref}
{
X editor empty$
X editor field.or.null author field.or.null =
X or
X { key empty$
X { booktitle empty$
X { "need editor, key, or booktitle for " cite$ * " to crossref " *
X crossref * warning$
X ""
X }
X { word.in booktitle emphasize * }
X if$
X }
X { word.in key * " " *}
X if$
X }
X { word.in format.crossref.editor * " " *}
X if$
X " \cite{" * crossref * "}" *
}
X
FUNCTION {format.publisher}
{ publisher empty$
X { "empty publisher in " cite$ * warning$ }
X 'skip$
X if$
X ""
X address empty$ publisher empty$ and
X 'skip$
X {
X publisher empty$
X { address empty$
X 'skip$
X { address * }
X if$
X }
X { publisher *
X address empty$
X 'skip$
X { ", " * address * }
X if$
X }
X if$
X }
X if$
X output
}
X
FUNCTION {article}
{ output.bibitem
X format.authors "author" output.check
X format.title "title" output.check
X end.quote.title
X crossref missing$
X { journal
X emphasize
X "journal" output.check
X format.vol.num.pages output
X format.date "year" output.check
X }
X { format.article.crossref output.nonnull
X format.pages output
X }
X if$
X note output
X fin.entry
}
X
FUNCTION {book}
{ output.bibitem
X author empty$
X { format.editors "author and editor" output.check
X }
X { format.authors output.nonnull
X crossref missing$
X { "author and editor" editor either.or.check }
X 'skip$
X if$
X }
X if$
X format.btitle "title" output.check
X crossref missing$
X { format.bvolume output
X format.number.series output
X format.publisher
X }
X {
X format.book.crossref output.nonnull
X }
X if$
X format.edition output
X format.date "year" output.check
X format.isbn output
X note output
X fin.entry
}
X
FUNCTION {booklet}
{ output.bibitem
X format.authors output
X format.title "title" output.check
X end.quote.title
X howpublished output
X address output
X format.date output
X note output
X fin.entry
}
X
FUNCTION {inbook}
{ output.bibitem
X author empty$
X { format.editors "author and editor" output.check
X }
X { format.authors output.nonnull
X crossref missing$
X { "author and editor" editor either.or.check }
X 'skip$
X if$
X }
X if$
X format.btitle "title" output.check
X crossref missing$
X {
X format.publisher
X format.bvolume output
X format.chapter.pages "chapter and pages" output.check
X format.number.series output
X }
X {
X format.chapter.pages "chapter and pages" output.check
X format.book.crossref output.nonnull
X }
X if$
X format.edition output
X format.date "year" output.check
X format.isbn output
X note output
X fin.entry
}
X
FUNCTION {incollection}
{ output.bibitem
X format.authors "author" output.check
X format.title "title" output.check
X end.quote.title
X crossref missing$
X { format.in.ed.booktitle "booktitle" output.check
X format.publisher
X format.bvolume output
X format.number.series output
X format.chapter.pages output
X format.edition output
X format.date "year" output.check
X }
X { format.incoll.inproc.crossref output.nonnull
X format.chapter.pages output
X }
X if$
X format.isbn output
X note output
X fin.entry
}
X
FUNCTION {inproceedings}
{ output.bibitem
X format.authors "author" output.check
X format.title "title" output.check
X end.quote.title
X crossref missing$
X { format.in.ed.booktitle "booktitle" output.check
X publisher empty$
X { organization output
X address output
X }
X { organization output
X format.publisher
X }
X if$
X format.bvolume output
X format.number.series output
X format.pages output
X format.date "year" output.check
X }
X { format.incoll.inproc.crossref output.nonnull
X format.pages output
X }
X if$
X format.isbn output
X note output
X fin.entry
}
X
FUNCTION {conference} { inproceedings }
X
FUNCTION {manual}
{ output.bibitem
X author empty$
X { organization empty$
X 'skip$
X { organization output.nonnull
X address output
X }
X if$
X }
X { format.authors output.nonnull }
X if$
X format.btitle "title" output.check
X author empty$
X { organization empty$
X {
X address output
X }
X 'skip$
X if$
X }
X {
X organization output
X address output
X }
X if$
X format.edition output
X format.date output
X note output
X fin.entry
}
X
FUNCTION {mastersthesis}
{ output.bibitem
X format.authors "author" output.check
X format.btitle "title" output.check
X bbl.mthesis format.thesis.type output.nonnull
X school "school" output.check
X address output
X format.date "year" output.check
X note output
X fin.entry
}
X
FUNCTION {misc}
{ output.bibitem
X format.authors output
X format.title output
X end.quote.title
X howpublished output
X format.date output
X note output
X fin.entry
X empty.misc.check
}
X
FUNCTION {phdthesis}
{ output.bibitem
X format.authors "author" output.check
X format.btitle "title" output.check
X bbl.phdthesis format.thesis.type output.nonnull
X school "school" output.check
X address output
X format.date "year" output.check
X note output
X fin.entry
}
X
FUNCTION {proceedings}
{ output.bibitem
X editor empty$
X { organization output }
X { format.editors output.nonnull }
X if$
X format.btitle "title" output.check
X format.bvolume output
X format.number.series output
X address empty$
X { editor empty$
X { publisher new.sentence.checka }
X { organization publisher new.sentence.checkb
X organization output
X }
X if$
X publisher output
X format.date "year" output.check
X }
X { address output.nonnull
X format.date "year" output.check
X editor empty$
X 'skip$
X { organization output }
X if$
X publisher output
X }
X if$
X note output
X fin.entry
}
X
FUNCTION {techreport}
{ output.bibitem
X format.authors "author" output.check
X format.title "title" output.check
X end.quote.title
X format.tr.number output.nonnull
X institution "institution" output.check
X address output
X format.date "year" output.check
X note output
X fin.entry
}
X
FUNCTION {unpublished}
{ output.bibitem
X format.authors "author" output.check
X format.title "title" output.check
X end.quote.title
X note "note" output.check
X fin.entry
}
X
FUNCTION {default.type} { misc }
X
READ
X
FUNCTION {sortify}
{ purify$
X "l" change.case$
}
X
INTEGERS { len }
X
FUNCTION {chop.word}
{ 's :=
X 'len :=
X s #1 len substring$ =
X { s len #1 + global.max$ substring$ }
X 's
X if$
}
X
FUNCTION {sort.format.names}
{ 's :=
X #1 'nameptr :=
X ""
X s num.names$ 'numnames :=
X numnames 'namesleft :=
X { namesleft #0 > }
X { s nameptr
X "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}"
X format.name$ 't :=
X nameptr #1 >
X {
X " " *
X namesleft #1 = t "others" = and
X { "aaaaa" * }
X { t sortify * }
X if$
X }
X { t sortify * }
X if$
X nameptr #1 + 'nameptr :=
X namesleft #1 - 'namesleft :=
X }
X while$
}
X
FUNCTION {sort.format.title}
{ 't :=
X "A " #2
X "An " #3
X "The " #4 t chop.word
X chop.word
X chop.word
X sortify
X #1 global.max$ substring$
}
X
FUNCTION {author.sort}
{ author empty$
X { key empty$
X { "to sort, need author or key in " cite$ * warning$
X ""
X }
X { key sortify }
X if$
X }
X { author sort.format.names }
X if$
}
X
FUNCTION {author.editor.sort}
{ author empty$
X { editor empty$
X { key empty$
X { "to sort, need author, editor, or key in " cite$ * warning$
X ""
X }
X { key sortify }
X if$
X }
X { editor sort.format.names }
X if$
X }
X { author sort.format.names }
X if$
}
X
FUNCTION {author.organization.sort}
{ author empty$
X { organization empty$
X { key empty$
X { "to sort, need author, organization, or key in " cite$ * warning$
X ""
X }
X { key sortify }
X if$
X }
X { "The " #4 organization chop.word sortify }
X if$
X }
X { author sort.format.names }
X if$
}
X
FUNCTION {editor.organization.sort}
{ editor empty$
X { organization empty$
X { key empty$
X { "to sort, need editor, organization, or key in " cite$ * warning$
X ""
X }
X { key sortify }
X if$
X }
X { "The " #4 organization chop.word sortify }
X if$
X }
X { editor sort.format.names }
X if$
}
X
FUNCTION {presort}
{ type$ "book" =
X type$ "inbook" =
X or
X 'author.editor.sort
X { type$ "proceedings" =
X 'editor.organization.sort
X { type$ "manual" =
X 'author.organization.sort
X 'author.sort
X if$
X }
X if$
X }
X if$
X " "
X *
X year field.or.null sortify
X *
X " "
X *
X title field.or.null
X sort.format.title
X *
X #1 entry.max$ substring$
X 'sort.key$ :=
}
X
ITERATE {presort}
X
SORT
X
STRINGS { longest.label }
X
INTEGERS { number.label longest.label.width }
X
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
X #1 'number.label :=
X #0 'longest.label.width :=
}
X
FUNCTION {longest.label.pass}
{ number.label int.to.str$ 'label :=
X number.label #1 + 'number.label :=
X label width$ longest.label.width >
X { label 'longest.label :=
X label width$ 'longest.label.width :=
X }
X 'skip$
X if$
}
X
EXECUTE {initialize.longest.label}
X
ITERATE {longest.label.pass}
X
FUNCTION {begin.bib}
{ preamble$ empty$
X 'skip$
X { preamble$ write$ newline$ }
X if$
X "\begin{thebibliography}{" longest.label * "}" *
X write$ newline$
X "\newcommand{\enquote}[1]{``#1''}"
X write$ newline$
}
X
EXECUTE {begin.bib}
X
EXECUTE {init.state.consts}
X
ITERATE {call.type$}
X
FUNCTION {end.bib}
{ newline$
X "\end{thebibliography}" write$ newline$
}
X
EXECUTE {end.bib}
%% End of customized bst file
%%
%% End of file `cah-gut.bst'.
SHAR_EOF
$shar_touch -am 1204003497 'cah-gut.bst' &&
chmod 0644 'cah-gut.bst' ||
$echo 'restore of' 'cah-gut.bst' 'failed'
if ( md5sum --help </dev/null 2>&1 | grep 'sage: md5sum \[' ) >/dev/null 2>&1 \
&& ( md5sum --version </dev/null 2>&1 | grep -v 'textutils 1.12' ) >/dev/null; then
md5sum -c << SHAR_EOF >/dev/null 2>&1 \
|| $echo 'cah-gut.bst:' 'MD5 check failed'
d514ea88715aae25b1a72f412049779c cah-gut.bst
SHAR_EOF
else
shar_count="`LC_ALL=C wc -c < 'cah-gut.bst'`"
test 26070 -eq "$shar_count" ||
$echo 'cah-gut.bst:' 'original size' '26070,' 'current size' "$shar_count!"
fi
fi
$echo $shar_n 'x -' 'lock directory' '_sh04235:' $shar_c
if rm -fr _sh04235; then
$echo 'removed'
else
$echo 'failed to remove'
fi
exit 0