%%
%% This is file `bm.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% bm.dtx  (with options: `package')
%% 
%% This is a generated file.
%% 
%% The source is maintained by the LaTeX Project team and bug
%% reports for it can be opened at https://latex-project.org/bugs/
%% (but please observe conditions on bug reports sent to that address!)
%% 
%% Copyright (C) 1993-2024
%% The LaTeX Project and any individual authors listed elsewhere
%% in this file.
%% 
%% This file was generated from file(s) of the Standard LaTeX `Tools Bundle'.
%% --------------------------------------------------------------------------
%% 
%% It 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 this license is in
%%    https://www.latex-project.org/lppl.txt
%% and version 1.3c or later is part of all distributions of LaTeX
%% version 2005/12/01 or later.
%% 
%% This file may only be distributed together with a copy of the LaTeX
%% `Tools Bundle'. You may however distribute the LaTeX `Tools Bundle'
%% without such generated files.
%% 
%% The list of all files belonging to the LaTeX `Tools Bundle' is
%% given in the file `manifest.txt'.
%% 
%% Copyright 1996 1997 1998 1999 2002 2003 2004 2016 2017 2019 2021 2022 2023
%% David Carlisle Frank Mittelbach
%%
%% Development of this package was commissioned by Y&Y Inc.
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{bm}
          [2023/12/19 v1.2f Bold Symbol Support (DPC/FMi)]
\DeclareOption{nopmb}{\let\bm@pmb@\@firstofone}
\DeclareOption{warn}{\def\bm@info{\PackageWarningNoLine{bm}}}
\DeclareOption{info}{\def\bm@info#1{\PackageInfo{bm}{#1\@gobble}}}
\DeclareOption{silent}{\let\bm@info\@gobble}
\ExecuteOptions{info}
\ProcessOptions\relax
\def\bm@setup#1#2{%
  \let\bm@install@mathalphabet\install@mathalphabet
  \let\bm@getanddefine@fonts\getanddefine@fonts
  \let\bm@or\or
  \edef\bm@general{\f@encoding/\f@family/\f@series/\f@shape/\f@size}%
  \@tempcnta#2%
  \count@-\count18%
  \advance\count@-\@tempcnta
  \advance\count@15\relax
  \ifnum\count@<\z@
    \advance\@tempcnta\count@
  \fi
  \let\or\relax
  \expandafter\let\csname bm@#1table\endcsname\@gobble
  \def\bm@define##1{%
    \expandafter\xdef\csname bm@#1table\endcsname{%
      \csname bm@#1table\endcsname\or##1}}%
  \def\getanddefine@fonts##1##2{%
    \def\@tempa{##2}%
    \def\@tempb####1##1####2####3\@nil{\def\@tempb{####2}}%
    \expandafter\expandafter\expandafter
      \@tempb\csname mv@#1\endcsname\@nil
    \ifx\@tempa\@tempb
      \bm@define\m@ne
      \bm@info{No #1 for \string##2%
               \ifx\bm@pmb@\@firstofone\else, using \string\pmb\fi}%
    \else
      \edef\@tempa{sym#1\expandafter\@gobblefour\string##1}%
      \ifnum\@tempcnta<%
           \expandafter\ifx\csname\@tempa\endcsname\relax
             \@ne
           \else
             \m@ne
           \fi
        \bm@define\z@
      \else
        \expandafter\ifx\csname\@tempa\endcsname\relax
          \begingroup
          \escapechar\m@ne
          \edef\@tempb{\endgroup
            \noexpand\split@name
            \expandafter\string\@tempb}%
          \@tempb/\@nil
         \expandafter\ifx
           \csname symbold\expandafter\@gobblefour\string##1\endcsname
           \relax
            \expandafter\new@mathgroup\csname\@tempa\endcsname
            \expandafter\new@symbolfont\csname\@tempa\endcsname
                       \f@encoding\f@family\f@series\f@shape
            \advance\@tempcnta\m@ne
         \else
           \def\bm@expand####1##1####2####3\@nil{\def\bm@expand{####2}}%
    \expandafter\expandafter\expandafter
           \bm@expand\csname mv@bold\endcsname\@nil
           \ifx\bm@expand\@tempb
             \expandafter\let\csname\@tempa\expandafter\endcsname
                \csname symbold\expandafter
                        \@gobblefour\string##1\endcsname
           \else
             \expandafter\new@mathgroup\csname\@tempa\endcsname
             \expandafter\new@symbolfont\csname\@tempa\endcsname
                       \f@encoding\f@family\f@series\f@shape
             \advance\@tempcnta\m@ne
           \fi
         \fi
        \else
          \bm@info
            {Symbol font \@tempa\space already defined.\MessageBreak
             Not overwriting it}%
        \fi
        \count@\csname\@tempa\endcsname
        \advance\count@-##1%
        \bm@define{\the\count@\relax}%
      \fi
    \fi}%
  \let\install@mathalphabet\@gobbletwo
  \mv@normal
  \expandafter\xdef\csname bm@#1table\endcsname{%
    \noexpand\ifcase\@tempcnta
      \csname bm@#1table\endcsname
    \noexpand\else
      \z@
    \noexpand\fi}%
  \expandafter\split@name\bm@general\@nil
  \let\install@mathalphabet\bm@install@mathalphabet
  \let\getanddefine@fonts\bm@getanddefine@fonts
  \let\or\bm@or}
\ifx\bmmax\@undefined
  \chardef\bmmax=4
\fi
\ifx\mv@bold\@undefined
  \def\bm@boldtable{\m@ne}
  \AtEndOfPackage{%
    \def\bm@gr@up#1#2{%
      \bm@install@mathalphabet{#2}}}
\else
  \bm@setup{bold}\bmmax
  \@ifundefined{symboldoperators}
    {}
    {\DeclareSymbolFontAlphabet\mathbf{boldoperators}}
\fi
\ifx\hmmax\@undefined
  \chardef\hmmax=3
\fi
\ifx\mv@heavy\@undefined
\else
  \bm@setup{heavy}\hmmax
\fi
\begingroup
\catcode`\'=\active
\catcode`\_=\active
\@firstofone{\endgroup
\def\bm@general#1#2#3#4#5{%
  \begingroup
    \let\bm\@firstofone
    \let\hm\@firstofone
    \global\let\bm@command\@empty
    \let\@let@token\@empty
    \let\protect\@empty
    \let\@typeset@protect\@empty
    \def\bm@mathchoice{\bm@m@thchoice#1}%
    \def\bm@group{\bm@gr@up#1}%
    \let\bm@table#2%
    \let\left\holdinginserts
    \let\right\left
    \let\mskip\mkern
    \let\hskip\kern
    \let\bm@prime\copy
    \let_\relax
    \def'{\bm@prime\prime\relax}%
    \def\@ifnextchar##1##2##3##4{%
      \if##1##4%
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
      {##2##4}{##3{##4}}}%
    \let\kernel@ifnextchar\@ifnextchar
    \def\GenericWarning##1##2{%
      \unvcopy{\GenericWarning{##1}{##2}}}%
    \def\GenericError##1##2##3##4{%
      \unvcopy{\GenericError{##1}{##2}{##3}{##4}}}%
    \let\DN@\copy
    \let\FN@\copy
    \let\nolimits@\copy
    \let\next@\copy
    \global\let\bm@first\@empty
    \ifx\uproot@\undefined\else
       \def\root##1\of##2{{\root##1\of{##2}}}%
    \fi
    \def\mathaccentV##1{\mathaccent"\accentclass@}%
    \let\@ifnext\@ifnextchar
    \let\measure@lhs\copy
    \let \rel@break\copy
    \let \bin@break\copy
    \let \after@open\copy
    \let \after@close\copy
    \let\ifmmode\iftrue
     \let\install@mathalphabet\def
     \let\getanddefine@fonts\@gobbletwo
     #3%
    \def\select@group##1##2##3##4{{%
      \protect##1{##4}}}%
    \def\use@mathgroup##1##2##3{{%
      \protect\use@mathgroup##1{##2}{##3}}}%
    \bm@expand#5\bm@end
  \endgroup
  #4}
}
\DeclareRobustCommand\bm{%
  \bm@general\boldmath\bm@boldtable\mv@bold\bm@command}
\protected@edef\bm#1{\bm{#1}}
\def\DeclareBoldMathCommand{\@testopt\bm@declare{bold}}
\def\bm@declare[#1]#2{%
  \expandafter\bm@general
        \csname #1math\expandafter\endcsname
        \csname bm@#1table\expandafter\endcsname
        \csname mv@#1\endcsname
        {\bm@define#2}}
\def\bmdefine{\DeclareBoldMathCommand[bold]}
\ifx\mv@heavy\@undefined
  \let\hm\bm
  \let\heavymath\boldmath
  \let\bm@heavytable\bm@boldtable
\else
  \DeclareRobustCommand\hm{%
    \bm@general\heavymath\bm@heavytable\mv@heavy\bm@command}
  \protected@edef\hm#1{\hm{#1}}
  \def\hmdefine{\DeclareBoldMathCommand[heavy]}
\fi
\outer\def\bm@end{\@@end}
\def\bm@expand{\afterassignment\bm@exp@nd\count@`\a}
\def\bm@exp@nd{\afterassignment\bm@test\count@`\a}
\def\bm@test{%
  \let\bm@previous\@let@token
  \futurelet\@let@token\bm@test@}
\def\bm@test@{%
  \ifx\@let@token\bgroup
    \expandafter\bm@group
  \else
    \expandafter\bm@test@token
  \fi}
\def\bm@gr@up#1#2{%
  \bm@add{{\bm@gr@@p#1{{#2}}}}}
\def\bm@gr@@p#1#2{%
  \ifmmode
    \bm@mchoice#1{#2}{#2}{#2}{#2}%
  \else
    \bfseries#1#2%
  \fi}
\def\bm@test@token#1{%
  \let\bm@next\@empty
  \ifx#1\@@end
  \else\ifx#1\mathchoice
    \let\bm@next\bm@mathchoice
  \else\ifx#1\mathchar
    \afterassignment\bm@mathchar\count@
  \else\ifx#1\mathaccent
    \afterassignment\bm@mathaccent\count@
  \else\ifx#1\delimiter
    \afterassignment\bm@delimiter\count@
  \else\ifx#1\radical
    \afterassignment\bm@radical\count@
  \else\ifx#1\mkern
    \bm@register#1{\muskip\z@}%
  \else\ifx#1\kern
    \bm@register#1\skip@
  \else\ifx#1\penalty
    \bm@register#1\count@
  \else\ifx#1\unvcopy
    \let\bm@next\bm@add
  \else\ifcat\noexpand#1\relax
    \xdef\meaning@{\meaning#1}%
    \expandafter\bm@mchar@test\meaning@""""\@nil#1%
  \else\ifcat.\ifcat a#1.\else#1\fi
    \count@\mathcode`#1\relax
    \ifnum\count@=\mathcode`\'%
      \begingroup\uccode`\~`#1\uppercase{\endgroup
        \def\bm@next{\bm@expand~}}%
    \else
      \ifx\bm@previous\left
        \count@\delcode`#1\relax
        \bm@delimiter
      \else
        \ifnum\count@>"8000
          \Umathcharnumdef\@tempa\count@
          \xdef\meaning@{\meaning\@tempa}%
          \expandafter\bm@mchar@test\meaning@""""\@nil\@tempa
        \else
          \bm@mathchar
        \fi
      \fi
    \fi
  \else
    \bm@add{#1}%
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  \bm@next}
\def\bm@define#1{%
  \begingroup
    \ifx\bm@command\@gtempa
      \def\mathchar{\global\mathchardef#1}%
      \bm@command
    \else
      \toks@\expandafter{\bm@command}%
      \xdef#1{\bm@first\noexpand\bm@protect\noexpand#1{\the\toks@}}%
    \fi
  \endgroup}
\def\bm@protect#1{%
  \ifx\protect\@typeset@protect
    \expandafter\@firstofone
  \else
    \protect#1\expandafter\@gobble
  \fi}
\def\bm@mchoice#1#2#3#4#5{%
  \mathchoice{\hbox{#1$\displaystyle\m@th#2$}}%
             {\hbox{#1$\textstyle\m@th#3$}}%
             {\hbox{#1$\scriptstyle\m@th#4$}}%
             {\hbox{#1$\scriptscriptstyle\m@th#5$}}}
\def\bm@m@thchoice#1#2#3#4#5{%
  \bm@add{\bm@mchoice#1{#2}{#3}{#4}{#5}}}
\def\bm@register#1#2{%
  \def\@tempa{#1\the#2}%
  \afterassignment\bm@r@gister#2}
\def\bm@r@gister{%
  \bm@xadd{\@tempa\space}}
\def\bm@mathchar{%
  \@tempcntb\count@
  \let\@tempa\bm@group
  \bm@changefam{}%
  \ifnum\count@>\@tempcntb
    \ifx\bm@command\@empty
      \xdef\@gtempa{\mathchar\the\count@\space}%
    \fi
    \bm@xadd{\mathchar\the\count@\space}%
  \else
    \begingroup
      \divide\count@"1000
      \let\bm@expand\relax
      \bm@xadd\bm@class
    \endgroup
    \edef\@tempb{%
      \noexpand\@tempa{\mathchar\the\count@\space}}%
    \@tempb
  \fi}
\def\bm@umathchar#1#2#3{%
\@tempcnta#2\relax
\count@\bm@table
\ifnum\count@=\z@
  \bm@gr@up\boldmath{\Umathchar#1 #2 #3 }%
\else
  \ifnum\count@=\m@ne
  \else
    \advance\@tempcnta\count@
  \fi
  \bm@xadd{\Umathchar#1\space
                     \the\@tempcnta\space\space
                     #3\space}%
\fi}
\def\bm@pmb#1{%
  \bm@add{\bm@pmb@{#1}}}
\ifx\bm@pmb@\@firstofone\else
\def\bm@pmb@#1{{%
  \setbox\tw@\hbox{$\m@th\mkern.4mu$}%
  \mathchoice
    \bm@pmb@@\displaystyle\@empty{#1}%
    \bm@pmb@@\textstyle\@empty{#1}%
    \bm@pmb@@\scriptstyle\defaultscriptratio{#1}%
    \bm@pmb@@\scriptscriptstyle\defaultscriptscriptratio{#1}}}
\def\bm@pmb@@#1#2#3{{%
  \setbox\z@\hbox{$\m@th#1#3$}%
  \dimen@#2\wd\tw@
  \rlap{\copy\z@}%
  \kern\dimen@
  \raise1.5\dimen@\rlap{\copy\z@}%
  \kern\dimen@
  \box\z@}}%
\fi
\def\bm@class{%
  \ifcase\count@
    \or
    \mathop\or
    \mathbin\or
    \mathrel\or
    \mathopen\or
    \mathclose\or
    \mathpunct\or
  \fi}
\def\bm@add#1{%
  \begingroup
    \toks@\expandafter{\bm@command#1}%
    \xdef\bm@command{\the\toks@}%
  \endgroup
  \bm@expand}
\def\bm@xadd#1{%
  \begingroup
    \toks@\expandafter{\bm@command}%
    \xdef\bm@command{\the\toks@#1}%
  \endgroup
  \bm@expand}
\def\bm@mathaccent{%
 \bm@changefam{}%
 \begingroup
 \def\bm@group##1{\endgroup\bm@xadd{\bgroup}##1\egroup}%
 \def\bm@test@token{\endgroup\bm@test@token}%
 \let\relax\@empty
 \bm@xadd{\mathaccent\the\count@\space}}
\def\bm@delimiter{%
  \ifnum\count@>\z@
    \bm@changefam{}%
    \bm@changefam{000}%
  \fi
  \bm@xadd{\delimiter\the\count@\space}}%
\def\bm@radical{%
 \bm@changefam{}%
 \bm@changefam{000}%
 \bm@xadd{\radical\the\count@\space}}%
\edef\bm@mchar@{\meaning\mathchar}
\edef\bm@umchar@{\string\U\expandafter\@gobble\meaning\mathchar}
\def\bm@mchar@test#1"#2"#3"#4"#5\@nil#6{%
  \xdef\meaning@{#1}%
  \ifx\meaning@\bm@mchar@
    \count@"#2\relax
    \bm@mathchar
  \else
    \ifx\meaning@\bm@umchar@
       \bm@umathchar{"#2}{"#3}{"#4}%
    \else
      \ifx\bm@previous\@empty
        \ifx\relax#6%
          \gdef\bm@first{#6}%
        \fi
      \fi
      \bm@add{#6}%
    \fi
  \fi}
\def\bm@changefam#1{%
  \@tempcnta\count@
  \divide\@tempcnta"1000#1 %
  \multiply\@tempcnta"1000#1 %
  \advance\@tempcnta-\count@
  \divide\@tempcnta-"100#1 %
  \@tempcnta\bm@table
  \ifnum\@tempcnta=\m@ne
    \let\@tempa\bm@pmb
  \else
    \multiply\@tempcnta"100#1 %
    \advance\count@\@tempcnta
  \fi}
\def\bm@prime{^\bgroup
  \let\bm@prime'%
  \def\prim@s##1\relax{##1\futurelet\@let@token\pr@m@s}%
  \prim@s}
\let\boldsymbol\bm
\let\heavysymbol\hm
\endinput
%%
%% End of file `bm.sty'.
