% Copyright 2003--2007 by Till Tantau
% Copyright 2010 by Vedran Mileti\'c
% Copyright 2012--2015 by Vedran Mileti\'c, Joseph Wright
% Copyright 2016 by Joseph Wright
% Copyright 2017,2018 by Louis Stuart, Joseph Wright
% Copyright 2020-2024 by Joseph Wright, samcarter
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file LICENSE.md for more details.

% For \blacktriangleright; not explicitly required by article, but can cause
% weird situations if users find that symbols works in presentation, but not
% in article mode.
% However, some classes or font packages clash with amssymb, so allow to
% disable auto-loading optionally.
\ifbeamer@amssymb
  \RequirePackage{amssymb}
\fi

\mode
<presentation>

%
% Font theme stuff
%
\define@key{beamerthm}{size}
  {\expandafter\def\csname beamer@thmfsize@\beamer@temp\endcsname{#1}}
\define@key{beamerthm}{size*}
  {\expandafter\def\csname beamer@thmfsize@\beamer@temp\endcsname{\fontsize#1}}
\define@key{beamerthm}{shape}
  {\expandafter\def\csname beamer@thmfshape@\beamer@temp\endcsname{#1}}
\define@key{beamerthm}{shape*}
  {\expandafter\def\csname beamer@thmfshape@\beamer@temp\endcsname{\fontshape{#1}}}
\define@key{beamerthm}{series}
  {\expandafter\def\csname beamer@thmfseries@\beamer@temp\endcsname{#1}}
\define@key{beamerthm}{series*}
  {\expandafter\def\csname beamer@thmfseries@\beamer@temp\endcsname{\fontseries{#1}}}
\define@key{beamerthm}{family}
  {\expandafter\def\csname beamer@thmffamily@\beamer@temp\endcsname{#1}}
\define@key{beamerthm}{family*}
  {\expandafter\def\csname beamer@thmffamily@\beamer@temp\endcsname{\fontfamily{#1}}}
\define@key{beamerthm}{parent}
  {\expandafter\def\csname beamer@thmfinherits@\beamer@temp\endcsname{%
    \@for\@temp:={#1}\do{\expandafter\usebeamerfont\expandafter{\@temp}}}}

\newrobustcmd*\setbeamerfont{%
  \@ifstar{\beamer@clearbeamerfont}{\beamer@setbeamerfont}}

\newcommand\beamer@clearbeamerfont[2]{%
  \def\beamer@temp{#1}%
  \setkeys{beamerthm}{size={},shape={},series={},family={},parent={}}%
  \setkeys{beamerthm}{#2}%
}
\newcommand\beamer@setbeamerfont[2]{%
  \def\beamer@temp{#1}%
  \setkeys{beamerthm}{#2}%
}

\newrobustcmd*\usebeamerfont{%
  \@ifstar{\reset@font\beamer@usebeamerfont}{\beamer@usebeamerfont}}

\newcommand\beamer@usebeamerfont[1]{%
  \csname beamer@thmfinherits@#1\endcsname
  \csname beamer@thmfsize@#1\endcsname
  \csname beamer@thmfshape@#1\endcsname
  \csname beamer@thmfseries@#1\endcsname
  \csname beamer@thmffamily@#1\endcsname
  \selectfont}


%
% computer modern font size stuff - redefinition for oversized fonts.
% Not used if other packages like lmodern kick in.
%
\def\EC@family#1#2#3#4#5{%
  \DeclareFontShape{#1}{#2}{#3}{#4}%
  {<3><4>#50500<5><6><7><8><9><10><10.95><12><14.4>%
   <17.28><20.74><24.88><29.86><35.83>genb*#5<42.99><51.59>#53583}{}}
\EC@family{T1}{cmr}{m}{n}{ecrm}
\EC@family{T1}{cmr}{m}{sl}{ecsl}
\EC@family{T1}{cmr}{m}{it}{ecti}
\EC@family{T1}{cmr}{m}{sc}{eccc}
\EC@family{T1}{cmr}{bx}{n}{ecbx}
\EC@family{T1}{cmr}{b}{n}{ecrb}
\EC@family{T1}{cmr}{bx}{it}{ecbi}
\EC@family{T1}{cmr}{bx}{sl}{ecbl}
\EC@family{T1}{cmr}{bx}{sc}{ecxc}
\EC@family{T1}{cmr}{m}{ui}{ecui}
\DeclareFontShape{OT1}{cmr}{m}{n}%
     {<3><4>cmr5<5><6><7><8><9><10><12>gen*cmr%
      <10.95>cmr10%
      <14.4>cmr12%
      <17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmr17}{}
\DeclareFontShape{OT1}{cmr}{m}{sl}%
     {<3><4><5><6><7>cmsl8%
      <8><9>gen*cmsl%
      <10><10.95>cmsl10%
      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmsl12%
      }{}
\DeclareFontShape{OT1}{cmr}{m}{it}%
     {<3><4><5><6><7>cmti7%
      <8>cmti8%
      <9>cmti9%
      <10><10.95>cmti10%
      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmti12%
      }{}
\DeclareFontShape{OT1}{cmr}{m}{sc}%
     {<3><4><5><6><7><8><9><10><10.95><12>%
      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmcsc10%
      }{}
\DeclareFontShape{OT1}{cmr}{m}{ui}
   {<3><4><5><6><7><8><9><10><10.95><12>%
      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmu10%
      }{}
\DeclareFontShape{OT1}{cmr}{b}{n}
     {<3><4><5><6><7><8><9><10><10.95><12>%
      <14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmb10%
      }{}
\DeclareFontShape{OT1}{cmr}{bx}{n}
   {<3><4>cmbx5<5><6><7><8><9>gen*cmbx%
      <10><10.95>cmbx10%
      <12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbx12%
      }{}
\DeclareFontShape{OT1}{cmr}{bx}{sl}
      {<3><4><5><6><7><8><9>%
      <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxsl10%
      }{}
\DeclareFontShape{OT1}{cmr}{bx}{it}
      {<3><4><5><6><7><8><9>%
      <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmbxti10%
    }{}
\DeclareFontFamily{T1}{cmss}{}
\EC@family{T1}{cmss}{m}{n}{ecss}
\EC@family{T1}{cmss}{m}{sl}{ecsi}
\EC@family{T1}{cmss}{m}{it}{ecsi}
\EC@family{T1}{cmss}{bx}{n}{ecsx}
\EC@family{T1}{cmss}{bx}{it}{ecso}
\EC@family{T1}{cmss}{bx}{sl}{ecso}
\DeclareFontShape{T1}{cmss}{sbc}{n}{%
      <3><4><5><6><7><8><9><10><10.95><12><14.4><17.28>%
      <20.74><24.88><29.86><35.83><42.99><51.59>%
      ecssdc10
       }{}
\DeclareFontShape{OT1}{cmss}{m}{n}
     {%
      <3><4><5><6><7><8>cmss8%
      <9>cmss9%
      <10><10.95>cmss10%
      <12><14.4>cmss12%
      <17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmss17%
      }{}
\DeclareFontShape{OT1}{cmss}{m}{sl}
    {%
      <3><4><5><6><7><8>cmssi8<9>cmssi9%
      <10><10.95>cmssi10%
      <12><14.4>cmssi12%
      <17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmssi17%
      }{}
\DeclareFontShape{OT1}{cmss}{m}{it}
    {%
      <3><4><5><6><7><8>cmssi8<9>cmssi9%
      <10><10.95>cmssi10%
      <12><14.4>cmssi12%
      <17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmssi17%
      }{}
\DeclareFontShape{OT1}{cmss}{sbc}{n}
     {%
      <3><4><5><6><7><8><9>cmssdc10%
       <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmssdc10%
       }{}
\DeclareFontShape{OT1}{cmss}{bx}{n}
     {%
      <3><4><5><6><7><8><9>cmssbx10%
      <10><10.95><12><14.4><17.28><20.74><24.88><29.86><35.83><42.99><51.59>cmssbx10%
      }{}
\DeclareFontShape{OT1}{cmss}{b}{n}{<->ssub * cmss/bx/n}{}

\newcommand*{\beamer@font@check}{%
  \def\beamer@cmr{cmr}%
  \edef\beamer@fmdef{\mathfamilydefault}%
  % suppress for standard cm
  \ifx\beamer@fmdef\beamer@cmr\beamer@suppressreplacementstrue\fi
  % suppress for unicode math fonts
  \@ifpackageloaded{unicode-math}{\beamer@suppressreplacementstrue}{}
  % suppress for mathtime serif and math minion serif
  \@ifpackageloaded{arevmath}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{hvmath}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{kpfonts}{\ifbeamer@sansmath\mathversion{sf}\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{lucidabr}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{lmodern}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{lucimatx}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mathastext}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mathpmnt}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mathpple}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mathtime}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mtpro}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
  \@ifpackageloaded{mtpro2}{\ifbeamer@sansmath\else\beamer@suppressreplacementstrue\fi}{}%
}
\AtBeginDocument{%
\beamer@font@check
\ifbeamer@suppressreplacements\else
  \ifbeamer@sansmath
    \SetSymbolFont{operators}{normal}{OT1}{cmss}{\mddefault}{n}%
    \ifx\mv@bold\@undefined
    \else
      \SetSymbolFont{operators}{bold}{OT1}{cmss}{\bfdefault}{n}%
    \fi
    \@ifpackageloaded{lmodern}
      {%
        \SetSymbolFont{operators}{normal}{OT1}{\sfdefault}{\mddefault}{n}%
        \ifx\mv@bold\@undefined
        \else
          \SetSymbolFont{operators}{bold}{OT1}{\sfdefault}{\bfdefault}{n}%
        \fi
      }%
      {}%
  \fi
  \DeclareSymbolFont{numbers}{\encodingdefault}{\mathfamilydefault}{\mddefault}{n}%
  \DeclareSymbolFont{pureletters}{\encodingdefault}{\mathfamilydefault}{\mddefault}{it}%
  \SetMathAlphabet{\mathrm}{normal}{\encodingdefault}{\rmdefault}{\mddefault}{n}%
  \DeclareMathAlphabet{\mathbf}{\encodingdefault}{\mathfamilydefault}{\bfdefault}{n}%
  \DeclareMathAlphabet{\mathsf}{\encodingdefault}{\sfdefault}{\mddefault}{n}%
  \DeclareMathAlphabet{\mathit}{\encodingdefault}{\mathfamilydefault}{\mddefault}{it}%
  \DeclareMathAlphabet{\mathtt}{\encodingdefault}{\ttdefault}{\mddefault}{n}%
  \ifx\mv@bold\@undefined\else
  \SetSymbolFont{numbers}{bold}{\encodingdefault}{\mathfamilydefault}{\bfdefault}{n}%
  \SetSymbolFont{pureletters}{bold}{\encodingdefault}{\mathfamilydefault}{\bfdefault}{it}%
  \SetMathAlphabet{\mathrm}{bold}{\encodingdefault}{\rmdefault}{\bfdefault}{n}%
  \SetMathAlphabet{\mathbf}{bold}{\encodingdefault}{\mathfamilydefault}{\bfdefault}{n}%
  \SetMathAlphabet{\mathsf}{bold}{\encodingdefault}{\sfdefault}{\bfdefault}{n}%
  \SetMathAlphabet{\mathit}{bold}{\encodingdefault}{\mathfamilydefault}{\bfdefault}{it}%
  \SetMathAlphabet{\mathtt}{bold}{\encodingdefault}{\ttdefault}{\bfdefault}{n}%
  \fi
%
  \DeclareMathSymbol{0}\mathalpha{numbers}{"30}%
  \DeclareMathSymbol{1}\mathalpha{numbers}{"31}%
  \DeclareMathSymbol{2}\mathalpha{numbers}{"32}%
  \DeclareMathSymbol{3}\mathalpha{numbers}{"33}%
  \DeclareMathSymbol{4}\mathalpha{numbers}{"34}%
  \DeclareMathSymbol{5}\mathalpha{numbers}{"35}%
  \DeclareMathSymbol{6}\mathalpha{numbers}{"36}%
  \DeclareMathSymbol{7}\mathalpha{numbers}{"37}%
  \DeclareMathSymbol{8}\mathalpha{numbers}{"38}%
  \DeclareMathSymbol{9}\mathalpha{numbers}{"39}%
%
  \DeclareMathSymbol{A}\mathalpha{pureletters}{"41}%
  \DeclareMathSymbol{B}\mathalpha{pureletters}{"42}%
  \DeclareMathSymbol{C}\mathalpha{pureletters}{"43}%
  \DeclareMathSymbol{D}\mathalpha{pureletters}{"44}%
  \DeclareMathSymbol{E}\mathalpha{pureletters}{"45}%
  \DeclareMathSymbol{F}\mathalpha{pureletters}{"46}%
  \DeclareMathSymbol{G}\mathalpha{pureletters}{"47}%
  \DeclareMathSymbol{H}\mathalpha{pureletters}{"48}%
  \DeclareMathSymbol{I}\mathalpha{pureletters}{"49}%
  \DeclareMathSymbol{J}\mathalpha{pureletters}{"4A}%
  \DeclareMathSymbol{K}\mathalpha{pureletters}{"4B}%
  \DeclareMathSymbol{L}\mathalpha{pureletters}{"4C}%
  \DeclareMathSymbol{M}\mathalpha{pureletters}{"4D}%
  \DeclareMathSymbol{N}\mathalpha{pureletters}{"4E}%
  \DeclareMathSymbol{O}\mathalpha{pureletters}{"4F}%
  \DeclareMathSymbol{P}\mathalpha{pureletters}{"50}%
  \DeclareMathSymbol{Q}\mathalpha{pureletters}{"51}%
  \DeclareMathSymbol{R}\mathalpha{pureletters}{"52}%
  \DeclareMathSymbol{S}\mathalpha{pureletters}{"53}%
  \DeclareMathSymbol{T}\mathalpha{pureletters}{"54}%
  \DeclareMathSymbol{U}\mathalpha{pureletters}{"55}%
  \DeclareMathSymbol{V}\mathalpha{pureletters}{"56}%
  \DeclareMathSymbol{W}\mathalpha{pureletters}{"57}%
  \DeclareMathSymbol{X}\mathalpha{pureletters}{"58}%
  \DeclareMathSymbol{Y}\mathalpha{pureletters}{"59}%
  \DeclareMathSymbol{Z}\mathalpha{pureletters}{"5A}%
%
  \DeclareMathSymbol{a}\mathalpha{pureletters}{"61}%
  \DeclareMathSymbol{b}\mathalpha{pureletters}{"62}%
  \DeclareMathSymbol{c}\mathalpha{pureletters}{"63}%
  \DeclareMathSymbol{d}\mathalpha{pureletters}{"64}%
  \DeclareMathSymbol{e}\mathalpha{pureletters}{"65}%
  \DeclareMathSymbol{f}\mathalpha{pureletters}{"66}%
  \DeclareMathSymbol{g}\mathalpha{pureletters}{"67}%
  \DeclareMathSymbol{h}\mathalpha{pureletters}{"68}%
  \DeclareMathSymbol{i}\mathalpha{pureletters}{"69}%
  \DeclareMathSymbol{j}\mathalpha{pureletters}{"6A}%
  \DeclareMathSymbol{k}\mathalpha{pureletters}{"6B}%
  \DeclareMathSymbol{l}\mathalpha{pureletters}{"6C}%
  \DeclareMathSymbol{m}\mathalpha{pureletters}{"6D}%
  \DeclareMathSymbol{n}\mathalpha{pureletters}{"6E}%
  \DeclareMathSymbol{o}\mathalpha{pureletters}{"6F}%
  \DeclareMathSymbol{p}\mathalpha{pureletters}{"70}%
  \DeclareMathSymbol{q}\mathalpha{pureletters}{"71}%
  \DeclareMathSymbol{r}\mathalpha{pureletters}{"72}%
  \DeclareMathSymbol{s}\mathalpha{pureletters}{"73}%
  \DeclareMathSymbol{t}\mathalpha{pureletters}{"74}%
  \DeclareMathSymbol{u}\mathalpha{pureletters}{"75}%
  \DeclareMathSymbol{v}\mathalpha{pureletters}{"76}%
  \DeclareMathSymbol{w}\mathalpha{pureletters}{"77}%
  \DeclareMathSymbol{x}\mathalpha{pureletters}{"78}%
  \DeclareMathSymbol{y}\mathalpha{pureletters}{"79}%
  \DeclareMathSymbol{z}\mathalpha{pureletters}{"7A}%
\fi
}

\ifbeamer@sansmath
  \IfFileExists{sansmathaccent.sty}
    {\RequirePackage{sansmathaccent}}
    {}
\fi

\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}

\newrobustcmd*\Tiny{\@setfontsize\Tiny{4}{5}}
\newrobustcmd*\TINY{\@setfontsize\Tiny{3}{4}}

\mode
<article>
{
  \let\Tiny=\tiny
  \let\TINY=\tiny

  \newrobustcmd*\setbeamerfont{\@ifstar{\@gobbletwo}{\@gobbletwo}}
  \newrobustcmd*\usebeamerfont{\@ifstar{\beamer@optgog}{\beamer@optgog}}
}

\mode
<all>
