移动方程式而不改变编号

移动方程式而不改变编号

简短的介绍:

方程出现的顺序我的文档的文本与我的方程出现的顺序不同tex 文档。通常,公式编号遵循在 tex 文档中出现的顺序。但是,我希望编号遵循在文本中出现的顺序。我如何更改公式编号以使其与在文本中出现的顺序相匹配?

详细说明:

我的文档中有几条很长的方程式,它们的宽度超过了文档允许的文本宽度。这些长方程式出现在文档中的多个位置,如下例所示 (MWE1)。

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{lscape}

\begin{document}

\lipsum[1]
\textbf{First reference of \eqref{eq:a}.}
\begin{equation} \label{eq:a}
A = aaaaaa
\end{equation}

\lipsum[2]
\textbf{First reference of \eqref{eq:b}.}
\begin{equation} \label{eq:b}
B = bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
\end{equation}

\lipsum[3]
\textbf{First reference of \eqref{eq:c}.}
\begin{equation} \label{eq:c}
C = cccccc
\end{equation}

\lipsum[4]
\textbf{First reference of \eqref{eq:d}.}
\begin{equation} \label{eq:d}
D = ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
\end{equation}

\lipsum[5]
\textbf{First reference of \eqref{eq:e}.}
\begin{equation} \label{eq:e}
E = eeeeee
\end{equation}

\lipsum[6]
\textbf{First reference of \eqref{eq:f}.}
\begin{equation} \label{eq:f}
F = fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\end{equation}

\end{document}

我对此问题的首选解决方案是将所有长方程式放在一个横向页面上,如下例所示(MWE2)。

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{lscape}

\begin{document}

\lipsum[1]
\textbf{First reference of \eqref{eq:a}.}
\begin{equation} \label{eq:a}
A = aaaaaa
\end{equation}

\lipsum[2]
\textbf{First reference of \eqref{eq:b}.}
\begin{landscape}
\begin{align}
B &= bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
\label{eq:b}
\\[40mm]
D &= ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
\label{eq:d}
\\[40mm]
F &= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\label{eq:f}
\end{align}
\end{landscape}

\lipsum[3]
\textbf{First reference of \eqref{eq:c}.}
\begin{equation} \label{eq:c}
C = cccccc
\end{equation}

\lipsum[4]
\textbf{First reference of \eqref{eq:d}.}

\lipsum[5]
\textbf{First reference of \eqref{eq:e}.}
\begin{equation} \label{eq:e}
E = eeeeee
\end{equation}

\lipsum[6]
\textbf{First reference of \eqref{eq:f}.}
\end{document}

然而,这会改变方程的编号,使得它不再与文本中方程出现的顺序一致。

问:如何更改 MWE2 中的方程编号,使其与 MWE1 中的方程编号相同?我无法想出一个解决方案,避免使用 硬编码长方程的方程编号\tag{nb}

答案1

这是一个可能的实现。在插入长方程的地方,你写下\sethere{<label>},方程将使用\taghere{<label>}而不是\label

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{pdflscape}

\newcommand{\sethere}[1]{\refstepcounter{equation}\label{#1}}
\newcommand{\taghere}[1]{\tag{\ref{#1}}}

\begin{document}

Note for the reader: some long equation appear on the
dedicated page~\pageref{longequations}

\lipsum[1]
\textbf{First reference of \eqref{eq:a}.}
\begin{equation} \label{eq:a}
A = aaaaaa
\end{equation}

\lipsum[2]
\textbf{First reference of \eqref{eq:b}.}\sethere{eq:b}
\begin{landscape}\label{longequations}
\begin{align}
B &= bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
\taghere{eq:b}
\\[40mm]
D &= ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
\taghere{eq:d}
\\[40mm]
F &= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\taghere{eq:f}
\end{align}
\end{landscape}

\lipsum[3]
\textbf{First reference of \eqref{eq:c}.}
\begin{equation} \label{eq:c}
C = cccccc
\end{equation}

\lipsum[4]
\textbf{First reference of \eqref{eq:d}.}\sethere{eq:d}

\lipsum[5]
\textbf{First reference of \eqref{eq:e}.}
\begin{equation} \label{eq:e}
E = eeeeee
\end{equation}

\lipsum[6]
\textbf{First reference of \eqref{eq:f}.}\sethere{eq:f}
\end{document}

也许最好将长方程式放在最后,但这是你的决定。

在此处输入图片描述

答案2

您可以使用\setcounter{equation}{<new>}来指定下一个方程的编号<new> + 1

% eqnumprob.tex  SE 568922
\documentclass[a5paper]{article}
\begin{document}
\pagestyle{empty}

Regular sequential equation numbers.

\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

Some out of sequence equation numbers.

\setcounter{equation}{57}
\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

\setcounter{equation}{-23}
\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

Now back to picking up the initial regular sequence numbers.

\setcounter{equation}{2}
\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}

\begin{equation}
x' + y^{2} = z_{j}^{2}
\end{equation}


\end{document}

在此处输入图片描述

答案3

如果您只关心它的打印效果:请\refstepcounter{equation}在您第一次引用它们之前使用,然后使用\tag带有标签的等式。

然而如果你使用\hyperref这将是一个非常糟糕的主意。

\documentclass[a4paper]{article}
\usepackage{amsmath}
\usepackage{lipsum}
\usepackage{lscape}

\begin{document}

\lipsum[1]
\textbf{First reference of \eqref{eq:a}.}
\begin{equation} \label{eq:a}
A = aaaaaa
\end{equation}

\lipsum[2]
\refstepcounter{equation}
\label{eq:b}
\textbf{First reference of \eqref{eq:b}.}
\begin{landscape}
\begin{align}
B &= bbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbbb
\tag{\ref{eq:b}}
\\[40mm]
D &= ddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddddd
\tag{\ref{eq:d}}
\\[40mm]
F &= fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff
\tag{\ref{eq:f}}
\end{align}
\end{landscape}

\lipsum[3]
\textbf{First reference of \eqref{eq:c}.}
\begin{equation} \label{eq:c}
C = cccccc
\end{equation}

\lipsum[4]
\refstepcounter{equation}
\label{eq:d}
\textbf{First reference of \eqref{eq:d}.}

\lipsum[5]
\textbf{First reference of \eqref{eq:e}.}
\begin{equation} \label{eq:e}
E = eeeeee
\end{equation}

\lipsum[6]
\refstepcounter{equation}
\label{eq:f}
\textbf{First reference of \eqref{eq:f}.}
\end{document}

相关内容