当我将自适应括号 ( \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 }