5

I am wondering how one can tell the bm package what \mathversion it should use. Using the example of Using \DeclareMathVersion

\documentclass{article}
%%% text fonts
\renewcommand\rmdefault{txr}
\newcommand\gmfamily{\fontfamily{mdugm}\selectfont}

%%% New math versions
\DeclareMathVersion{varnormal}
\DeclareMathVersion{varbold}
\newcommand\txmath{\mathversion{normal}}
\newcommand\txboldmath{\mathversion{bold}}
\newcommand\mdmath{\mathversion{varnormal}}
\newcommand\mdboldmath{\mathversion{varbold}}

%%% Math symbol fonts
%%% some examples only
% Math letters from txfonts and mdugm
\SetSymbolFont{letters}{normal}{OML}{txmi}{m}{it}
\SetSymbolFont{letters}{bold}{OML}{txmi}{bx}{it}
\SetSymbolFont{letters}{varnormal}{OML}{mdugm}{m}{it}
\SetSymbolFont{letters}{varbold}{OML}{mdugm}{b}{it}
% Math operators
\SetSymbolFont{operators}{normal}{OT1}{txr}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{txr}{bx}{n}
\SetSymbolFont{operators}{varnormal}{OT1}{mdugm}{m}{n}
\SetSymbolFont{operators}{varbold}{OT1}{mdugm}{b}{n}
% Math symbols
\SetSymbolFont{symbols}{normal}{OMS}{txsy}{m}{n}
\SetSymbolFont{symbols}{bold}{OMS}{txsy}{bx}{n}
\SetSymbolFont{symbols}{varnormal}{OMS}{mdugm}{m}{n}
\SetSymbolFont{symbols}{varbold}{OMS}{mdugm}{b}{n}
% Large symbols
\SetSymbolFont{largesymbols}{normal}{OMX}{txex}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{txex}{bx}{n}
\SetSymbolFont{largesymbols}{varnormal}{OMX}{mdugm}{m}{n}
\SetSymbolFont{largesymbols}{varbold}{OMX}{mdugm}{b}{n}

%%% Math alphabets, at most 16 families
%%% some examples only
\SetMathAlphabet{\mathrm}{normal}{OT1}{txr}{m}{n}
\SetMathAlphabet{\mathrm}{bold}{OT1}{txr}{bx}{n}
\SetMathAlphabet{\mathrm}{varnormal}{OT1}{mdugm}{m}{n}
\SetMathAlphabet{\mathrm}{varbold}{OT1}{mdugm}{b}{n}

\SetMathAlphabet{\mathit}{normal}{OT1}{txr}{m}{it}
\SetMathAlphabet{\mathit}{bold}{OT1}{txr}{bx}{it}
\SetMathAlphabet{\mathit}{varnormal}{OT1}{mdugm}{m}{it}
\SetMathAlphabet{\mathit}{varbold}{OT1}{mdugm}{b}{it}

\usepackage{bm}

\begin{document}

This is Times font. $a^2 + b^2 = c^2$. Math font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold math font
{\txboldmath\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]}
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]


\gmfamily\mdmath
This is Garamond font. $a^2 + b^2 = c^2$. Math font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold math font
{\mdboldmath\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]}
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\end{document}

where I would like to have the \mdmath tell the \bm package where to find bold variants of the current font (as opposed to using bold which picks up Times).

1
  • If you told it the version was heavy, then you could use the built-in support for this. (Unless you also need heavy, of course.)
    – cfr
    Aug 1, 2015 at 22:31

1 Answer 1

8

Know this: I do not know what I am doing...

Caveat emptor...

This uses the bm package to manage bold fonts for Times and the varbm package to manage bold fonts for Garamond. varbm.sty is just like bm.sty except that it works with the varbold maths version rather than the bold version. It does not, however, include anything corresponding to the support for heavy maths in bm.sty.

First, an example:

\documentclass{article}
%% text fonts
\renewcommand\rmdefault{txr}
\newcommand\gmfamily{\fontfamily{mdugm}\selectfont}

%% New math versions
\DeclareMathVersion{varnormal}
\DeclareMathVersion{varbold}
\makeatletter
\newif\iftx@math
\newif\ifmd@math
\newcommand\txmath{%
  \mathversion{normal}%
  \ifmd@math
    \global\let\bm\oldbm
  \fi
  \tx@mathtrue
  \md@mathfalse
  \global\let\oldvarbm\varbm
  \global\let\varbm\bm}
\newcommand\mdmath{%
  \mathversion{varnormal}%
  \iftx@math
    \global\let\varbm\oldvarbm
  \fi
  \md@mathtrue
  \tx@mathfalse
  \global\let\oldbm\bm
  \global\let\bm\varbm}
\AtBeginDocument{\txmath}
\makeatother
\newcommand\varboldmath{\mathversion{varbold}}

% these commands should not be needed and are here just for comparison
\newcommand\txboldmath{\mathversion{bold}}
\newcommand\mdboldmath{\mathversion{varbold}}

%% Math symbol fonts
%% some examples only
%% Math letters from txfonts and mdugm
\SetSymbolFont{letters}{normal}{OML}{txmi}{m}{it}
\SetSymbolFont{letters}{bold}{OML}{txmi}{bx}{it}
\SetSymbolFont{letters}{varnormal}{OML}{mdugm}{m}{it}
\SetSymbolFont{letters}{varbold}{OML}{mdugm}{b}{it}
%% Math operators
\SetSymbolFont{operators}{normal}{OT1}{txr}{m}{n}
\SetSymbolFont{operators}{bold}{OT1}{txr}{bx}{n}
\SetSymbolFont{operators}{varnormal}{OT1}{mdugm}{m}{n}
\SetSymbolFont{operators}{varbold}{OT1}{mdugm}{b}{n}
%% Math symbols
\SetSymbolFont{symbols}{normal}{OMS}{txsy}{m}{n}
\SetSymbolFont{symbols}{bold}{OMS}{txsy}{bx}{n}
\SetSymbolFont{symbols}{varnormal}{OMS}{mdugm}{m}{n}
\SetSymbolFont{symbols}{varbold}{OMS}{mdugm}{b}{n}
%% Large symbols
\SetSymbolFont{largesymbols}{normal}{OMX}{txex}{m}{n}
\SetSymbolFont{largesymbols}{bold}{OMX}{txex}{bx}{n}
\SetSymbolFont{largesymbols}{varnormal}{OMX}{mdugm}{m}{n}
\SetSymbolFont{largesymbols}{varbold}{OMX}{mdugm}{b}{n}

%% Math alphabets, at most 16 families
%% some examples only
\SetMathAlphabet{\mathrm}{normal}{OT1}{txr}{m}{n}
\SetMathAlphabet{\mathrm}{bold}{OT1}{txr}{bx}{n}
\SetMathAlphabet{\mathrm}{varnormal}{OT1}{mdugm}{m}{n}
\SetMathAlphabet{\mathrm}{varbold}{OT1}{mdugm}{b}{n}

\SetMathAlphabet{\mathit}{normal}{OT1}{txr}{m}{it}
\SetMathAlphabet{\mathit}{bold}{OT1}{txr}{bx}{it}
\SetMathAlphabet{\mathit}{varnormal}{OT1}{mdugm}{m}{it}
\SetMathAlphabet{\mathit}{varbold}{OT1}{mdugm}{b}{it}

\usepackage{bm,varbm}

\begin{document}

This is Times font. $a^2 + b^2 = c^2$. Math font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold math font
{\txboldmath\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]}
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]
\[
  \varbm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\gmfamily\mdmath
This is Garamond font. $a^2 + b^2 = c^2$. Math font
\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]
and bold math font
{\mdboldmath\[
  \sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0
\]}
\[
  \bm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]
\[
  \varbm{\sum_i \int_a^b \left( \frac1{K+1} \oplus\alpha_i \right) \,\mathrm{d}x = 0}
\]

\end{document}

Times and Garamond maths

When Times maths is enabled either by default or using \txmath, the following happens:

  • maths version normal is used;
  • \bm uses Times bold maths;
  • \varbm uses Times bold maths.

When Garamond maths is activated using \mdmath, the following happens:

  • maths version varnormal is used;
  • \bm uses Garamond varbold maths;
  • \varbm uses Garamond varbold maths.

Package code (all the legal stuff is just because I copied the bm.sty file and just did a few find-and-replace, deleted a few lines and tested it - hence, it is a derived work under the licensing terms and has to be designated as such):

%%
%% This is file `varbm.sty',
%%
%% Additions and changes (mostly find and replace)
%% are copyright 2015 Clea F. Rees
%%
%% Code from bm.sty  (see below)
%% bm.sty is copyright 1993-2015
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file
%% Copyright 1996 1997 1998 1999 2002 2003 2004 David Carlisle Frank Mittelbach
%% Development of the bm package was commissioned by Y&Y Inc.
%% http://www.yandy.com
%
% 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.3c 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 Clea F. Rees.
%
% This work consists of the file varbm.sty.
%
% The file varbm.sty is a derived work under the terms of the
% LPPL. It is based on bm.sty dated 2014/10/28 v1.1c which is part of The
% Standard LaTeX `Tools Bundle'. A copy of that work, including the
% unmodified version of bm.sty is available from http://ctan.org/pkg/bm.
%
%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{varbm}
          [2015/08/02 v0.00001 Variable Bold Symbol Support]
\def\varbm#1#2{%
  \let\varbm@pmb\install@mathalphabet
  \let\varbm@pmb@\getanddefine@fonts
  \let\varbm@pmb@@\or
  \edef\varbm@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 varbm@#1table\endcsname\@gobble
  \def\varbm@define##1{%
    \expandafter\xdef\csname varbm@#1table\endcsname{%
      \csname varbm@#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
      \varbm@define\m@ne
    \else
      \edef\@tempa{sym#1\expandafter\@gobblefour\string##1}%
      \ifnum\@tempcnta<%
           \expandafter\ifx\csname\@tempa\endcsname\relax
             \@ne
           \else
             \m@ne
           \fi
        \varbm@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 symvarbold\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\varbm@expand####1##1####2####3\@nil{\def\varbm@expand{####2}}%
    \expandafter\expandafter\expandafter
           \varbm@expand\csname mv@varbold\endcsname\@nil
           \ifx\varbm@expand\@tempb
             \expandafter\let\csname\@tempa\expandafter\endcsname
                \csname symvarbold\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
          \PackageInfo{varbm}%
            {Symbol font \@tempa\space already defined.\MessageBreak
             Not overwriting it}%
        \fi
        \count@\csname\@tempa\endcsname
        \advance\count@-##1%
        \varbm@define{\the\count@\relax}%
      \fi
    \fi}%
  \let\install@mathalphabet\@gobbletwo
  \mv@normal
  \expandafter\xdef\csname varbm@#1table\endcsname{%
    \noexpand\ifcase\@tempcnta
      \csname varbm@#1table\endcsname
    \noexpand\else
      \z@
    \noexpand\fi}%
  \expandafter\split@name\varbm@general\@nil
  \let\install@mathalphabet\varbm@pmb
  \let\getanddefine@fonts\varbm@pmb@
  \let\or\varbm@pmb@@}
\ifx\varbmmax\@undefined
  \chardef\varbmmax=4
\fi
\ifx\mv@varbold\@undefined
  \def\varbm@varboldtable{\m@ne}
  \AtEndOfPackage{%
    \def\varbm@gr@up#1#2{%
      \varbm@pmb{#2}}}
\else
  \varbm{varbold}\varbmmax
  \@ifundefined{symvarboldoperators}
    {}
    {\DeclareSymbolFontAlphabet\mathbf{varboldoperators}}
\fi
\begingroup
\catcode`\'=\active
\@firstofone{\endgroup
\def\varbm@general#1#2#3#4#5{%
  \begingroup
    \let\varbm\@firstofone
    \global\let\varbm@command\@empty
    \let\@let@token\@empty
    \let\protect\@empty
    \let\@typeset@protect\@empty
    \def\varbm@mathchoice{\varbm@m@thchoice#1}%
    \def\varbm@group{\varbm@gr@up#1}%
    \let\varbm@table#2%
    \let\left\holdinginserts
    \let\right\left
    \let\mskip\mkern
    \let\hskip\kern
    \let\varbm@prime\copy
    \def'{\varbm@prime\prime\relax}%
    \def\@ifnextchar##1##2##3##4{%
      \if##1##4%
        \expandafter\@firstoftwo
      \else
        \expandafter\@secondoftwo
      \fi
      {##2##4}{##3{##4}}}%
    \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\next@\copy
    \global\let\varbm@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}}}%
    \varbm@expand#5\varbm@end
  \endgroup
  #4}
}
\DeclareRobustCommand\varbm{%
  \varbm@general\varboldmath\varbm@varboldtable\mv@varbold\varbm@command}
\protected@edef\varbm#1{\varbm{#1}}
\def\DeclareBoldMathCommand{\@testopt\varbm@declare{varbold}}
\def\varbm@declare[#1]#2{%
  \expandafter\varbm@general
        \csname #1math\expandafter\endcsname
        \csname varbm@#1table\expandafter\endcsname
        \csname mv@#1\endcsname
        {\varbm@define#2}}
\def\varbmdefine{\DeclareBoldMathCommand[varbold]}
\outer\def\varbm@end{\@@end}
\def\varbm@expand{\afterassignment\varbm@exp@nd\count@`\a}
\def\varbm@exp@nd{\afterassignment\varbm@test\count@`\a}
\def\varbm@test{%
  \let\varbm@previous\@let@token
  \futurelet\@let@token\varbm@test@}
\def\varbm@test@{%
  \ifx\@let@token\bgroup
    \expandafter\varbm@group
  \else
    \expandafter\varbm@test@token
  \fi}
\def\varbm@gr@up#1#2{%
  \varbm@add{{\varbm@gr@@p#1{{#2}}}}}
\def\varbm@gr@@p#1#2{%
  \ifmmode
    \varbm@mchoice#1{#2}{#2}{#2}{#2}%
  \else
    \bfseries#1#2%
  \fi}
\def\varbm@test@token#1{%
  \let\varbm@next\@empty
  \ifx#1\@@end
  \else\ifx#1\mathchoice
    \let\varbm@next\varbm@mathchoice
  \else\ifx#1\mathchar
    \afterassignment\varbm@mathchar\count@
  \else\ifx#1\mathaccent
    \afterassignment\varbm@mathaccent\count@
  \else\ifx#1\delimiter
    \afterassignment\varbm@delimiter\count@
  \else\ifx#1\radical
    \afterassignment\varbm@radical\count@
  \else\ifx#1\mkern
    \varbm@register#1{\muskip\z@}%
  \else\ifx#1\kern
    \varbm@register#1\skip@
  \else\ifx#1\penalty
    \varbm@register#1\count@
  \else\ifx#1\unvcopy
    \let\varbm@next\varbm@add
  \else\ifcat\noexpand#1\relax
    \xdef\meaning@{\meaning#1}%
    \expandafter\varbm@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\varbm@next{\varbm@expand~}}%
    \else
      \ifx\varbm@previous\left
        \count@\delcode`#1\relax
        \varbm@delimiter
      \else
        \varbm@mathchar
      \fi
    \fi
  \else
    \varbm@add{#1}%
  \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi\fi
  \varbm@next}
\def\varbm@define#1{%
  \begingroup
    \ifx\varbm@command\@gtempa
      \def\mathchar{\global\mathchardef#1}%
      \varbm@command
    \else
      \toks@\expandafter{\varbm@command}%
      \xdef#1{\varbm@first\noexpand\varbm@protect\noexpand#1{\the\toks@}}%
    \fi
  \endgroup}
\def\varbm@protect#1{%
  \ifx\protect\@typeset@protect
    \expandafter\@firstofone
  \else
    \protect#1\expandafter\@gobble
  \fi}
\def\varbm@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\varbm@m@thchoice#1#2#3#4#5{%
  \varbm@add{\varbm@mchoice#1{#2}{#3}{#4}{#5}}}
\def\varbm@register#1#2{%
  \def\@tempa{#1\the#2}%
  \afterassignment\varbm@r@gister#2}
\def\varbm@r@gister{%
  \varbm@xadd{\@tempa\space}}
\def\varbm@mathchar{%
  \@tempcntb\count@
  \let\@tempa\varbm@group
  \varbm@changefam{}%
  \ifnum\count@>\@tempcntb
    \ifx\varbm@command\@empty
      \xdef\@gtempa{\mathchar\the\count@\space}%
    \fi
    \varbm@xadd{\mathchar\the\count@\space}%
  \else
    \begingroup
      \divide\count@"1000
      \let\varbm@expand\relax
      \varbm@xadd\varbm@class
    \endgroup
    \edef\@tempb{%
      \noexpand\@tempa{\mathchar\the\count@\space}}%
    \@tempb
  \fi}
\def\varbm@pmb#1{%
  \varbm@add{\varbm@pmb@{#1}}}
\def\varbm@pmb@#1{{%
  \setbox\tw@\hbox{$\m@th\mkern.4mu$}%
  \mathchoice
    \varbm@pmb@@\displaystyle\@empty{#1}%
    \varbm@pmb@@\textstyle\@empty{#1}%
    \varbm@pmb@@\scriptstyle\defaultscriptratio{#1}%
    \varbm@pmb@@\scriptscriptstyle\defaultscriptscriptratio{#1}}}
\def\varbm@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@}}%
\def\varbm@class{%
  \ifcase\count@
    \or
    \mathop\or
    \mathbin\or
    \mathrel\or
    \mathopen\or
    \mathclose\or
    \mathpunct\or
  \fi}
\def\varbm@add#1{%
  \begingroup
    \toks@\expandafter{\varbm@command#1}%
    \xdef\varbm@command{\the\toks@}%
  \endgroup
  \varbm@expand}
\def\varbm@xadd#1{%
  \begingroup
    \toks@\expandafter{\varbm@command}%
    \xdef\varbm@command{\the\toks@#1}%
  \endgroup
  \varbm@expand}
\def\varbm@mathaccent{%
 \varbm@changefam{}%
 \begingroup
 \def\varbm@group##1{\endgroup\varbm@xadd{\bgroup}##1\egroup}%
 \def\varbm@test@token{\endgroup\varbm@test@token}%
 \let\relax\@empty
 \varbm@xadd{\mathaccent\the\count@\space}}
\def\varbm@delimiter{%
  \ifnum\count@>\z@
    \varbm@changefam{}%
    \varbm@changefam{000}%
  \fi
  \varbm@xadd{\delimiter\the\count@\space}}%
\def\varbm@radical{%
 \varbm@changefam{}%
 \varbm@changefam{000}%
 \varbm@xadd{\radical\the\count@\space}}%
\edef\varbm@mchar@{\meaning\mathchar}
\def\varbm@mchar@test#1"#2"#3\@nil#4{%
  \xdef\meaning@{#1}%
  \ifx\meaning@\varbm@mchar@
    \count@"#2\relax
    \varbm@mathchar
  \else
    \ifx\varbm@previous\@empty
      \ifx\relax#4%
        \gdef\varbm@first{#4}%
      \fi
    \fi
    \varbm@add{#4}%
  \fi}
\def\varbm@changefam#1{%
  \@tempcnta\count@
  \divide\@tempcnta"1000#1 %
  \multiply\@tempcnta"1000#1 %
  \advance\@tempcnta-\count@
  \divide\@tempcnta-"100#1 %
  \@tempcnta\varbm@table
  \ifnum\@tempcnta=\m@ne
    \let\@tempa\varbm@pmb
  \else
    \multiply\@tempcnta"100#1 %
    \advance\count@\@tempcnta
  \fi}
\def\varbm@prime{^\bgroup
  \let\varbm@prime'%
  \def\prim@s##1\relax{##1\futurelet\@let@token\pr@m@s}%
  \prim@s}
\let\varboldsymbol\varbm
\endinput
%%
%% End of file `varbm.sty'.
6
  • Do you know what is happening with the brackets in the second Garamond example? They appear to be lighter. Aug 2, 2015 at 12:55
  • @FreddieWitherden And that's not the worst issue - look at the placement of the lower limit on the integral sign. I thought this might be because bm is getting the spacing based on the normal version rather than the varnormal version. But I can't reproduce it for \bm when I set the bold version to Garamond but keep normal as the default and use varnormal for \mdmath. I can only reproduce it there for \hm. So something is different about the heavy set up which I'm getting wrong, compared with bold. But I can't currently see what.
    – cfr
    Aug 2, 2015 at 15:52
  • @FreddieWitherden New question. I hope I will be able to update my answer here shortly!
    – cfr
    Aug 2, 2015 at 16:18
  • @FreddieWitherden Well, David says that this way of doing it is 'wrong really'. But I wish I could understand why since maybe I'd then have some clue what might be a better approach!
    – cfr
    Aug 2, 2015 at 19:19
  • Yes, I don't know enough details about the inner workings of bm to know if there is a more effective way. Aug 2, 2015 at 20:09

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .