diff options
author | Karl Berry <karl@freefriends.org> | 2007-09-03 16:41:25 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2007-09-03 16:41:25 +0000 |
commit | f1d3e6c572a8075b14527a120c820c6a938f2947 (patch) | |
tree | ad13ff539f523bc3e9c87ffcc845fee58ed3ee94 /Master/texmf-dist/tex/latex/sfmath | |
parent | 3299cb982528e3a87d5b444ecd92a98b412970a3 (diff) |
new latex package sfmath (30aug07)
git-svn-id: svn://tug.org/texlive/trunk@4860 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/sfmath')
-rw-r--r-- | Master/texmf-dist/tex/latex/sfmath/sfmath.sty | 469 |
1 files changed, 469 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/sfmath/sfmath.sty b/Master/texmf-dist/tex/latex/sfmath/sfmath.sty new file mode 100644 index 00000000000..566070f49e0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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 |