在 \item 之后立即显示方程式,希望它不留下空行

在 \item 之后立即显示方程式,希望它不留下空行

我有一个枚举环境,其中每个项目只是一个显示的方程式。它从新行开始,因此“(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。我仍然不完全相信

  1. =麦克²

是适合此情况的印刷和文本解决方案,但我没有更好的选择,所以让我们使用它。

答案2

我使用内联数学和\hfils 作为替代。\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}

在此处输入图片描述

相关内容