Commit 5552073e authored by Turnhout, M.C. van's avatar Turnhout, M.C. van
Browse files

my isomath has the OML-options?

parent cfe5fb59
% isomath
% *******
% Mathematical style for science and technology
% ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
%
% :Date: 2012-09-10
% :Copyright: © 2008, 2012 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 provides tools for a mathematical style
% that conforms to the International Standard ISO 80000-2 and is
% common in science and technology. It changes the default shape of
% capital Greek letters to italic, sets up bold italic and
% sans-serif bold italic math alphabets with Latin and Greek
% characters, and defines macros for markup of vector, matrix and
% tensor symbols.
%
% :Identification:
% ::
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{isomath}
[2012/09/04 v0.6.1 ISO math style]
% .. contents::
%
% 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 LPP.
% 0.4 2010-08-23 split user documentation from literate source;
% \ option ``scaled``;
% \ documentation update.
% 0.5 2011-01-04 math alphabet names matching Unicode;
% \ documentation review and extension;
% \ bold alphabet variants in ``bold`` math version;
% \ upright numbers with ``\vectorsym``.
% 0.6 2012-09-10 Scaling for Kepler Sans (``sfdefault=jkpss``);
% \ documentation update, new caption and abstract.
% ===== =========== ========================================================
%
%
% Requirements
% ============
%
% fixmath.sty
% -----------
% The package fixmath_ by Walter Schmidt defines Greek letters as symbols
% of type ``\mathalpha`` and takes them from the ``letters`` symbol font in
% ``\mathnormal`` (as opposed to ``operators`` in ``fontmath.ltx``).
%
% `fixmath` also defines the ``\mathbold`` alphabet, setting it to ``cmm``.
% `isomath` overwrites this definition with a configurable value for
% the font family. ::
\RequirePackage{fixmath}
% 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
% ---------
% Family for roman math fonts. Must be available in OML
% encoding. The default is to use the corresponding text font family
% (``\rmdefault``). ::
\DeclareStringOption[\rmdefault]{rmdefault}
% sfdefault
% ---------
% Family for sans-serif math fonts. The default selects `CM Bright`, as
% most sans serif fonts are not available in OML encoding::
\DeclareStringOption[cmbr]{sfdefault}
% scaled
% ------
% The sans-serif fonts, ``fav`` (Arev), ``llcmss`` (LX Fonts),
% ``jkpss`` (Kepler Serif) and ``iwona`` can be scaled
% with the ``scaled`` option. ::
\DeclareStringOption[1.0]{scaled}
% 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. ::
\DeclareBoolOption{reuseMathAlphabets}
% OMLmath*
% --------
% The following options cause `isomath` to (re)define the corresponding
% `math alphabets`_ in OML encoding::
\DeclareBoolOption{OMLmathrm}
\DeclareBoolOption{OMLmathbf}
\DeclareBoolOption{OMLmathsf}
\DeclareBoolOption{OMLmathsfit}
\DeclareBoolOption{OMLmathtt}
% backwards compatibility option alias
\DeclareVoidOption{OMLmathsans}{\isomath@OMLmathsfittrue}
% Setting these options enables access to small Greek letters in different
% shapes with e.g. ``\mathrm{\pi}`` but only *if an OML encoded font is
% available*. Currently, only the mathdesign_ fonts support roman in OML
% encoding.
%
% With some packages, these options can result in a “too many math alphabets
% used in version normal” error.
%
% --------------------------------------------------------
%
% 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]_.
%
% `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 careful not to exceed this. The
% ``reuseMathAlphabets`` option reduces the number of math alphabet
% definitions by two, with the side effect of italic shape with
% ``\mathbf`` and ``\mathsf`` commands::
\ifisomath@reuseMathAlphabets
\PackageWarningNoLine{isomath}{%
Re-using math alphabet `mathsf' for \protect \mathsfbfit
\MessageBreak and `mathbf' for \protect \mathbfit
}
\fi
% mathbfit
% ~~~~~~~~
% The *bold italic* math alphabet is named ``\mathbfit`` like in
% unicode-math_ (with an alias ``\mathbold`` like in fixmath_ and
% related packages). With the reuseMathAlphabets_ option, the roman bold
% math alphabet ``\mathbf`` is redefined and ``\mathbfit`` made an
% alias. The series selector ``bx`` (bold extended) is used, because it
% is better supported than ``b``. (Is there any LaTeX math font
% distinguishing between ``b`` and ``bx``?) ::
\ifisomath@reuseMathAlphabets
\DeclareMathAlphabet{\mathbf}{OML}{\isomath@rmdefault}{bx}{it}
\def\mathbfit{\mathbf}
\else
\DeclareMathAlphabet{\mathbfit}{OML}{\isomath@rmdefault}{bx}{it}
\fi
% alias (overwriting the definition from fixmath)::
\renewcommand*{\mathbold}{\mathbfit}
% mathsfit
% ~~~~~~~~
% For *sans-serif italic*, we define a new alphabet ``\mathsfit`` (with
% the alias ``\mathsans`` in analogy to ``\mathbold``). As this typeface
% is not required by ISO 80000-2 and TeX limits the number of math alphabets
% to 16 per math version, it is only defined if the ``OMLmathsfit`` or
% ``OMLmathsans`` option is set::
\ifisomath@OMLmathsfit
\DeclareMathAlphabet{\mathsfit}{OML}{\isomath@sfdefault}{m}{it}
\SetMathAlphabet{\mathsfit}{bold}{OML}{\isomath@sfdefault}{bx}{it}
\def\mathsans{\mathsfit}
\fi
% mathsfbfit
% ~~~~~~~~~~~~
% The *sans serif bold italic* alphabet is used for tensor symbols.
% Following the Unicode naming scheme it is called
% ``\mathsfbfit``(with the backwards compatibility alias ``\mathboldsans``).
% With the reuseMathAlphabets_ option, the upright sans serif math
% alphabet ``\mathsf`` is redefined and ``\mathsfbfit`` made an
% alias to it::
\ifisomath@reuseMathAlphabets
\DeclareMathAlphabet{\mathsf}{OML}{\isomath@sfdefault}{bx}{it}
\def\mathsfbfit{\mathsf}
\else
\DeclareMathAlphabet{\mathsfbfit}{OML}{\isomath@sfdefault}{bx}{it}
\fi
\def\mathboldsans{\mathsfbfit}
% Redefine standard alphabets
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~
%
% Redefine standard alphabets in `OML` font encoding
% if the corresponding `OMLmath*`_ option is true::
\ifisomath@OMLmathrm
\SetMathAlphabet{\mathrm}{normal}{OML}{\isomath@rmdefault}{m}{n}
\SetMathAlphabet{\mathrm}{bold}{OML}{\isomath@rmdefault}{bx}{n}
\fi
\ifisomath@OMLmathbf
\SetMathAlphabet{\mathbf}{normal}{OML}{\isomath@rmdefault}{bx}{n}
\fi
\ifisomath@OMLmathsf
\SetMathAlphabet{\mathsf}{normal}{OML}{\isomath@sfdefault}{m}{n}
\SetMathAlphabet{\mathsf}{bold}{OML}{\isomath@sfdefault}{bx}{n}
\fi
\ifisomath@OMLmathtt
\SetMathAlphabet{\mathtt}{normal}{OML}{\ttdefault}{m}{n}
\SetMathAlphabet{\mathtt}{bold}{OML}{\ttdefault}{bx}{n}
\fi
% Command aliases
% ---------------
%
% The following macros allow semantic markup of mathematical symbols.
% The argument is typeset as proposed by ISO 80000-2 and
% `Typefaces for Symbols in Scientific Manuscripts`_.
%
% \\vectorsym
% ~~~~~~~~~~~
% Alphabetic vectors symbols are typeset *boldface italic* while numeric
% ones (e.g. zero vector) are typeset *boldface upright*. The number
% test is a simplified version from the LaTeX FAQ "`Is the argument a number?`__"
% It fails if a number is followed by a non-number, e.g. ``\vectorsym{1a}``,
% but this is no valid vector symbol and would look strange with the
% ``\vec`` accent, too. ::
\providecommand*{\vectorsym}[1]{%
\ifnum9<1#1%
\mathbf{#1}%
\else%
\mathbfit{#1}%
\fi}
% 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.
%
% __ http://www.tex.ac.uk/cgi-bin/texfaq2html?label=isitanum
%
% \\matrixsym
% ~~~~~~~~~~~
% Symbols for matrices are typeset *boldface italic*, i. e. in the same face
% as vectors. ::
\providecommand*{\matrixsym}{\vectorsym}
% \\tensorsym
% ~~~~~~~~~~~
% Symbols for tensors are *sans-serif bold italic*::
\providecommand*{\tensorsym}{\mathsfbfit}
% Font setup fixes
% ----------------
%
% Substitutions needed for the math alphabet definitions and setup for
% scaled fonts. For details about the font definition macros see
% [fntguide]_.
%
% Unknown makro in font definition file
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% The `Kepler Sans` font definition file ``omljkpss.fd`` contains a boolean
% that is defined in ``kpfonts.sty``. This leads to errors if the fonts are
% used from another package. Provide a dummy definition::
\newif\ifkp@upRm
% Common family name for text and math fonts
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% Some font packages provide matching text and math font but do not
% define a substitution in their ``*.fd`` files. Ideally, the following
% mappings should be moved there.
%
% 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}{}
% Scaling
% ~~~~~~~
% Scale the ``fav`` (Arev), ``iwona``, ``jkpss`` (Kepler Sans) and
% ``llcmss`` (LX Fonts) sans serif fonts by the value of the scaled_ option.
%
% To get scaled versions of a font, you cannot use the ``ssub``
% `size function`, but must use the empty function or ``s`` with the font
% file as argument [found by experiment, GM 2010-01-28].
%
% Arev (see ``omlzavm.fd``) fav ↔ zavm::
\DeclareFontFamily{OML}{fav}{\skewchar\font127}
\DeclareFontShape{OML}{fav}{m}{it}{<-> s * [\isomath@scaled] zavmri7m}{}
\DeclareFontShape{OML}{fav}{bx}{it}{<-> s * [\isomath@scaled] zavmbi7m}{}
% Iwona (see ``omliwona.fd``) iwona ↔ mi-iwona::
\DeclareFontFamily{OML}{iwona}{}
\DeclareFontShape{OML}{iwona}{m}{it}{<-> s * [\isomath@scaled] mi-iwonari}{}
\DeclareFontShape{OML}{iwona}{bx}{it}{<-> s * [\isomath@scaled] mi-iwonabi}{}
% Kepler Serif (see ``omljkpss.fd``)::
\DeclareFontFamily{OML}{jkpss}{\skewchar\font127 }
\DeclareFontShape{OML}{jkpss}{m}{it}{<-> s * [\isomath@scaled] jkpssmi}{}
\DeclareFontShape{OML}{jkpss}{bx}{it}{<-> s * [\isomath@scaled] jkpssbmi}{}
% LX Fonts (see ``lxfonts.sty``) llcmss ↔ llcmm::
\DeclareFontFamily{OML}{llcmss}{\skewchar\font'177}
\DeclareFontShape{OML}{llcmss}{m}{it}{<-> s * [\isomath@scaled] lcmmi8}{}
\DeclareFontShape{OML}{llcmss}{bx}{it}{<-> s * [\isomath@scaled] lcmmib8}{}
% References
% ==========
%
% .. [fntguide] `LaTeX 2e font selection`:
% http://mirror.ctan.org/macros/latex/doc/fntguide.pdf.
%
% .. _LaTeX Project Public License: http://www.latex-project.org/lppl.txt
% .. _arev: http://mirror.ctan.org/help/Catalogue/entries/arev.html
% .. _cmbright: http://mirror.ctan.org/help/Catalogue/entries/cmbright.html
% .. _fixmath: http://mirror.ctan.org/help/Catalogue/entries/fixmath.html
% .. _hvmath: http://mirror.ctan.org/help/Catalogue/entries/hvmath.html
% .. _iwona: http://mirror.ctan.org/help/Catalogue/entries/iwona.html
% .. _keyval: http://mirror.ctan.org/help/Catalogue/entries/keyval.html
% .. _kvoptions: http://mirror.ctan.org/help/Catalogue/entries/kvoptions.html
% .. _lxfonts: http://mirror.ctan.org/help/Catalogue/entries/lxfonts.html
% .. _mathdesign: http://mirror.ctan.org/help/Catalogue/entries/mathdesign.html
% .. _mathematical alphanumeric symbols:
% http://www.unicode.org/charts/PDF/U1D400.pdf
% .. _oberdiek: http://mirror.ctan.org/help/Catalogue/entries/oberdiek.html
% .. _`Typefaces for Symbols in Scientific Manuscripts`:
% http://physics.nist.gov/cuu/pdf/typefaces.pdf
% .. _unicode-math:
% http://mirror.ctan.org/help/Catalogue/entries/unicode-math.html
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment