如何对齐多线方程组?

如何对齐多线方程组?

我有一组方程式,每个方程式都不适合页面宽度,因此我正在寻找对齐它们的方法:

  • 括号应该出现在左侧,没有缩进
  • 每个方程的第一行应该左对齐
  • 每个等式的最后一行应该右对齐

我达到了以下目的: 在此处输入图片描述 但我不喜欢每个等式的括号和第一个字母之间的巨大间距。

我使用的代码如下:

\[
\setlength{\multlinegap}{0pt}
\left\{
\begin{array}{c}
\shoveleft{A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} =} \\ \shoveright{=\sin\alpha_{P1},} \\
% 2-nd equation
\shoveleft{ A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = } \\
\shoveright{ =\cos\alpha_{P1},} \\
% 3-rd equation
\shoveleft{ A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -} \\
\shoveright{- B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},} \\
% 4-th equation
\shoveleft{ -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} +} \\
\shoveright{+ B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.}\end{array}
\right.
\] 

任何帮助都将不胜感激。谢谢!

答案1

multlined来自的环境是mathtools你的朋友。(它会加载amsmath,所以没有必要这样做)。

关于这个例子有两点需要注意:

  • \mathindent在组内设置为零宽度,因此它将在显示结束后消失。
  • 因为multlined(如multline)会自动将第一行设置为左对齐,将最后一行设置为右对齐,所以你不需要\shove...这些行上的命令。事实上,如果你将这些行包装在\shove...参数中。

这是代码:

\documentclass{article}
\usepackage[fleqn]{mathtools}

\begin{document}

\noindent some text here
{\mathindent=0pt
\[
\setlength{\multlinegap}{0pt}
\left\{
\begin{multlined}
A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} = \\
\shoveright{=\sin\alpha_{P1},} \\
% 2-nd equation
\shoveleft{ A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = } \\
\shoveright{ =\cos\alpha_{P1},} \\
% 3-rd equation
\shoveleft{ A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -} \\
\shoveright{- B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},} \\
% 4-th equation
\shoveleft{ -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} +} \\
+ B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.
\end{multlined}
\right.
\] }

\end{document}

在此处输入图片描述

答案2

这并不是直接回答你的问题,而是为了使信息更容易解析。我建议进行以下更改,以使模式更容易理解:

  • 消除双等号
  • 将术语对齐到多行

在此处输入图片描述

笔记:

  • 最后一个等式的前导减号间距不标准,但我认为在这种情况下看起来更好
  • 您还可以考虑对齐中间+/-符号(甚至是等号)以使模式更加明显。

有很多方法可以实现这一点,因此这只是展示一种方法。

代码:

\documentclass{article}
\usepackage{amsmath}

\newcommand{\Phantom}{\phantom{{}+{}}}%
\newcommand{\Plus}{{}+{}}%
\newcommand{\Minus}{{}-{}}%

\begin{document}
\[\begin{cases}
\Phantom A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} \\
        \Plus B_{PP}\sin\alpha_{P2} + B_{PS}\cos\alpha_{S2} =
         \sin\alpha_{P1}, \\[7pt]
% 2-nd equation
\Phantom A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} \\
\Minus B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = \cos\alpha_{P1}, \\[7pt]
% 3-rd equation
\Phantom A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} \\
\Plus B_{PP}  \gamma_{P2} \cos 2\alpha_{S2}
- B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1}, \\[7pt]
% 4-th equation
\Minus A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} \\
\Plus B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} +
       B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.
\end{cases}\]
\end{document}

答案3

要删除行和括号之间的空格,可以使用声明@{}。声明@{}如下所述:

表格中行和列之间的空格 - 比我的方法更好吗?

要提供关于整个内容的方程式,您可以使用命令\resizebox。请注意,这会导致方程式的大小不必要。

\documentclass{article}
\usepackage{showframe}
\usepackage{array}
\usepackage{amsmath}
\usepackage{graphicx}
\begin{document}
\[
\setlength{\multlinegap}{0pt}
\left\{
\begin{array}{c}
\shoveleft{A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} =} \\ \shoveright{=\sin\alpha_{P1},} \\
% 2-nd equation
\shoveleft{ A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = } \\
\shoveright{ =\cos\alpha_{P1},} \\
% 3-rd equation
\shoveleft{ A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -} \\
\shoveright{- B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},} \\
% 4-th equation
\shoveleft{ -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} +} \\
\shoveright{+ B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.}\end{array}
\right.
\] 


\noindent\resizebox{\linewidth}{!}{%
$\setlength{\multlinegap}{0pt}
\left\{
\begin{array}{@{}c@{}}
\shoveleft{A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} =} \\ \shoveright{=\sin\alpha_{P1},} \\
% 2-nd equation
\shoveleft{ A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = } \\
\shoveright{ =\cos\alpha_{P1},} \\
% 3-rd equation
\shoveleft{ A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -} \\
\shoveright{- B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},} \\
% 4-th equation
\shoveleft{ -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} +} \\
\shoveright{+ B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.}\end{array}
\right.
$} 
\end{document}

在此处输入图片描述

答案4

仔细分析这个问题,它是一个dcases多行方程的环境,其第二部分应该是右对齐(或右对齐,或\shoveright,或\MoveEqRight......你说得通)。

你需要嵌套multline环境 multilined[t]对于每个方程,在一个\aligned环境内,在一个dcases环境内。

我反对这种做法:

括号应该出现在左侧,没有缩进

因此,我没有将其包含在我的代码中。

在下面的例子中,等式 (1) 未对齐,而等式 (2) 对齐。

在此处输入图片描述

\documentclass{article}

\usepackage{mathtools}
\usepackage[nopar]{lipsum} % for dummy text only
\begin{document}

\lipsum[66] 
%%                  FIRST EQ
\begin{equation}
    \begin{dcases}
        \begin{multlined}[t]
            A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} =\\
            =\sin\alpha_{P1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = \\
            =\cos\alpha_{P1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -\\
            - B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} + \\
            + B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.
        \end{multlined}
    \end{dcases}
\end{equation}
\lipsum[66]
%%                  SECOND EQ
\begin{equation}
\begin{dcases}
    \begin{aligned}
        \begin{multlined}[t]
            A_{PP}\sin\alpha_{P1} - A_{PS}\cos\alpha_{S1} +B_{PP} \sin\alpha_{P2} +B_{PS} \cos\alpha_{S2} =\\
            =\sin\alpha_{P1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            A_{PP}\cos\alpha_{P1}  +A_{PS} \sin\alpha_{S1} -B_{PP}\cos\alpha_{P2} + B_{PS} \sin\alpha_{S2} = \\
            =\cos\alpha_{P1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            A_{PP}\gamma_{P1} \cos 2\alpha_{S1} +A_{PS}  \gamma_{S1} \sin 2\alpha_{S1} +B_{PP}  \gamma_{P2} \cos 2\alpha_{S2} -\\
            - B_{PS}   \gamma_{S2} \sin 2\alpha_{S2} = \gamma_{P1} \cos 2\alpha_{S1},
        \end{multlined}
        \\
        \begin{multlined}[t]
            -A_{PP}n_1 \gamma_{S1} \sin 2\alpha_{P1} +A_{PS}  \gamma_{S1} \cos 2\alpha_{S1} +B_{PP} n_2 \gamma_{S2} \sin 2\alpha_{P2} + \\
            + B_{PS} \gamma_{S2} \cos 2\alpha_{S2} = n_1 \gamma_{S1} \sin 2\alpha_{P1}.
        \end{multlined}
    \end{aligned}
\end{dcases}
\end{equation}
\lipsum[66]
\end{document}

在花了两个小时研究align、、、、、及其所有变体之后,我gather终于找到了解决方案;就在我准备联系 Lars Madsen(软件包维护者)进行升级之前。它必须是具有自动化格式的东西,multlinesplitalignatflalignmathtools纯 LaTeX 风格,而不是通过使用\quad\hspace\vphantom或类似的。

令人惊讶的是,如此基本的排版功能竟然如此鲜为人知。我的意思是,我在整个互联网上都找不到解决方案。它应该包含在指南和教程中。多行方程式太常见了!

我知道肯定有更多的人要求解决这个问题,我现在正在整个论坛上分享这个解决方案。这也证明了该mathtools软件包的编码有多么强大,成功地响应了这个解决方法。

相关内容