对于长方程式,在右对齐和左对齐之间交替

对于长方程式,在右对齐和左对齐之间交替

我有一串很长的不等式;我希望能够将它们分成多行,这样不等式的“左侧”可以是 2 行,“右侧”也可以是 2 行。我尝试使用多行环境,但目前还没有成功。

理想情况下,不等式“左侧”的第一行应左对齐,不等式“左侧”的第二行应右对齐,然后不等式“右侧”的第一行应恢复左对齐,最后不等式“右侧”的第二行应右对齐。如果有超过 2 个不等式,如果可能的话,我更喜欢这种交替样式。有这样的环境吗?

例如

\begin{equation*}
    f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) &\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1\\
    &\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2\\
    &\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 3
\end{equation*}

到目前为止给出的答案还不够。我想要的是以下输出:

\begin{multline*}
f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\ + f(x) + f(x) + f(x) + f(x) + f(x) + f(x)
\end{multline*}
\begin{multline*}
\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\ + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1
\end{multline*}
\begin{multline*}
\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\ + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2
\end{multline*}

等等,无需使用单独的多行*环境。

答案1

这使用了flalign\mathllap\mathrlap。我还尝试了另一种风格。(第二行和第三行原本是一行。我无法决定哪个看起来更好。)

\documentclass{article}
\usepackage{mathtools}
\begin{document}
\begin{flalign*}
\mathrlap{f(x) + f(x) + f(x) + f(x) + f(x) + f(x)} \\
&& \mathllap{+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x)} \\
\mathrlap{\quad\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)} \\
&& \mathllap{+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1}\\
\mathrlap{\quad\leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)} \\
&&\mathllap{+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2}
\end{flalign*}

\begin{flalign*}
\mathrlap{f(x) + f(x) + f(x) + f(x) + f(x) + f(x)+ f(x) + f(x) + f(x) + f(x) + f(x)} \\
&& + f(x) & \\
&&& \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \\
&&&& \mathllap{ + f(x) + f(x) + f(x) + 1}\\
&&& \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \\
&&&& \mathllap{ + f(x) + f(x) + f(x) + 2}
\end{flalign*}
\end{document}

演示

答案2

您可以使用\shoveleft\shoverightmathtools包裹

在此处输入图片描述

\documentclass{article}
\usepackage{mathtools}

\begin{document}
\begin{multline}\nonumber
f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\
+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \shoveright{}
\\
\shoveleft \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\
+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1 \shoveright{}
\\
\shoveleft \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x)\\
+ f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2
\end{multline}

\end{document}

答案3

可能使用aligned可以解决你的情况:

\documentclass{article}
\usepackage{amsmath}

\begin{document}

\begin{align*}
  \begin{aligned}[b]
    &f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) +f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x)
  \end{aligned}
  &\leq 
  \begin{aligned}[t]
    &f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) + 1
  \end{aligned}
  \\[1ex]
  &\leq
  \begin{aligned}[t]
    &f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) + 2
  \end{aligned}
  \\[1ex]
  &\leq
  \begin{aligned}[t]
    &f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) \\
    &+ f(x) + f(x) + f(x) + f(x) + 3
  \end{aligned}
\end{align*}

\end{document}

在此处输入图片描述

答案4

您已经找到了几种使用 LaTeX 做您想做的事情的好方法,所以我希望没有人会不同意在 ConTeXt 中排版换行公式的方法。

但首先,让我评论一下multline你写的几个版本,它给出了你想要的输出。我运行它并得到了这个:

来自多个多行的输出

我认为还有一些改进的空间:对于每个多行对,通过左右对齐,两行的共同点太少(如果您碰巧有更长的公式,这个问题就会消失)。此外,将第四行和第六行缩进相同程度可能更有意义(在您的例子中恰好如此,因为这些行的长度相同)。我认为您三行之间的间距不均匀可能是您问题的根源。

现在让我们来看看如何使用 ConTeXt 设置这些公式。我们首先定义一种公式:

\defineformula[long][
    split=yes,
    textalign=middle,
    hang=yes,
    distance=3em,
    spaceinbetween=.5\lineheight,
]

这里,split=yes告诉我们想要一个可以分行的公式,textalign=middle告诉我们想要整个公式中间对齐,hang=yes允许悬挂,distance=3em悬挂的数量,以及spaceinbetween=.5\lineheight额外的行将扩展多少。

我们现在可以用以下方式排版公式

\startlongformula
    f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere 
    \skiphere[2]
        + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere
    \alignhere
    \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere 
    \skiphere
        + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1 \breakhere
    \leq  f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere 
    \skiphere
        + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2
\stoplongformula

这里,\breakhere告诉我们在哪里换行,\skiphere(参数可以是明确的长度,也可以是数字,对应于 的数量\textmargin,我不想在这里设置)。最后,\alignhere告诉我们在哪里对齐。结果如下所示(周围有一些文本):

超过几行的公式

与对齐相比,这种方法的一个好处是,我们在一个公式中工作,运行多条线路。这意味着,例如,我们可以拥有运行多条线路的围栏材料。我们举一个例子:

\startlongformula
    f(x) + f(x) +  \int_0^1 \left[ f(x) + \frac{f(x)}{g(x)} + f(x) + f(x) \breakhere 
    \skiphere[4]
        + f(x) + f(x) + \frac{f(x)}{g(x)} + f(x) \right]\dd x + f(x) + f(x) \breakhere
    \alignhere 
    \leq f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere 
    \skiphere[2]
        + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 1 \breakhere
    \leq  f(x) + f(x) + f(x) + f(x) + f(x) + f(x) \breakhere 
    \skiphere[2]
        + f(x) + f(x) + f(x) + f(x) + f(x) + f(x) + 2
\stoplongformula

请注意,我增加了 中的数字\skiphere。我认为这些公式需要进行一些调整,我并不是说这是最佳版本。请注意,方括号会自动获得正确的大小,即使它们位于不同的行上。让我们看看输出(再次带有一些文本):

很长的公式跨越多行,其中分隔符跨越多行

相关内容