我知道有很多关于“使用 alignat 左对齐”的问题。但到目前为止,我还没有找到解决方案。我正在使用\begin{alignat}{2}
并想使一段\text{..}
左对齐(即与左侧边距齐平),但保持方程式的其余部分居中。我该如何实现这一点?
平均能量损失
\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools}
\usepackage{newtxtext}
\begin{document}
\begin{alignat}{2}
a_1 &= b_1 &&= c_1
\\
\text{and} a_{111} &= b_{111} &&= c_{111}.
\end{alignat}
\end{document}
更新
我知道使用\intertext
或\shortintertext
都是选项,但我用 写了很多其他方程式flalign
,我可以在同一行得到“和”。所以我希望我可以保持格式一致。
答案1
另外三种可能性,使用flalign + alignedat
,或使用fleqn
(from nccmath
) + align
+ \makebox*
(from makebox
):
\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools, nccmath}
\usepackage{makebox}
\usepackage{newtxtext}
\begin{document}
\begin{flalign}
& \text{and} &&\begin{alignedat}[b]{2} a_1 &= b_{1} & & = c_1 \\
a_{111} &= b_{111} & & = c_{111}.
\end{alignedat} & &
\end{flalign}
\vskip 3ex
\begin{fleqn}
\begin{align}
&& a_1 &= \makebox*{$b_{111}$}[l]{$ b_{1} $} = c_1 \\
& \text{and} & a_{111} &= b_{111} = c_{111}.
\end{align}
\end{fleqn}
\vskip 3ex
\begin{fleqn}
\begin{align}
&& a_1 &= \makebox*{$b_{111}$}[l]{$ b_{1} $} = c_1 & & \\
& \text{and} & a_{111} &= b_{111} = c_{111}. & &
\end{align}
\end{fleqn}
\end{document}
答案2
答案3
问题是这种方法需要手动调整。它使用添加的负空间,\\[-33pt]
然后应用\smash
ed 版本的\intertext
本身已被降低的
编辑了将恶作剧放入 中\vbox
,这样它就不会受到基于页面密度的垂直压缩的影响。但请注意,现在\vbox
也会导致方程式前后的间距不同,尽管也许可以找到一个折衷方案。
\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools}
\usepackage{newtxtext}
\begin{document}
Leading text
\\\vbox{\begin{alignat}{2}
a_1 &= b_1 &&= c_1
\\[-33pt]
\intertext{\smash{\raisebox{-27pt}{and}}}
a_{111} &= b_{111} &&= c_{111}.
\end{alignat}}
trailing text
\end{document}
这里有一个stackengine
替代方案,它只要求您猜测一个数字来匹配该行:
\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools}
\usepackage{newtxtext}
\usepackage{stackengine}
\begin{document}
Leading text\\
\setbox0=\vbox{\begin{alignat}{2}
a_1 &= b_1 &&= c_1
\\
a_{111} &= b_{111} &&= c_{111}.
\end{alignat}}
\noindent\stackengine{17pt}{\box0}{\makebox[\textwidth][l]{and}}{O}{c}{F}{F}{L}
trailing text
\end{document}
当然,您更可能得到的建议是\intertext
按照通常规定的方式使用:
\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools}
\usepackage{newtxtext}
\begin{document}
\begin{alignat}{2}
a_1 &= b_1 &&= c_1
\\
\intertext{and}
a_{111} &= b_{111} &&= c_{111}.
\end{alignat}
\end{document}