我对校样中的对齐非常挑剔。现在让我感到沮丧的是,有些行我想居中对齐(使用\begin{gather}
),而有些行我想在“=”符号处对齐(使用\begin{align}
)。我的想法是,只需在一个校样中在两者之间切换,但这会产生额外的间距(因为关闭一个并打开另一个会产生隐式间距)。
我尝试过添加\vspace[-20pt]
或类似的东西,但这是一个相当笨拙的解决方案,我遇到了问题。此外,理想情况下,我可以从对齐到聚集再到对齐,并让第二个对齐与第一个对齐保持一致,显然关闭并重新打开所有内容不允许这样做。
有人能想到更好的方法来在两种对齐结构之间切换吗?也许使用一个框将我的收集嵌套在对齐中或类似的东西中。本质上,我通常喜欢对齐中的大部分证明,但又想要收集中的几个切点。我花了一段时间思考 amsmath 自述文件(和这个网站),但我找不到答案。
提前谢谢了!
下面是一个小示例编码,用于演示我当前方案中存在的问题:
\documentclass{article}
\usepackage{amsmath}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\begin{align*}
10 &= 2+2+2+2+2 \\
&= 3+3+3+1
\end{align*}\begin{gather*}
\intertext{But now it puts this annoying large space above this line...}
5=5
\end{gather*}
\end{proof}
\end{document}
答案1
[注意:下面的改进,实际上不起作用。]
[注意:下面这段代码有一个重要的改进。]
我能找到的最接近的解决方案是
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath,amsthm,mathtools}
\begin{document}
\begin{proof}
\begin{align*}
15 &= 5+4+3+2+1 = \sum_{i=1}^5 i \\
120&=5\cdot4\cdot3\cdot2\cdot1 = 5! \\
\shortintertext{
\[ e^{\pi i} + 1 = 0 \]
\[ x^n + y^n = z^n \]
}
27 &= 3^3 \qedhere
\end{align*}
\end{proof}
\end{document}
结果是
事实上我认为间距非常好。
重要编辑失败
我认为下面的代码更好,甚至可以给出更好的结果。
\documentclass[10pt,a4paper]{article}
\usepackage{amsmath,amsthm,mathtools}
\begin{document}
\begin{proof}
\begin{align*}
15 &= 5+4+3+2+1 = \sum_{i=1}^5 i \\
120&=5\cdot4\cdot3\cdot2\cdot1 = 5! \\
\begin{gathered}
e^{\pi i} + 1 = 0 \\
x^n + y^n = z^n
\end{gathered}
27 &= 3^3 \qedhere
\end{align*}
\end{proof}
\end{document}
感谢芭芭拉·比顿(请对她自己的回答的评论投票)。
答案2
得到@PeterGrill 的提示,这里有一种将所有部分合并为一个的方法,使用gather*
“单”行要居中对齐,并使用子环境aligned
来处理多行表达式。
由于您使用了amsthm
,因此我还擅自使用\qedhere
将“墓碑”定位在显示屏的最后一行。
\documentclass{article}
\usepackage{mathtools}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\begin{gather*}
\begin{aligned}
10 &= 2+2+2+2+2 \\
&= 3+3+3+1
\end{aligned}
\shortintertext{No annoying large space above this line...}
5=5
\qedhere
\end{gather*}
\end{proof}
\end{document}
答案3
按照调整多个对齐环境之间的 vspace您绝不应该使用两个连续的显示数学环境。
单一align
环境:
你可以使用单身的 align*
环境。我还建议使用\shortintertext
表单包裹\mathtools
因为这样可以提供更紧密的垂直间距:
\documentclass{article}
\usepackage{showframe}
\usepackage{mathtools}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\begin{align*}
10 &= 2+2+2+2+2\\
&= 3+3+3+1
\shortintertext{Now this no longer puts an annoying large space above this line...}
5 &=5 \qedhere
\end{align*}
\end{proof}
\end{document}
使用align
范围gather
:
或者,您也可以使用gather
它来将一些方程式和align
其他部分居中,但这个点看起来不太好,尤其是中间有短文本片段的时候。
\documentclass{article}
\usepackage{showframe}
\usepackage{mathtools}
\usepackage{amsthm}
\begin{document}
\begin{proof}
\begin{gather*}
\begin{align*}
10 &= 2+2+2+2+2 &\\
&= 3+3+3+1
\end{align*}
\shortintertext{Now this no longer puts an annoying large space above this line...}
5=5 \qedhere
\end{gather*}
\end{proof}
\end{document}