这个问题在我的工作中出现过多次。考虑以下等式: (我使用图像编辑器移动了底线,但没有合适的代码来产生所需的输出。最初,我在系统中有一个超长的第四行。)
想象一下,没有以“和”开头的底线。然后,可以借助以下方式轻松生成“案例”
\left\{\begin{aligned}
...
\end{aligned}\right.
有没有简单的方法可以修改这样的代码来产生底线它将以所需的方式与上面的线对齐?
我有时会采用一种蛮力但非常通用的解决方案,即创建一个隐形表格。在本例中,类似于 5x4...
一个相当简单的选择是使用另一个alignedat
来对齐右下角的两条线。一个明显的问题是它们将相对于左侧的线垂直居中。但可能有办法克服它?.. 这真的很好,因为这样aligned
自然可以实现所需的对齐。
另一个好的解决方案是让原始内容aligned
覆盖所有五行,然后以某种方式在左侧生成仅覆盖前四行的括号以及等号。最好的方法是什么?我唯一想到的就是创建一个 2x2 的隐形表格...
答案1
如果有一个可编译的示例,那么实验起来会容易得多。我没有尝试完全复制它,只是为了生成所需的结构。
近似值如下:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
text text text text text text text text text text text text text text
text text text text text text text text text text text text text text
\begin{align*}
& \{(\tilde{n}_1, \tilde{m}_1), (\tilde{n}_2, \tilde{m}_2), \dots,
(\tilde{n}_I, \tilde{m}_I)\} \ominus
\{(\tilde{n}'_1, \tilde{m}'_1), (\tilde{n}'_2, \tilde{m}'_2), \dots,
(\tilde{n}'_I, \tilde{m}'_I)\} \\
& \begin{cases}
\{(\tilde{n}_i, 1), (\tilde{n}'_j, 1)\} &
\text{s.t. } \tilde{n}_i \ne \tilde{n}'_j. \text{ or} \\
\{(\tilde{n}_i, m_i), (\tilde{n}_i, m_i), (\tilde{n}'_j, 1)\} &
\text{s.t. } (\tilde{n}_j, m_j) = (\tilde{n}'_j. m_j) \\
\{(\tilde{n}_i, m_i), (\tilde{n}_i, m_i), (\tilde{n}'_j, 1)\} &
\text{s.t. } (\tilde{n}_j, m_j) = (\tilde{n}'_j. m_j) \\
\{(\tilde{n}_i, m_i), (\tilde{n}_i, m_i), (\tilde{n}'_j, 1)\} &
\text{s.t. }
\smash[b]
{\begin{aligned}[t]
(\tilde{n}_j, m_j) = (\tilde{n}'_j. m_j) \\
(\tilde{n}_j, m_j) = (\tilde{n}'_j. m_j)
\end{aligned}}
\end{cases}\\[-6pt]
\end{align*}
text text text text text text text text text text text text text text
text text text text text text text text text text text text text text
\end{document}
在回答“它是如何工作的?”的评论时,以下是重要组件。(全部由 提供amsmath
。)
(a)cases
用左边的括号将多行分组。
(b)aligned
用于将案例组的最后一行拆分为两行。该[t]
选项将子组的第一行延续到aligned
与其前一行相同的级别。(本网站上的其他问题也涉及此操作。)
(c)为了防止括号向下延伸到最后一行,\smash[b]
应用于aligned
最后一行的两行()元素。 ([b]
代表“底部”。)这使(La)TeX 认为没有任何内容延伸到元素的第一行以下aligned
,从而有效地将案例对齐的深度减少到四行。
(d)这也会影响显示和后面文本之间的间距,因此需要进行调整。我选择在\\
外部结束之前添加一个额外的行align*
,并通过减少显示后的跳过来调整间距。