我想写一些东西
\begin{align}
f(x) & = x + 1 \nonumber \\
& =: \eqref{eq:foo} \label{eq:foo} \nonumber \\
g(x) & = x + 2 \nonumber \\
& =: \eqref{eq:bar} \label{eq:bar} \nonumber
\end{align}
但 amsmath 不允许我这样做:
!软件包 amsmath 错误:多个 \label:标签‘eq:foo’将丢失。请参阅 amsmath 软件包文档以获取解释。输入 H 可立即获得帮助....
那么我该怎么做才能解决这个问题呢?
有趣的是
\begin{align}
f(x) & = x + 1 \nonumber \\
& =: \eqref{eq:foo} \label{eq:foo} \nonumber
\end{align}
被 LaTeX 接受,但即使我多次运行 LaTeX,引用始终保持为 (??)。
答案1
我觉得这样做很有争议。无论如何,下面是:
\documentclass{article}
\usepackage{amsmath}
\makeatletter
\let\latexlabel\ltx@label
\makeatother
\newcommand{\assignnumber}[1]{%
\refstepcounter{equation}\latexlabel{#1}\eqref{#1}%
}
\begin{document}
Here's a normal equation
\begin{equation}
0=0
\end{equation}
and now the thing you want
\begin{align*}
f(x) & = x + 1 \\
& =: \assignnumber{eq:foo} \\
g(x) & = x + 2 \\
& =: \assignnumber{eq:bar}
\end{align*}
with another equation to check the assigned numbers are correct
\begin{equation}
1=1
\end{equation}
with references to \eqref{eq:foo} and \eqref{eq:bar}.
\end{document}
大部分是覆盖amsmath
分配数字和标签的方式。