From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- macros/latex/contrib/isomath/isomath.sty.txt | 372 +++++++++++++++++++++++++++ 1 file changed, 372 insertions(+) create mode 100644 macros/latex/contrib/isomath/isomath.sty.txt (limited to 'macros/latex/contrib/isomath/isomath.sty.txt') diff --git a/macros/latex/contrib/isomath/isomath.sty.txt b/macros/latex/contrib/isomath/isomath.sty.txt new file mode 100644 index 0000000000..bff0572022 --- /dev/null +++ b/macros/latex/contrib/isomath/isomath.sty.txt @@ -0,0 +1,372 @@ +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 -- cgit v1.2.3