我想要实现类似以下的目标(目前使用 Microsoft Paint 实现):
也就是说,我想在单个方程式环境中对多个多行方程进行分组(即它们具有相同的数量),并让每个方程都像在“多行”环境中一样对齐(第一行左对齐,最后一行右对齐)。这可能吗?
答案1
\shoveleft
和命令\shoveright
允许刷新multline
环境方程的左侧或右侧。
\documentclass{article}
\usepackage{amsmath}
\usepackage{lipsum}
\begin{document}
\lipsum[1]
\begin{multline}
a_1 + b_1 + c_1 + d_1 + e_1 + f_1\\
\shoveright{g_1 + h_1 + i_1 + j_1 + k_1 + l_1}\\
\shoveleft{a_2 + b_2 + c_2 + d_2 + e_2 + f_2}\\
g_2 + h_2 + i_2 + j_2 + k_2 + l_2
\end{multline}
\lipsum[2]
\end{document}
附录
正如@barbara beeton 指出的那样,方程编号的位置不明确。这可以通过使用insidemultlined
提供的辅助环境来解决(由@egreg 首次提出)。这种方法还受益于环境间距的改善。mathtools
equation
equation
\usepackage{mathtools}
\begin{equation}
\begin{multlined}[.7\textwidth]
a_1 + b_1 + c_1 + d_1 + e_1 + f_1\\
\shoveright{g_1 + h_1 + i_1 + j_1 + k_1 + l_1}\\
\shoveleft{a_2 + b_2 + c_2 + d_2 + e_2 + f_2}\\
g_2 + h_2 + i_2 + j_2 + k_2 + l_2
\end{multlined}
\end{equation}
答案2
array
如果需要的话,可以使用常规方法:
\documentclass{article}
\usepackage{array}% http://ctan.org/pkg/array
\begin{document}
\begin{equation}
\begin{array}{>{$}p{.55\textwidth}<{$}}
a_1+b_1+c_1+d_1+e_1+f_1 \\
\hfill g_1+h_1+i_1+j_1+k_1+l_1 \\[\jot]
a_2+b_2+c_2+d_2+e_2+f_2 \\
\hfill g_2+h_2+i_2+j_2+k_2+l_2
\end{array}
\end{equation}
\end{document}
p
字型列是关键,因为\hfill
它具有固定宽度。但是,它还会在文本模式的框中格式化其内容。切换回数学模式是通过array
和规范。出于演示目的,我选择了。在方程之间增加了一点更大的间隙>{<before>}
。<{<after>}
.55\textwidth
\jot
答案3
由于不知道文档的文本块有多宽,我认为不可能给出一种完全通用或自动的方法来实现您在示例中说明的外观。但是,正如下面的 MWE 所建议的那样,在环境中使用包split
提供的环境似乎相当接近于完全自动化的方法。amsmath
equation
相对于您提供的视觉示例,这种方法的优点(在我看来...)是允许您对齐+
方程式所有四行上的符号。还请注意,由于环境split
不提供自己的方程式行编号,因此输出自动只有一个方程式编号,该编号在方程式的第 2 行和第 3 行之间垂直居中。
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\begin{equation}
\begin{split}
a_1+b_1+c_1+d_1+{}&e_1+f_1 \\
&g_1+h_1+i_1+j_1+k_1+l_1 \\
a_2+b_2+c_2+d_2+{}&e_2+f_2 \\
&g_2+h_2+i_2+j_2+k_2+l_2
\end{split}
\end{equation}
\end{document}
请注意,在等式代码的第 1 行和第 3 行中,必须在对齐点{}
之前放置一个构造&
,以便 TeX 不会认为前面的+
符号是一元运算符。