如何使用自己的环境左对齐特定方程式?

如何使用自己的环境左对齐特定方程式?

我正在尝试将特定方程式左对齐。为此,我创建了一个新环境(因为我需要它几次)。

现在,我发现有多种方法可以做到这一点:

  • 使用fleqn选项 - 但这会对文档中的所有方程式进行左对齐
  • flalign- 但为此我总是必须&&在最后写,而且它似乎在我定义的环境中不起作用

我希望能够使用类似这样的代码来解决这种特殊方程

\begin{leftalignedequation}
...
\end{leftalignedequation}

它应该自己创造所有的魔法。

所以我的问题是:您认为实现这一目标的最佳方法是什么?我似乎没有找到一个好的解决方案。

答案1

\@fleqntrue您可以通过和切换方程式的左对齐\@fleqnfalse。更改\@mathindent将改变它们与左边距的偏移量。也许最简单的方法是通过定义新环境来关闭文档部分内容的此功能fleqns

\makeatletter
\newenvironment{fleqns}[1][0pt]{\@mathmargin=#1\@fleqntrue}{\@fleqnfalse}
\makeatother 

这里有一个可选参数允许您设置缩进。

示例输出

\documentclass{article}

\usepackage{amsmath}

\makeatletter
\newenvironment{fleqns}[1][0pt]{\@mathmargin=#1\@fleqntrue}{\@fleqnfalse}
\makeatother 

\begin{document}

\begin{equation}
  x=y
\end{equation}

\begin{fleqns}
  \begin{equation}
    z=t
  \end{equation}
  text
  \begin{gather}
    p=q\\
    y=r
  \end{gather}
\end{fleqns}

\begin{equation}
  s=t
\end{equation}

\begin{fleqns}[2em]
  \begin{equation}
    z=t
  \end{equation}
  text
  \begin{gather}
    p=q\\
    y=r
  \end{gather}
\end{fleqns}

\end{document}

您可以扩展它来定义不同方程环境的 flushleft 版本,但这需要为每种情况提供新的定义。

相关内容