答案1
让我们看看\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}
我们看到该命令有两个可选参数;可选参数的默认值分别为\l_MT_bracketheight_fdim
和.7\fontdimen5\textfont2
。因此,调用\underbracket{123}
最终会执行
\upbracketfill{\l_MT_bracketheight_fdim}{.7\fontdimen5\textfont2}
并且这些参数在其他地方没有使用。宏\upbracketfill
定义\l_MT_bracketheight_fdim
为与的高度相同。这是用于终止连接到的操作$\braceld$
的字符(可能应该使用,但它并没有真正改变问题)。\downbracefill
\overbrace
\bracelu
现在让我们做一个实验(MinionPro
用于MnSymbol
数学):
\documentclass{article}
\usepackage{mathtools}
\usepackage{MnSymbol}
\begin{document}
\fboxsep=0pt % tight bounding box
x\fbox{$\braceld$}
x\fbox{$\bracelu$}
\end{document}
如果我们省略加载,我们会得到什么MnSymbol
?
\braceld
你看到问题了吗?有几个问题,但在这种情况下,主要问题是高度巨大的。使用 Computer Modern 数学字体, 的高度\braceld
可用作\underbrace
或 的填充规则的高度\overbrace
;这对于 和 来说根本不可能MnSymbol
,事实上,MnSymbol
它会改变 的定义\underbrace
以及\overbrace
连接的宏。
您可以做的是将默认值更改为仍然与 MnSymbol 数学字体相关的值;在这里我使用了分数线粗细的两倍。
\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}
答案2
除了最后一条评论之外,我确实在 LaTeX 中使用了 Minion Pro。MnSymbol
这非常重要,但我还使用了MinionPro
以下mathalfa
选项:
\usepackage[mathlf,textlf,minionint,openg]{MinionPro} \usepackage[bb=lucida,bbscaled=1,cal=boondoxo]{mathalfa}
为了获得完整的数字我使用这个
\documentclass{article}
\usepackage{mathtools}
\usepackage[mathlf,textlf,minionint,openg]{MinionPro}
\usepackage[bb=lucida,bbscaled=1,cal=boondoxo]{mathalfa}
\usepackage{MnSymbol}
\begin{document}
\[
\underbracket{123}_{x}
\underbracket[1pt]{123}_{x}
\]
\end{document}
结果如下: