有没有办法使用equation
计数器来引用方程式中的单个符号而不是整个方程式?例如像这样
\documentclass[10pt]{scrartcl}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\begin{document}
$$\Phi(x)\underset{(1)}{=}\lambda x~,$$
Reference (1) later in the text.
\end{document}
整个方程式和符号引用应该使用相同的计数器,这样它们就不会互相干扰,并且符号引用应该在$$...$$
良好的align*
环境中工作。
我第一次尝试实现这个看起来像
\documentclass[10pt]{scrartcl}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\newcommand{\oplabel}[1]{\refstepcounter{equation}(\theequation\label{#1})}
\begin{document}
$$\Phi(x)\underset{\oplabel{somename}}{=}\lambda x~,$$
Reference \eqref{somename} later in the text.
\end{document}
它适用于$$...$$
,但对于\begin{align}...\nonumber\end{align}
和均不适用\begin{align*}...\end{align*}
。
有没有办法equation
在align*
环境中使用计数器?(我知道*
“不计行数”的代表,但我想在需要的地方手动添加引用,而不用对每一行进行编号。)
答案1
之所以\label
不能按预期工作,是因为amsmath
包对其进行了重新定义。
为了提供可用的版本,请使用 的原始版本,\label
该版本存储amsmath
在 中\ltx@label
。这将适用于align
和align*
\[...\]
。
附注:不要使用$$...$$
,这是弃用的语法,请改用\[...\]
。
\documentclass[10pt]{scrartcl}
\usepackage{amsmath}
\usepackage[utf8]{inputenc}
\makeatletter
\newcommand{\oplabel}[1]{\refstepcounter{equation}(\theequation\ltx@label{#1})}
\makeatother
\begin{document}
\[\Phi(x)\underset{\oplabel{somename}}{=}\lambda x,\]
\begin{align}
\Phi(x)&\underset{\oplabel{someothername}}{=}\lambda x~ \nonumber
\end{align}
\begin{align*}
\Phi(x)&\underset{\oplabel{yetanothername}}{=}\lambda x~
\end{align*}
Reference \eqref{someothername} or \eqref{somename} or \eqref{yetanothername} later in the text.
\end{document}