%% %% 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'.