Mathtools' underbrackets and MinionPro
Let's look at the definition of \underbracket
\providecommand*\underbracket{
\@ifnextchar[
{\MT_underbracket_I:w}
{\MT_underbracket_I:w[\l_MT_bracketheight_fdim]}}
\def\MT_underbracket_I:w[#1]{
\@ifnextchar[
{\MT_underbracket_II:w[#1]}
{\MT_underbracket_II:w[#1][.7\fontdimen5\textfont2]}}
\def\MT_underbracket_II:w[#1][#2]#3{%
\mathop{\vtop{\m@th\ialign{##
\crcr
$\hfil\displaystyle{#3}\hfil$%
\crcr
\noalign{\kern .2\fontdimen5\textfont2 \nointerlineskip}%
\upbracketfill {#1}{#2}%
\crcr}}}
\limits}
\def\upbracketfill#1#2{%
\sbox\z@{$\braceld$}
\edef\l_MT_bracketheight_fdim{\the\ht\z@}%
\upbracketend{#1}{#2}
\leaders \vrule \@height \z@ \@depth #1 \hfill
\upbracketend{#1}{#2}%
}
\def\upbracketend#1#2{\vrule \@height #2 \@width #1\relax}
We see that the command has two optional arguments; the default value for the optional arguments are, respectively, \l_MT_bracketheight_fdim
and .7\fontdimen5\textfont2
. Thus the call \underbracket{123}
ends up into doing
\upbracketfill{\l_MT_bracketheight_fdim}{.7\fontdimen5\textfont2}
and those parameters are used nowhere else. The macro \upbracketfill
defines \l_MT_bracketheight_fdim
to be the same as the height of $\braceld$
. This is the character used for terminating the \downbracefill
operation connected to \overbrace
(probably \bracelu
should be used, but it doesn't really change the matter).
Now let's do an experiment (MinionPro
uses MnSymbol
for math):
\documentclass{article}
\usepackage{mathtools}
\usepackage{MnSymbol}
\begin{document}
\fboxsep=0pt % tight bounding box
x\fbox{$\braceld$}
x\fbox{$\bracelu$}
\end{document}
What do we get if we omit loading MnSymbol
?
Do you see the problem? There are several, but in this context the main one is that the height of \braceld
is huge. With the Computer Modern math font, the height of \braceld
can be used as the height of the filler rule for \underbrace
or \overbrace
; this is not at all possible with MnSymbol
and, indeed, MnSymbol
changes the definitions of \underbrace
, \overbrace
and the connected macros.
What you can do is changing the default value to something still linked to the MnSymbol math fonts; here I use twice the thickness of the fraction line.
\documentclass{article}
\usepackage{mathtools}
\usepackage{MnSymbol}
\makeatletter
\MHInternalSyntaxOn
\def\upbracketfill#1#2{%
\edef\l_MT_bracketheight_fdim{\the\dimexpr 2\fontdimen8\textfont3}%
\upbracketend{#1}{#2}%
\leaders \vrule \@height \z@ \@depth #1 \hfill
\upbracketend{#1}{#2}%
}
\MHInternalSyntaxOff\showthe\catcode`@
\makeatother
\begin{document}
$\underbracket{123}_{x}$
\end{document}