summaryrefslogtreecommitdiff
path: root/macros/latex-dev/doc/fntguide.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex-dev/doc/fntguide.tex')
-rw-r--r--macros/latex-dev/doc/fntguide.tex1907
1 files changed, 0 insertions, 1907 deletions
diff --git a/macros/latex-dev/doc/fntguide.tex b/macros/latex-dev/doc/fntguide.tex
deleted file mode 100644
index 92dd6d1a84..0000000000
--- a/macros/latex-dev/doc/fntguide.tex
+++ /dev/null
@@ -1,1907 +0,0 @@
-% \iffalse meta-comment
-%
-% Copyright 1993-2019
-%
-% The LaTeX3 Project and any individual authors listed elsewhere
-% in this file.
-%
-% This file is part of the LaTeX base system.
-% -------------------------------------------
-%
-% It may be distributed and/or modified under the
-% conditions of the LaTeX Project Public License, either version 1.3c
-% of this license or (at your option) any later version.
-% The latest version of this license is in
-% http://www.latex-project.org/lppl.txt
-% and version 1.3c or later is part of all distributions of LaTeX
-% version 2005/12/01 or later.
-%
-% This file has the LPPL maintenance status "maintained".
-%
-% The list of all files belonging to the LaTeX base distribution is
-% given in the file `manifest.txt'. See also `legal.txt' for additional
-% information.
-%
-% The list of derived (unpacked) files belonging to the distribution
-% and covered by LPPL is defined by the unpacking scripts (with
-% extension .ins) which are part of the distribution.
-%
-% \fi
-% Filename: fntguide.tex
-
-\NeedsTeXFormat{LaTeX2e}[1995/12/01]
-
-\documentclass{ltxguide}[1995/11/28]
-
-\title{\LaTeXe{} font selection}
-
-\author{\copyright~Copyright 1995--2019, \LaTeX3 Project Team.\\
- All rights reserved.}
-
-\date{July 2019}
-
-\begin{document}
-
-\maketitle
-
-\tableofcontents
-
-\section{Introduction}
-
-This document describes the new font selection features of the \LaTeX{}
-Document Preparation System. It is intended for package writers who
-want to write font-loading packages similar to |times| or |latexsym|.
-
-This document is only a brief introduction to the new facilities and
-is intended for package writers who are familiar with \TeX{} fonts and
-\LaTeX{} packages. It is \emph{neither} a user-guide \emph{nor} a
-reference manual for fonts in \LaTeXe.
-
-\subsection{\LaTeXe~fonts}
-
-The most important difference between \LaTeX~2.09 and \LaTeXe{} is the
-way that fonts are selected. In \LaTeX~2.09, the Computer Modern fonts
-were built into the \LaTeX~format, and so customizing \LaTeX{} to use
-other fonts was a major effort.
-
-In \LaTeXe, very few fonts are built into the format, and there are
-commands to load new text and math fonts. Packages such as |times| or
-|latexsym| allow authors to access these fonts.
-This document describes how to write similar font-loading packages.
-
-The \LaTeXe{} font selection system was first released as the `New Font
-Selection Scheme' (NFSS) in 1989, and then in release~2 in 1993.
-\LaTeXe{} includes NFSS release~2 as standard.
-
-\subsection{Overview}
-
-This document contains an overview of the new font commands
-of \LaTeX.
-
-\begin{description}
-
-\item[Section~\ref{Sec:text}] describes the commands for selecting fonts
- in classes and packages. It lists the five \LaTeX{} font
- attributes, and lists the commands for selecting fonts. It also
- describes how to customize the author commands such as |\textrm| and
- |\textit| to suit your document design.
-
-\item[Section~\ref{Sec:math}] explains the commands for controlling
- \LaTeX{} math fonts. It describes how to specify new math fonts and
- new math symbols.
-
-\item[Section~\ref{Sec:install}] explains how to install new fonts into
- \LaTeX. It shows how \LaTeX{} font attributes are turned into \TeX{}
- font names, and how to specify your own fonts using font definition
- files.
-
-\item[Section~\ref{Sec:encode}] discusses text font encodings.
- It describes how to declare a new encoding and how to define
- commands, such as |\AE| or |\"|, which have different definitions in
- different encodings, depending on whether ligatures, etc.\ are
- available in the encoding.
-
-\item[Section~\ref{Sec:misc}] covers font miscellanea. It describes how
- \LaTeX{} performs font substitution, how to customize fonts that are
- preloaded in the \LaTeX{} format, and the naming conventions used in
- \LaTeX{} font selection.
-
-\end{description}
-
-\subsection{Further information}
-
-For a general introduction to \LaTeX, including the new features of
-\LaTeXe, you should read \emph{\LaTeXbook},
-Leslie Lamport, Addison Wesley, 2nd~ed, 1994.
-
-A more detailed description of the \LaTeX{} font selection scheme is to
-be found in \emph{\LaTeXcomp}, 2nd~ed, by Mittelbach and Goossens, Addison
-Wesley, 2004.
-
-The \LaTeX{} font selection scheme is based on \TeX, which is described
-by its developer in \emph{The \TeX book}, Donald E.~Knuth, Addison
-Wesley, 1986, revised in 1991 to include the features of \TeX~3.
-
-Sebastian Rahtz's |psnfss| software contains the software for using a
-large number of Type~1 fonts (including the Adobe Laser Writer 35 and
-the Monotype CD-ROM fonts) in \LaTeX. It should be available from the
-same source as your copy of \LaTeX.
-
-The |psnfss| software uses fonts generated by Alan Jeffrey's
-|fontinst| software. This can convert fonts from Adobe Font Metric
-format into a format readable by \LaTeX, including the generation of
-the font definition files described in Section~\ref{Sec:install}. The
-|fontinst| software should be available from the same source as your
-copy of \LaTeX.
-
-Whenever practical, \LaTeX{} uses the font naming scheme called
-`fontname'; this was described in \emph{Filenames for fonts},%
-\footnote{An up-to-date electronic version
-of this document can be found on any CTAN server, in the directory
-\texttt{info/fontname}.}
-\emph{TUGboat}~11(4),~1990.
-
-The class-writer's guide \emph{\clsguide} describes
-the new \LaTeX{} features for writers of document classes and packages
-and is kept in |clsguide.tex|. Configuring
-\LaTeX{} is covered by the guide \emph{\cfgguide} in
-\texttt{cfgguide.tex} whilst the philosophy behind our policy on
-modifying \LaTeX{} is described in \emph{\modguide} in
-\texttt{modguide.tex}.
-
-The documented source code (from the files used to produce
-the kernel format via |latex.ltx|) is now available as
-\emph{The \LaTeXe\ Sources}.
-This very large document also includes an index of \LaTeX{}
-commands. It can be typeset from the \LaTeX{} file |source2e.tex|
-in the |base| directory; this uses the class file |ltxdoc.cls|.
-
-For more information about \TeX{} and \LaTeX{}, please contact your
-local \TeX{} Users Group, or the international \TeX{} Users Group.
-Addresses and other details can be found at:
-\begin{quote}\small\label{addrs}
- \texttt{http://www.tug.org/lugs.html}
-\end{quote}
-
-
-\section{Text fonts}
-\label{Sec:text}
-
-This section describes the commands available to class and package
-writers for specifying and selecting fonts.
-
-\subsection{Text font attributes}
-
-Every text font in \LaTeX{} has five \emph{attributes}:
-\begin{description}
-
-\item[encoding] This specifies the order that characters appear in the
- font. The two most common text encodings used in \LaTeX{} are
- Knuth's `\TeX{} text' encoding, and the `\TeX{} text extended'
- encoding developed by the \TeX{} Users Group members during a \TeX{}
- Conference at Cork in~1990 (hence its informal name `Cork encoding').
-
-\item[family] The name for a collection of fonts, usually grouped under
- a common name by the font foundry. For example, `Adobe Times', `ITC
- Garamond', and Knuth's `Computer Modern Roman' are all font families.
-
-\item[series] How heavy and/or expanded a font is. For example, `medium
- weight', `narrow' and `bold extended' are all series.
-
-\item[shape] The form of the letters within a font family. For
- example, `italic', `oblique' and `upright' (sometimes called
- `roman') are all font shapes.
-
-\item[size] The design size of the font, for example `10pt'. If no
- dimension is specified, `pt' is assumed.
-
-\end{description}
-The possible values for these attributes are given short acronyms by
-\LaTeX. The most common values for the font encoding are:
-\begin{center}
-\begin{minipage}{.7\linewidth}
- \begin{tabular}{rl}
- |OT1| & \TeX{} text \\
- |T1| & \TeX{} extended text \\
- |OML| & \TeX{} math italic \\
- |OMS| & \TeX{} math symbols \\
- |OMX| & \TeX{} math large symbols \\
- |U| & Unknown \\
- |L<xx>| & A local encoding
- \end{tabular}
-\end{minipage}
-\end{center}
-The `local' encodings are intended for font encodings which are only
-locally available, for example a font containing an organization's
-logo in various sizes.
-
-There are far too many font families to list them all, but some common
-ones are:
-\begin{center}
-\begin{minipage}{.7\linewidth}
- \begin{tabular}{rl}
- |cmr| & Computer Modern Roman \\
- |cmss| & Computer Modern Sans \\
- |cmtt| & Computer Modern Typewriter \\
- |cmm| & Computer Modern Math Italic \\
- |cmsy| & Computer Modern Math Symbols \\
- |cmex| & Computer Modern Math Extensions \\
- |ptm| & Adobe Times \\
- |phv| & Adobe Helvetica \\
- |pcr| & Adobe Courier
- \end{tabular}
-\end{minipage}
-\end{center}
-\NEWdescription{2019/07/10}
-The font series is denoting a combination of the weight (boldness) and
-the width (amount of expansion). The standard supported for weights
-and widths are:
-\begin{center}
-%\begin{minipage}{.7\linewidth}
- \begin{tabular}{rl}
- |ul| & Ultra Light \\
- |el| & Extra Light \\
- |l| & Light \\
- |sl| & Semi Light \\
- |m| & Medium (normal)\\
- |sb| & Semi Bold \\
- |b| & Bold \\
- |eb| & Extra Bold \\
- |ub| & Ultra Bold \\
- \end{tabular}
-\qquad
- \begin{tabular}{rlr}
- |uc| & Ultra Condensed & 50\% \\
- |ec| & Extra Condensed & 62.5\% \\
- |c| & Condensed & 75\% \\
- |sc| & Semi Condensed & 87.5\% \\
- |m| & Medium & 100\% \\
- |sx| & Semi Expanded & 112.5\% \\
- |x| & Expanded & 125\% \\
- |ex| & Extra Expanded & 150\% \\
- |ux| & Ultra Expanded & 200\% \\
- \end{tabular}
-\end{center}
-These are concatenated to a single series value except that |m| is
-dropped unless both weight and width are medium in which case a single
-|m| is used.
-
-\newpage
-
-Examples for series values are then:
-\begin{center}
-\begin{minipage}{.7\linewidth}
- \begin{tabular}{rl}
- |m| & Medium weight and width \\
- |b| & Bold weight, medium width \\
- |bx| & Bold extended \\
- |sb| & Semi-bold, medium width\\
- |sbx| & Semi-bold extended\\
- |c| & Medium weight, condensed width
- \end{tabular}
-\end{minipage}
-\end{center}
-\NEWdescription{2019/07/10}
-Note, that there are a large variety of names floating around like
-``regular'', ``black'', ``demi-bold'', ``thin'', ``heavy'' and many
-more. If at all possible they should be matched into the standard
-naming scheme to allow for sensible default substitutions if
-necessary, e.g., ``demi-bold'' is normally just another name for
-``semi-bold'', so should get |sb| assigned, etc.
-
-The most common values for the font shape are:
-\begin{center}
-\begin{minipage}{.7\linewidth}
- \begin{tabular}{rl}
- |n| & Normal (that is `upright' or `roman') \\
- |it| & Italic \\
- |sl| & Slanted (or `oblique') \\
- |sc| & Caps and small caps
- \end{tabular}
-\end{minipage}
-\end{center}
-The font size is specified as a dimension, for example |10pt| or
-|1.5in| or |3mm|; if no unit is specified, |pt| is assumed. These five
-parameters specify every \LaTeX{} font, for example:
-\begin{center}
- \begin{tabular}{@{}r@{\,}l@{\,}c@{\,}c@{\,}cc@{}r@{}}
- \multicolumn{5}{@{}c}{\emph{\LaTeX{} specification}} &
- \emph{Font} &
- \emph{\TeX{} font name} \\
- |OT1| & |cmr| & |m| & |n| & |10| &
- Computer Modern Roman 10 point &
- |cmr10| \\
- |OT1| & |cmss| & |m| & |sl| & |1pc| &
- Computer Modern Sans Oblique 1 pica &
- |cmssi12| \\
- |OML| & |cmm| & |m| & |it| & |10pt| &
- Computer Modern Math Italic 10 point &
- |cmmi10| \\
- |T1| & |ptm| & |b| & |it| & |1in| &
- Adobe Times Bold Italic 1 inch &
- |ptmb8t at 1in|
- \end{tabular}
-\end{center}
-These five parameters are displayed whenever \LaTeX{} gives an overfull
-box warning, for example:
-\begin{verbatim}
- Overfull \hbox (3.80855pt too wide) in paragraph at lines 314--318
- []\OT1/cmr/m/n/10 Normally [] and [] will be iden-ti-cal,
-\end{verbatim}
-The author commands for fonts set the five attributes:
-\begin{center}
- \begin{tabular}{rcl}
- \emph{Author command} &
- \emph{Attribute} &
- \emph{Value in} |article| \emph{class} \\
- |\textnormal{..}| or |\normalfont| & family & |cmr| \\
- |\textrm{..}| or |\rmfamily| & family & |cmr| \\
- |\textsf{..}| or |\sffamily| & family & |cmss| \\
- |\texttt{..}| or |\ttfamily| & family & |cmtt| \\
- |\textmd{..}| or |\mdseries| & series & |m| \\
- |\textbf{..}| or |\bfseries| & series & |bx| \\
- |\textup{..}| or |\upshape| & shape & |n| \\
- |\textit{..}| or |\itshape| & shape & |it| \\
- |\textsl{..}| or |\slshape| & shape & |sl| \\
- |\textsc{..}| or |\scshape| & shape & |sc| \\
- |\tiny| & size & |5pt| \\
- |\scriptsize| & size & |7pt| \\
- |\footnotesize| & size & |8pt| \\
- |\small| & size & |9pt| \\
- |\normalsize| & size & |10pt| \\
- |\large| & size & |12pt| \\
- |\Large| & size & |14.4pt| \\
- |\LARGE| & size & |17.28pt| \\
- |\huge| & size & |20.74pt| \\
- |\Huge| & size & |24.88pt|
- \end{tabular}
-\end{center}
-The values used by these commands are determined by the document class,
-using the parameters defined in Section~\ref{Sec:text.param}.
-
-Note that there are no author commands for selecting new encodings.
-These should be provided by packages, such as the |fontenc| package.
-
-This section does not explain how \LaTeX{} font specifications are
-turned into \TeX{} font names. This is described in
-Section~\ref{Sec:install}.
-
-\subsection{Selection commands}
-
-The low-level commands used to select a text font are as follows.
-
-\begin{decl}
-|\fontencoding| \arg{encoding} \\
-|\fontfamily| \arg{family}\\
-|\fontseries| \arg{series}\\
-|\fontshape| \arg{shape}\\
-|\fontsize| \arg{size} \arg{baselineskip}\\
-|\linespread| \arg{factor}
-\end{decl}
-
-\NEWdescription{1998/12/01}
-Each of the commands starting with |\font...| sets one of the font
-attributes; |\fontsize| also sets |\baselineskip|. The |\linespread|
-command prepares to multiply the current (or newly defined)
-|\baselineskip| with \m{factor} (e.g., spreads the lines apart for
-values greater one).
-
-The actual font in use is not altered by these commands, but the
-current attributes are used to determine which font and baseline skip
-to use after the next |\selectfont| command.
-
-
-\begin{decl}
-|\selectfont|
-\end{decl}
-Selects a text font, based on the current values of the font attributes.
-
-\emph{Warning}: There \emph{must} be a |\selectfont| command
-immediately after any settings of the font parameters by (some of)
-the six commands above, before any following text.
-For example, it is legal to say:
-\begin{verbatim}
- \fontfamily{ptm}\fontseries{b}\selectfont Some text.
-\end{verbatim}
-but it is \emph{not} legal to say:
-\begin{verbatim}
- \fontfamily{ptm} Some \fontseries{b}\selectfont text.
-\end{verbatim}
-You may get unexpected results if you put text between a
-|\font<parameter>| command (or |\linespread|) and a |\selectfont|.
-
-\begin{decl}
-|\usefont| \arg{encoding} \arg{family} \arg{series} \arg{shape}
-\end{decl}
-A short hand for the equivalent |\font...| commands followed by a
-call to |\selectfont|.
-
-
-\subsection{Internals}
-
-The current values of the font attributes are held in internal macros.
-
-\begin{decl}
- |\f@encoding| \\
- |\f@family| \\
- |\f@series| \\
- |\f@shape| \\
- |\f@size| \\
- |\f@baselineskip| \\
- |\tf@size| \\
- |\sf@size| \\
- |\ssf@size|
-\end{decl}
-
-These hold the current values of the encoding, the family, the series,
-the shape, the size, the baseline skip, the main math size, the
-`script' math size and the `scriptscript' math size. The last three
-are accessible only within a formula; outside of math they may contain
-arbitrary values.
-
-For example, to set the size to 12 without
-changing the baseline skip:
-\begin{verbatim}
- \fontsize{12}{\f@baselineskip}
-\end{verbatim}
-However, you should \emph{never} alter the values of the internal
-commands directly; they must only be modified using the low-level
-commands like |\fontfamily|, |\fontseries|, etc. If you disobey this
-warning you might produce code that loops.
-
-\subsection{Parameters for author commands}
-\label{Sec:text.param}
-
-The parameter values set by author commands such as |\textrm| and
-|\rmfamily|, etc.\ are not hard-wired into \LaTeX; instead these
-commands use the values of a number of parameters set by the document
-class and packages. For example, |\rmdefault| is the name of the
-default family selected by |\textrm| and |\rmfamily|. Thus to set a
-document in Adobe Times, Helvetica and Courier, the document designer
-specifies:
-\begin{verbatim}
- \renewcommand{\rmdefault}{ptm}
- \renewcommand{\sfdefault}{phv}
- \renewcommand{\ttdefault}{pcr}
-\end{verbatim}
-
-\begin{decl}
- |\encodingdefault| \\
- |\familydefault| \\
- |\seriesdefault| \\
- |\shapedefault|
-\end{decl}
-The encoding, family, series and shape of the main body font. By
-default these are |OT1|, |\rmdefault|, |m| and |n|. Note that since
-the default family is |\rmdefault|, this means that changing
-|\rmdefault| will change the main body font of the document.
-
-\begin{decl}
- |\rmdefault| \\
- |\sfdefault| \\
- |\ttdefault|
-\end{decl}
-The families selected by |\textrm|, |\rmfamily|, |\textsf|,
-|\sffamily|, |\texttt| and |\ttfamily|. By default these are |cmr|,
-|cmss| and |cmtt|.
-
-\begin{decl}
- |\bfdefault| \\
- |\mddefault|
-\end{decl}
-The series selected by |\textbf|, |\bfseries|, |\textmd| and
-|\mdseries|. By default these are |bx| and |m|.
-These values are suitable for the default families used. If other
-fonts are used as standard document fonts (for example, certain
-PostScript fonts) it might be necessary to adjust the value of
-|\bfdefault| to |b| since only a few such families have a `bold
-extended' series. An alternative (taken for the fonts provided by
-|psnfss|) is to define silent substitutions from |bx| series to |b|
-series with special |\DeclareFontShape| declarations and the |ssub|
-size function, see Section~\ref{sec:sizefunct}.
-
-
-\begin{decl}
- |\itdefault| \\
- |\sldefault| \\
- |\scdefault| \\
- |\updefault|
-\end{decl}
-The shapes selected by |\textit|, |\itshape|, |\textsl|, |\slshape|,
-|\textsc|, |\scshape|, |\textup| and |\upshape|. By default these are
-|it|, |sl|, |sc| and |n|.
-
-Note that there are no parameters for the size commands. These should
-be defined directly in class files, for example:
-\begin{verbatim}
- \renewcommand{\normalsize}{\fontsize{10}{12}\selectfont}
-\end{verbatim}
-More elaborate examples (setting additional parameters when the text
-size is changed) can be found in |classes.dtx| the source
-documentation for the classes |article|, |report|, and |book|.
-
-
-\subsection{Special font declaration commands}
-
-\begin{decl}
-|\DeclareFixedFont| \arg{cmd} \arg{encoding} \arg{family} \arg{series}
- \arg{shape} \arg{size}
-\end{decl}
-
-Declares command \m{cmd} to be a font switch which selects the font
-that is specified by the attributes \m{encoding}, \m{family},
-\m{series}, \m{shape}, and \m{size}.
-
-The font is selected without any adjustments to baselineskip and other
-surrounding conditions.
-
-This example makes |{\picturechar .}| select a small dot very quickly:
-\begin{verbatim}
- \DeclareFixedFont{\picturechar}{OT1}{cmr}{m}{n}{5}
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareTextFontCommand| \arg{cmd} \arg{font-switches}
-\end{decl}
-
-Declares command \m{cmd} to be a font command with one argument.
-The current font attributes are locally modified by \m{font-switches}
-and then the argument of \m{cmd} is typeset in the resulting new font.
-
-Commands defined by |\DeclareTextFontCommand| automatically take care
-of any necessary italic correction (on either side).
-
-The following example shows how |\textrm| is defined by the kernel.
-\begin{verbatim}
- \DeclareTextFontCommand{\textrm}{\rmfamily}
-\end{verbatim}
-
-To define a command that always typeset its argument in the italic
-shape of the main document font you could declare:
-\begin{verbatim}
- \DeclareTextFontCommand{\normalit}{\normalfont\itshape}
-\end{verbatim}
-
-This declaration can be used to change the meaning of a command; if
-\m{cmd} is already defined, a log that it has been redefined
-is put in the transcript file.
-
-\begin{decl}
-|\DeclareOldFontCommand| \arg{cmd} \arg{text-switch}
- \arg{math-switch}
-\end{decl}
-
-Declares command \m{cmd} to be a font switch (i.e.~used with the
-syntax |{<cmd>...}|) having the definition \m{text-switch}
-when used in text and the definition \m{math-switch} when used in a
-formula.
-Math alphabet commands, like |\mathit|, when used within \m{math-switch}
-should not have an argument. Their use in this argument causes their
-semantics to change so that they here act as a font switch, as
-required by the usage of the \m{cmd}.
-
-This declaration is useful for setting up commands like |\rm| to behave
-as they did in \LaTeX~2.09. We strongly urge you \emph{not} to misuse
-this declaration to invent new font commands.
-
-The following example defines |\it| to produce the italic shape of the
-main document font if used in text and to switch to the font that would
-normally be produced by the math alphabet |\mathit| if used in a
-formula.
-\begin{verbatim}
- \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
-\end{verbatim}
-
-This declaration can be used to change the meaning of a command; if
-\m{cmd} is already defined, a log that it has been redefined
-is put in the transcript file.
-
-
-\section{Math fonts}
-\label{Sec:math}
-
-This section describes the commands available to class and package
-writers for specifying math fonts and math commands.
-
-\subsection{Math font attributes}
-
-The selection of fonts within math mode is quite different to that of
-text fonts.
-
-Some math fonts are selected explicitly by one-argument commands such
-as |\mathsf{max}| or |\mathbf{vec}|; such fonts are called \emph{math
-alphabets}. These math alphabet commands affect only the font used
-for letters and symbols of type |\mathalpha| (see
-Section~\ref{Sec:math.commands}); other symbols within the argument
-will be left unchanged. The predefined math alphabets are:
-\begin{center}
- \begin{tabular}{ccc}
- \emph{Alphabet} & \emph{Description} & \emph{Example} \\
- |\mathnormal| & default & $abcXYZ$ \\
- |\mathrm| & roman & $\mathrm{abcXYZ}$ \\
- |\mathbf| & bold roman & $\mathbf{abcXYZ}$ \\
- |\mathsf| & sans serif & $\mathsf{abcXYZ}$ \\
- |\mathit| & text italic & $\mathit{abcXYZ}$ \\
- |\mathtt| & typewriter & $\mathtt{abcXYZ}$ \\
- |\mathcal| & calligraphic & $\mathcal{XYZ}$
- \end{tabular}
-\end{center}
-Other math fonts are selected implicitly by \TeX{} for symbols, with
-commands such as |\oplus| (producing $\oplus$) or with straight
-characters like |>>| or |+|. Fonts containing such math symbols are
-called \emph{math symbol fonts}. The predefined math symbol fonts
-are:
-\begin{center}
- \begin{tabular}{ccc}
- \emph{Symbol font} & \emph{Description} & \emph{Example} \\
- |operators| & symbols from |\mathrm| & $[\;+\;]$ \\
- |letters| & symbols from |\mathnormal| & $<<\star>>$ \\
- |symbols| & most \LaTeX{} symbols & $\leq*\geq$ \\
- |largesymbols| & large symbols & $\sum\prod\int$
- \end{tabular}
-\end{center}
-Some math fonts are both \emph{math alphabets} and \emph{math symbol
-fonts}, for example |\mathrm| and |operators| are the same font, and
-|\mathnormal| and |letters| are the same font.
-
-Math fonts in \LaTeX{} have the same five attributes as text fonts:
-encoding, family, series, shape and size. However, there are no
-commands that allow the attributes to be individually changed.
-Instead, the conversion from math fonts to these five attributes is
-controlled by the \emph{math version}. For example, the |normal| math
-version maps:
-\begin{center}
- \begin{tabular}{rlc@{ }c@{ }c@{ }c}
- \multicolumn{2}{c}{\emph{Math font}} &
- \multicolumn{4}{c}{\emph{External font}} \\
- \emph{Alphabets} & \emph{Symbol fonts} &
- \multicolumn{4}{c}{\emph{Attributes}} \\
- |\mathnormal| & |letters| & |OML| & |cmm| & |m| & |it| \\
- |\mathrm| & |operators| & |OT1| & |cmr| & |m| & |n| \\
- |\mathcal| & |symbols| & |OMS| & |cmsy| & |m| & |n| \\
- & |largesymbols| & |OMX| & |cmex| & |m| & |n| \\
- |\mathbf| & & |OT1| & |cmr| & |bx| & |n| \\
- |\mathsf| & & |OT1| & |cmss| & |m| & |n| \\
- |\mathit| & & |OT1| & |cmr| & |m| & |it| \\
- |\mathtt| & & |OT1| & |cmtt| & |m| & |n|
- \end{tabular}
-\end{center}
-The |bold| math version is similar except that it contains bold fonts.
-The command |\boldmath| selects the |bold| math version.
-
-Math versions can only be changed outside of math mode.
-
-The two predefined math versions are:
-\begin{center}
- \begin{tabular}{rl}
- |normal| & the default math version \\
- |bold| & the bold math version
- \end{tabular}
-\end{center}
-Packages may define new math alphabets, math symbol fonts, and math
-versions. This section describes the commands for writing such
-packages.
-
-\subsection{Selection commands}
-
-There are no commands for selecting symbol fonts. Instead, these are
-selected indirectly through symbol commands like |\oplus|.
-Section~\ref{Sec:math.commands} explains how to define symbol commands.
-
-\begin{decl}
- |\mathnormal{<math>}|\\
- |\mathcal{<math>}|\\
- |\mathrm{<math>}|\\
- |\mathbf{<math>}|\\
- |\mathsf{<math>}|\\
- |\mathit{<math>}|\\
- |\mathtt{<math>}|
-\end{decl}
-Each math alphabet is a command which can only be used inside math
-mode. For example, |$x + \mathsf{y} + \mathcal{Z}$| produces $x +
-\mathsf{y} + \mathcal{Z}$.
-
-\begin{decl}
-|\mathversion{<version>}|
-\end{decl}
-This command selects a math version; it can only be used outside math
-mode. For example, |\boldmath| is defined to be |\mathversion{bold}|.
-
-\subsection{Declaring math versions}
-
-\begin{decl}
-|\DeclareMathVersion| \arg{version}
-\end{decl}
-
-Defines \m{version} to be a math version.
-
-The newly declared version is initialized with the defaults for all
-symbol fonts and math alphabets declared so far (see the commands
-|\DeclareSymbolFont| and |\DeclareMathAlphabet|).
-
-If used on an already existing version, an information message is
-written to the transcript file and all previous |\SetSymbolFont| or
-|\SetMathAlphabet| declarations for this version are overwritten by
-the math alphabet and symbol font defaults, i.e.~one ends up with a
-virgin math version.
-
-Example:
-\begin{verbatim}
- \DeclareMathVersion{normal}
-\end{verbatim}
-
-
-\subsection{Declaring math alphabets}
-
-\begin{decl}
-|\DeclareMathAlphabet| \arg{math-alph} \arg{encoding} \arg{family}
- \arg{series} \arg{shape}
-\end{decl}
-
-\NEWdescription{1997/12/01}
-If this is the first declaration for \m{math-alph} then a new math
-alphabet with this as its command name is created.
-
-The arguments \m{encoding} \m{family} \m{series} \m{shape} are used to
-set, or reset, the default values for this math alphabet in all math
-versions; if required, these must be further reset later for a
-particular math version by a |\SetMathAlphabet| command.
-
-If \m{shape} is empty then this \m{math-alph} is declared to be invalid
-in all versions, unless it is set by a later |\SetMathAlphabet|
-command for a particular math version.
-
-Checks that the command \m{math-alph} is either already a math
-alphabet command or is undefined; and that \m{encoding} is a known
-encoding scheme, i.e., has been previously declared.
-
-
-In these examples, |\foo| is defined for all math versions but |\baz|,
-by default, is defined nowhere.
-\begin{verbatim}
- \DeclareMathAlphabet{\foo}{OT1}{cmtt}{m}{n}
- \DeclareMathAlphabet{\baz}{OT1}{}{}{}
-\end{verbatim}
-
-
-\begin{decl}
-|\SetMathAlphabet| \arg{math-alph} \arg{version}\\
- \null\hfill\arg{encoding} \arg{family} \arg{series} \arg{shape}
-\end{decl}
-
-Changes, or sets, the font for the math alphabet \m{math-alph} in math
-version \m{version} to \m{encoding}\m{family}\m{series}\m{shape}.
-
-Checks that \m{math-alph} has been declared as a math alphabet,
-\m{version} is a known math version and \m{encoding} is a known
-encoding scheme.
-
-
-This example defines |\baz| for the `normal' math version only:
-\begin{verbatim}
- \SetMathAlphabet{\baz}{normal}{OT1}{cmss}{m}{n}
-\end{verbatim}
-
-Note that this declaration is not used for all math alphabets:
-Section~\ref{sec:symalph} describes |\DeclareSymbolFontAlphabet|,
-which is used to set up math alphabets contained in fonts which have
-been declared as symbol fonts.
-
-
-\subsection{Declaring symbol fonts}
-\label{sec:symalph}
-
-\begin{decl}
-|\DeclareSymbolFont| \arg{sym-font} \arg{encoding} \arg{family}
- \arg{series} \arg{shape}
-\end{decl}
-
-\NEWdescription{1997/12/01}
-If this is the first declaration for \m{sym-font} then a new
-symbol font with this name is created (i.e.~this identifier is assigned
-to a new \TeX{} math group).
-
-The arguments \m{encoding} \m{family} \m{series} \m{shape} are used to
-set, or reset. the default values for this symbol font in \emph{all}
-math versions; if required, these must be further reset later for
-a particular math version by a |\SetSymbolFont| command.
-
-Checks that \m{encoding} is a declared encoding scheme.
-
-
-For example, the following sets up the first four standard math symbol
-fonts:
-\begin{verbatim}
- \DeclareSymbolFont{operators}{OT1}{cmr}{m}{n}
- \DeclareSymbolFont{letters}{OML}{cmm}{m}{it}
- \DeclareSymbolFont{symbols}{OMS}{cmsy}{m}{n}
- \DeclareSymbolFont{largesymbols}{OMX}{cmex}{m}{n}
-\end{verbatim}
-
-
-\begin{decl}
-|\SetSymbolFont| \arg{sym-font} \arg{version}\\
- \null\hfill \arg{encoding} \arg{family} \arg{series} \arg{shape}
-\end{decl}
-
-Changes the symbol font \m{sym-font} for math version \m{version}
-to \m{encoding} \m{family} \m{series} \m{shape}.
-
-Checks that \m{sym-font} has been declared as a symbol font,
-\m{version} is a known math version and \m{encoding} is a
-declared encoding scheme.
-
-
-For example, the following come from the set up of the `bold'
-math version:
-\begin{verbatim}
- \SetSymbolFont{operators}{bold}{OT1}{cmr}{bx}{n}
- \SetSymbolFont{letters}{bold}{OML}{cmm}{b}{it}
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareSymbolFontAlphabet| \arg{math-alph} \arg{sym-font}
-\end{decl}
-
-\NEWdescription{1997/12/01}
-Allows the previously declared symbol font \m{sym-font} to be the
-math alphabet with command \m{math-alph} in \emph{all} math versions.
-
-Checks that the command \m{math-alph} is either already a math alphabet
-command or is undefined; and that \m{sym-font} is a symbol font.
-
-
-Example:
-\begin{verbatim}
- \DeclareSymbolFontAlphabet{\mathrm}{operators}
- \DeclareSymbolFontAlphabet{\mathcal}{symbols}
-\end{verbatim}
-
-This declaration should be used in preference to
-|\DeclareMathAlphabet| and |\SetMathAlphabet| when a math alphabet is
-the same as a symbol font; this is because it makes better use of the
-limited number (only 16) of \TeX's math groups.
-
-\NEWdescription{1997/12/01}
-Note that, whereas a \TeX{} math group is allocated to each symbol font
-when it is first declared, a math alphabet uses a \TeX{} math group
-only when its command is used within a math formula.
-
-
-\subsection{Declaring math symbols}
-\label{Sec:math.commands}
-
-\begin{decl}
-|\DeclareMathSymbol| \arg{symbol} \arg{type} \arg{sym-font}
- \arg{slot}
-\end{decl}
-
-The \m{symbol} can be either a single character such as `|>>|', or a
-macro name, such as |\sum|.
-
-Defines the \m{symbol} to be a math symbol of type
-\m{type} in slot \m{slot} of symbol font \m{sym-font}. The
-\m{type} can be given as a number or as a command:
-\begin{center}
- \begin{tabular}{ccc}
- \emph{Type} & \emph{Meaning} & \emph{Example} \\
- |0| or |\mathord | & Ordinary & $\alpha$ \\
- |1| or |\mathop | & Large operator & $\sum$ \\
- |2| or |\mathbin | & Binary operation & $\times$ \\
- |3| or |\mathrel | & Relation & $\leq$ \\
- |4| or |\mathopen | & Opening & $\langle$ \\
- |5| or |\mathclose| & Closing & $\rangle$ \\
- |6| or |\mathpunct| & Punctuation & $;$ \\
- |7| or |\mathalpha| & Alphabet character & $A$
- \end{tabular}
-\end{center}
-Only symbols of type |\mathalpha| will be affected by math alphabet
-commands: within the argument of a math alphabet command they will
-produce the character in slot \m{slot} of that math alphabet's font.
-Symbols of other types will always produce the same symbol
-(within one math version).
-
-|\DeclareMathSymbol| allows a macro \m{symbol} to be redefined only if
-it was previously defined to be a math symbol. It also checks that
-the \m{sym-font} is a declared symbol font.
-
-Example:
-\begin{verbatim}
- \DeclareMathSymbol{\alpha}{0}{letters}{"0B}
- \DeclareMathSymbol{\lessdot}{\mathbin}{AMSb}{"0C}
- \DeclareMathSymbol{\alphld}{\mathalpha}{AMSb}{"0C}
-\end{verbatim}
-
-\begin{decl}
- |\DeclareMathDelimiter| \arg{cmd} \arg{type}
- \arg{sym-font-1} \arg{slot-1}\\
- \null\hfill \arg{sym-font-2} \arg{slot-2}
-\end{decl}
-Defines \m{cmd} to be a math delimiter where the small variant is in
-slot \m{slot-1} of symbol font \m{sym-font-1} and the large
-variant is in slot \m{slot-2} of symbol font \m{sym-font-2}.
-Both symbol fonts must have been declared previously.
-
-Checks that \m{sym-font-i} are both declared symbol fonts.
-
-If \TeX{} is not looking for a delimiter, \m{cmd} is treated just as
-if it had been defined with |\DeclareMathSymbol| using
-\m{type}, \m{sym-font-1} and \m{slot-1}. In other words, if a
-command is defined as a delimiter then this automatically defines it
-as a math symbol.
-
-\NEWdescription{1998/06/01}
-In case \m{cmd} is a single character such as `|[|', the same syntax is
-used. Previously the \arg{type} argument was not present (and thus the
-corresponding math symbol declaration had to be provided separately).
-
-Example:
-\begin{verbatim}
- \DeclareMathDelimiter{\langle}{\mathopen}{symbols}{"68}
- {largesymbols}{"0A}
- \DeclareMathDelimiter{(} {\mathopen}{operators}{"28}
- {largesymbols}{"00}
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareMathAccent| \arg{cmd} \arg{type} \arg{sym-font} \arg{slot}
-\end{decl}
-
-Defines \m{cmd} to act as a math accent.
-
-The accent character comes from slot \m{slot} in
-\m{sym-font}. The \m{type} can be either
-|\mathord| or |\mathalpha|; in the latter case the accent character
-changes font when used in a math alphabet.
-
-Example:
-\begin{verbatim}
- \DeclareMathAccent{\acute}{\mathalpha}{operators}{"13}
- \DeclareMathAccent{\vec}{\mathord}{letters}{"7E}
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareMathRadical| \arg{cmd}
- \arg{sym-font-1} \arg{slot-1}\\
- \null\hfill \arg{sym-font-2} \arg{slot-2}
-\end{decl}
-
-Defines \m{cmd} to be a radical where the small variant is in
-slot \m{slot-1} of symbol font \m{sym-font-1} and the
-large variant is in slot \m{slot-2} of symbol font
-\m{sym-font-2}. Both symbol fonts must have been declared
-previously.
-
-Example (probably the only use for it!):
-\begin{verbatim}
- \DeclareMathRadical{\sqrt}{symbols}{"70}{largesymbols}{"70}
-\end{verbatim}
-
-\subsection{Declaring math sizes}
-
-\begin{decl}
-|\DeclareMathSizes| \arg{t-size} \arg{mt-size} \arg{s-size}
- \arg{ss-size}
-\end{decl}
-
-Declares that \m{mt-size} is the (main) math text size, \m{s-size} is
-the `script' size and \m{ss-size} the `scriptscript' size to be used
-in math, when \m{t-size} is the current text size. For text sizes for
-which no such declaration is given the `script' and `scriptscript'
-size will be calculated and then fonts are loaded for the calculated
-sizes or the best approximation (this may result in a warning
-message).
-
-Normally, \m{t-size} and \m{mt-size} will be identical; however, if,
-for example, PostScript text fonts are mixed with bit-map math fonts
-then you may not have available a \m{mt-size} for every \m{t-size}.
-
-Example:
-\begin{verbatim}
- \DeclareMathSizes{13.82}{14.4}{10}{7}
-\end{verbatim}
-
-\section{Font installation}
-\label{Sec:install}
-
-This section explains how \LaTeX's font attributes are turned into
-\TeX{} font specifications.
-
-\subsection{Font definition files}
-
-\NEWdescription{1997/12/01}
-The description of how \LaTeX{} font attributes are turned into \TeX{}
-fonts is usually kept in a \emph{font definition file} (|.fd|). The
-file for family \m{family} in encoding \m{ENC} must be
-called |<enc><family>.fd|: for example, |ot1cmr.fd| for Computer
-Modern Roman with encoding |OT1| or |t1ptm.fd| for Adobe Times with
-encoding |T1|. Note that encoding names are converted to lowercase
-when used as part of file names.
-
-Whenever \LaTeX{} encounters an encoding/family combination that it
-does not know (e.g.~if the document designer says
-|\fontfamily{ptm}\selectfont|) then \LaTeX{} attempts to load the
-appropriate |.fd| file. ``Not known'' means: there was no
-|\DeclareFontFamily| declaration issued for this encoding/family
-combination. If the |.fd| file could not be found, a warning is
-issued and font substitutions are made.
-
-The declarations in the font definition file are responsible for
-telling \LaTeX{} how to load fonts for that encoding/family
-combination.
-
-\subsection{Font definition file commands}
-
-\emph{Note}: A font definition file should contain only commands
-from this subsection.
-
-Note that these commands can also be used outside a font definition
-file: they can be put in package or class files, or even in the
-preamble of a document.
-
-\begin{decl}
- |\ProvidesFile{<file-name>}[<release-info>]|
-\end{decl}
-The file should announce itself with a |\ProvidesFile| command,
-as described in \emph{\clsguide}. For example:
-\begin{verbatim}
- \ProvidesFile{t1ptm.fd}[1994/06/01 Adobe Times font definitions]
-\end{verbatim}
-
-Spaces within the arguments specific to font definition files are
-ignored to avoid surplus spaces in the document. If a real space is
-necessary use |\space|.
-\NEWdescription{2004/02/10}However, note that this is only true if the
-declaration is made at top level! If used within the definition of
-another command, within |\AtBeginDocument|, option code or in similar
-places, then spaces within the argument will remain and may result in
-incorrect table entries.
-
-\begin{decl}
-|\DeclareFontFamily| \arg{encoding} \arg{family} \arg{loading-settings}
-\end{decl}
-
-Declares a font family \m{family} to be available in encoding scheme
-\m{encoding}.
-
-The \m{loading-settings} are executed immediately after loading any
-font with this encoding and family.
-
-Checks that \m{encoding} was previously declared.
-
-This example refers to the Computer Modern Typewriter font family in
-the Cork encoding:
-\begin{verbatim}
- \DeclareFontFamily{T1}{cmtt}{\hyphenchar\font=-1}
-\end{verbatim}
-
-Each |.fd| file should contain exactly one |\DeclareFontFamily|
-command, and it should be for the appropriate encoding/family
-combination.
-
-\begin{decl}
-|\DeclareFontShape| \arg{encoding} \arg{family} \arg{series}
- \arg{shape}\\
- \null\hfill \arg{loading-info} \arg{loading-settings}
-\end{decl}
-
-Declares a font shape combination; here \m{loading-info} contains the
-information that combines sizes with external fonts. The syntax is
-complex and is described in Section~\ref{sec:loadinfo} below.
-
-The \m{loading-settings} are executed after loading any font with this
-font shape. They are executed immediately after the
-`loading-settings' which were declared by |\DeclareFontFamily| and so
-they can be used to overwrite the settings made at the family level.
-
-Checks that the combination \m{encoding}\m{family} was previously
-declared via |\DeclareFontFamily|.
-
-Example:
-\begin{verbatim}
- \DeclareFontShape{OT1}{cmr}{m}{sl}{%
- <<5-8>> sub * cmr/m/n
- <<8>> cmsl8
- <<9>> cmsl9
- <<10>> <<10.95>> cmsl10
- <<12>> <<14.4>> <<17.28>> <<20.74>> <<24.88>> cmsl12
- }{}
-\end{verbatim}
-The file can contain any number of |\DeclareFontShape| commands,
-which should be for the appropriate \m{encoding} and \m{family}.
-
-\NEWfeature{1996/06/01}
-The font family declarations for the |OT1|-encoded fonts now all
-contain:
-\begin{verbatim}
- \hyphenchar\font=`\-
-\end{verbatim}
-This enables the use of an alternative |\hyphenchar| in other encodings
-whilst maintaining the correct value for all fonts.
-
-\subsection{Font file loading information}
-\label{sec:loadinfo}
-
-The information which tells \LaTeX{} exactly which font (\texttt{.tfm})
-files to load is contained in the \m{loading-info} part of a
-|\DeclareFontShape| declaration. This part consists of one or more
-\m{fontshape-decl}s, each of which has the following form:
-
-\begin{center}
-\begin{tabular}{r@{ $::=$ }l}
- \m{fontshape-decl} & \m{size-infos} \m{font-info} \\
- \m{size-infos} & \m{size-infos} \m{size-info} $\mid$
- \m{size-info} \\
- \m{size-info} & ``|<<|'' \m{number-or-range} ``|>>|'' \\
- \m{font-info} & $[$ \m{size-function} ``|*|'' $]$
- $[$ ``|[|'' \m{optarg} ``|]|'' $]$ \m{fontarg} \\
-\end{tabular}
-\end{center}
-The \m{number-or-range} denotes the size or size-range
-for which this entry applies.
-
-If it contains a hyphen it is a
-range: lower bound on the left (if missing, zero implied), upper bound
-on the right (if missing, $\infty$ implied). For ranges, the
-upper bound is \emph{not} included in the range and the lower bound is.
-
-Examples:
-\begin{center}
-\begin{tabular}{lll}
- |<<10>>| & simple size& 10pt only\\
- |<<-8>>| & range& all sizes less than 8pt\\
- |<<8-14.4>>| & range& all sizes greater than or equal to 8pt\\
- & & \ but less than 14.4pt\\
- |<<14.4->>| & range& all sizes greater than or equal 14.4pt
-\end{tabular}
-\end{center}
-If more than one \m{size-info} entry follows without any
-intervening \m{font-info}, they all share the next \m{font-info}.
-
-The \m{size-function}, if present, handles the use of \m{font-info}.
-If not present, the `empty' \m{size-function} is assumed.
-
-All the \m{size-info}s are inspected in the order in which they appear
-in the font shape declaration. If a \m{size-info} matches the
-requested size, its \m{size-function} is executed. If |\external@font|
-is non-empty afterwards this process stops, otherwise the next
-\m{size-info} is inspected. (See also |\DeclareSizeFunction|.)
-
-If this process does not lead to a non-empty |\external@font|,
-\LaTeX{} tries the nearest simple size. If the entry contains only
-ranges an error is returned.
-
-
-\subsection{Size functions}
-\label{sec:sizefunct}
-
-
-\LaTeX{} provides the following size functions, whose `inputs' are
-\m{fontarg} and \m{optarg} (when present).
-
-\begin{description}
-\item[`' (empty)]
-Load the external font \m{fontarg} at the user-requested size. If
-\m{optarg} is present, it is used as the scale-factor.
-
-\item[s]
-Like the empty function but without terminal warnings, only
-loggings.
-
-\item[gen]
-Generates the external font from \m{fontarg} followed by
-the user-requested size, e.g.~|<<8>> <<9>> <<10>> gen * cmtt|
-
-\item[sgen]
-Like the `gen' function but without terminal warnings, only loggings.
-
-\item[genb]
-\NEWfeature{1995/12/01}
-Generates the external font from \m{fontarg} followed by
-the user-requested size, using the conventions of the `ec' fonts.
-e.g.~|<<10.98>> genb * dctt| produces |dctt1098|.
-
-\item[sgenb]
-\NEWfeature{1995/12/01}
-Like the `genb' function but without terminal warnings, only loggings.
-
-\item[sub]
-Tries to load a font from a different font shape declaration given by
-\m{fontarg} in the form \m{family}|/|\m{series}|/|\m{shape}.
-
-\item[ssub]
-Silent variant of `sub', only loggings.
-
-\item[subf]
-Like the empty function but issues a warning that it has to substitute
-the external font \m{fontarg} because the desired font shape was not
-available in the requested size.
-
-\item[ssubf]
-Silent variant of `subf', only loggings.
-
-\item[fixed]
-Load font \m{fontarg} as is, disregarding the user-requested size.
-If present, \m{optarg} gives the ``at \ldots pt'' size to be used.
-
-\item[sfixed]
-Silent variant of `fixed', only loggings.
-
-\end{description}
-
-Examples for the use of most of the above size functions can be found
-in the file |cmfonts.fdd|---the source for the standard |.fd| files
-describing the Computer Modern fonts by Donald Knuth.
-
-
-\begin{decl}
-|\DeclareSizeFunction| \arg{name} \arg{code}
-\end{decl}
-
-Declares a size-function \m{name} for use in |\DeclareFontShape|
-commands. The interface is still under development but there should be
-no real need to a define new size functions.
-
-The \m{code} is executed when the size or size-range in
-|\DeclareFontShape| matches the user-requested size.
-
-The arguments of the size-function are automatically parsed and placed
-into |\mandatory@arg| and |\optional@arg| for use in \m{code}. Also
-available, of course, is |\f@size|, which is the user-requested size.
-
-To signal success \m{code} must define the command |\external@font|
-to contain the external name and any scaling options (if present) for
-the font to be loaded.
-
-This example sets up the `empty' size function (simplified):
-\begin{verbatim}
- \DeclareSizeFunction{}
- {\edef\external@font{\mandatory@arg\space at\f@size}
-\end{verbatim}
-
-
-\section{Encodings}
-\label{Sec:encode}
-
-This section explains how to declare and use new font encodings and
-how to declare commands for use with particular encodings.
-
-\subsection{The \textsf{fontenc} package}
-
-Users can select new font encodings using the |fontenc| package. The
-|fontenc| package has options for encodings; the last option becomes
-the default encoding. For example, to use the |OT2| (Washington
-University Cyrillic encoding) and |T1| encodings, with |T1| as the
-default, an author types:
-\begin{verbatim}
- \usepackage[OT2,T1]{fontenc}
-\end{verbatim}
-
-\NEWdescription{1997/12/01}
-For each font encoding \m{ENC} given as an option, this package loads
-the \emph{encoding definition} (|<enc>enc.def|, with an all
-lower-case name) file; it also sets |\encodingdefault| to be the last
-encoding in the option list.
-
-The declarations in the encoding definition file |<enc>enc.def| for
-encoding \m{ENC} are responsible for declaring this encoding and
-telling \LaTeX{} how to produce characters in this encoding; this file
-should contain nothing else (see Section~\ref{Sec:encode.def}.
-
-The standard \LaTeX{} format declares the |OT1| and |T1| text
-encodings by inputting the files |ot1enc.def| and |t1enc.def|; it also
-sets up various defaults which require that |OT1|-encoded fonts are
-available.
-Other encoding set-ups might be added to the distribution at a
-later stage.
-
-Thus the example above loads the files |ot2enc.def| and |t1enc.def|
-and sets |\encodingdefault| to |T1|.
-
-\emph{Warning}: If you wish to use |T1|-encoded fonts other than the `cmr'
-family then you may need to load the package (e.g.~\texttt{times})
-that selects the fonts \emph{before} loading \texttt{fontenc} (this
-prevents the system from attempting to load any |T1|-encoded fonts from
-the `cmr' family).
-
-
-
-\subsection{Encoding definition file commands}
-\label{Sec:encode.def}
-
-\emph{Note}: An encoding definition file should contain only commands
-from this subsection.
-
-\NEWdescription{2019/07/10}
-As an exception it may also contain a |\DeclareFontsubstitution|
-declaration (described in \ref{sec:encoding-defaults}) to specify how
-font substitution for this encoding should be handled. In that case
-it is important that the values used point to a font that is guaranteed
-to be available on all \LaTeX{} installations.\footnote{If the font
- encoding file is made available as part of a CTAN bundle, that could
- be a font that is provided together with that bundle, but it should
- not point to font which requires further installation steps and
- therefore may or may not be installed.}
-
-
-\NEWdescription{1997/12/01}
-As with the font definition file commands, it is also possible
-(although normally not necessary) to use these declarations directly
-within a class or package file.
-
-\emph{Warning}: Some aspects of the contents of font definition files
-are still under development. Therefore, the current versions of the
-files |ot1enc.def| and |t1enc.def| are temporary versions and should
-not be used as models for producing further such files. For further
-information you should read the documentation in |ltoutenc.dtx|.
-
-\begin{decl}
- |\ProvidesFile{<file-name>}[<release-info>]|
-\end{decl}
-The file should announce itself with a |\ProvidesFile|
-command, described in \emph{\clsguide}. For example:
-\begin{verbatim}
- \ProvidesFile{ot2enc.def}
- [1994/06/01 Washington University Cyrillic encoding]
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareFontEncoding| \arg{encoding} \arg{text-settings}
- \arg{math-settings}
-\end{decl}
-
-Declares a new encoding scheme \m{encoding}.
-
-The \m{text-settings} are
-declarations which are executed every time |\selectfont| changes the
-encoding to be \m{encoding}.
-
-The \m{math-settings} are similar but are for math alphabets. They
-are executed whenever a math alphabet with this encoding is
-called.
-
-\NEWfeature{1998/12/01}
-It also saves the value of \m{encoding} in the macro
-|\LastDeclaredEncoding|.
-
-Example:
-\begin{verbatim}
- \DeclareFontEncoding{OT1}{}{}
-\end{verbatim}
-
-Some author commands need to change their definition depending on
-which encoding is currently in use. For example, in the |OT1|
-encoding, the letter `\AE' is in slot |"1D|, whereas in the |T1|
-encoding it is in slot |"C6|. So the definition of |\AE| has to
-change depending on whether the current encoding is |OT1| or |T1|.
-The following commands allow this to happen.
-
-\begin{decl}
- |\DeclareTextCommand| \arg{cmd} \arg{encoding}
- \oarg{num} \oarg{default} \arg{definition}
-\end{decl}
-This command is like |\newcommand|, except that it defines a
-command which is specific to one encoding. For example, the
-definition of |\k| in the |T1| encoding is:
-\begin{verbatim}
- \DeclareTextCommand{\k}{T1}[1]
- {\oalign{\null#1\crcr\hidewidth\char12}}
-\end{verbatim}
-|\DeclareTextCommand| takes the same optional arguments as
-|\newcommand|.
-
-The resulting command is
-robust, even if the code in \m{definition} is fragile.
-
-It does not produce an error if the command has already
-been defined but logs the redefinition in the transcript file.
-
-\begin{decl}[1994/12/01]
- |\ProvideTextCommand| \arg{cmd} \arg{encoding}
- \oarg{num} \oarg{default} \arg{definition}
-\end{decl}
-This command is the same as |\DeclareTextCommand|, except that
-if \m{cmd} is already defined in encoding \m{encoding}, then the
-definition is ignored.
-
-\begin{decl}
- |\DeclareTextSymbol| \arg{cmd} \arg{encoding} \arg{slot}
-\end{decl}
-This command defines a text symbol with slot \m{slot} in the
-encoding. For example, the definition of |\ss| in the |OT1| encoding
-is:
-\begin{verbatim}
- \DeclareTextSymbol{\ss}{OT1}{25}
-\end{verbatim}
-It does not produce an error if the command has already
-been defined but logs the redefinition in the transcript file.
-
-\begin{decl}
- |\DeclareTextAccent| \arg{cmd} \arg{encoding} \arg{slot}
-\end{decl}
-This command declares a text accent, with the accent taken from slot
-\m{slot} in the encoding. For example, the definition of |\"| in
-the |OT1| encoding is:
-\begin{verbatim}
- \DeclareTextAccent{\"}{OT1}{127}
-\end{verbatim}
-It does not produce an error if the command has already
-been defined but logs the redefinition in the transcript file.
-
-\begin{decl}
- |\DeclareTextComposite| \arg{cmd} \arg{encoding} \arg{letter}
- \arg{slot}
-\end{decl}
-This command declares that the composite letter formed from applying
-\m{cmd} to \m{letter} is defined to be simply slot \m{slot} in the
-encoding. The \m{letter} should be a single letter (such as |a|) or
-a single command (such as |\i|).
-
-
-For example, the definition of |\'{a}|
-in the |T1| encoding could be declared like this:
-\begin{verbatim}
- \DeclareTextComposite{\'}{T1}{a}{225}
-\end{verbatim}
-
-The \m{cmd} will normally have been previously declared
-for this encoding, either by using
-|\DeclareTextAccent|, or as a one-argument |\DeclareTextCommand|.
-
-\begin{decl}[1994/12/01]
- |\DeclareTextCompositeCommand| \arg{cmd} \arg{encoding} \arg{letter}
- \arg{definition}
-\end{decl}
-This is a more general form of |\DeclareTextComposite|, which allows
-for an arbitrary \m{definition}, not just a \m{slot}. The main use
-for this is to allow accents on |i| to act like accents on |\i|, for
-example:
-\begin{verbatim}
- \DeclareTextCompositeCommand{\'}{OT1}{i}{\'\i}
-\end{verbatim}
-It has the same restrictions as |\DeclareTextComposite|.
-
-
-\begin{decl}[1998/12/01]
- |\LastDeclaredEncoding|
-\end{decl}
-This holds the name of the last encoding declared via
-|\DeclareFontEncoding| (this should also be the currently most
-efficient encoding). It can be used in the \m{encoding} argument
-of the above declarations in place of explicitly mentioning the
-encoding, e.g.
-\begin{verbatim}
- \DeclareFontEncoding{T1}{}{}
- \DeclareTextAccent{\`}{\LastDeclaredEncoding}{0}
- \DeclareTextAccent{\'}{\LastDeclaredEncoding}{1}
-\end{verbatim}
-This can be useful in cases where encoding files sharing common code
-are generated from one source.
-
-
-\subsection{Default definitions}
-
-\NEWdescription{1997/12/01}
-The declarations used in encoding definition files define
-encoding-specific commands but they do not allow those commands to be
-used without explicitly changing the encoding. For some commands,
-such as symbols, this is not enough. For example, the~|OMS| encoding
-contains the symbol~`\S', but we need to be able to use the
-command~|\S| whatever the current encoding may be, without explicitly
-selecting the encoding~|OMS|.
-
-\NEWdescription{1997/12/01}
-To allow this, \LaTeX{} has commands that declare default definitions
-for commands; these defaults are used when the command is not defined
-in the current encoding. For example, the default encoding for~|\S|
-is~|OMS|, and so in an encoding (such as |OT1|) which does not
-contain~|\S|, the~|OMS| encoding is selected in order to access this
-glyph. But in an encoding (such as~|T1|) which does contain~|\S|, the
-glyph in that encoding is used. The standard \LaTeXe{} format sets
-up several such defaults using the following encodings: |OT1|,~|OMS|
-and~|OML|.
-
-\emph{Warning}: These commands should \emph{not} occur in encoding
-definition files, since those files should declare only commands for use
-when that encoding has been selected. They should instead be placed
-in packages; they must, of course, always refer to encodings that are
-known to be available.
-
-\begin{decl}[1994/12/01]
- |\DeclareTextCommandDefault| \arg{cmd} \arg{definition}
-\end{decl}
-This command allows an encoding-specific command to be given a default
-definition. For example, the default definition for |\copyright| is
-defined be be a circled `c' with:
-\begin{verbatim}
- \DeclareTextCommandDefault{\copyright}{\textcircled{c}}
-\end{verbatim}
-\begin{decl}[1994/12/01]
- |\DeclareTextAccentDefault| \arg{cmd} \arg{encoding} \\
- |\DeclareTextSymbolDefault| \arg{cmd} \arg{encoding}
-\end{decl}
-These commands allow an encoding-specific command to be given a
-default encoding. For example, the default encoding for |\"| and
-|\ae| is set to be |OT1| by:
-\begin{verbatim}
- \DeclareTextAccentDefault{\"}{OT1}
- \DeclareTextSymbolDefault{\ae}{OT1}
-\end{verbatim}
-Note that |\DeclareTextAccentDefault| can be used on any one-argument
-encoding-specific command, not just those defined with
-|\DeclareTextAccent|. Similarly, |\DeclareTextSymbolDefault| can be
-used on any encoding-specific command with no arguments, not just
-those defined with |\DeclareTextSymbol|.
-
-For more examples of these definitions, see |ltoutenc.dtx|.
-
-\begin{decl}[1994/12/01]
- |\ProvideTextCommandDefault| \arg{cmd} \arg{definition}
-\end{decl}
-This command is the same as |\DeclareTextCommandDefault|, except that
-if the command already has a default definition, then the definition
-is ignored. This is useful to give `faked' definitions of symbols
-which may be given `real' definitions by other packages. For example,
-a package might give a fake definition of |\textonequarter| by saying:
-\begin{verbatim}
- \ProvideTextCommandDefault{\textonequarter}{$\m@th\frac14$}
-\end{verbatim}
-
- \subsection{Encoding defaults} \label{sec:encoding-defaults}
-
-\begin{decl}
-|\DeclareFontEncodingDefaults| \arg{text-settings} \arg{math-settings}
-\end{decl}
-
-Declares \m{text-settings} and \m{math-settings} for all encoding
-schemes. These are executed before the encoding scheme dependent ones
-are executed so that one can use the defaults for the major cases and
-overwrite them if necessary using |\DeclareFontEncoding|.
-
-If |\relax| is used as an argument, the current setting of this default
-is left unchanged.
-
-This example is used by amsfonts.sty for accent positioning; it changes
-only the math settings:
-\begin{verbatim}
- \DeclareFontEncodingDefaults{\relax}{\def\accentclass@{7}}
-\end{verbatim}
-
-
-\begin{decl}
-|\DeclareFontSubstitution| \arg{encoding} \arg{family} \arg{series}
- \arg{shape}
-\end{decl}
-
-Declares the default values for font substitution which will be used
-when a font with encoding \m{encoding}
-should be loaded but no font can be found with the current
-attributes.
-
-These substitutions are local to the encoding scheme because the
-encoding scheme is never substituted! They are tried in the order
-\m{shape} then \m{series} and finally \m{family}.
-
-\NEWdescription{2019/07/10}
-This declaration is normally done in an encoding definition file
-(see~\ref{Sec:encode.def}), but can also be used in a class file or
-the document preamble to alter the default for a specific encoding.
-
-If no defaults are set up for an encoding, the values given by
-|\DeclareErrorFont| are used.
-
-The font specification for
-\m{encoding}\m{family}\m{series}\m{shape}
-must have been defined by |\DeclareFontShape|
-before the |\begin{document}| is reached.
-
-Example:
-\begin{verbatim}
- \DeclareFontSubstitution{T1}{cmr}{m}{n}
-\end{verbatim}
-
-\subsection{Case changing}
-\label{sec:case}
-
-\begin{decl}
- |\MakeUppercase| \arg{text} \\
- |\MakeLowercase| \arg{text}
-\end{decl}
-
-\NEWfeature{1995/06/01}
-\TeX{} provides the two primitives |\uppercase| and |\lowercase| for
-changing the case of text. Unfortunately, these \TeX{} primitives do
-not change the case of characters accessed by commands like |\ae| or
-|\aa|. To overcome this problem, \LaTeX{} provides these two commands.
-
-In the long run, we would like to use all-caps fonts rather than any
-command like |\MakeUppercase| but this is not possible at the moment
-because such fonts do not exist.
-
-For further details, see \texttt{clsguide.tex}.
-
-\NEWdescription{1999/04/23}
-In order that upper/lower-casing will work reasonably well, and in
-order to provide any correct hyphenation, \LaTeXe{} \emph{must} use,
-throughout a document, the same fixed table for changing case. The
-table used is designed for the font encoding |T1|; this works well
-with the standard \TeX{} fonts for all Latin alphabets but will cause
-problems when using other alphabets. As an experiment, it has now
-been extended for use with some Cyrillic encodings.
-
-
-\section{Miscellanea}
-\label{Sec:misc}
-
-This section covers the remaining font commands in \LaTeX{} and some
-other issues.
-
-\subsection{Font substitution}
-
-\begin{decl}
-|\DeclareErrorFont| \arg{encoding} \arg{family} \arg{series}
- \arg{shape} \arg{size}
-\end{decl}
-
-Declares \m{encoding}\m{family}\m{series}\m{shape} to be the font shape
-used in cases where the standard substitution mechanism fails
-(i.e.~would loop). For the standard mechanism see the command
-|\DeclareFontSubstitution| above.
-
-The font specification for
-\m{encoding}\m{family}\m{series}\m{shape}
-must have been defined by |\DeclareFontShape|
-before the |\begin{document}| is reached.
-
-Example:
-\begin{verbatim}
- \DeclareErrorFont{OT1}{cmr}{m}{n}{10}
-\end{verbatim}
-
-\NEWdescription{2019/07/10}
-This declaration is a system wide fallback and it should normally not
-be changed, in particular it does not belong into font encoding
-definition files but rather into the \LaTeX{} format. It is normally
-set up in \texttt{fonttext.cfg}. Adjustments on a per encoding base
-should be made through |\DeclareFontSubstitution| instead!
-
-
-\begin{decl}
-|\fontsubfuzz|
-\end{decl}
-
-This parameter is used to decide whether or not to produce a terminal
-warning if a font size substitution takes place. If the difference
-between the requested and the chosen size is less than |\fontsubfuzz|
-the warning is only written to the transcript file. The default value
-is |0.4pt|. This can be redefined with |\renewcommand|, for example:
-\begin{verbatim}
- \renewcommand{\fontsubfuzz}{0pt} % always warn
-\end{verbatim}
-
-\subsection{Preloading}
-
-\begin{decl}
-|\DeclarePreloadSizes| \arg{encoding} \arg{family} \arg{series}
- \arg{shape}
-\arg{size-list}
-\end{decl}
-
-
-Specifies the fonts that should be preloaded by the format. These
-commands should be put in a |preload.cfg| file, which is read in when
-the \LaTeX{} format is being built.
-Read |preload.dtx| for more information on how to built such a
-configuration file.
-
-Example:
-\begin{verbatim}
- \DeclarePreloadSizes{OT1}{cmr}{m}{sl}{10,10.95,12}
-\end{verbatim}
-
-\NEWdescription{2019/07/10}
-Preloading is really an artifact of the days when loading fonts while
-processing a document contributed substantially to the processing
-time. These days it is usually best not to use this mechanism any more.
-
-\subsection{Accented characters}
-
-\NEWdescription{1996/06/01}
-Accented characters in \LaTeX{} can be produced using commands such as
-|\"a| etc. The precise effect of such commands depends on the font
-encoding being used. When using a font encoding that contains the
-accented characters as individual glyphs (such as the |T1| encoding,
-in the case of |\"a|) words that contain such accented characters can
-be automatically hyphenated. For font encodings that do not contain
-the requested individual glyph (such as the |OT1| encoding) such a
-command invokes typesetting instructions that produce the accented
-character as a combination of character glyphs and diacritical marks
-in the font. In most cases this involves a call to the \TeX{}
-primitive |\accent|. Glyphs constructed as composites in this way
-inhibit hyphenation of the current word; this is one reason why the
-|T1| encoding is preferable to the original \TeX{} font encoding
-|OT1|.
-
-It is important to understand that commands like |\"a| in \LaTeXe{}
-represent just a name for a single glyph (in this case `umlaut a') and
-contain no information about how to typeset that glyph---thus it does
-\emph{not} mean `put two dots on top of the character a'. The
-decision as to what typesetting routine to use will depend on the
-encoding of the current font and so this decision is taken at the last
-minute. Indeed, it is possible that the same input will be typeset in
-more than one way in the same document; for example, text in section
-headings may also appear in table of contents and in running heads; and
-each of these may use a font with a different encoding.
-
-For this reason the notation |\"a| is \emph{not} equivalent to:
-\begin{verbatim}
- \newcommand \chara {a} \"\chara
-\end{verbatim}
-In the latter case, \LaTeX{} does not expand the macro |\chara| but
-simply compares the notation (the string |\"\chara|) to its list of
-known composite notations in the current encoding; when it fails to
-find |\"\chara| it does the best it can and invokes the typesetting
-instructions that put the umlaut accent on top of the expansion of
-|\chara|. Thus, even if the font actually contains `\"a' as an
-individual glyph, it will not be used.
-
-The low-level accent commands in \LaTeX{} are defined in such a way
-that it is possible to combine a diacritical mark from one font with a
-glyph from another font; for example, |\"\textparagraph| will produce
-\"\textparagraph. The umlaut here
-is taken from the |OT1| encoded font |cmr10| whilst the paragraph sign
-is from the |OMS| encoded font |cmsy10|. (This example may be
-typographically silly but better ones would involve font encodings
-like |OT2| (Cyrillic) that might not be available at every
-site.)
-
-There are, however, restrictions on the font-changing commands that
-will work within the argument to such an accent command. These are
-\TeX{}nical in the sense that they follow from the way that \TeX{}'s
-|\accent| primitive works, allowing only a special class of commands
-between the accent and the accented character.
-
-The following are examples of commands that will not work correctly as
-the accent will appear above a space: the font commands with text
-arguments (|\textbf{...}| and friends); all the font size declarations
-(|\fontsize| and |\Large|, etc.); |\usefont| and declarations that
-depend on it, such as |\normalfont|; box commands (e.g.~|\mbox{...}|).
-
-The lower-level font declarations that set the attributes family,
-series and shape (such as |\fontshape{sl}\selectfont|) will produce
-correct typesetting, as will the default declarations such as
-|\bfseries|.
-
-
-\subsection{Naming conventions}
-
-\begin{itemize}
-\item
-Math alphabet commands all start with |\math...|: examples are
-|\mathbf|, |\mathcal|, etc.
-
-\item
-The text font changing commands with arguments all start with
-|\text...|: e.g.~|\textbf| and |\textrm|. The exception to this is
-|\emph|, since it occurs very commonly in author documents and so
-deserves a shorter name.
-
-\item
-Names for encoding schemes are strings of up to three letters (all
-upper case) plus digits.
-
-The \LaTeX3 project reserves the use of encodings starting with the
-following letters: |T| (standard 256-long text encodings), |TS|
-(symbols that are designed to extend a corresponding |T| encoding),
-|X| (text encodings that do not conform to the strict requirements for
-|T| encodings), |M| (standard 256-long math encodings), |S| (other
-symbol encodings), |A| (other special applications), |OT| (standard
-128-long text encodings) and |OM| (standard 128-long math encodings).
-
-Please do not use the above starting letters for non-portable
-encodings. If new standard encodings emerge then we shall add them in
-a later release of \LaTeX.
-
-Encoding schemes which are local to a site or a system should start
-with |L|, experimental encodings intended for wide distribution will
-start with |E|, whilst |U| is for Unknown or Unclassified encodings.
-
-\item
-Font family names should contain up to five lower case letters.
-Where possible, these should conform to the \emph{Filenames for fonts}
-font naming scheme.
-
-\item
-Font series names should contain up to four lower case letters.
-
-\item
-Font shapes should contain up to two letters lower case.
-
-\item
-Names for symbol fonts are built from lower and upper case letters
-with no restriction.
-\end{itemize}
-
-Whenever possible, you should use the series and shape names suggested
-in \emph{\LaTeXcomp} since this will make it easier to combine new
-fonts with existing fonts.
-
-\NEWdescription{1994/12/01}
- Where possible, text symbols should be named as |\text| followed by
- the Adobe glyph name: for example |\textonequarter| or
- |\textsterling|. Similarly, math symbols should be named as
- |\math| followed by the glyph name, for example |\mathonequarter|
- or |\mathsterling|. Commands which can be used in text or math can
- then be defined using |\ifmmode|, for example:
-\begin{verbatim}
- \DeclareRobustCommand{\pounds}{%
- \ifmmode \mathsterling \else \textsterling \fi
- }
-\end{verbatim}
- Note that commands defined in this way must be robust, in case they
- get put into a section title or other moving argument.
-
-\section{If you need to know more \ldots}
-
-\NEWdescription{1996/06/01}
-The |tracefnt| package provides for tracing the actions concerned with
-loading, substituting and using fonts.
-The package accepts the following options:
-\begin{description}
-\item[errorshow] Write all information about font changes, etc.\ but
- only to the transcript file unless an error occurs. This means that
- information about font substitution will not be shown on the
- terminal.
-
-\item[warningshow] Show all font warnings on the terminal. This
- setting corresponds to the default behavior when this
- \texttt{tracefnt} package is \emph{not} used!
-
-\item[infoshow] Show all font warnings and all font info messages
- (that are normally only written to the transcript file) also on the
- terminal. This is the default when this \texttt{tracefnt} package is
- loaded.
-
-\item[debugshow] In addition to what is shown by \texttt{infoshow},
- show also changes of math fonts (as far as possible): beware, this
- option can produce a large amount of output.
-
-\item[loading] Show the names of external font files when they are
- loaded. This option shows only `newly loaded' fonts, not those
- already preloaded in the format or the class file before this
- \texttt{tracefnt} package becomes active.
-
-\item[pausing]
- Turn all font warnings into errors so that \LaTeX{} will stop.
-\end{description}
-
-\emph{Warning}: The actions of this package can change the layout of a
-document and even, in rare cases, produce clearly wrong output, so
-it should not be used in the final formatting of `real documents'.
-
-\begin{thebibliography}{1}
-
-\bibitem{A-W:MG2004}
-Frank Mittelbach and Michel Goossens.
-\newblock {\em The {\LaTeX} Companion second edition}.
-\newblock With Johannes Braams, David Carlisle, and Chris Rowley.
-\newblock Addison-Wesley, Reading, Massachusetts, 2004.
-
-\bibitem{tub:DKn89}
-Donald~E. Knuth.
-\newblock Typesetting concrete mathematics.
-\newblock {\em {TUG}boat}, 10(1):31--36, April 1989.
-
-\bibitem{A-W:LLa94}
-Leslie Lamport.
-\newblock {\em {\LaTeX:} A Document Preparation System}.
-\newblock Addison-Wesley, Reading, Massachusetts, second edition, 1994.
-
-\end{thebibliography}
-
-\end{document}