flalign、leqno 和方程式左对齐。方程式和标签重叠

flalign、leqno 和方程式左对齐。方程式和标签重叠

我正在使用 flalign 将方程式与页边距左对齐。

然后我偶然发现了这个在同一文档中切换 leqno 和 reqno 选项(amsmath 的)并使用它。

现在我有标签与方程式重叠。请注意,标签的空间仍然在右侧。

标签和方程式的重叠

\usepackage{amsmath,amssymb,amsthm}
\usepackage{dsfont}

\makeatletter
\newcommand{\leqnomode}{\tagsleft@true}
\newcommand{\reqnomode}{\tagsleft@false}
\makeatother

\leqnomode
\begin{flalign}
& \forall x, y(x,y\in\mathds{R}\Rightarrow x+y\in\mathds{R}) & P \\
& \forall x,y\left[ x,y\in\mathds{R}\Rightarrow x+y=y+x\right] & P \\
& \forall x,y,z\left[x,y,z\in\mathds{R}\Rightarrow(x+y)+z=x+(y+z)\right] & P
\end{flalign}

如何才能使标签具有自动且一致的间距,就像它们被设置为默认位置(正确)一样?

右侧标签不重叠

答案1

\newcommand{\leqnomode}{\tagsleft@true}无法工作,如果fleqn在加载时给出选项amsmath使用不同的定义适用于大多数环境。仅在少数简单情况下(如链接答案所示),对中心方程和左对齐方程使用相同的代码,并进行运行时测试\iftagsleft@

为了允许一般切换,您需要复制 amsmath 代码,以便它始终加载居中和左齐平版本(在可区分的内部名称下,然后\let环境的公共版本为居中或左齐平版本,具体取决于当时所需的样式。

答案2

在环境的位置flalign,可以使用align嵌套在fleq环境中的普通nccmath,其临时工作方式与fleqn选项类似,并且可以采用可选参数:等式左边距与文本左边距的距离:

\documentclass{article}
\usepackage{showframe}
\renewcommand{\ShowFrameLinethickness}{0.3pt}
 \usepackage{amssymb, mathtools, nccmath} %
\usepackage{dsfont}
\makeatletter
\newcommand{\leqnomode}{\tagsleft@true}
\newcommand{\reqnomode}{\tagsleft@false}
\makeatother

\begin{document}

\leqnomode

\begin{fleqn}[2.5em]
\begin{align}
& \forall x, y(x,y\in\mathds{R}\Rightarrow x+y\in\mathds{R}) & P \\
& \forall x,y\left[ x,y\in\mathds{R}\Rightarrow x+y=y+x\right] & P \\
& \forall x,y,z\left[x,y,z\in\mathds{R}\Rightarrow(x+y)+z=x+(y+z)\right] & P
\end{align}
\end{fleqn}

\end{document} 

在此处输入图片描述

相关内容