在 alignat 中左对齐文本,其他内容保持居中

在 alignat 中左对齐文本,其他内容保持居中

我知道有很多关于“使用 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

使用flalign并进行一些手动调整\hphantom

\documentclass[12pt]{report}
\usepackage[margin=4cm,showframe]{geometry}
\usepackage{mathtools}
\usepackage{newtxtext}

\begin{document}
\begin{flalign}
            && a_1       &= b_{1\hphantom{11}} = c_1      &    \\
\text{and}  && a_{111}   &= b_{111}            = c_{111}. &
\end{flalign}
\end{document}

在此处输入图片描述

答案3

问题是这种方法需要手动调整。它使用添加的负空间,\\[-33pt]然后应用\smashed 版本的\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}

在此处输入图片描述

相关内容