引用方程中的单个符号?

引用方程中的单个符号?

有没有办法使用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*}

有没有办法equationalign*环境中使用计数器?(我知道*“不计行数”的代表,但我想在需要的地方手动添加引用,而不用对每一行进行编号。)

答案1

之所以\label不能按预期工作,是因为amsmath包对其进行了重新定义。

为了提供可用的版本,请使用 的原始版本,\label该版本存储amsmath在 中\ltx@label。这将适用于alignalign*\[...\]

附注:不要使用$$...$$,这是弃用的语法,请改用\[...\]

\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}

在此处输入图片描述

相关内容