![跨对齐标签的下支撑](https://linux22.com/image/326525/%E8%B7%A8%E5%AF%B9%E9%BD%90%E6%A0%87%E7%AD%BE%E7%9A%84%E4%B8%8B%E6%94%AF%E6%92%91.png)
当我尝试在对齐标签中使用下划线时,就像这样
\begin{align*}
\underbrace{1 && 2 && 3 && 4}_{small} && 5 && 6 && 7 && 8
\end{align*}
我收到一个错误,这并不太令人惊讶。
是否有一个简单的方法来实现上述目标?
具体来说,我正在寻找一种选项,当环境中的某些元素分布在多个(偶然的)对齐选项卡中时,可以在这些元素下方放置下划线align
。我希望选项卡之间的间距不会受到添加下划线的影响。
结果看起来应该是这样的:
align
我们也欢迎不使用环境的等效解决方案。
编辑:理想情况下,我仍然希望使用类似 align 的解决方案,因为我可能必须在多行上重复这种构造,并且希望保持选项卡之间的对齐。
例如,我可能想做类似的事情:
(上图取自 David Carlisle 的回答)
答案1
不要使用,而是使用类似(或,或)align
插入空格:\quad
\qquad
\hspace{<len>}
\documentclass{article}
\begin{document}
\[
\underbrace{1 \qquad 2 \qquad 3 \qquad 4}_{\makebox{\small small}}
\qquad 5 \qquad 6 \qquad 7 \qquad 8
\]
\end{document}
如果你正在使用amsmath
无论如何,您可以使用\text{..}
而不是\makebox{\small ..}
。
如果您坚持使用align
,我建议您在页面上放置标记,以捕获您想要 开始和结束的 x 坐标\underbrace
。我们称之为left
和right
标记:
\documentclass{article}
\usepackage{amsmath,zref-savepos}
\begin{document}
\begin{align*}
\zsaveposx{left}\makebox[0pt][l]{%
$\underbrace{\rule{\dimexpr\zposx{right}sp-\zposx{left}sp}{0pt}}_{\text{small}}$}
1 && 2 && 3 && 4\zsaveposx{right}
&& 5 && 6 && 7 && 8
\end{align*}
\end{document}
zref
的模块通过类似于 s 的东西savepos
提供了 pdfTeX 的接口。因此,我们使用 保存和的 x 坐标(以小点为单位,从页面左侧测量),并使用它来创建一个宽度为 ( sp - sp) 的框。该框的宽度设置为零,因此不会影响 内的间距。由于它是左对齐的,因此将向右拉伸,其中高度为零。\pdfsavepos
\label
left
right
s
p
\zsaveposx
right
left
align
l
\underbrace{<rule>}_{<stuff>}
<rule>
由于该技术使用\label
类似\ref
系统,因此您需要在第一次尝试时至少编译两次才能确定引用。
答案2
您可以使用array
环境,第二行放置括号,第三行将文本放置在括号下。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
$\begin{array}{*{8}{c}}
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\\
\multicolumn{4}{c}{$\upbracefill$}&\multicolumn{4}{c}{}\\
\multicolumn{4}{c}{\text{small}}&\multicolumn{4}{c}{}
\end{array}$
\end{document}
您还可以使用命令自动创建下支撑
\Underbrace{<number of columns>}{<text under brace>}
\documentclass{article}
\usepackage{amsmath}
\def\Underbrace#1#2{\multicolumn{#1}{c}{$\upbracefill$}&\multicolumn{\numexpr 8-#1}{c}{}\\
\multicolumn{#1}{c}{\text{#2}}&\multicolumn{\numexpr 8-#1}{c}{}}
\begin{document}
$\begin{array}{*{8}{c}}
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8\\
\Underbrace{4}{small}\\
1 & 2 & 3 & 4 & 5 & 6 & 7 & 8
\end{array}$
\end{document}
答案3
答案4
这是一个解决方案pstricks
:
\documentclass{article}
\usepackage{mathtools}
\usepackage{pstricks-add, auto-pst-pdf}
\begin{document}
\begin{postscript}
\begin{align*}
\pnode[0pt, -2pt]{B}1 & & 2 & & 3 & & 4\pnode[0pt, -2pt]{E} & & 5 & & 6 & & 7 & & 8 \\[15pt]
1 & & 2 & & 3 & & 4 & & 5 & & 6 & & 7 & & 8
\end{align*}
\psset{linejoin=1, nodesepB=1.5ex, rot=90, braceWidth=0.8pt, braceWidthInner=2.5pt, braceWidthOuter=2.5pt}
\psbrace(B)(E){\clap{\footnotesize small}}
\end{postscript}
\end{document}