通常 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}