% sansmathfonts.sty
%
% Provides complete sans serif math fonts
%
% author: Ariel Barton
%
% Copyright Ariel Barton, 2013--2022
%
% This work may be distributed and/or modified under the
% conditions of the LaTeX Project Public License, either
% version 1.3c of this license or (at your option) any
% later version.
% The latest version of the license is in
%    http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of
% LaTeX version 2003/06/01 or later.
%
% This work has the LPPL maintenance status "author-maintained".
%
% The complete list of files considered part of this work is in
% the file `sansmathfonts.pdf' and its source code `sansmathfonts.tex'.
%

\ProvidesPackage{sansmathfonts}[2022/10/09]

\newif \ifmath@sansmathfonts \math@sansmathfontstrue
\newif \iftext@sansmathfonts \text@sansmathfontstrue
\newif \ifI@sansmathfonts \I@sansmathfontsfalse

\DeclareOption{notmath} {\math@sansmathfontsfalse}
\DeclareOption{onlytext}{\math@sansmathfontsfalse}
\DeclareOption{onlymath}{\text@sansmathfontsfalse}
\DeclareOption{nottext} {\text@sansmathfontsfalse}
\DeclareOption{I}{\I@sansmathfontstrue}

\ProcessOptions

\def\OTOne@sansmathfonts{OT1}
\def\TOne@sansmathfonts{T1}
\def\U@sansmathfonts{U}

\ifx\OTOne@sansmathfonts \f@encoding \else
\ifx\U@sansmathfonts \f@encoding \else
	\I@sansmathfontsfalse
	\PackageWarning{sansmathfonts}
		{The [I] package option is only 
		compatible with the OT1 and U font encodings. 
		To use the [I] option, please use the fontenc 
		package with OT1 encoding: \string\usepackage[OT1]\string{fontenc\string}}
	\ifx\TOne@sansmathfonts \f@encoding \else 
		\text@sansmathfontsfalse
		\PackageWarning{sansmathfonts}
		{Sans serif text fonts are only provided for OT1, T1, and U font 
			encodings. I will not change the sans serif text font.}
	\fi
\fi\fi

\let\sfdefault@sansmathfonts\sfdefault
\def\Usfdefault@sansmathfonts{cmss}
\iftext@sansmathfonts
	\def\sfdefault@sansmathfonts{xcmss}
	\def\Usfdefault@sansmathfonts{xcmss}
	\ifI@sansmathfonts
		\def\sfdefault@sansmathfonts{cmsmf}%
		\def\Usfdefault@sansmathfonts{cmsmf}%
	\fi
\fi

\ifmath@sansmathfonts

% Turn off Beamer math replacements
\@ifpackageloaded{beamerbasefont}{\usefonttheme{professionalfonts}}{}

% Sans serif math
% Code borrowed from fontmath.ltx 
% (edited; cmr->cmsmf, cmm->cmssm, cmsy->cmsssy, cmex->cmssex)
\DeclareFontSubstitution{OML}{cmssm}{m}{it}
\DeclareFontSubstitution{OMS}{cmsssy}{m}{n}
\DeclareFontSubstitution{OMX}{cmssex}{m}{n}
\DeclareFontSubstitution{U}{\Usfdefault@sansmathfonts}{m}{n}
\DeclareSymbolFont{operators}   {OT1}{cmsmf} {m}{n}
\DeclareSymbolFont{letters}     {OML}{cmssm} {m}{it}
\DeclareSymbolFont{symbols}     {OMS}{cmsssy}{m}{n}
\DeclareSymbolFont{largesymbols}{OMX}{cmssex}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{cmsmf} {bx}{n}
\SetSymbolFont{letters}  {bold}{OML}{cmssm} {b}{it}
\SetSymbolFont{symbols}  {bold}{OMS}{cmsssy}{b}{n}

% Code borrowed from concmath.sty (amsfonts/amssymb option)
\AtBeginDocument{%
	\@ifpackageloaded{amsfonts}{%
	\DeclareSymbolFont{AMSa}{U}{ssmsa}{m}{n}
	\DeclareSymbolFont{AMSb}{U}{ssmsb}{m}{n}
	}{}%
	\@ifpackageloaded{esint}{%
	\DeclareSymbolFont{largesymbolsA}{U}{ssesint}{m}{n}
	}{}
	%
	\ifx\OTOne@sansmathfonts \f@encoding \else 
	\ifx\U@sansmathfonts \f@encoding \else 
		\ifI@sansmathfonts
			\PackageError{sansmathfonts}
			{The [I] package option is only compatible with 
				the OT1 and U font encodings. To use the [I] option,
				please use the fontenc package with OT1 encoding:
				\string\usepackage[OT1]\string{fontenc\string}}
			{Please do not use the [I] option for the sansmathfonts 
				package, or select your font encoding before you load 
				the sansmathfonts package.}
		\fi
		\ifx\TOne@sansmathfonts \f@encoding \else 
		\iftext@sansmathfonts
			\PackageError{sansmathfonts}
				{Sans serif text fonts are only
					provided for OT1, T1, and U font encodings.}
				{Please use the [onlymath] option for the sansmathfonts 
					package, or select your font encoding before you 	
					load the sansmathfonts package.}
		\fi \fi
	\fi \fi
	}	

% beamer currently sets 
% \mathrm to upright serif and
% \mathit to slanted sans serif.
% They should be consistent,
% and the setup should be such that if you aren't paying attention,
% then you get the font of the rest of the letters,
% that is, sans serif.

% Code borrowed from fontmath.ltx 
% (edited; cmr->cmsmf)
\DeclareSymbolFontAlphabet{\mathrm}    {operators}
\DeclareSymbolFontAlphabet{\mathnormal}{letters}
\DeclareSymbolFontAlphabet{\mathcal}   {symbols}
\DeclareMathAlphabet      {\mathbf}{OT1}{cmsmf}{bx}{n}
\DeclareMathAlphabet      {\mathit}{OT1}{cmsmf}{m}{it}
\DeclareMathAlphabet      {\mathtt}{OT1}{cmtt}{m}{n}
\SetMathAlphabet\mathsf{bold}{OT1}{cmsmf}{bx}{n}
\SetMathAlphabet\mathit{bold}{OT1}{cmsmf}{bx}{it}

\fi

\DeclareMathAlphabet      {\mathserif}{OT1}{cmr}{m}{n}
\DeclareMathAlphabet      {\mathsf}{OT1}{cmsmf}{m}{n}

% Use the improved sans family
% (provides sans serif small caps fonts)
\let\sfdefault\sfdefault@sansmathfonts

