今天是个好日子。
我有一组 4 个方程,分别有 2、1、3 和 3 列,我想以特定方式将它们“对齐”。我希望所有方程都相对于页面居中,并且最后两个方程(有 3 列)彼此对齐。以下是我进行的两次不成功的尝试。
第一次审判:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{subequations}
\begin{align}
[P_\mu, P_\nu] &= 0, &
[M_{\mu\nu}, P_\lambda] &= \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
\end{align}
\begin{align}
[M_{\mu\nu}, M_{\lambda\sigma}]
&= \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma} - \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
\end{align}
\begin{align}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, &
\varepsilon(P_\mu) &= 0, &
S(P_\mu) &= - P_\mu, \\
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, &
\varepsilon(M_{\mu\nu}) &= 0, &
S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{align}
\label{eq:poincare_hopf_alg}
\end{subequations}
\end{document}
这个是完美的,但是align
环境之间有额外的垂直间距...请注意,我不想将此解决方案与\vspace{-20pt}
或等效解决方案一起使用,因为方程的垂直间距是由 LaTeX 自动生成的:换句话说,每次更改代码时我都必须更改间距的值。
第二次审判:
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{subequations}
\begin{gather}
\begin{aligned}
[P_\mu, P_\nu] &= 0, &
[M_{\mu\nu}, P_\lambda] &= \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
\end{aligned} \\
\begin{aligned}
[M_{\mu\nu}, M_{\lambda\sigma}]
&= \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma} - \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
\end{aligned} \\
\begin{aligned}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, &
\varepsilon(P_\mu) &= 0, &
S(P_\mu) &= - P_\mu,
\end{aligned} \\
\begin{aligned}
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, &
\varepsilon(M_{\mu\nu}) &= 0, &
S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{aligned}
\end{gather}
\end{subequations}
\end{document}
这里,垂直间距正确,但水平间距不正确。我希望我的公式在页面宽度上等距分布,就像这样align
做一样(参见试验 1)。
在此先感谢您的时间!
编辑1:
我的问题似乎不太清楚,所以让我说清楚。当我align
单独使用多列时,LaTeX 会确保将页面宽度平均分配给每列(这有点像“对齐”方程)。但现在我有一组具有不同列数的方程。我希望一些方程对齐(例如第三和第四),而其他方程居中/“对齐”。
我根据 Celdor 建议的命令行提出了一种可能的解决方案\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}
。欢迎使用其他更自动化的方法。
\begin{subequations}
\begin{align}
[P_\mu, P_\nu] &= 0, &
[M_{\mu\nu}, P_\lambda] &= \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
\end{align}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{align}
[M_{\mu\nu}, M_{\lambda\sigma}]
&= \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma} - \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
\end{align}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{align}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, &
\varepsilon(P_\mu) &= 0, &
S(P_\mu) &= - P_\mu, \\
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, &
\varepsilon(M_{\mu\nu}) &= 0, &
S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{align}
\end{subequations}
编辑2: 我意识到我的问题与不令人满意的回答有关问题。
第三次审判:
\begin{subequations}
\begin{alignat}{2}
&a = 0,
&
\mathllap{[M_{\mu\nu}, P_\lambda] = \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,}
\\
&b = 0,
\end{alignat}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{align}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, & \varepsilon(P_\mu) &= 0, & S(P_\mu) &= - P_\mu, \\
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, & \varepsilon(M_{\mu\nu}) &= 0, & S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{align}
\end{subequations}
答案1
像这样吗?
例 1.
示例 1 的代码。
\documentclass{article}
\usepackage{mathtools}
\usepackage{kantlipsum}
\begin{document}
\kant*[1][1-2]
\begin{subequations}
\begin{alignat}{2}
&[P_\mu, P_\nu] = 0,
&
\mathllap{[M_{\mu\nu}, P_\lambda] = \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,}
\\
&[M_{\mu\nu}, M_{\lambda\sigma}] = \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma} - \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
\end{alignat}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{align}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, & \varepsilon(P_\mu) &= 0, & S(P_\mu) &= - P_\mu, \\
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, & \varepsilon(M_{\mu\nu}) &= 0, & S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{align}
\end{subequations}
\kant[1][1]
\end{document}
更新。
下面添加了两个示例,演示了如何使用flalign
(“全长对齐”)在页面上水平对齐和分布方程式。
\ineqskip
是一个宏,用于\vspace{...}
计算不同环境之间的空间并保持方程之间的连续性。组件包括
\abovedisplayskip
并\belowdisplayskip
在每个方程环境之前和之后添加 --glues\baselineskip
是两行之间的空格,并且- \jot` 是方程环境中后续行之间的空格。
此外,\abovedisplayskip
和 \belowdisplayskip
似乎受到\baselinestretch
后一个因素的影响,因此乘以了后者。
示例 2.
示例 3
示例 2 的代码
\documentclass{article}
\usepackage{mathtools}
\usepackage{kantlipsum}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.2pt}
\renewcommand{\ShowFrameColor}{\color{red}}
\newcommand\ineqskip{
\dimen0=\dimexpr+\abovedisplayskip+\belowdisplayskip\relax
\vspace*{\dimexpr-\baselinestretch\dimen0-\baselineskip+\jot}}
\begin{document}
\begin{subequations}
\begin{align}
[P_\mu, P_\nu] &= 0, &
[M_{\mu\nu}, P_\lambda] &= \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
\end{align}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{align}
[M_{\mu\nu}, M_{\lambda\sigma}]
&= \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma} - \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
\end{align}%
\vspace{\dimexpr-\abovedisplayskip-\belowdisplayskip-\baselineskip+\jot}%
\begin{flalign}
\Delta(P_\mu) &= P_\mu \otimes 1 + 1 \otimes P_\mu, &
\varepsilon(P_\mu) &= 0, &
S(P_\mu) &= - P_\mu, \\
\Delta(M_{\mu\nu}) &= M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, &
\varepsilon(M_{\mu\nu}) &= 0, &
S(M_{\mu\nu}) &= - M_{\mu\nu},
\end{flalign}
\end{subequations}
\end{document}
示例 3 的代码
\documentclass{article}
% ... preamble is the same as in the Example 2
\begin{document}
\begin{subequations}
\begin{flalign}
[P_\mu, P_\nu] &= 0, &
[M_{\mu\nu}, P_\lambda] &= \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
\end{flalign}%
% ... the rest of the middle part is the same as in Example 2
\end{subequations}
\end{document}
答案2
您可以使用\IEEEeqnarray
。IEEEtrantools
请参阅手册https://moser-isi.ethz.ch/docs/typeset_equations.pdf
\documentclass{article}
\usepackage{amsmath}
\usepackage{IEEEtrantools}
\begin{document}
\begin{subequations}\label{eq:poincare_hopf_alg}
\begin{IEEEeqnarray}{rCl ' rCl ' rCl}
\IEEEeqnarraymulticol{9}{c}{
[P_\mu, P_\nu] = 0,
\hspace{4em}
[M_{\mu\nu}, P_\lambda] = \eta_{\nu\lambda} P_\mu - \eta_{\mu\lambda} P_\nu,
} \\
\IEEEeqnarraymulticol{9}{c}{
[M_{\mu\nu}, M_{\lambda\sigma}]
= \eta_{\mu\sigma} M_{\nu\lambda} + \eta_{\nu\lambda} M_{\mu\sigma}
- \eta_{\mu\lambda} M_{\nu\sigma} - \eta_{\nu\sigma} M_{\mu\lambda},
} \\
\Delta(P_\mu) &=& P_\mu \otimes 1 + 1 \otimes P_\mu, &
\varepsilon(P_\mu) &=& 0, &
S(P_\mu) &=& - P_\mu, \\
\Delta(M_{\mu\nu}) &=& M_{\mu\nu} \otimes 1 + 1 \otimes M_{\mu\nu}, &
\varepsilon(M_{\mu\nu}) &=& 0, &
S(M_{\mu\nu}) &=& - M_{\mu\nu},
\end{IEEEeqnarray}
\end{subequations}
\end{document}