![消除因 \overbrace \underbrace 造成的间距](https://linux22.com/image/469563/%E6%B6%88%E9%99%A4%E5%9B%A0%20%5Coverbrace%20%5Cunderbrace%20%E9%80%A0%E6%88%90%E7%9A%84%E9%97%B4%E8%B7%9D.png)
我目前正在使用黑客定义 \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
。