简短的介绍:
方程出现的顺序我的文档的文本与我的方程出现的顺序不同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}