我似乎找不到一种方法来实现我想要的结果,这个草图最好地描述了这个结果:
}
这是因为如果我添加一个上括号,它在到达第二组下括号之前就会被下括号关闭。
$w =
\underbracket[0.75pt]{aaa...a}_{n}
\underbracket[0.75pt]{aaa...a}_{m}
\underbracket[0.75pt]{bbb...b}_{n}
\underbracket[0.75pt]{aaa...a}_{m}
\underbracket[0.75pt]{bbb...b}_{n}
$
解决方案:
正如这篇文章所建议的:如何让下牙套和上牙套重叠
$
w =
\rlap{\phantom{aaa}$\overbracket[0.75pt]{\phantom{aaaaa}}^x$}
\underbracket[0.75pt]{aaa...a}_{n}
\underbracket[0.75pt]{aaa...a}_{m}
\underbracket[0.75pt]{bbb...b}_{n}
\underbracket[0.75pt]{aaa...a}_{m}
\underbracket[0.75pt]{bbb...b}_{n}
$\\
请注意,幻影中添加的字母并不重要。
答案1
可能是来自Mico 的链接是最好的方法,但这里有一个替代方法,可以让你避免输入两次文本:tikzmark
。我实际上并不认为这种方法在这种情况下更优越,因为
- 你必须加载另一个包,
- 您需要插入一个
\vphantom
才能获得垂直空间,因为一个overlay
tikzpicture
不会插入空间,并且 - 你需要赋予每个元素
\tikzmarknode
一个独特的标签。
然而,它是一种替代方法,只要您想要一个更奇特的括号(弯曲、虚线等),这种方法很可能会继续满足您的要求。
\documentclass{article}
\usepackage{mathtools}
\usepackage{tikz}
\usetikzlibrary{tikzmark}
\begin{document}
Some text to test the vertical space.
$
w = \vphantom{\overbracket[0.75pt]{a}^{x}}% to fix the vertical space
\underbracket[0.75pt]{aa\tikzmarknode{a1}{a}\dots a}_{n}
\underbracket[0.75pt]{a\tikzmarknode{a2}{a}a\dots a}_{m}
\underbracket[0.75pt]{bbb\dots b}_{n}
\underbracket[0.75pt]{aaa\dots a}_{m}
\underbracket[0.75pt]{bbb\dots b}_{n}
\begin{tikzpicture}[overlay,remember picture]
\draw[line width=0.75pt] (a1.north east) -- ++ (0,0.8ex)
-| node[pos=0.25,above]{$x$} (a2.north east);
\end{tikzpicture}
$
Some text to test the vertical space.
\[w = \vphantom{\overbracket[0.75pt]{a}^{x}}% to fix the vertical space
\underbracket[0.75pt]{aa\tikzmarknode{a3}{a}\dots a}_{n}
\underbracket[0.75pt]{a\tikzmarknode{a4}{a}a\dots a}_{m}
\underbracket[0.75pt]{bbb\dots b}_{n}
\underbracket[0.75pt]{aaa\dots a}_{m}
\underbracket[0.75pt]{bbb\dots b}_{n}
\begin{tikzpicture}[overlay,remember picture]
\draw[line width=0.75pt] (a3.north east) -- ++ (0,0.8ex)
-| node[pos=0.25,above]{$x$} (a4.north east);
\end{tikzpicture}
\]
Some text to test the vertical space.
\end{document}