% isomath: Math for scientists
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% 
% :Copyright: © 2008, 2009 Günter Milde
% :Licence:   This work may be distributed and/or modified under the
%             conditions of the `LaTeX Project Public License`_, either 
%             version 1.3 of this license or (at your option) any later version.
% 
% :Abstract:  The isomath package enables formatting Greek and Latin
%             letters as symbols for vectors, matrices, and tensors
%             in the typefaces recommended for scientific papers
%             by the International Standard ISO 31. For this, a *bold italic*
%             and a *sans-serif bold italic* math alphabet are defined.
% 
% .. contents::
% 
% Introduction
% ************
% 
% Motivation
% ==========
% 
% .. Did you ever manage to write the stress tensor ``$\sigma$`` in a
%    *sans-serif bold italic* typeface, as recommended by [typefaces]_?
% 
% Scientific organisations like IUPAP_, IUPAC_, NIST_, BIPM_, and others
% recommend typesetting math according to the International Standard ISO 31
% `Quantities and units` [ISO-31]_.\ [#]_
% 
% The traditional `LaTeX math style` deviates in some points from this rules:
% 
% * The ``\vec`` command produces an array accent, while ISO 31 recommends
%   a *bold italic* typeface for vector symbols.
% 
% * Greek letters are excluded from font changes with the math alphabets,
%   while the ISO 31 rules apply equally to letters from both the Greek
%   and the Latin alphabet.
% 
% * There is no provision for typesetting of Greek letters in *bold italic*
%   style recommended for vectors.
% 
% * There is no provision for typesetting letters in *sans-serif bold italic*
%   recommended for typesetting tensor symbols.
% 
% Some of these points are adressed by `related packages`_, however
% there is currently no package (known to the author) that defines the
% *sans-serif bold italic* math alphabet needed for tensor symbols.
% 
% .. [#] Summaries of these rules are free available, see [typefaces]_,
%        [checklist]_, [fonts-for-symbols]_, and [SI-brochure]_.
% 
% 
% Features
% ========
% 
% The ``isomath.sty`` package facilitates the task to abide with ISO 31 when
% typesetting math with LaTeX:
% 
% * Equal treatment of Latin and `Greek in math`_ via fixmath.sty_:
% 
%   + Greek letters change shape together with Latin letters if a different
%     math alphabet is used.
% 
%   + Uppercase Greek letters are typeset in italic style by default.
% 
%   + Upright Greek letters can be made available through the ``\mathrm``
%     and ``\mathbf`` alphabets, if the corresponding fonts support the
%     `OML font encoding`_.
% 
% * The `command aliases`_ ``\vectorsym``, ``\matrixsym``, and ``\tensorsym``
%   allow semantic markup. They print the argument in an ISO-conforming
%   typeface.
% 
% * For this, new `math alphabets`_ are defined:
% 
%   :``\mathbold``: *boldface italic* (vector and matrix symbols),
%   :``\mathsans``: *sans-serif italic* (optional),
%   :``\mathboldsans``: *sans-serif bold italic*  (tensor symbols).
% 
%   The family for these fonts is by default taken from the document's
%   ``\rmdefault`` and ``\sfdefault`` values.  The ``rmdefault=<family>`` and
%   ``sfdefault=<family>`` options_ can be used to override the defaults.
% 
% * Missing `font mappings`_ are defined for font families which have an OML
%   encoded counterpart but no substitution definition in their ``*.fd``
%   files.
% 
% 
% Usage
% =====
% 
% Make sure that LaTeX can find ``isomath.sty`` and insert the command
% ``\usepackage{isomath}`` in the document preamble.
% 
% For package options, see the Options_ section below.
% 
% Examples
% --------
% 
% * In many cases (e.g. when ``\sfdefault`` expands to "cmss"), the
%   ``\mathboldsans`` alphabet is neither bold nor sans, as "cmss" has no OML
%   encoded variants and maps to "cmmi".
% 
%   Use cmbright_ for sans-serif math alphabets::

%   \usepackage[sfdefault=cmbr]{isomath}
% 
%   Define also a slanted sans-serif math alphabet::

%   \usepackage[sfdefault=cmbr,OMLmathsans]{isomath}
% 
% * Redefine the standard ``\vec`` macro to typeset its argument in `bold
%   italic`::

%   \usepackage[sfdefault=cmbr]{isomath}
%   \renewcommand{\vec}{\vectorsym}
% 
% * The mathdesign_ package provides an OML encoded *bold roman* font but does
%   not set it up for ``\mathbf``::

%   \usepackage[charter]{mathdesign}
%   \usepackage[OMLmathbf,sfdefault=cmbr]{isomath}
% 
%   Now, ``\mathbf{\pi}`` produces a bold upright pi symbol.
% 
% Related packages
% ================
% 
% A set of packages at CTAN also defines Greek letters as ``\mathalpha`` and
% provide the ``\mathbold`` alphabet (in OML):
% 
% * arev_     (Arev/Vera Sans)
% * cmbright_ (CM Bright)
% * eulervm_   (Euler Math)
% * fixmath_  (Computer Modern)
% * hvmath_   (HV-Math/Helvetica)
% * mathpazo_ (Palatino)
% * tmmath_   (TM-Math/Times)
% 
% This package requires and extends fixmath.sty_.
% 
% The cmbright_ package provides *sans serif* and *sans-serif bold* fonts for
% the ``\mathsans`` and ``\mathboldsans`` alphabets that match with Computer
% Modern and derivatives.
% 
% Conflicts
% ---------
% 
% The `fourier`_ package for math typesetting with Utopia defines its own,
% incompatible math font encodings. It cannot be used with ``isomath``
% but provides other means to typeset upright or italic Greek (see its
% documentation).\ [#]_
% 
% The `kpfonts`_, `pxfonts`_, and `txfonts`_ packages define many additional
% math alphabets the additional definitions in isomath lead to a "too many
% math alphabets used in version normal" error. The error can be avoided with
% the reuseMathAlphabets_ option.
% 
% .. [#] However, it is possible to use the symbols from `fourier`_ together
%        with math alphabets from another package, e.g `mathdesign`_::

%        \usepackage{fourier}
%        \usepackage[OMLmathbf,rmdefault=mdput,sfdefault=cmbr]{isomath}
% 
% 
% Greek in Math
% =============
% 
% IUPAC_'s [fonts-for-symbols]_ guide says:
% 
%    2. The overall rule is that symbols representing physical quantities (or
%       variables) are italic, but symbols representing units, or labels, are
%       roman. [...]
% 
%    3. The above rule **applies equally to letter symbols from both the Greek
%       and the Latin alphabet**, although authors often appear to resist
%       putting Greek letters into italic.
% 
% [emphasis by the author]. In contrast, the standard LaTeX style treats Greek
% symbols as invariant operators with lower case italic and upper case upright.
% 
% Unicode Math Support
% --------------------
% 
% The technical report `Unicode Support for Mathematics` [tr25]_ lists
% "lphanumeric symbols encountered in mathematics"in table 2 `Mathematical
% Alphabets`.
% 
% The Unicode block `mathematical alphanumeric symbols`_ provides style
% variants for Latin and Greek letters and digits. It is labelled "to be used
% for mathematical variables where style variations are important
% semantically".
% 
% .. _table 1:
% 
% .. table:: Styles in the `mathematical alphanumeric symbols`_
%    Unicode block
%    :class: booktab
% 
%    ================= ==== ================= ============================
%    Style             LGD  LaTeX macro       Package, Comment
%                      [#]_
%    ================= ==== ================= ============================
%    bold              LGD  ``\mathbf``       no Greek
%    
%    italic            LG   ``\mathit``       no Greek
%    \                      ``\mathnormal``   small Greek but
%                                             old-style roman Digits
%    bold italic       LG   ``\mathbold``     fixmath and friends
%    \                      ``\boldsymbol``   ams
%    script            L    ``\mathcal`` or   only capital Latin
%    (calligraphic)         ``\mathscr``
%    bold script       L    
%    fraktur           L    ``\mathfrak``     eufrak
%    double-struck     L D  ``\mathbb``       bbold, mathbbol,
%                                             mbboard
%    \                      ``\mathbbm``      bbm
%    \                      ``\mathds``       dsfont
%    bold fraktur      L    
%    sans-serif        L D  ``\mathsf``       no Greek
%    sans-serif bold   LGD  
%    sans-serif italic L    ``\mathsans``     isomath
%    sans bold italic  LG   ``\mathboldsans`` isomath
%    monospace         L D  ``\mathtt``       no Greek
%    ----------------- ---- ----------------- ----------------------------
%    *Not in the mathematical alphanumeric symbols block*:
%    ---------------------------------------------------------------------
%    plain             LGD  ``\mathrm``       no Greek
%    \                      ``\mathnormal``   capital Greek
%    ================= ==== ================= ============================
% 
% .. [#] LGD: **L**\ atin, **G**\ reek, **D**\ igits
% 
% 
% OML font encoding
% -----------------
% 
% *OML* is the only established font encoding providing Latin and Greek
% letters in one font. (The text font encoding *LGR* is Greek-only while *T7*
% is just a "reserved name" for a standard Greek encoding.)
% 
% Definition
% """"""""""
% 
% The `LaTeX font encodings` guide [encguide]_ names OML `TeX math italic` and
% defines:
% 
%   The OML encoding contains italic Latin and Greek letters for use in
%   mathematical formulas (typically used for variables) together with some
%   symbols.
% 
% However, the reference to **italic** letters seems to be a description of
% the *state of the art* rather than a necessary restriction:
% 
% * There is only one OML encoded font in the Computer Modern fonts:
%   `Computer Modern Math Italic` (cmmi).
% 
% * Generally, font encodings (T1, OT1) are not specific to the font shape.
% 
% * Both, ``\DeclareSymbolFont`` and ``\DeclareMathAlphabet`` require a
%   {<shape>} argument. Thus it is possible to set up OML encoded math
%   alphabets in roman {n} as well as italic {it} shape without conflicts.
% 
% * The name `TeX math italic` can be interpreted as "encoding *of* `Computer
%   Modern Math Italic`" rather than "encoding *for* math italic" fonts.
% 
%   A less confusing name would be `TeX math letters` or `Original/Old
%   Math Letters`. The latter would also explain the acronym OML.
% 
% A more inclusive definition would be:
% 
%   The OML encoding contains Latin and Greek letters for use in mathematical
%   formulas (typically used for variables) together with some symbols.
%   It first appeared in the `Computer Modern Math Italic` (cmmi) font.
% 
% 
% 
% Support
% """""""
% 
% Unfortunately, support for the OML encoding is missing for many font
% families even if the base font contains all Greek letters.
% Supported font families can be found searching for ``oml*.fd`` files and by
% grepping for "DeclareFont.*OML", "SymbolFont.*OML" and "MathAlphabet.*OML"
% in ``*.sty`` files.
% 
% .. _table 2:
% 
% .. table:: Fonts supporting the OML font encoding
%    :class: booktab
% 
%    ============= =========================== ======= ======== ====== =======
%    Name          Family                      {m}{it} {bx}{it} {m}{n} {bx}{n}
%    ============= =========================== ======= ======== ====== =======
%    aer           AE (Almost European)           x      x
%    antt          Antykwa Torunska               x      x
%    cmr           Computer Modern Roman          x      x
%    ccr           Concrete                       x      x
%    cmbr          Computer Modern Bright         x      x
%    hlh           Lucida                         x      x
%    hfor          CM with old-style digits       x      x
%    iwona         Iwona (sans serif)             x      x
%    jkp           Kepler Serif                   x      x
%    jkpl          Kepler Serif                   x      x
%    jkpvos        Kepler Serif                   x      x
%    jkplvos       Kepler Serif                   x      x
%    llcmm         LXfonts (sans serif)           x      x
%    lmr           Latin Modern Roman             x      x
%    mak           Kerkis                         x
%    mdbch         Math Design Charter            x      x         x     x
%    mdput         Math Design Utopia             x      x         x     x
%    mdugm         Math Design Garamond           x      x         x     x
%    neohellenic   GFS Neohellenic                x
%    plcm          CM (PLaTeX)                    x
%    ptmom         Times (Omega or MB-Times)      x      x
%    ptmomu        Times (Omega or MB-Times)      x      x
%    ptmcm         Times (psfont)                 x
%    pxr           Palatino (pxfonts)             x      x
%    qpl           Palatino/Pagella (qpxmath)     x      x
%    qtm           Times/Termes (qtxmath)         x      x
%    txr           Times (txfonts)                x      x
%    ywclm         (greektex)                     x      x
%    zavm          Arev (Vera Sans-Serif)         x      x
%    zesfcm        (efont)                        x
%    zplm          Palatino (mathpazo)            x      x
%    zpple                                        x      x
%    ztmcm         Times (mathptmx)               x
%    zer           Computer Modern (zefonts)      x      x
%    ============= =========================== ======= ======== ====== =======
% 
% Explanations:
% 
% * If there is an alias (substitution) from the text font to a math-variant,
%   only the text font is listed.
% 
% * Many text fonts define substitutions also for {n}, however mapping to
%   an italic variant of the OML encoded font. These are not listed as
%   supporting {m}{n} or {bx}{n} here.
% 
% The following fonts define ``cmm`` as OML substitution. A better matching
% substitution can be set with the rmdefault_ or sfdefault_ options.
% 
% .. _table 3:
% 
% .. table:: Non-CM fonts with ``cmm`` as OML substitution
%    :class: booktab
% 
%    ============= ===============================
%    Family        Name
%    ============= ===============================
%    bch           Charter (psnfss)
%    pag           Avant Garde (psnfss)
%    pbk           Bookman (psnfss)
%    pcr           Courier (psnfss)
%    phv           Helvetica (psnfss)
%    pnc           New Century Schoolbook (psnfss)
%    ppl           Palatino (psnfss)
%    ptm           Times Roman (psnfss)
%    put           Utopia (psnfss)
%    pzc           Zapf Chancery (psnfss)
%    uag           Avant Garde (avantgar)
%    ubk           Bookman (bookman)
%    ucr           Courier (courier)
%    ucrs          Courier
%    unc           New Courier (nctrsbk)
%    uni           Universal (universa)
%    uhv           Helvetica (helvetic)
%    upl           Palatino (palatino)
%    utm           Times (times)
%    uzc           Zapf Chancery (zapfchan)
%    ============= ===============================
% 
% Conclusions and outlook
% -----------------------
% 
% It is hoped, that in the future more fonts families will support the OML
% encoding in normal and bold weight as well as upright and italic shape.
% This would be a major step towards a LaTeX equivalent of the `Mathematical
% Alphanumeric Symbols`_ Unicode block.
% 
% This should be (relatively) easy to achieve via virtual fonts when the
% glyphs for the Greek letters already exist. Examples are Latin Modern,
% Kerkis, GFS-Neohellenic, LX-Fonts and KP-Serif.
% 
% Alternatively, the T7 encoding could be used for math alphabets (if it ever
% happens to materialise).
% 
% Upright small Greek letters in ``\mathrm`` would enable the specification of
% the constant pi, Myons, Pions, alpha-particles, photons, and neutrinos
% without special packages. (With mathdesign_, this is already possible
% today.)
% 
% 
% Implementation
% **************
% 
% Identification
% ==============
% ::

\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{isomath}
[2009/06/19 v0.3 typeset math according to International Standard ISO 31]

% History
% -------
% 
% .. class:: borderless
% 
% ===  ============  ========================================================
% 0.1    2008-09-25  first public version.
% 0.2    2008-10-02  bugfix: a usage example was uncommented;
% \                  updated documentation;
% \                  define \mathsans only if OMLmathsans is true;
% \                  option reuseMathalphabets -> reuseMathAlphabets.
% 0.3    2009-06-19  documentation update;
% \                  fix OMLmathrm and OMLmathsans definitions;
% \                  switch license to LPPL                  
% ===  ============  ========================================================
% 
% 
% Requirements
% ============
% 
% fixmath.sty
% -----------
% 
% The package fixmath_ by Walter Schmidt defines Greek letters as symbols
% of type ``\mathalpha`` and takes them from the "letters" SymbolFont in
% ``\mathnormal`` (as opposed to "operators" in ``fontmath.ltx``).
% 
% fixmath_ also defines the ``\mathbold`` alphabet, setting it to ``cmm``.
% However, this definition will be overwritten with a configurable value for
% the font family below.)
% ::

\RequirePackage{fixmath}

% .. caution::
% 
%    After loading fixmath, placing Greek letters in a math alphabet, e.g.
%    ``\mathrm{k\Omega}``, can lead to garbage, as the standard math alphabets
%    are usually taken from OT1 encoded fonts that have ligatures and
%    non-alpha symbols in place of the small Greek letters.
% 
%    If the chosen font supports the `OML font encoding`_, you can use the
%    options for `OML math alphabets`_.  Otherwise, place Greek letters
%    outside the math alphabet command.
% 
%    Some packages provide ``\up*`` or ``\var*`` macros for upright Greek
%    letters, e.g. ``\mathrm{k}\upOmega``.
% 
% 
% kvoptions.sty
% -------------
% 
% The kvoptions_ package in the oberdiek_ bundle facilitates the setup of
% package options and provides a key=value interface (based on keyval_)::

\RequirePackage{kvoptions}

% Options
% =======
% 
% rmdefault
% ---------
% 
% Alternative family for roman math fonts. The default is to use the
% corresponding text font family (``\rmdefault``) in OML encoding.
% `Table 3`_ lists some fonts where a different setting is advised.
% 
% ::

\DeclareStringOption[\rmdefault]{rmdefault}

% sfdefault
% ---------
% 
% Alternative family for sans-serif math fonts. The default is to use the
% corresponding text font family (``\sfdefault``) in OML encoding.
% 
% Computer Modern Sans Serif (cmss) has no OML encoded variant. Nor have many
% derivatives (lmss, aess, ...). Actually, there are only a few OML-encoded
% sans-serif fonts (all slanted/italic):
% 
% :zavm:  arev_ (Vera Sans with math extension, large x-hight)
% :cmbr:  cmbright_ (Computer Modern Bright, slightly lighter than cmss)
% :iwona: iwona_ (Humanistic Sans Serif, some shapes very similar to roman)
% :hvm:   hvmath_ (Helvetica Math, commercial, free bitmap version)
% :llcmm: lxfonts_ (LX Fonts, very wide, excentric, large x-hight, new in 2008)
% 
% For most fonts (especially CM and related), ``[sfdefault=cmbr]`` is the
% recommended setting.
% 
% ::

\DeclareStringOption[\sfdefault]{sfdefault}


% TODO
%   Allow scaling?
% 
% 
% reuseMathAlphabets
% ------------------
% 
% The definition of new `math alphabets`_ can lead to a "too many math
% alphabets used in version normal" error.
% 
% As a workaround, this option tells ``isomath`` to re-use the existing
% ``\mathbf`` and ``\mathsf`` alphabets for italic bold and sans-serif bold.
% 
% To access the upright shapes, the corresponding ``\textbf`` and ``\textsf``
% commands might be used (however, this toggles the math-mode off and
% might use a different font).
% 
% ::

\DeclareBoolOption{reuseMathAlphabets}

% .. caution::
%    Do not use ``reuseMathAlphabets`` together with the ``OMLmathbf`` or
%    ``OMLmathsf`` options.
% 
% 
% OML math alphabets
% ------------------
% 
% With Greek letters defined as ``\mathalpha``, the math alphabets are
% expected to be in `OML font encoding`_. Unfortunately, the standard math
% alphabets are usually taken from OT1 encoded fonts that have ligatures and
% non-alpha symbols in place of the small Greek letters.
% 
% The following options cause isomath to (re)define `math alphabets`_ in OML
% encoding::

\DeclareBoolOption{OMLmathrm}
\DeclareBoolOption{OMLmathbf}
\DeclareBoolOption{OMLmathsf}
\DeclareBoolOption{OMLmathsans}
\DeclareBoolOption{OMLmathtt}

% Setting these options enables access to small Greek letters in different
% shapes with e.g. ``\mathrm{\pi}`` — *if an OML encoded font is available*.
% Currently, support for the `OML font encoding`_ is rather limited:
% 
% * only the mathdesign_ fonts support roman in OML encoding, while
% * many font packages define an italic font as OML replacement for a roman
%   font.
% 
% With some packages, these options can result in a "too many math alphabets
% used in version normal" error.
% 
% Process Options
% ---------------
% 
% Process the options with ``kvoptions`` extensions::

\ProcessKeyvalOptions*


% Declarations
% ============
% 
% Math alphabets
% --------------
% 
% In math, LaTeX uses "absolute" fontnames instead of a selection by family,
% shape, and weight because typefaces have a semantic meaning [fntguide]_.
% This correlates with the `Unicode math support`_ where the
% `mathematical alphanumeric symbols`_ block defines distinct Unicode
% characters for Greek and Latin letters in different typefaces.
% 
% Isomath defines a math alphabet for every required font variant and
% optionally re-defines the standard math alphabets in `OML font encoding`_.
% Unfortunately, the number of math alphabets in one math version is limited
% to 16, so we have to be carefull not to exceed this.
% 
% mathbold
% """"""""
% 
% The *italic bold* math alphabet is named ``\mathbold`` like in
% `related packages`_. With the reuseMathAlphabets_ option, ``\mathfb``
% is redefined and ``\mathbold`` made an alias (overwriting existing
% definitions)::

\ifisomath@reuseMathAlphabets
  \DeclareMathAlphabet{\mathbf}{OML}{\isomath@rmdefault}{bx}{it}
  \def\mathbold{\mathbf}
\else
  \DeclareMathAlphabet{\mathbold}{OML}{\isomath@rmdefault}{bx}{it}
\fi

% mathsans
% """"""""
% 
% For *italic sans-serif*, we define a new alphabet named ``\mathsans`` (in
% analogy to ``\mathbold``). As this typeface is not required by ISO 31, it
% is only defined if the ``OMLmathsans`` option is set::

\ifisomath@OMLmathsans
  \DeclareMathAlphabet{\mathsans}{OML}{\isomath@sfdefault}{m}{it}
\fi

% mathboldsans
% """"""""""""
% 
% A *sans serif slanted bold* alphabet is needed for tensor symbols.  With the
% reuseMathAlphabets_ option, ``\mathsf`` is redefined and ``\mathboldsans``
% made an alias::

\ifisomath@reuseMathAlphabets
  \DeclareMathAlphabet{\mathsf}{OML}{\isomath@sfdefault}{bx}{it}
  \def\mathboldsans{\mathsf}
\else
  \DeclareMathAlphabet{\mathboldsans}{OML}{\isomath@sfdefault}{bx}{it}
\fi

% Redefine standard alphabets
% """""""""""""""""""""""""""
% 
% Redefine standard alphabets in `OML font encoding`_
% if the corresponding `OML math alphabets`_ option is true::

\ifisomath@OMLmathrm
  \SetMathAlphabet{\mathrm}{normal}{OML}{\isomath@rmdefault}{m}{n}
\fi
\ifisomath@OMLmathbf
  \SetMathAlphabet{\mathbf}{normal}{OML}{\isomath@rmdefault}{b}{n}
\fi
\ifisomath@OMLmathsf
  \SetMathAlphabet{\mathsf}{normal}{OML}{\isomath@sfdefault}{m}{n}
\fi
\ifisomath@OMLmathtt
  \SetMathAlphabet{\mathtt}{normal}{OML}{\ttdefault}{m}{n}
\fi

% Command aliases
% ---------------
% 
% The following macros allow semantic markup of mathematical symbols.
% The argument is typeset as proposed by ISO 31 and [typefaces]_.
% 
% \\vectorsym
% """""""""""
% 
% Symbols for vectors are typeset *boldface italic*::

\newcommand{\vectorsym}{\mathbold}

% For easier writing or to make existing documents conform to the standard,
% you might want to re-define the standard ``\vec`` command after loading this
% package (cf. the Examples_ section).
% 
% Attention: Some fonts (CM, Latin Modern, ...) have old-style figures in
% their math italic version. The Null vector must not be written ``\vec{0}``
% in this case. Use e.g. ``\mathbf{0}``, ``\boldsymbol{0}`` (with AMS math) or
% ``\bm{0}`` (with boldmath). The latter two variants provide also a failsafe
% alias for a bold vector.
% 
% \\matrixsym
% """""""""""
% 
% Symbols for matrices are typeset *boldface italic*, i. e. in the same face
% as vectors. ::

\newcommand{\matrixsym}{\mathbold}


% \\tensorsym
% """""""""""
% 
% Symbols for tensors are *sans-serif bold italic*::

\newcommand{\tensorsym}{\mathboldsans}

% Font mappings
% -------------
% 
% Some font packages provide a matching math font but do not define a
% substitution in their ``*.fd`` files.
% 
% We define the substitutions needed for the math alphabet definitions in this
% package. Ideally, these should become part of a more complete set of
% definitions in the package's ``*.fd`` files:
% 
% Mathpazo (Palatino) ppl -> zplm ::

\DeclareFontFamily{OML}{ppl}{\skewchar\font127}
\DeclareFontShape{OML}{ppl}{m}{it}{<-> ssub * zplm/m/it}{}
\DeclareFontShape{OML}{ppl}{bx}{it}{<-> ssub * zplm/b/it}{}

% Arev (see omlzavm.fd): fav -> zavm ::

\DeclareFontFamily{OML}{fav}{\skewchar \font =127}
\DeclareFontShape{OML}{fav}{m}{it}{<->ssub * zavm/m/it}{}
\DeclareFontShape{OML}{fav}{bx}{it}{<->ssub * zavm/b/it}{}

% LX Fonts (see lxfonts.sty): llcmss -> llcmm ::

\DeclareFontFamily{OML}{llcmm}{\skewchar\font'177}
\DeclareFontShape{OML}{llcmm}{m}{it}{<-> lcmmi8}{}
\DeclareFontShape{OML}{llcmm}{bx}{it}{<-> lcmmib8}{}

\DeclareFontFamily{OML}{llcmss}{}
\DeclareFontShape{OML}{llcmss}{m}{it}{<-> ssub * llcmm/m/it}{}
\DeclareFontShape{OML}{llcmss}{bx}{it}{<-> ssub * llcmm/bx/it}{}


% No declarations below this point::

\endinput


% References
% **********
% 
% .. [ISO-31] International Standard 31 `Quantities and units`,
%    (ISO 31-0:1992 to ISO 31-14:1992):
%    http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_tc_browse.htm?commid=46202
% 
% .. [typefaces] `Typefaces for Symbols in Scientific Manuscripts`:
%    http://physics.nist.gov/Document/typefaces.pdf
% 
% .. [checklist] `SI Unit rules and style conventions`
%    Check List for Reviewing Manuscripts:
%    http://physics.nist.gov/cuu/Units/checklist.html
% 
% .. [fonts-for-symbols] `On the use of italic and roman fonts for symbols
%    in scientific text`, (Revised December 1999):
%    http://old.iupac.org/standing/idcns/fonts_for_symbols.html
% 
% .. [SI-brochure] `The International System of Units (SI)`:
%    http://www.bipm.org/en/si/si_brochure/
% 
% .. [encguide] `LaTeX font encodings`:
%    http://dante.ctan.org/CTAN/macros/latex/doc/encguide.pdf
% 
% .. [fntguide] `LaTeX 2e font selection`:
%    http://dante.ctan.org/CTAN/macros/latex/doc/fntguide.pdf
% 
% .. [tr25] `Unicode Support for Mathematics`, Unicode Technical Report #25:
%    http://www.unicode.org/reports/tr25/
% 
% .. see also
%    [koma-mail] Custom font substitution: http://www.komascript.de/node/823
% 
%    [Green-Book] `Quantities, Units and Symbols in Physical Chemistry`,
%    3rd edition, RSC Publishing, Cambridge 2007:
%    [ISBN 0 85404 433 7; ISBN-13 978 0 85404 433 7]
% 
% .. Links
% .. *****
% 
% .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt
% .. _BIPM:  http://www.bipm.org/
% .. _IUPAC: http://iupac.org/
% .. _IUPAP: http://www.iupap.org/
% .. _NIST:  http://physics.nist.gov/
% .. _mathematical alphanumeric symbols:
%     http://www.unicode.org/charts/PDF/U1D400.pdf
% .. _arev: http://dante.ctan.org/CTAN/help/Catalogue/entries/arev.html
% .. _cmbright: http://dante.ctan.org/CTAN/help/Catalogue/entries/cmbright.html
% .. _eulervm: http://dante.ctan.org/CTAN/help/Catalogue/entries/eulervm.html
% .. _fixmath: http://dante.ctan.org/CTAN/help/Catalogue/entries/fixmath.html
% .. _fix-cm: http://dante.ctan.org/CTAN/help/Catalogue/entries/fix-cm.html
% .. _fourier: http://dante.ctan.org/CTAN/help/Catalogue/entries/fourier.html
% .. _hvmath: http://dante.ctan.org/CTAN/help/Catalogue/entries/hvmath.html
% .. _ifthen: http://dante.ctan.org/CTAN/help/Catalogue/entries/ifthen.html
% .. _iwona: http://dante.ctan.org/CTAN/help/Catalogue/entries/iwona.html
% .. _kpfonts: http://dante.ctan.org/CTAN/help/Catalogue/entries/kpfonts.html
% .. _kvoptions: http://dante.ctan.org/CTAN/help/Catalogue/entries/kvoptions.html
% .. _keyval: http://dante.ctan.org/CTAN/help/Catalogue/entries/keyval.html
% .. _lxfonts: http://dante.ctan.org/CTAN/help/Catalogue/entries/lxfonts.html
% .. _mathdesign: http://dante.ctan.org/CTAN/help/Catalogue/entries/mathdesign.html
% .. _mathpazo: http://dante.ctan.org/CTAN/help/Catalogue/entries/mathpazo.html
% .. _oberdiek: http://dante.ctan.org/CTAN/help/Catalogue/entries/oberdiek.html
% .. _sfmath: http://dtrx.de/od/tex/sfmath.html
% .. _pxfonts: http://dante.ctan.org/CTAN/help/Catalogue/entries/pxfonts.html
% .. _tmmath: http://dante.ctan.org/CTAN/help/Catalogue/entries/tmmath.html
% .. _txfonts: http://dante.ctan.org/CTAN/help/Catalogue/entries/txfonts.html
