使用 underbrace 而没有左(和右)比例

使用 underbrace 而没有左(和右)比例

当我将自适应括号 ( \left(, \right)) 与组合时\underbrace,括号会进行调整以跨越下括号。示例:

\left(\underbrace{e_{s,i,j}}_{\mathclap{=:x>0}} + \underbrace{e_{t,i,j}}_{\mathclap{=:y>0}}\right)

是否可以将括号的高度限制为不带下括号的公式?将下括号移到括号外不是一个选择,因为我可能需要在括号内添加几个部分元素。谢谢!

编辑:我现在通过使用 \bigg( 而不是 \left( 来帮助自己,即手动设置括号的大小。解决了我当前的问题,但并没有真正回答一般问题,不是吗?

答案1

我建议使用\vphantom{<stuff>}(用于正确的垂直间距)的组合,并将表达式拆分为三个单独的部分以纠正可扩展括号。例如,以下显示了您的尝试与使用上述组合之间的区别:

\documentclass{article}
% These definitions are taken from Herbert Voss' Mathmode document,
% available online via CTAN from: http://www.ctan.org/pkg/voss-mathmode
\def\mathllap{\mathpalette\mathllapinternal}
\def\mathllapinternal#1#2{%
\llap{$\mathsurround=0pt#1{#2}$}% $
}
\def\clap#1{\hbox to 0pt{\hss#1\hss}}
\def\mathclap{\mathpalette\mathclapinternal}
\def\mathclapinternal#1#2{%
\clap{$\mathsurround=0pt#1{#2}$}%
}
\def\mathrlap{\mathpalette\mathrlapinternal}
\def\mathrlapinternal#1#2{%
\rlap{$\mathsurround=0pt#1{#2}$}% $
}
\begin{document}
Here is some text.
\[
  \left(\underbrace{e_{s,i,j}}_{\mathclap{=:x>0}}+\underbrace{e_{t,i,j}}_{\mathclap{=:y>0}}\right)
\]
Here is some more text.
\[
  \left(\vphantom{e_{s,i,j}e_{t,i,j}}\right.% Left bracket
  \underbrace{e_{s,i,j}}_{\mathclap{=:x>0}}+\underbrace{e_{t,i,j}}_{\mathclap{=:y>0}}%
  \left.\vphantom{e_{s,i,j}e_{t,i,j}}\right)% Right bracket
\]
Here is some more text.
\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

它看起来是这样的:

数学模式间距

您可能需要调整括号的间距以适合您的喜好,使用数学间距\mathllap\mathrlap

答案2

我更喜欢\smash[b]

\documentclass{article}
\usepackage{amsmath}
\usepackage{mathtools}

\begin{document}
Here could be text.
\[
\left(2,\smash[b]{\underbrace{\frac{5}{3}}_{\mathclap{\approx 1.66666667}}} \right)
\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667}}
\]
Here could be more text.

\end{document}

因为它还可以与\DeclarePairedDelimiter(参见https://tex.stackexchange.com/a/435707/128042):

\documentclass{article}
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{mathtools}
\usepackage{hyperref}
\DeclarePairedDelimiter{\norm}{\|}{\|_{\href{https://de.wikipedia.org/wiki/Euklidische_Norm\#\%E2\%84\%932-Norm}{\ell_2(\mathbb{R}^2)}}}
\begin{document}
Here could be text. 
\[
\norm*{\left(2,\smash[b]{\underbrace{\frac{5}{3}}_{\mathclap{\approx 1.66666667}}} \right)}
\vphantom{\underbrace{\frac{5}{3}}_{\approx 1.66666667}}
\]
Here could be more text.

\end{document}

编译结果

\smash[b]如果你在序言中定义了更复杂的分隔符,比如彩色分隔符或链接分隔符,则尤其有用(请参阅https://tex.stackexchange.com/a/360871/128042

\DeclarePairedDelimiter可以在这里找到简短的描述:轻松改变 \DeclarePairedDelimiter 的行为

详细的说明在\smash[b]这里:https://tex.stackexchange.com/a/424204/128042

答案3

\documentclass{article}
\usepackage{mathtools}

\begin{document}

\[ \big(\underbrace{e_{s,i,j}}_{\mathclap{=:x>0}} +   
        \underbrace{e_{t,i,j}}_{\mathclap{=:y>0}}\big) \]

\end{document}​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​​

在此处输入图片描述

答案4

我不会推荐我的答案,因为它非常冗长,不太方便,并且可能不是万无一失的,但它足够有趣,希望值得分享。

这个想法是在括号外创建注释\left ( \right ),然后使用宏将它们水平移动\hphantom\mathclap宏强制注释与注释内容重叠。

您可以使用\hphantom{\hspace{...px}}进行定位,但使用带注释的内容更准确。但是,使用带注释的内容可能会很棘手,而且不容易理解如何使用它。例如,尝试理解为什么我必须\vphantom在这里使用:

% search for this comment in the code below
\left ( \vphantom{ \delta } k \right  )

您可能需要花几分钟思考一下。抱歉,我的英语水平可能不够好,无法解释……

这是一个演示(使用 Stackedit v5.14.10 测试)。唯一需要的宏是\freeunderset、,freeoverbrace其余的是为了好玩或方便阅读。尽情享受吧!

% required macros
\def\freeundersetstar#1#2#3{
  \mathclap{ \underset{ #2 }{ #1 } \hphantom{ #3 } }
}
\def\freeundersetnostar#1#2#3{
  \mathclap{ \underset{ #2 }{ \phantom{ #1 } } \hphantom{ #3 } }
}
\def\freeunderset#1#2#3{
  \@ifstar
  { \freeundersetstar{#1}{#2}{#3} } % debug macro
  { \freeundersetnostar{#1}{#2}{#3} } % actual macro
}
\def\freeoverbracestar#1#2#3{
  \mathclap{ \overbrace{ #1 }^{ \substack{ #2 } } \hphantom{ #3 } }
}
\def\freeoverbracenostar#1#2#3{
  \mathclap{ \overbrace{ \phantom{ #1 } }^{ \substack{ #2 } } \hphantom{ #3 } }
}
\def\freeoverbrace#1#2#3{
  \@ifstar
  { \freeoverbracestar{#1}{#2}{#3} } % debug macro
  { \freeoverbracenostar{#1}{#2}{#3} } % actual macro
}
% extra macros for fun
\def\0#1{}
\def\1#1{#1}
\def\2#1{#1\1{#1}}
\def\3#1{#1\2{#1}}
\def\+#1#2#3{#1{#3}#2{#3}}
\def\*#1#2#3{#1{#2{#3}}}
\def\hereup#1#2{ \substack{ \uparrow #1{ \\[-.5px]| } \\[2px] #2 } }
\def\heredown#1#2{ \substack{ #2 \\[1px] #1{ |\\[-.5px] } \downarrow } }
% extra macros for readability
\def\d{
  \mathrm d
}
\def\delta{
  \frac{ b - a }{ n }
}
\def\intdef{
  \int_a^b f( x ) \d x
  = \lim_{ n \to +\infty }
  \delta \sum_{ k = 0 }^{ n - 1 }
  f \left ( a + \delta k \right )
}
% experiment
\text{ experiment } \\
\boxed{
  \intdef
  \! % extra space fix
  \red{
    \freeunderset { k }
    { \hereup{ \1 }{ \text{ a tiny } \\ \text{ step } } }
    % search for this comment in the code below
    { \left ( \vphantom{ \delta } k \right  ) }
    %* % uncomment to reveal #1
  }
  \red{
    \freeoverbrace { \delta }
    { \text{ a tiny distance } \\ \text{ called $\scriptsize \d x$ } }
    { \left ( k \delta k \right  ) }
    %* % uncomment to reveal #1
  }
}
% control
\\[.25em]
\boxed{ \intdef } \\
\text{ control }

相关内容