summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/sfmath
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/sfmath
Initial commit
Diffstat (limited to 'macros/latex/contrib/sfmath')
-rw-r--r--macros/latex/contrib/sfmath/sfmath.sty469
1 files changed, 469 insertions, 0 deletions
diff --git a/macros/latex/contrib/sfmath/sfmath.sty b/macros/latex/contrib/sfmath/sfmath.sty
new file mode 100644
index 0000000000..566070f49e
--- /dev/null
+++ b/macros/latex/contrib/sfmath/sfmath.sty
@@ -0,0 +1,469 @@
+% sfmath.sty, copyright 2001-2007 by Olaf Dietrich (olaf@dtrx.de)
+%
+% 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.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+%
+% The Current Maintainer of this work is Olaf Dietrich.
+%
+% This work consists of the file sfmath.sty.
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{sfmath}[2007/08/27 v0.8 sans serif maths]
+
+
+% This is a simple package for sans serif maths in documents.
+%
+% Usage: \usepackage{sfmath} or \usepackage[OPTIONS]{sfmath}
+%
+% After including the package sfmath.sty, all maths of the current
+% document is displayed with sans serif fonts; there is no way to
+% switch back to the original behavior.
+%
+% The default sans serif font for maths is the sans serif font
+% selected for sans serif text (i.e., \sfdefault) when sfmath.sty
+% is loaded. Therefore, you must include sfmath.sty after having
+% changed \sfdefault, e.g., by a package such as helvet.sty or
+% manually. Alternatively, use one of the font options described
+% below (cm, helvet, cmbright, tx, px, or lm) in order to override
+% the default sans serif font.
+%
+% Package OPTIONS (options marked with (+) are experimental):
+%
+% * slantedGreek: for slanted uppercase Greek letters
+%
+% * cm: use Computer Modern (cmss) for maths (explicitly)
+% * helvet: use Postscript Helvetica (phv) for maths (explicitly)
+% * cmbright: use CM-Bright fonts (cmbr) for maths (explicitely)
+% * tx: use Postscript txfonts (tx) for maths (explicitly)
+% * px: use Postscript pxfonts (tx) for maths (explicitly)
+% * lm: use Latin Modern (lmss) for maths (explicitly) (+)
+%
+% * T1experimental: use T1 font encoding for standard maths (+)
+% * AlphT1experimental: use T1 font encoding for \math*{...} commands (+)
+%
+% * mathrmOrig: do not change the behavior of the \mathrm command
+% * mathbfOrig: do not change the behavior of the \mathbf command
+% * mathitOrig: do not change the behavior of the \mathit command
+% * mathsfOrig: do not change the behavior of the \mathsf command
+%
+% (+): Known limitations of experimental options:
+% T1experimental produces a warning about the encoding of the
+% operators font.
+% AlphT1experimental DOES NOT WORK with uppercase Greek letters
+% within the \math*{...} command!
+% These options should only be used with the ec fonts.
+%
+% lm includes T1experimental and AlphT1experimental with the
+% limitations mentioned above.
+%
+% RECOMMENDATION:
+% use the fix-cm package instead of the experimental
+% T1 options: with fix-cm.sty, the chosen ec fonts
+% harmonize much better with the cm sans serif math fonts.
+% Add \RequirePackage{fix-cm} _before_ \documentclass{...}.
+%
+%
+% Some new macros are defined by sfmath.sty:
+%
+% * \mathsl{...}: A new math alphabet that is by default identical
+% with \mathit{...}; useful in combination with the option mathitOrig.
+%
+% * \upOmega, \upDelta: upright versions of \Omega and \Delta;
+% useful when the option slantedGreek is selected.
+%
+%
+% More documentation can currently be found at:
+% <URL:http://dtrx.de/od/tex/sfmath.html>
+
+
+% CHANGES:
+%
+% v0.8:
+%
+% * Update documentation and add license details for CTAN upload.
+%
+%
+% v0.7:
+%
+% * Add (experimental) support for latin modern (lmodern) fonts.
+%
+%
+% v0.6:
+%
+% * Add some artificial intelligence to use slanted bold letters
+% if available (e.g., for phv, txfonts, or pxfonts).
+% Add options to select txfonts, pxfonts, and cmbright (probably
+% not very useful) explicitely.
+% (Thanks to Alberto Lusiani who asked for slanted bold letters.)
+%
+%
+% v0.5:
+%
+% * Add experimental options for T1 font encoding of maths fonts.
+% Using these options can be useful with ec fonts which look
+% slightly different from the standard cm maths fonts (especially
+% at large font size). About limitations see above.
+%
+%
+% v0.4:
+%
+% * Add \upDelta, \upOmega command (to be a little more compatible
+% with other packages that provide the slantedGreek option)
+%
+%
+% v0.3:
+%
+% * Add sans serif shapes for "," and ".", "\ldotp"
+%
+% * Modified documentation
+%
+%
+% v0.2:
+%
+% * New option slantedGreek for slanted greek capitals
+%
+% * Options helvet and cm to select explicitly the sans serif font
+% for maths. Without any of these options, the current \sfdefault
+% is chosen.
+%
+% * Options mathxxOrig: don't change the alphabet command \mathxx;
+% available for \mathrm, \mathbf, \mathit, and \mathsf
+%
+% * Provide dotlessi and dotlessj (if available)
+%
+
+
+% BUGS/LIMITATIONS/PROBLEMS:
+%
+% * Functionality is limited by the intention to work without
+% additionally defined (virtual) fonts; instead, only standard
+% fonts are used.
+%
+% * The font metrics are not adjusted to maths usage (this may
+% result in typographically unsatisfying results).
+%
+% * In many constellations with Postscript fonts (helvet.sty,
+% pslatex.sty, ...) the upper-case greek letters are not chosen
+% correctly within \mathrm, \mathbf, \mathit, ... (because
+% they should be part of OT1-encoded fonts but are not included
+% in these standard postscript fonts).
+%
+% * Bold math symbols are not always available (e.g. with pslatex.sty)
+% or at least not slanted (e.g. with cmss fonts), so better don't
+% use bold maths with this package. (This has been partially improved
+% in version 0.6.)
+%
+% * There is a visual difference between the ec sans serif text fonts
+% and the cm sans serif maths fonts, especially at larger font sizes.
+% The fix-cm package might help to reduce the ugliness of the ec
+% sans serif fonts and the differences between the ec text fonts
+% and the cm math fonts.
+% Alternatively, the experimental options T1experimental and
+% AlphT1Experimental might help by using the ec fonts for maths as well.
+%
+% * The txfonts and pxfonts are reported to have several deficiencies
+% with respect to font metrics and macro implementation; using
+% these fonts is not recommended by the package author.
+%
+% * The set symbols \mathbb{N} or \mathbbm{N} (from bbm.sty) are not
+% changed. You might like to use \mathbbmss{N} (from bbm.sty).
+%
+% * Some symbols have serifish shapes (\sum, \prod, probably more) and
+% are not changed.
+%
+% * Lower-case greek letters are not available in sans serif shape
+% (they don't have real serifs, but cannot be expected to harmonize
+% with the sans serif latin letters).
+%
+%
+% TODO:
+%
+% * Improve documentation.
+%
+% * Provide LaTeX .ins/.dtx files instead of naked .sty file.
+%
+
+
+% HERE WE GO:
+
+% Declare options and defaults and process options
+
+\DeclareOption{slantedGreek}{%
+ \renewcommand{\greek@shape}{sl}%
+ \renewcommand{\greek@bold@shape}{\greek@bold@sl}%
+}
+
+\DeclareOption{cm}{\renewcommand{\math@sfdefault}{cmss}}
+\DeclareOption{lm}{\renewcommand{\math@sfdefault}{lmss}}
+\DeclareOption{helvet}{\renewcommand{\math@sfdefault}{phv}}
+\DeclareOption{cmbright}{\renewcommand{\math@sfdefault}{cmbr}}
+\DeclareOption{tx}{\renewcommand{\math@sfdefault}{txss}}
+\DeclareOption{px}{\renewcommand{\math@sfdefault}{pxss}}
+
+\DeclareOption{T1experimental}{\renewcommand{\math@encoding}{T1}}
+\DeclareOption{AlphT1experimental}{\renewcommand{\math@lph@encoding}{T1}}
+
+\DeclareOption{mathrmOrig}{\renewcommand{\mathrm@lph}{cmr}}
+\DeclareOption{mathbfOrig}{\renewcommand{\mathbf@lph}{cmr}}
+\DeclareOption{mathitOrig}{\renewcommand{\mathit@lph}{cmr}}
+\DeclareOption{mathsfOrig}{\renewcommand{\mathsf@lph}{cmss}}
+
+
+\newcommand{\math@sfdefault}{\sfdefault}
+\newcommand{\math@encoding}{OT1}
+\newcommand{\math@lph@encoding}{OT1}
+
+\newcommand{\mathrm@lph}{\math@sfdefault}
+\newcommand{\mathbf@lph}{\math@sfdefault}
+\newcommand{\mathit@lph}{\math@sfdefault}
+\newcommand{\mathsf@lph}{\math@sfdefault}
+
+
+% \math@sfGreek: Font for capital greeks: cmss or other?
+% \greek@shape: Capital greeks: normal or slanted? [slantedGreek]
+% \greek@bold@shape: Bold capital greeks: normal or slanted? [slantedGreek]
+% \greek@bold@sl: Bold capital greeks: "sl" if slanted possible
+%
+% \mathnormal@bold@shape: Bold letters: normal or slanted? (always bold)
+% \mathit@bold@series: Bold \mathit (\mathsl): medium or bold? (always slanted)
+
+\newcommand{\math@sfGreek}{cmss}
+\newcommand{\greek@shape}{n}
+\newcommand{\greek@bold@shape}{n}
+\newcommand{\greek@bold@sl}{n}
+\newcommand{\mathnormal@bold@shape}{n}
+\newcommand{\mathit@bold@series}{m}
+
+
+
+\ProcessOptions
+
+
+
+% check the current value of \math@sfdefault
+
+\edef\tmp@sfdefault{\math@sfdefault}
+
+\def\tmp@compare{cmss}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is cmss
+ % no slanted bold letters
+ % no slanted bold capital Greeks
+ \renewcommand{\math@sfGreek}{cmss}
+ \renewcommand{\greek@bold@sl}{n}
+ \renewcommand{\mathnormal@bold@shape}{n}
+ \renewcommand{\mathit@bold@series}{m}
+\fi
+
+\def\tmp@compare{phv}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is phv (helvet.sty)
+ % slanted bold letters
+ % no capital Greeks
+ \renewcommand{\math@sfGreek}{cmss}
+ \renewcommand{\greek@bold@sl}{n}
+ \renewcommand{\mathnormal@bold@shape}{sl}
+ \renewcommand{\mathit@bold@series}{bx}
+\fi
+
+\def\tmp@compare{txss}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is txss (txfonts.sty)
+ % slanted bold letters
+ % slanted bold capital Greeks
+ \renewcommand{\math@sfGreek}{txss}
+ \renewcommand{\greek@bold@sl}{sl}
+ \renewcommand{\mathnormal@bold@shape}{sl}
+ \renewcommand{\mathit@bold@series}{bx}
+\fi
+
+\def\tmp@compare{pxss}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is pxss (pxfonts.sty)
+ % slanted bold letters
+ % slanted bold capital Greeks
+ \renewcommand{\math@sfGreek}{pxss}
+ \renewcommand{\greek@bold@sl}{sl}
+ \renewcommand{\mathnormal@bold@shape}{sl}
+ \renewcommand{\mathit@bold@series}{bx}
+\fi
+
+\def\tmp@compare{cmbr}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is cmbr (cmbright.sty)
+ % no slanted bold letters
+ % no slanted bold capital Greeks
+ \renewcommand{\math@sfGreek}{cmbr}
+ \renewcommand{\greek@bold@sl}{n}
+ \renewcommand{\mathnormal@bold@shape}{n}
+ \renewcommand{\mathit@bold@series}{m}
+\fi
+
+\def\tmp@compare{lmss}
+\ifx\tmp@sfdefault\tmp@compare
+ % \sfdefault is lmss (lmodern.sty sans serif)
+ % T1 encoding only
+ % slanted bold letters
+ % no slanted bold capital Greeks
+ \renewcommand{\math@encoding}{T1}
+ \renewcommand{\math@lph@encoding}{T1}
+ \renewcommand{\math@sfGreek}{cmss}
+ \renewcommand{\greek@bold@sl}{n}
+ \renewcommand{\mathnormal@bold@shape}{sl}
+ \renewcommand{\mathit@bold@series}{bx}
+\fi
+
+
+
+% Change font for digits and "operators" (\sin, \exp, ...)
+% to default sans serif font
+
+\SetSymbolFont{operators}{normal}{\math@encoding}{\math@sfdefault}{m}{n}
+\SetSymbolFont{operators}{bold}{\math@encoding}{\math@sfdefault}{bx}{n}
+
+
+% Most special math symbols remain unmodified (and many of those
+% don't have serifs); however all letters (A-Z, a-z) are
+% explicitely changed to the sans serif version (again
+% default sans serif font).
+%
+% Unfortunately, there is no standard slanted+bold sans serif font
+% available (as Postscript Type 1 font), so try an upright
+% version (may be better than nothing).
+
+\DeclareSymbolFont{SFMath}{\math@encoding}{\math@sfdefault}{m}{sl}
+\SetSymbolFont{SFMath}{normal}{\math@encoding}{\math@sfdefault}{m}{sl}
+\SetSymbolFont{SFMath}{bold}{\math@encoding}{\math@sfdefault}{bx}{\mathnormal@bold@shape}
+\DeclareMathSymbol{A}{\mathalpha}{SFMath}{`A}
+\DeclareMathSymbol{B}{\mathalpha}{SFMath}{`B}
+\DeclareMathSymbol{C}{\mathalpha}{SFMath}{`C}
+\DeclareMathSymbol{D}{\mathalpha}{SFMath}{`D}
+\DeclareMathSymbol{E}{\mathalpha}{SFMath}{`E}
+\DeclareMathSymbol{F}{\mathalpha}{SFMath}{`F}
+\DeclareMathSymbol{G}{\mathalpha}{SFMath}{`G}
+\DeclareMathSymbol{H}{\mathalpha}{SFMath}{`H}
+\DeclareMathSymbol{I}{\mathalpha}{SFMath}{`I}
+\DeclareMathSymbol{J}{\mathalpha}{SFMath}{`J}
+\DeclareMathSymbol{K}{\mathalpha}{SFMath}{`K}
+\DeclareMathSymbol{L}{\mathalpha}{SFMath}{`L}
+\DeclareMathSymbol{M}{\mathalpha}{SFMath}{`M}
+\DeclareMathSymbol{N}{\mathalpha}{SFMath}{`N}
+\DeclareMathSymbol{O}{\mathalpha}{SFMath}{`O}
+\DeclareMathSymbol{P}{\mathalpha}{SFMath}{`P}
+\DeclareMathSymbol{Q}{\mathalpha}{SFMath}{`Q}
+\DeclareMathSymbol{R}{\mathalpha}{SFMath}{`R}
+\DeclareMathSymbol{S}{\mathalpha}{SFMath}{`S}
+\DeclareMathSymbol{T}{\mathalpha}{SFMath}{`T}
+\DeclareMathSymbol{U}{\mathalpha}{SFMath}{`U}
+\DeclareMathSymbol{V}{\mathalpha}{SFMath}{`V}
+\DeclareMathSymbol{W}{\mathalpha}{SFMath}{`W}
+\DeclareMathSymbol{X}{\mathalpha}{SFMath}{`X}
+\DeclareMathSymbol{Y}{\mathalpha}{SFMath}{`Y}
+\DeclareMathSymbol{Z}{\mathalpha}{SFMath}{`Z}
+\DeclareMathSymbol{a}{\mathalpha}{SFMath}{`a}
+\DeclareMathSymbol{b}{\mathalpha}{SFMath}{`b}
+\DeclareMathSymbol{c}{\mathalpha}{SFMath}{`c}
+\DeclareMathSymbol{d}{\mathalpha}{SFMath}{`d}
+\DeclareMathSymbol{e}{\mathalpha}{SFMath}{`e}
+\DeclareMathSymbol{f}{\mathalpha}{SFMath}{`f}
+\DeclareMathSymbol{g}{\mathalpha}{SFMath}{`g}
+\DeclareMathSymbol{h}{\mathalpha}{SFMath}{`h}
+\DeclareMathSymbol{i}{\mathalpha}{SFMath}{`i}
+\DeclareMathSymbol{j}{\mathalpha}{SFMath}{`j}
+\DeclareMathSymbol{k}{\mathalpha}{SFMath}{`k}
+\DeclareMathSymbol{l}{\mathalpha}{SFMath}{`l}
+\DeclareMathSymbol{m}{\mathalpha}{SFMath}{`m}
+\DeclareMathSymbol{n}{\mathalpha}{SFMath}{`n}
+\DeclareMathSymbol{o}{\mathalpha}{SFMath}{`o}
+\DeclareMathSymbol{p}{\mathalpha}{SFMath}{`p}
+\DeclareMathSymbol{q}{\mathalpha}{SFMath}{`q}
+\DeclareMathSymbol{r}{\mathalpha}{SFMath}{`r}
+\DeclareMathSymbol{s}{\mathalpha}{SFMath}{`s}
+\DeclareMathSymbol{t}{\mathalpha}{SFMath}{`t}
+\DeclareMathSymbol{u}{\mathalpha}{SFMath}{`u}
+\DeclareMathSymbol{v}{\mathalpha}{SFMath}{`v}
+\DeclareMathSymbol{w}{\mathalpha}{SFMath}{`w}
+\DeclareMathSymbol{x}{\mathalpha}{SFMath}{`x}
+\DeclareMathSymbol{y}{\mathalpha}{SFMath}{`y}
+\DeclareMathSymbol{z}{\mathalpha}{SFMath}{`z}
+
+\DeclareMathSymbol{\imath}{\mathalpha}{SFMath}{"10}
+\DeclareMathSymbol{\jmath}{\mathalpha}{SFMath}{"11}
+
+
+% The symbols ",", ".", and "\ldotp" should be sans serif
+% but upright.
+
+\DeclareSymbolFont{SFMathUp}{\math@encoding}{\math@sfdefault}{m}{n}
+\SetSymbolFont{SFMathUp}{normal}{\math@encoding}{\math@sfdefault}{m}{n}
+\SetSymbolFont{SFMathUp}{bold}{\math@encoding}{\math@sfdefault}{bx}{n}
+\DeclareMathSymbol{,}{\mathpunct}{SFMathUp}{`,}
+\DeclareMathSymbol{.}{\mathord}{SFMathUp}{`.}
+\DeclareMathSymbol{\ldotp}{\mathord}{SFMathUp}{`.}
+
+
+% Take capital greek letters from cmss or [tp]xss; other sans serif fonts
+% like helvetica don't have capital greeks, so here cmss is
+% taken instead of \sfdefault. Unfortunately, this does not work
+% within the alphabet commands \mathrm, \mathsf, ...
+
+\DeclareSymbolFont{SFMathGreek}{OT1}{\math@sfGreek}{m}{\greek@shape}
+\SetSymbolFont{SFMathGreek}{normal}{OT1}{\math@sfGreek}{m}{\greek@shape}
+\SetSymbolFont{SFMathGreek}{bold}{OT1}{\math@sfGreek}{bx}{\greek@bold@shape}
+
+\DeclareMathSymbol{\Gamma}{\mathalpha}{SFMathGreek}{"00}
+\DeclareMathSymbol{\Delta}{\mathalpha}{SFMathGreek}{"01}
+\DeclareMathSymbol{\Theta}{\mathalpha}{SFMathGreek}{"02}
+\DeclareMathSymbol{\Lambda}{\mathalpha}{SFMathGreek}{"03}
+\DeclareMathSymbol{\Xi}{\mathalpha}{SFMathGreek}{"04}
+\DeclareMathSymbol{\Pi}{\mathalpha}{SFMathGreek}{"05}
+\DeclareMathSymbol{\Sigma}{\mathalpha}{SFMathGreek}{"06}
+\DeclareMathSymbol{\Upsilon}{\mathalpha}{SFMathGreek}{"07}
+\DeclareMathSymbol{\Phi}{\mathalpha}{SFMathGreek}{"08}
+\DeclareMathSymbol{\Psi}{\mathalpha}{SFMathGreek}{"09}
+\DeclareMathSymbol{\Omega}{\mathalpha}{SFMathGreek}{"0A}
+
+
+\DeclareSymbolFont{SFMathUpGreek}{OT1}{\math@sfGreek}{m}{n}
+\SetSymbolFont{SFMathUpGreek}{normal}{OT1}{\math@sfGreek}{m}{n}
+\SetSymbolFont{SFMathUpGreek}{bold}{OT1}{\math@sfGreek}{bx}{n}
+
+\DeclareMathSymbol{\upDelta}{\mathalpha}{SFMathUpGreek}{"01}
+\DeclareMathSymbol{\upOmega}{\mathalpha}{SFMathUpGreek}{"0A}
+
+
+% Define new behavior for math alphabet commands
+
+
+\SetMathAlphabet{\mathnormal}{normal}{\math@lph@encoding}{\math@sfdefault}{m}{sl}
+\SetMathAlphabet{\mathnormal}{bold}{\math@lph@encoding}{\math@sfdefault}{bx}{\mathnormal@bold@shape}
+
+\SetMathAlphabet{\mathrm}{normal}{\math@lph@encoding}{\mathrm@lph}{m}{n}
+\SetMathAlphabet{\mathrm}{bold}{\math@lph@encoding}{\mathrm@lph}{bx}{n}
+
+\SetMathAlphabet{\mathbf}{normal}{\math@lph@encoding}{\mathbf@lph}{bx}{n}
+\SetMathAlphabet{\mathbf}{bold}{\math@lph@encoding}{\mathbf@lph}{bx}{n}
+
+\SetMathAlphabet{\mathit}{normal}{\math@lph@encoding}{\mathit@lph}{m}{sl}
+\SetMathAlphabet{\mathit}{bold}{\math@lph@encoding}{\mathit@lph}{\mathit@bold@series}{sl}
+
+\SetMathAlphabet{\mathsf}{normal}{\math@lph@encoding}{\mathsf@lph}{m}{n}
+\SetMathAlphabet{\mathsf}{bold}{\math@lph@encoding}{\mathsf@lph}{bx}{n}
+
+
+
+% Define new math alphabet command \mathsl
+
+\DeclareMathAlphabet{\mathsl}{\math@lph@encoding}{\math@sfdefault}{m}{sl}
+\SetMathAlphabet{\mathsl}{bold}{\math@lph@encoding}{\math@sfdefault}{\mathit@bold@series}{sl}
+
+
+\endinput