在类似方程式的环境中,我希望一些文本与文本块左边距对齐,类似于\intertext
,但与方程式在同一行
像这样:
\usepackage{amsmath,mathtools}
\newcommand*{\midmathskip}{\hskip0.5\displaywidth\hskip-0.5\totwidth@}
\newcommand*{\lefttext}[1]{\llap{\rlap{#1}\midmathskip}}
\begin{align}
\lefttext{and similarly}
\hphantom{nn-nn}
\mathllap{hwnn} &= H+hw. \\
\lefttext{Thus}
nn-nn &= 1.
\end{align}
当然,\hphantom
和\mathllap
只是为了让它在这种情况下看起来正确而做的改动,但我在寻找一些也可以在聚集环境中工作的东西。flalign
可能会有帮助,因为它改变了方程的对齐(它们不再位于文本块的中心),而且它无论如何都没有帮助gather
。
aligned
作为奖励,如果它能与和 一起工作就更好了alignedat
。
答案1
这是一个变体,它与理解的数学环境一起工作\tag
。但是与类选项一起使用leqno
它不起作用。我从 Philipp Stephani 那里学到了这种方法。它的工作方式与amsmath
互文相同,但将文本放在与等式相同的行上。
\documentclass[letterpaper,11pt]{article}
\usepackage{amsmath}
\usepackage{etoolbox}
\makeatletter
\newif\if@gather@prefix
\preto\place@tag@gather{%
\if@gather@prefix\iftagsleft@
\kern-\gdisplaywidth@
\rlap{\gather@prefix}%
\kern\gdisplaywidth@
\fi\fi
}
\appto\place@tag@gather{%
\if@gather@prefix\iftagsleft@\else
\kern-\displaywidth
\rlap{\gather@prefix}%
\kern\displaywidth
\fi\fi
\global\@gather@prefixfalse
}
\preto\place@tag{%
\if@gather@prefix\iftagsleft@
\kern-\gdisplaywidth@
\rlap{\gather@prefix}%
\kern\displaywidth@
\fi\fi
}
\appto\place@tag{%
\if@gather@prefix\iftagsleft@\else
\kern-\displaywidth
\rlap{\gather@prefix}%
\kern\displaywidth
\fi\fi
\global\@gather@prefixfalse
}
\newcommand*{\beforetext}[1]{%
\ifmeasuring@\else
\gdef\gather@prefix{#1}%
\global\@gather@prefixtrue
\fi
}
\makeatother
\begin{document}
\begin{align}
\label{eq:1}
\beforetext{and similary} hwnn &= H+hw\\
\beforetext{Thus} nn-nn &=1.
\end{align}
\end{document}
输出:
答案2
以下是您所提到的第 136 页的内容:
\documentclass{article}
\usepackage{mathtool,lipsum}
\newcommand{\lefttext}[1]{\makebox[0pt][l]{#1}}
\begin{document}
\lipsum*[1]
\begin{equation}
\begin{aligned}[b]
\hbar\omega\eta\bar{\eta}
&= (2m)^{-1}(p+im\omega q)(p-im\omega q)\\
&=(2m)^{-1}[p^{2}+m^{2}\omega^{2}q^{2}+im\omega(qp-pq)]\\
&=H-\yfrac{1}{2}\hbar\omega
\end{aligned}
\end{equation}
\vspace{\glueexpr-\baselineskip-\belowdisplayskip-\jot\relax}
\begin{flalign}
&\lefttext{and similarly}& \hbar\omega\bar{\eta}\eta &= H+\tfrac{1}{2}\hbar\omega. &&\\
&\lefttext{Thus}& \bar{\eta}\eta-\eta\bar{\eta} &= 1.
\end{flalign}
\lipsum*[2]
\begin{flalign}
&\lefttext{Here}&\mathclap{a long equation} &&\\
&\lefttext{whence}&\mathclap{short} &&
\end{flalign}
\end{document}
我们必须对垂直间距进行一些调整,因为两个不同的环境必须一个接一个地进行。预计需要一些手动干预来解决此类情况(等式 1 和 2 之间的间距并不十分精确)。
对您来说,重要的方面是flalign
环境。我们在开始和结束处提供了两个模拟组,宽度为零,因此中间的组将有效地居中。
我添加了一个模拟策略gather
:
\begin{flalign}
&\lefttext{Here}&\mathclap{a long equation} &&\\
&\lefttext{whence}&\mathclap{short} &&
\end{flalign}
加载。如何避免重叠取决于您mathtools
。\mathclap
答案3
只需打补丁,\math@cr@@@align
我就能让 Peter Breitfeld 的解决方案按我的需求工作。现在它可以与align
、gather
、有或没有方程式编号一起使用,甚至可以通过一些技巧与 一起使用aligned
!它不适用于equation
,但可以用 代替gather
。
我必须从中复制定义amsmath.sty
,只是为了包含\if@gather@prefix\tag@true\fi
必须在之后的\omit
(我不知道是否有更简单的方法来修补它)。
\documentclass[a5paper]{article}
\usepackage{amsmath,etoolbox}
\makeatletter
\newif\if@gather@prefix
\preto\place@tag@gather{%
\if@gather@prefix\iftagsleft@
\kern-\gdisplaywidth@
\rlap{\gather@prefix}%
\kern\gdisplaywidth@
\fi\fi
}
\appto\place@tag@gather{%
\if@gather@prefix\iftagsleft@\else
\kern-\displaywidth
\rlap{\gather@prefix}%
\kern\displaywidth
\fi\fi
\global\@gather@prefixfalse
}
\preto\place@tag{%
\if@gather@prefix\iftagsleft@
\kern-\gdisplaywidth@
\rlap{\gather@prefix}%
\kern\displaywidth@
\fi\fi
}
\appto\place@tag{%
\if@gather@prefix\iftagsleft@\else
\kern-\displaywidth
\rlap{\gather@prefix}%
\kern\displaywidth
\fi\fi
\global\@gather@prefixfalse
}
\def\math@cr@@@align{%
\ifst@rred\nonumber\fi
\if@eqnsw \global\tag@true \fi
\global\advance\row@\@ne
\add@amps\maxfields@
\omit
\kern-\alignsep@
\if@gather@prefix\tag@true\fi
\iftag@
\setboxz@h{\@lign\strut@{\make@display@tag}}%
\place@tag
\fi
\ifst@rred\else\global\@eqnswtrue\fi
\global\lineht@\z@
\cr
}
\newcommand*{\beforetext}[1]{%
\ifmeasuring@\else
\gdef\gather@prefix{#1}%
\global\@gather@prefixtrue
\fi
}
\makeatother
\begin{document}
align
\begin{align}
\beforetext{and similary} hwnn &= H+hw\\
\beforetext{Thus} nn-nn &=1.
\end{align}
align*
\begin{align*}
\beforetext{and similary} hwnn &= H+hw\\
\beforetext{Thus} nn-nn &=1.
\end{align*}
gather (\textbackslash notag on the first line)
\begin{gather}
\beforetext{and similary} hwnn = H+hw \notag \\
\beforetext{Thus} nn-nn =1.
\end{gather}
aligned
\begin{gather}
\beforetext{$\displaystyle\begin{aligned}&\!\text{and similarly}\\&\!\text{Thus}\end{aligned}$}
\begin{aligned}
hwnn &= H+hw\\
nn-nn &=1.
\end{aligned}
\end{gather}
\end{document}