我在环境中使用对齐环境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\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 = {}
mathlist
environ
以便抓取整个环境内容,然后分别处理每个项目。此技术取自自动对枚举环境中的物品进行排序。
在每一个\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}