改变左右方程的编号

改变左右方程的编号

通常 LaTeX 会将公式编号放在右侧页边距。我知道可以使用类选项将其放在左侧页边距来更改这一点leqno。我希望能够对数字与哪个页边距相邻进行本地控制。尝试有点乐观

\documentclass{article}
\begin{document}
\begin{equation}
a + b = c          % numbered at right
\end{equation}

\bgroup
\leqno            % ERROR can't use \leqno in vertical mode
\begin{equation}
a + b = c
\end{equation}
\egroup

\begin{equation} \leqno  % ERROR can't use \eqno in math mode
a + b = c
\end{equation}

\end{document}

如您所见,我的尝试失败了。有什么建议吗?

编辑 上面的 MWE 并没有说明全部情况。我应该更恰当地给出初始代码:

\documentclass{memoir}
\usepackage{memsty}    % pages of code
\usepackage{amsmath}
\usepackage{amssymb}
\usepackage{newpxtext}
\usepackage{newpxmath}
\begin{document}
 ...

这两个答案都解决了我的问题,而且正如最初呈现的那样,它们之间的竞争非常激烈,但是......

我将研究各种软件包产生的问题...math...并希望解决这些问题。memsty我将处理软件包。不过,您以后可能会发现有关该主题的另一个问题,但我希望不会。

答案1

\leqno是原始的,在 latex 中未使用。latex 中的选项重新定义了\@eqnnum

\documentclass{article}
\makeatletter
\newcommand\useleqno{\renewcommand\@eqnnum{\hb@[email protected]\p@{}%
                      \rlap{\normalfont\normalcolor
                        \hskip -\displaywidth(\theequation)}}}
\begin{document}
\begin{equation}
a + b = c          % numbered at right
\end{equation}

\bgroup
\useleqno
\begin{equation}
a + b = c
\end{equation}
\egroup

\begin{equation} 
a + b = c
\end{equation}

\end{document}

在此处输入图片描述

答案2

这些命令仅在 displaymath 模式下有效。尝试:

$$ E = m c^2 \eqno (1) $$
$$ E = m c^2 \leqno (2) $$

\endequation您的例子不能起作用,因为已经使用的定义\eqno

% from latex.ltx
\def\equation{$$\refstepcounter{equation}}
\def\endequation{\eqno \hbox{\@eqnnum}$$\@ignoretrue}

因此您可以定义自己的环境(完整的 MWE):

\documentclass{article}
% The definitions:
\makeatletter
\let\endeqno@equation\endequation
\def\endleqno@equation{\leqno \hbox{\@eqnnum}$$\@ignoretrue}
%
\def\lefteqnnum{\let\endequation\endleqno@equation}
\def\righteqnnum{\let\endequation\endeqno@equation}
\makeatother

\begin{document}

\begin{equation} E=mc^2 \end{equation}

\lefteqnnum
\begin{equation} E=mc^2 \end{equation}

\righteqnnum
\begin{equation} E=mc^2 \end{equation}

\end{document}

在此处输入图片描述

相关内容