From 99a672a8703b248c022f3413c848e5506258a704 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 2 Oct 2008 00:05:56 +0000 Subject: isomath update (1oct08) git-svn-id: svn://tug.org/texlive/trunk@10818 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/isomath/isomath.sty | 366 ++++++++++++------------ 1 file changed, 184 insertions(+), 182 deletions(-) (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/isomath/isomath.sty b/Master/texmf-dist/tex/latex/isomath/isomath.sty index d2496183dda..7dc97ec2e45 100644 --- a/Master/texmf-dist/tex/latex/isomath/isomath.sty +++ b/Master/texmf-dist/tex/latex/isomath/isomath.sty @@ -1,14 +1,15 @@ -% isomath.sty: Math for scientists +% isomath: Math for scientists % ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ % -% :Copyright: © 2008 Günter Milde, -% Released under the terms of the GNU General Public License -% (v. 2 or later) +% :Copyright: © 2008 Günter Milde +% :Licence: Released under the terms of the GNU General Public License +% (version 2 or later). % -% :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. +% :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:: % @@ -18,33 +19,46 @@ % Motivation % ========== % -% Scientific organisations like IUPAP_, IUPAC_, NIST_, BIPM_, and others -% recommend typesetting math according to International Standard ISO 31 -% `Quantities and units`_ (ISO 31-0:1992 to ISO 31-14:1992).\ [#]_ +% .. Did you ever manage to write the stress tensor ``$\sigma$`` in a +% *sans-serif bold italic* typeface, as recommended by [typefaces]_? % -% .. [#] A summary of these rules is free available [typefaces]_. See also -% [symbol-fonts]_ and [SI-brochure]_. +% Scientific organisations like IUPAP_, IUPAC_, NIST_, BIPM_, and others +% recommend typesetting math according to International Standard `ISO 31`_ +% `Quantities and units` (ISO 31-0:1992 to ISO 31-14:1992).\ [#]_ % % The traditional `LaTeX-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. +% 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` +% * There is no provision for typesetting of Greek letters in *bold italic* % style recommended for vectors (even though the required fonts are % available). % -% * There is no provision for typesetting letters in `sans-serif bold italic` +% * There is no provision for typesetting letters in *sans-serif bold italic* % recommended for typesetting tensor symbols. % +% Also, the Unicode Standard defines the block `mathematical alphanumeric +% symbols`_ — *To be used for mathematical variables where style variations +% are important semantically* — which contains Latin and Greek letters in +% bold, italic, bold italic, sans-serif bold, and sans-serif bold italic +% typeface.\ [#]_ +% % Some of these points are already 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. % +% .. [#] A summary of these rules is free available [typefaces]_. See also +% [fonts-for-symbols]_ and [SI-brochure]_. +% +% .. [#] Plus Number variants and Latin letters in script, bold script, +% fraktur, bold fraktur, double-struck, sans-serif and monospace; +% alltogether 1023 codepoints. +% % % Features % ======== @@ -64,65 +78,55 @@ % + Upright Greek letters are available through the ``\mathrm`` and % ``\mathbf`` alphabets, if the corresponding fonts are OML encoded. % +% Caution: small Greek letters in a math alphabet command can lead to garbage. +% Use the options for `OML math alphabets`_ (if the used font supports the +% `OML font encoding`_) or place Greek letters outside the math alphabet +% command. Some packages (including fixmath_) provide ``\up*`` or +% ``\var*`` macros for upright Greek letters, e.g. ``\mathrm{k}\upOmega``. +% % * The `command aliases`_ ``\vectorsym``, ``\matrixsym``, and ``\tensorsym`` -% select an ISO-conforming typeface. +% allow semantic markup selecting an ISO-conforming typeface. % -% * For this, `new math alphabets`_ are defined: -% -% :``\mathbold``: for *boldface italic* (vector and matrix -% symbols), -% -% :``\mathsans``: for *sans-serif italic* , +% * For this, new `math alphabets`_ are defined: % -% :``\mathboldsans``: for *sans-serif bold italic* (tensor symbols). +% :``\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=`` and % ``sfdefault=`` options_ can be used to override the defaults. % -% * `Font mappings`_ are defined for families which have an OML encoded -% counterpart but miss the substitution definition. -% -% .. Now, it should be possible to typeset, e.g., the symbol for the tensor of -% dielectric permittivity ε according to the rules (i.e. sans-serif bold -% italic). -% -% .. caution:: Using small Greek letters in a math alphabet command (e.g. -% ``\mathrm{\pi}``) can lead to garbage. -% -% You can use the `OML math*`_ options (if the used font supports the -% `OML font encoding`_) or place the Greek letter outside the math -% alphabet command. Some packages (including fixmath_) provide ``\up*`` -% or ``\var*`` macros for upright Greek letters, e.g. -% ``\mathrm{k}\upOmega``. +% * Missing `font mappings`_ are defined for font families which have an OML +% encoded counterpart but miss the substitution definition in their ``*.fd`` +% files. % % % Examples % ======== % -% * ``\usepackage{isomath}`` % -% In many cases (when ``\sfdefault`` expands to "cmss"), the +% * 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 the sans-serif math alphabets:: +% Use cmbright_ for sans-serif math alphabets:: -\usepackage[sfdefault=cmbr]{isomath} - +% \usepackage[sfdefault=cmbr]{isomath} +% % * Redefine the standard ``\vec`` macro to typeset its argument in `bold % italic`:: % \usepackage[sfdefault=cmbr]{isomath} % \renewcommand{\vec}{\vectorsym} % -% * The mathdesign_ package comes with an OML encoded bold roman font but does -% not use it for ``\mathbf`` in the default setting. With :: +% * 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} % -% ``\mathbf{\pi}`` works as expected. +% Now, ``\mathbf{\pi}`` works as expected. % % Related packages % ================ @@ -159,13 +163,6 @@ % OML font encoding % ================= % -% If a math alphabet shall support both, Greek and Latin letters, it must use -% the OML font encoding — no other established encoding provides Latin and -% Greek letters in one font: -% -% * LGR is Greek-only, -% * T7 is just a "reserved name" for a standard Greek encoding. -% % The `LaTeX font encodings` guide [encguide]_ defines: % % The OML encoding contains italic Latin and Greek letters for use in @@ -187,13 +184,21 @@ % * A more suitable public name would be `TeX math letters` or `Original/Old % Math Letters`. The latter would also explain the acronym OML. % +% The OML font encoding is the only established encoding providing +% Latin and Greek letters in one font: +% +% * LGR is Greek-only, +% * T7 is just a "reserved name" for a standard Greek encoding. +% % 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:: Table 1: Fonts supporting the OML font encoding +% .. _table 1: +% +% .. table:: Fonts supporting the OML font encoding % :class: booktab % % ============= =========================== ======= ======== ====== ======= @@ -249,7 +254,7 @@ % % .. _table 2: % -% .. table:: Table 2: Non-CM fonts with ``cmm`` as OML substitution +% .. table:: Non-CM fonts with ``cmm`` as OML substitution % :class: booktab % % ============= =============================== @@ -323,14 +328,6 @@ \RequirePackage{fixmath} -% ifthen -% ------ -% -% The standard LaTeX package `ifthen`_ provides the commands ``\ifthenelse``, -% and ``\whiledo``. :: - -\RequirePackage{ifthen} - % kvoptions % --------- % @@ -345,7 +342,7 @@ % rmdefault % --------- % -% Alternative math font family name for roman. The default is to use the +% Alternative family for roman math fonts. The default is to use the % corresponding text font family (``\rmdefault``) in OMS encoding. % `Table 2`_ lists some fonts where a different setting is advised. % :: @@ -355,21 +352,20 @@ % sfdefault % --------- % -% Alternative math font family name for sans-serif. The default is to use the +% Alternative family for sans-serif math fonts. The default is to use the % corresponding text font family (``\sfdefault``) in OMS encoding. % -% Computer Modern Sans Serif (cmss) has no italic and bold variants in OMS -% encoding. Nor have many derivatives (lmss, aess, ...). -% Actually, there are only a few OML-encoded sans-serif fonts (all -% slanted/italic): +% Computer Modern Sans Serif (cmss) has no OMS 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) +% :zavm: arev_ (Vera Sans with math extension, large x-hight) % :cmbr: cmbright_ (Computer Modern Bright, slightly lighter than cmss) -% :iwona: iwona_ (Humanistic Sans Serif) +% :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 and quite eccentric, new in 2008) +% :llcmm: lxfonts_ (LX Fonts, very wide, excentric, large x-hight, new in 2008) % -% For many fonts (especially CM and related), ``[sfdefault=cmbr]`` is the +% For most fonts (especially CM and related), ``[sfdefault=cmbr]`` is the % recommended setting. % % :: @@ -377,37 +373,43 @@ \DeclareStringOption[\sfdefault]{sfdefault} +% TODO +% Allow scaling? +% +% % reuseMathalphabets % ------------------ % -% The definition of `new math alphabets`_ can lead to a "too many math +% 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. +% ``\mathbf`` and ``\mathsf`` alphabets for italic bold and sans-serif bold. % % To access the upright shapes, the corresponding ``\textbf`` and ``\textsf`` -% command can be used (remember that this toggles the math-mode off and might -% use a different font). +% commands might be used (however, that this toggles the math-mode off and +% might use a different font). % -% Both standard and `new math alphabets`_ are in upright shape, if this option -% is combined with the corresponding `OML math*`_ option. % :: \DeclareBoolOption{reuseMathalphabets} -% OML math* -% --------- +% Caution: Do not use ``reuseMathalphabets`` together with ``OMLmathbf`` or +% ``OMLmathsf``. % -% These options cause isomath to `redefine standard alphabets`_ in OML +% +% OML math alphabets +% ------------------ +% +% The following options cause isomath to (re)define `math alphabets`_ in OML % encoding. % % With Greek letters defined as ``\mathalpha``, the math alphabets are -% expected to be in `OML font encoding`_. OT1 encoded fonts have ligatures and -% non-alpha symbols in place of the small Greek letters. +% expected to be in `OML font encoding`_ as OT1 encoded fonts have ligatures +% and non-alpha symbols in place of the small Greek letters. % % Setting these options enables access to small Greek letters in different -% shapes with e.g. ``\mathrm{\pi}``. +% 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 *bold roman* in OML encoding, while @@ -421,10 +423,10 @@ \DeclareBoolOption{OMLmathrm} \DeclareBoolOption{OMLmathbf} \DeclareBoolOption{OMLmathsf} +\DeclareBoolOption{OMLmathsans} \DeclareBoolOption{OMLmathtt} - -% ============ +% --------------------------------------------------- % % Process the options with ``kvoptions`` extensions:: @@ -433,69 +435,86 @@ % Declarations % ============ % -% New math alphabets -% ------------------ +% Math alphabets +% -------------- +% +% In math, LaTeX uses "absolute" fontnames instead of a selection by family, +% shape, and weight (see the [fntguide]_ for the rationale). +% +% We define a math alphabet for every required font variant and optionally +% re-define 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. % -% The `italic bold` math alphabet is named ``\mathbold`` in `related -% packages`_. For letters, this is the same as the bold version of -% ``\mathnormal``. With the reuseMathalphabets_ option, ``\mathfb`` is -% redefined and ``\mathbold`` made an alias (overwriting existing -% definitions). :: +% mathbold +% """""""" +% +% For the *`italic bold* math alphabet we use the name ``\mathbold`` +% established in `related packages`_. With the reuseMathalphabets_ option, +% ``\mathfb`` is redefined and ``\mathbold`` made an alias (overwriting +% existing definitions). :: -\ifthenelse{\boolean{isomath@reuseMathalphabets}} -{ +\ifisomath@reuseMathalphabets \DeclareMathAlphabet{\mathbf}{OML}{\isomath@rmdefault}{bx}{it} \def\mathbold{\mathbf} -} -{ +\else \DeclareMathAlphabet{\mathbold}{OML}{\isomath@rmdefault}{bx}{it} -} - -% For `italic sans-serif`, we either redefine ``\mathsf`` (with -% reuseMathalphabets_) or, in analogy to ``\mathbold``, we define the new -% alphabet ``\mathsans``:: - -\ifthenelse{\boolean{isomath@reuseMathalphabets}} -{ - \DeclareMathAlphabet{\mathsf}{OML}{\isomath@sfdefault}{m}{it} - \def\mathsans{\mathsf} -} -{ - \DeclareMathAlphabet{\mathsans}{OML}{\isomath@sfdefault}{m}{it} -} +\fi -% A `sans serif slanted bold` alphabet is needed for the tensor -% symbols. As there is no standard math alphabet to re-use, we define the new -% alphabet ``\mathboldsans``:: +% 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 -\DeclareMathAlphabet{\mathboldsans}{OML}{\isomath@sfdefault}{bx}{it} +% 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*`_ option is true). :: - -\ifthenelse{\boolean{isomath@OMLmathrm}} -{\SetMathAlphabet{\mathrm}{normal}{OML}{\isomath@rmdefault}{n}{n}}{} -\ifthenelse{\boolean{isomath@OMLmathbf}} -{\SetMathAlphabet{\mathbf}{normal}{OML}{\isomath@rmdefault}{b}{n}}{} -\ifthenelse{\boolean{isomath@OMLmathbf}} -{\SetMathAlphabet{\mathsf}{normal}{OML}{\isomath@sfdefault}{n}{n}}{} -\ifthenelse{\boolean{isomath@OMLmathtt}} -{\SetMathAlphabet{\mathtt}{normal}{OML}{\ttdefault}{n}{n}}{} +% (if the corresponding `OML math alphabets`_ option is true). :: + +\ifisomath@OMLmathrm + \SetMathAlphabet{\mathrm}{normal}{OML}{\isomath@rmdefault}{n}{n} +\fi +\ifisomath@OMLmathbf + \SetMathAlphabet{\mathbf}{normal}{OML}{\isomath@rmdefault}{b}{n} +\fi +\ifisomath@OMLmathsf + \SetMathAlphabet{\mathsf}{normal}{OML}{\isomath@sfdefault}{n}{n} +\fi +\ifisomath@OMLmathtt + \SetMathAlphabet{\mathtt}{normal}{OML}{\ttdefault}{n}{n} +\fi % Command aliases % --------------- % -% Define commands to typeset some symbol categories complying to -% the ISO standard. +% The following macros allow semantic markup of mathematical symbols. +% The symbols argument is typeset as proposed by ISO 31 and [typefaces]_. % -% Vector symbols -% """""""""""""" +% \\vectorsym +% """"""""""" % -% Symbols for vectors are *boldface italic*:: +% Symbols for vectors are typeset *boldface italic*:: \newcommand{\vectorsym}{\mathbold} @@ -503,20 +522,17 @@ % you might want to re-define the standard ``\vec`` command after loading this % package (cf. the Examples_ section). % -% Matrix symbols -% """""""""""""" +% \\matrixsym +% """"""""""" % -% Symbols for matrices are *boldface italic*, i. e. typeset in the same face as -% vectors (see [typefaces]_). [#]_ :: +% Symbols for matrices are typeset *boldface italic*, i. e. in the same face +% as vectors. :: \newcommand{\matrixsym}{\mathbold} -% .. [#] However, matrix symbols are usually capital letters whereas vectors -% are small ones. Exceptions are physical Quantities like the force -% vector F or the electrical field E. -% -% Tensor symbols -% """""""""""""" + +% \\tensorsym +% """"""""""" % % Symbols for tensors are *sans-serif bold italic*:: @@ -530,7 +546,7 @@ % % 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 file(s): +% definitions in the package's ``*.fd`` files: % % Mathpazo (Palatino) ppl -> zplm :: @@ -545,58 +561,48 @@ \DeclareFontShape{OML}{fav}{bx}{it}{<->ssub * zavm/b/it}{} % LX Fonts (lxfonts): llcmss -> llcmm :: + +% repeat font declarations from lxfonts.sty +\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}{} -% The end -% ======= -% :: + +% No declarations below this point:: \endinput -% TODO -% ==== -% -% The ``\mathsans`` definition "increases symmetry". However, it adds a math -% alphabet that is rarely (or not at all) used. Giving the limit of 16 math -% alphabets, it might be better not to define it. Make it an option? -% -% About this file -% =============== -% -% The package documentation is included in the source file. -% -% The bidirectional text <-> code converter PyLit_ can be used to transform -% the LaTeX package ``isomath.sty`` to a `reStructured Text`_ document -% ``isomath.sty.txt`` (and back again). To translate ``isomath.sty.txt`` to -% LaTeX or HTML, the Python docutils_ are required. -% -% + % References -% ========== -% -% .. [encguide] `LaTeX font encodings`: -% http://dante.ctan.org/CTAN/macros/latex/doc/encguide.pdf -% -% .. [symbol-fonts] `On the use of italic and roman fonts for symbols in -% scientific text`, I.M. Mills and W.V. Metanomski (Revised December 1999): -% http://old.iupac.org/standing/idcns/fonts_for_symbols.html -% -% .. [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] +% ********** % % .. [typefaces] `Typefaces for Symbols in Scientific Manuscripts`: % http://physics.nist.gov/Document/typefaces.pdf % +% .. [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 +% % .. 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 % .. ***** % @@ -604,7 +610,7 @@ % .. _IUPAC: http://iupac.org/ % .. _IUPAP: http://www.iupap.org/ % .. _NIST: http://physics.nist.gov/ -% .. _Quantities and units: +% .. _ISO 31: % http://www.iso.org/iso/iso_catalogue/catalogue_tc/catalogue_tc_browse.htm?commid=46202 % .. _mathematical alphanumeric symbols: % http://www.unicode.org/charts/PDF/U1D400.pdf @@ -628,7 +634,3 @@ % .. _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 -% -% .. _pylit: http://pylit.berlios.de -% .. _reStructured Text: http://docutils.sourceforge.net/rst.html -% .. _docutils: http://docutils.sourceforge.net/rst.html -- cgit v1.2.3