枚举对齐环境的替代方案

枚举对齐环境的替代方案

我在环境中使用对齐环境itemize。我需要aligned环境,这样标签\item将与方程位于同一行。

例如:

\begin{enumerate}
\item $\begin{aligned}[t]
%Big equation with many lines over two or more pages
\end{aligned}$
\end{enumerate}

但是,我需要有相同的标签和方程对齐(即在同一行),而且\allowdisplaybreaks对于环境内的巨大方程也需要如此aligned

据我所知,问题在于对齐环境会在多行方程周围创建一个不可破坏的框。但是,如果我使用该align环境,则方程将不会与\item标签在同一行上。

有想法吗?

编辑:这是 MWE

\documentclass{article}
\usepackage{amsmath}
\usepackage{enumitem}

\allowdisplaybreaks[1]
\setitemize{topsep=5pt}

\begin{document}
 \begin{enumerate}
  \item Equation 1\\
  \item Equation 2\\
  \item $\begin{aligned}[t]
   line 1&\\%This equation will span 2+ pages
   &line2\\
  \end{aligned}$
 \end{enumerate}
\end{document}

在这个例子中,第 1 行与标签 (3.) 在同一行,但是如果将此代码放在页面的中间,那么对齐环境中的项目将从下一页开始,我需要它从第 2 个项目的正下方开始。

答案1

以下 MWE 创建了一个mathlist与环境功能类似的功能aligned

在此处输入图片描述

\documentclass{article}
\usepackage[paper=a6paper]{geometry}% Just for this example
\usepackage{environ,enumitem}% http://ctan.org/pkg/environ
\makeatletter
\let\olditem\item% Store regular \item macro
\newlength{\LHS}
\def\processitem#1&#2\relax{%
  \olditem\hspace*{\LHS}%
  \llap{$\displaystyle #1{}$}%
  $\displaystyle{}#2$%
}
\NewEnviron{mathlist}[1][3em]{%
  \setlength{\LHS}{#1}% Set Left-Hand Side length
  \g@addto@macro{\BODY}{\item\relax\item}% Used to delimit the items; last item identified by \item\relax\item
  \def\item##1\item{% Redefine \item to capture contents
    \def\optarg{##1}%
    \expandafter\ifx\optarg\relax\else% Last item not reached
      \expandafter\processitem##1\relax% Process item
      \expandafter\item% Recursively continue processing items
    \fi
  }
  \begin{itemize}[label={},labelsep=0pt]
    \BODY% Process environment (save items)
  \end{itemize}
}
\makeatother
\begin{document}
\begin{enumerate}
  \item Equation 1
  \item Equation 2
  \item
    \begin{mathlist}[1em]
      \item F &= ma
      \item G &= mbc
      \item E &= mc^2
      \item H &= md^3
      \item I &= md^4
      \item F &= ma
      \item G &= mbc
      \item E &= mc^2
      \item H &= md^3
      \item I &= md^4
      \item F &= ma
      \item G &= mbc
      \item E &= mc^2
      \item H &= md^3
      \item I &= md^4
      \item F &= ma
      \item G &= mbc
      \item E &= mc^2
      \item H &= md^3
      \item I &= md^4
    \end{mathlist}
  \item Equation 3
  \item Equation 4
\end{enumerate}
\end{document}

\item里面mathlist要求使用&(可以重写它以使用/不使用)。

mathlist采用单个可选参数,指定方程组左侧的宽度(默认为2em),但由于您在列表中(具体而言itemize是),因此还有其他水平长度在起作用。用途label = {}mathlistenviron以便抓取整个环境内容,然后分别处理每个项目。此技术取自自动对枚举环境中的物品进行排序

在每一个\item里面mathlist,数学内容都是被强制包含进去的\displaystyle

答案2

目前尚不清楚你是否能做更多类似的事情:

在此处输入图片描述

\documentclass{article}
\usepackage[leqno]{amsmath}
\usepackage{enumitem}

\allowdisplaybreaks[1]
\setitemize{topsep=5pt}

\begin{document}

\begin{align}
  Equation 1\\
  Equation 2\\
   line 1&\\%This equation will span 2+ pages
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber\\
   &line2 \nonumber
  \end{align}
\end{document}

答案3

一种方法是暂停环境enumerate,以及resume等式后的列表:

在此处输入图片描述

笔记:

  • 经过paperheight=6.1cm,paperwidth=9cm调整,此处显示的图像表明已达到预期结果。

代码:

\documentclass{article}
\usepackage[paperheight=5.6cm,paperwidth=9cm, showframe]{geometry}
\usepackage{amsmath}
\usepackage{enumitem}

\newcounter{TempCounter}
\newcommand{\PauseListEnvironment}{%
    \stepcounter{enumi}%
    \setcounter{TempCounter}{\value{enumi}}%
}%

\newcommand*{\ResumeList}{%
    \makebox[\dimexpr\leftmargin\relax][r]{\arabic{TempCounter}.\hspace*{\labelsep}}%
    \belowdisplayskip=0pt%
}%

\allowdisplaybreaks[1]
\setitemize{topsep=5pt}

\begin{document}
 \begin{enumerate}[series=xxx]
  \item Equation 1
  \item Equation 2
  \item Equation 3
  \PauseListEnvironment%
 \end{enumerate}
 \begingroup
     \abovedisplayskip=0pt%
     \belowdisplayskip=0pt%
     \begin{flalign*}\ResumeList
           F &= ma &\\
           G &= mbc\\
           E &= mc^2 \\
           H &= md^3 \\
           I &= md^4
      \end{flalign*}%
  \endgroup%
 \begin{enumerate}[resume=xxx]
  \item Equation 5
 \end{enumerate}
\end{document}

答案4

TABstacks 可能在这方面能帮到你。它们可以有类似对齐或表格的语法,并且只占用所需的宽度。此外,通过使用 understacks,方程的第一行将与枚举器索引对齐。

正如 Peter Grill 提醒我的那样,任何单个 TABstack 都不会跨越页面边界,因为它是盒装材料。

\documentclass{article}
\usepackage{tabstackengine}
\def\dfrac{\displaystyle\frac}
\stackMath
\strutlongstacks{T}
\setstacktabulargap{0pt}
\setstackgap{S}{6pt}
\begin{document}
\begin{enumerate}
\item \alignLongunderstack{
  5x + 2y =& 7\\
  2x  -2y =&0
}
\item \tabularShortunderstack{rrrl}{
\dfrac{1}{2}x^2 +& 3x -& 7 =& 1\\
 7 x^2 -& \dfrac{3}{4} x +& 12 =& 17\\
 5 x^2 +& \dfrac{2}{3} x +& 5 =& 9
}
\end{enumerate}
\end{document}

在此处输入图片描述

相关内容