同一方程式有不同的标签,以便在不同的参考文献中选择合适的标签

同一方程式有不同的标签,以便在不同的参考文献中选择合适的标签

假设我有一个方程

a = b + c   (1.5)

在第 2 章中。在第 2 章中,我想将其称为“方程 (1.5)”。但是从其他章节开始,我想以不同的方式引用此方程,例如“方程 (2;1.5)”。

通常我把方程写成以下形式

\begin{equation}
\label{1.5}
a = b + c.
\end{equation}

并在参考处写上“ \eqref{1.5}”。但是我无法用两个标签标记同一个方程式,以便在不同的参考文献中选择合适的方程式。我该怎么做呢?

答案1

不要使用这样的标签名称,因为1.5它们容易出错,因为方程式编号会发生变化(这正是使用易于记忆的名称而不是数字的意义所在)

我正在使用它zref来存储章节,然后使用\moreref(作为包装器\zref@extract)提取它

\eqref不适用于zref-labels,因此请重新定义\eqref或提供包装器。

\documentclass{book}


\usepackage{amsmath}

\numberwithin{equation}{section}
\renewcommand{\theequation}{\arabic{section}.\arabic{equation}}
\usepackage[user]{zref}


\makeatletter
\zref@newprop{chapter}{\thechapter}
\zref@addprop{main}{chapter}

\newcommand{\moreref}[1]{%
  \zref@ifrefundefined{#1}{%
  }{%
    (equation \zref@extract{#1}{chapter},\zref{#1})%
  }%
}

\newcommand{\zeqref}[1]{%
  equation \zref{#1}%
}

\makeatother
\begin{document}


\chapter{Number One}
\chapter{Number Two}


\section{A section}
\begin{equation}
\zlabel{someequation}
a = b + c.
\end{equation}

In \moreref{someequation} or \zeqref{someequation}

\end{document}

使用丑陋的黑客进行更新

解释:该\morelabel命令设置了两个标签,一个是假的,一个是真的。

因为equation(或者更确切地说:amsmath不允许在内部有两个标签equation并重新定义,所以\label我使用了外部标签定义来存储假标签\@currentlabel

然后命令\longref提取标签。more::#1

\documentclass{book}


\usepackage{amsmath}

\numberwithin{equation}{section}



\renewcommand{\theequation}{\arabic{section}.\arabic{equation}}

\makeatletter
\let\latex@@label\label

\newcommand{\morelabelformat}{%
  (equation \thechapter,\theequation)%
}
\newcommand{\morelabel}[1]{%
  \let\@oldcurrentlabel\@currentlabel%
  \edef\@currentlabel{\morelabelformat}
  \latex@@label{more::#1}%
  \let\@currentlabel\@oldcurrentlabel
  \label{#1}%
}

\newcommand{\longref}[1]{%
  \@ifundefined{r@more::#1}{%
    % Do nothing!
  }{%
    \ref{more::#1}%
  }%
}
\makeatother

\begin{document}
\chapter{Number One}
\chapter{Number Two}


\section{A section}
\begin{equation}
\morelabel{someequation}
a = b + c.
\end{equation}

In \longref{someequation} or \eqref{someequation}

\end{document}

在此处输入图片描述

答案2

很抱歉,但对于问题中描述的情况,最简单的解决方案是:不要只手动添加标签,还要手动添加引用。换句话说:根本不要使用标签引用机制。

Knuth 也手工对物品进行了编号。

相关内容