消除因 \overbrace \underbrace 造成的间距

消除因 \overbrace \underbrace 造成的间距

我目前正在使用黑客定义 \smalloverbrace 来减小我的 \overbrace 和 \underbrace 的大小。

%% Commands for more compact over and underbraces
%% \smalloverbrace
%% See: https://tex.stackexchange.com/a/419690/110759
\makeatletter
\def\smalloverbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}%
  \tiny\downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}%
  $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}

\def\smallunderbrace#1{\mathop {\vtop {\m@th \ialign {##\crcr $\hfil \displaystyle {#1}\hfil $\crcr \noalign {\kern 3\p@ \nointerlineskip }
\tiny\upbracefill \crcr \noalign {\kern 3\p@ }}}}\limits}
\makeatother

\newcommand{\clap}[1]{\makebox[0pt]{#1}}
%% end code for \smalloverbrace and \smallunderbrace

我想进一步修改它,以便数学元素之间的间距忽略上/下括号中的文本大小。(我知道你可能认为这不明智,但我在制作讲座幻灯片时需要它。)

以下是使用当前设置的示例

\begin{align*}
\Pr( \text{Lost at } t = 1)  &\approx  \smallunderbrace{(1-s)}_{\shortstack{Effect of \\ Natural selection}} \smalloverbrace{0.368}^{\shortstack{Pr. of loss of\\neutral allele}}
\end{align*}

电流输出

下面是所需输出的示例(我得到了我想要的效果\hspace*{}

\begin{align*}
\Pr( \text{Lost at } t = 1)  &\approx \hspace*{-0.25in} \underbrace{(1-s)}_{\small \shortstack{Effect of \\ Natural selection}} \hspace*{-0.4in}\overbrace{0.368}^{\small \shortstack{Pr. of loss of\\neutral allele}}
\end{align*}

所需间距 有人能告诉我如何修改上述代码以获得所需的结果吗?

答案1

我会使用“普通”\underbrace\overbrace指令,并且不会费心插入换行符。

在此处输入图片描述

\documentclass{article} % or some other suitable document class
\usepackage{mathtools}  % for '\mathclap' macro

\begin{document}
\[
\Pr(\text{Loss at $t = 1$}) 
\approx  
{\underbrace{(1-s)}_{\mathclap{\text{Effect of natural selection}}}}
\times
{\overbrace{0.368}^{\mathclap{\text{Pr.\ of loss of neutral allele}}}}
\]
\end{document}

附录:如果读者好奇为什么我用花括号将\underbrace{...}_{...}\overbrace{...}^{...}对象括起来:这样做会将它们的 TeX 数学状态更改为“math-ordinary”,从而改善它们相对于其他对象(如\approx和)的间距\times

相关内容