较低位置的等尺寸下支撑

较低位置的等尺寸下支撑

我正在编写一个 markdown 文档,并且希望每个术语下都有相同大小的下括号,就像这样:

在此处输入图片描述

\我只能手动地在术语周围添加一堆空格( ):

$$
\underbrace{\ \ \ \ X_t \ \ \ \ }_\text{Population at time $t$} =
\underbrace{\alpha \circ X_{t-1}}_\text{Survivors from time $t-1$} +
\underbrace{\ \ \ \ \epsilon_t \ \ \ \ }_\text{Immigration} 
$$

但是,手动添加空格(并通过视觉检查它们是否最终大小相同)效率不高,而且看起来也不好看,需要稍微降低一点。:

在此处输入图片描述

我该如何修复它?

(请忽略圆运算符的不匹配;我已经发布了别处

答案1

eqparbox可以通过其\eqmakebox[<tag>][<align>]{<stuff>}宏来帮助解决此问题。所有<stuff>具有相同内容的内容<tag>都设置在具有最大宽度的框中。<align>可以根据每次使用指定其他内容(left、centre 或right)。不确定这是否适用于 Markdown,因为它需要至少两次编译才能更改使用相同内容的元素的最大宽度<tag>

我添加了\eqmathbox将定义转换为数学友好环境的功能(因为数学模式中有不同的显示样式)。如果您没有最新的 LaTeX,您还应该包括xparse(...或者更新你的 LaTeX 发行版)。

在此处输入图片描述

\documentclass{article}

\usepackage{eqparbox,amsmath}
%\usepackage{xparse}% If you have LaTeX2e < 2020-10-01

% https://tex.stackexchange.com/a/34412/5764
\makeatletter
% \eqmathbox[<tag>][<align>]{<math>}
\NewDocumentCommand{\eqmathbox}{o O{c} m}{%
  \IfValueTF{#1}
    {\def\eqmathbox@##1##2{\eqmakebox[#1][#2]{$##1##2$}}}
    {\def\eqmathbox@##1##2{\eqmakebox{$##1##2$}}}
  \mathpalette\eqmathbox@{\vphantom{\Big|} #3} % \vphantom{\Big|} added to push the braces lower
}
\makeatother

\begin{document}

\[
  \underbrace{\eqmathbox[Xt]{          X_t         }}_\text{Population at time $t$} =
    \underbrace{\eqmathbox[Xt]{\alpha \circ X_{t - 1}}}_\text{Survivors from time $t - 1$} +
    \underbrace{\eqmathbox[Xt]{      \epsilon_t      }}_\text{Immigration} 
\]

\end{document}

答案2

您使用\parbox基于的方法如下:

在此处输入图片描述

\documentclass{article}
\usepackage{amsmath}
\usepackage{newtxtext,newtxmath} % optional - Times Roman text and math fonts
\newlength\mylen
\settowidth\mylen{$\displaystyle\alpha\circ X_{t-1}$} % measure width of widest element
\newcommand\mybox[1]{\parbox{\mylen}{\centering$\displaystyle #1$}}
\begin{document}
\[
\underbrace{\mybox{X_t}}_{\text{Population at time $t$}} =
\underbrace{\mybox{\alpha\circ X_{t-1}}}_{\text{Survivors from time $t-1$}} +
\underbrace{\mybox{P\epsilon_t}}_{\text{Immigration}}
\]
\end{document}

答案3

一种非常丑陋的做法是使用 来作弊\vphantom。请注意,您也可以使用 来插入水平空格,而\hspace*不是一系列反斜杠。可能有更好的方法来实现所有这些,但首先...

\documentclass{article}
\usepackage{amsmath}

\begin{document}
$$
\underbrace{\vphantom{\Big|} \hspace*{5mm} X_t \hspace*{5mm}}_\text{Population at time $t$} =
\underbrace{\vphantom{\Big|}\alpha \circ X_{t-1}}_\text{Survivors from time $t-1$} +
\underbrace{\vphantom{\Big|} \hspace*{5mm} \epsilon_t \hspace*{5mm}}_\text{Immigration} 
$$

\end{document}

下支架

答案4

您可以在数学模式中定义\ubrace宏并在每个这样的公式之前使用。\def\ubracew{max-width-formula}

\def\ubrace#1#2{%
   \setbox0=\hbox{$\displaystyle\ubracew$}%
   \underbrace{\hbox to\wd0{\hss$\displaystyle#1$\lower.8ex\hbox{}\hss}}%
   _{\text{#2}}%
}

$$
\def\ubracew{\alpha\circ X_{t-1}}
\ubrace{X_t}{Population at time $t$} =
\ubrace{\alpha \circ X_{t-1}}{Survivors from time $t-1$} +
\ubrace{\epsilon_t}{Immigration}
$$

相关内容