公式中的文本左对齐

公式中的文本左对齐

在类似方程式的环境中,我希望一些文本与文本块左边距对齐,类似于\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 的解决方案按我的需求工作。现在它可以与aligngather、有或没有方程式编号一起使用,甚至可以通过一些技巧与 一起使用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}

在此处输入图片描述

相关内容