我有一个列表,其中的项目内容应该是两个线性方程组,用一个大的左括号分组。我希望系统中的顶部方程与项目编号具有相同的基线。问题是括号总是以主线(项目编号的线)为中心。所以即使我成功地让方程顶部对齐,括号仍然居中错误。
该问题已关闭,因为重复了这个问题。如果您认为这是重复的,请阅读下文,看看我明确指出那里的答案没有帮助的地方。(此外,这确实是一个不同的问题即使您觉得那里的答案适用于这里。)
这是我首先要尝试的:
\begin{enumerate}
\item
$\left\{
\begin{aligned}
x &= 0\\
y &= 1
\end{aligned}
\right.$
\end{enumerate}
将系统居中,使其过高。第一个方程式与项目编号不在同一基线上。(下面的屏幕截图。)因此我尝试顶部对齐:
\begin{enumerate}
\item
$\left\{
\begin{aligned}[t]
x &= 0\\
y &= 1
\end{aligned}
\right.$
\end{enumerate}
现在,顶部方程式已对齐到我想要的位置,但括号太高了。(下面的屏幕截图。)这是因为括号仍然位于第一行的中心,并向两个方向增长以包含内容,包括“向下移动”的环境。因此,在阅读了一些 tex.se 帖子后,aligned
我尝试使用:vcenter
\begin{enumerate}
\item
$\left\{\vcenter{\hbox{$
\begin{aligned}[t]
x &= 0\\
y &= 1
\end{aligned}$}}
\right.$
\end{enumerate}
输出与第一次尝试一样。(下面的屏幕截图。)
以下分别是这三次尝试的屏幕截图。
我可以做我想做的事吗?
编辑:有人建议这个问题与这个。至此,这个问题甚至因为这个误解而被关闭了。
那个问题不是这个问题,我看不出有什么办法可以调整那里的答案来回答这个问题。但为了证明我确实在研究这个问题及其答案,并证明事情就是行不通,如果你尝试那里得票最高的答案,结果如下:
\usepackage[fleqn]{amsmath}
\newcommand\mathitem{\item\leavevmode\vspace*{-\dimexpr\baselineskip+\abovedisplayskip\relax}}
\begin{enumerate} %
\mathitem \begin{align*}
x&=0\\
y&=1
\end{align*}
\end{enumerate}
(下面的屏幕截图。)这使用实际显示模式,而不是使用 displaystyle 的内联数学。而且没有办法得到大左括号。所以我尝试了以下方法。注意我并不期望下面的方法能起作用,因为另一个问题的答案是为显示模式数学设计的,而不是内联数学(恰好使用 displaystyle):
\usepackage[fleqn]{amsmath}
\newcommand\mathitem{\item\leavevmode\vspace*{-\dimexpr\baselineskip+\abovedisplayskip\relax}}
\begin{enumerate} %
\mathitem $\left\{\begin{aligned}
x&=0\\
y&=1
\end{aligned}\right.$
\end{enumerate}
它不起作用。它看起来像我原来的例子。下面是最后两次尝试的屏幕截图:
现在我查看了该问题的可接受答案,它使用了\Longunderstack
来自某个包的宏。这个宏垂直堆叠数学。我看不出如何使用它来获得对齐的方程式和大左括号。看来你给这个宏提供了数学内容,所以我尝试:
\begin{enumerate} %result looks fine, but code ugly
\item
% FOR SIMPLE REGULAR-HEIGHT STACKS
\Longunderstack{\begin{aligned}
x&=0\\
y&=1
\end{aligned}}
\item
% FOR IRREGULAR HEIGHT STACKS IN \textstyle
\Shortunderstack{\begin{aligned}
x&=0\\
y&=1
\end{aligned}}
\item
% FOR IRREGULAR HEIGHT STACKS IN \displaystyle
\tabbedShortunderstack{\begin{aligned}
x&=0\\
y&=1
\end{aligned}}
\end{enumerate}
此处的第三项导致编译失败。如果我删除第三项,则会得到:
除了括号之外,这不是顶部对齐的。所以我尝试不使用aligned
:
\begin{enumerate} %result looks fine, but code ugly
\item
% FOR SIMPLE REGULAR-HEIGHT STACKS
\Longunderstack{x=0\cr y=1}
\item
% FOR IRREGULAR HEIGHT STACKS IN \textstyle
\Shortunderstack{x=0\cr y=1}
\end{enumerate}
更好,但等号并没有真正对齐,所以当我将它应用于更一般的方程时,这不会有帮助。它看起来像这样:
aligned
但是现在,如果没有或者一些类似的阵列环境,我该如何将支架放回去呢?
所以我尝试了另一篇文章中的答案。正如我在评论中所说,它们不起作用,而且永远不会起作用。因为这个问题是另一个问题。该问题是关于显示模式数学中的垂直空间。我的问题是关于如何将可伸缩支架置于中心并计算其高度。
答案1
您应该使用该包delarray
:
\documentclass{article}
\usepackage{amsmath}
\usepackage{delarray}
\begin{document}
\begin{enumerate}
\item
$\begin{array}[t]\{{r@{}l}.
x & {} = 0\\
y & {} = 1
\end{array}$
\end{enumerate}
\end{document}
{NiceArray}
您还可以使用的环境nicematrix
。
\documentclass{article}
\usepackage{nicematrix}
\begin{document}
\begin{enumerate}
\item
$\begin{NiceArray}[t]{\{r@{}l}
x & {} = 0\\
y & {} = 1
\end{NiceArray}$
\end{enumerate}
\end{document}
答案2
您也可以使用\raisebox
。为了尝试对齐基线,我需要在添加支架之前测量高度。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{enumerate}
\sbox0{$\begin{aligned}
x &= 0\\
y &= 1
\end{aligned}$}%
\item \raisebox{\dimexpr\ht\strutbox-\ht0}{$\left\{\usebox0\right.$}
\end{enumerate}
\end{document}
答案3
我喜欢的方法是使用可选参数换行符将内容向上移动。裸行\\
会抱怨没有行可以结束,因此我们首先输入\mbox
:
\documentclass{article}
\usepackage[fleqn]{amsmath}
\newcommand\mathitem{\item\mbox{}\\[-\baselineskip]}
\begin{document}
\begin{enumerate} %
\mathitem $\left\{\begin{aligned}
x&=0\\
y&=1
\end{aligned}\right.$
\end{enumerate}
\end{document}
您也可以使用 获得类似的结果\mathitem $\begin{cases}x=0\\y=1\end{cases}$
,尽管它并不完全对齐=
。