我有一个枚举环境,其中每个项目只是一个显示的方程式。它从新行开始,因此“(a)”最终出现在空白行上。我可以让显示的方程式不跳过一行,以便显示的方程式的第一行与“(a)”对齐吗?
我以为\vspace{-\baselineskip}
这会起到作用,但当然它\item
也适用于。
我使用 enumitem 以防万一;此外在现实生活中,我调整了各种间距参数,以便它看起来比 mwe 更好。
\documentclass{amsart}
\usepackage{enumitem}
\begin{document}
\begin{enumerate}
\item
Each item starts with an ugly blank line.
\begin{enumerate}
\item
%\vspace{-\baselineskip} % doesn't work, moves the "(a)" up as well
\begin{equation*}
E=mc^2
\end{equation*}
\item
%\vspace{-\baselineskip} % doesn't work, moves the "(b)" up as well
\begin{align*}
a^2+b^2 &= c^2
\\ &= E/m
\end{align*}
\item
In this case we have some text, so it looks right.
\begin{align*}
\sin^2x + \cos^2x + e^{\pi i} = 0
\end{align*}
\end{enumerate}
\end{enumerate}
\end{document}
答案1
问题在于 LaTeX 在列表环境中开始新段落的时间。项目标签直到新段落开始后才会排版,并且当没有文本时,段落会在您进入显示数学模式时开始(然后立即结束)。
\mbox{}
在命令后添加\item
将使 LaTeX 开始一个新段落,然后您的\vspace
命令将按预期工作。我倾向于将整个 和 包装\item
成\mbox
一个\vspace
宏,也许是\displaymathitem
为了 (a) 避免重复自己,以及 (2) 让任何查看文档的人都清楚您要做什么,尤其是为什么文档类的更改可能会改变需要传递给 的量\vspace
。我仍然不完全相信
- 埃=麦克²
是适合此情况的印刷和文本解决方案,但我没有更好的选择,所以让我们使用它。
答案2
我使用内联数学和\hfil
s 作为替代。\displaystyle
如果需要,可以添加 。对于对齐结构,我使用包中的\alignLongunderstack
(或\alignShortunderstack
)替代tabstackengine
。
\documentclass{amsart}
\usepackage{enumitem,tabstackengine}
\TABstackMath
\begin{document}
\begin{enumerate}
\item
Each item starts with an ugly blank line.
\begin{enumerate}
\item
\hfil$\displaystyle%\begin{equation*}
E=mc^2
$\hfil\mbox{}%\end{equation*}
\item
\hfil$\alignLongunderstack{%\begin{align*}
a^2+b^2 =& c^2
\\ =& E/m
}$\hfil\mbox{}%\end{align*}
\item
In this case we have some text, so it looks right.
\begin{align*}
\sin^2x + \cos^2x + e^{\pi i} = 0
\end{align*}
\end{enumerate}
\end{enumerate}
\end{document}