Hyperref 将项目的标签与方程式关联起来

Hyperref 将项目的标签与方程式关联起来

这个问题与这个问题相关:Hyperref 将方程的标签与项目关联起来

我有一个脚本,它修复了对\ref命令调用的方程式的引用,并在命令中对其进行了更改。它还修复了对来自或进入的\eqref其他 LaTeX 对象的引用。以下是一些示例:\eqref{LABEL}(\ref{LABEL})\ref{LABEL}

  • eq.~\ref{eq:1}-->eq.~\eqref{eq:1}
  • figure~(\ref{fig:1})-->figure~\ref{fig:1}

我通过查看.aux文件(使用hyperref包)来做到这一点。对于方程式的引用,我在文件中有这种字符串.aux

\newlabel{eq2}{{2}{1}{Section title}{equation.1.2}{}}

我发现这个方法中存在一些错误。这是一个 MWE:

\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{hyperref}

\pagestyle{empty}
\begin{document}

\section{Section title}
Some text
\begin{enumerate}
\item Some text
\begin{equation}
x+y=z
\end{equation}
Some text\label{item1}
\end{enumerate}

\end{document}

在这种情况下,我有以下字符串:

\newlabel{item1}{{1}{1}{Section title}{equation.1.1}{}}

.aux文件中,但标签item1没有引用方程式。

这可以修复吗?

答案1

文档第 5.3 节对此进行了描述。默认情况下,锚名是全局设置的。

您可以使用以下选项localanchorname 获取本地锚点:

\hypersetup{localanchorname=true}

编辑

正如评论中提到的,localanchorname已弃用。锚点的名称(存储在 中\@currentHref)也可以由其他包和代码设置或使用,如果不清楚这是全局命令还是本地命令以及它是否可以转义组,则会出现问题。使用\MakeLinkTarget或 时,新的 PDF 管理\@currentHref始终是全局设置的。

作为替代方案,现在可以将其他属性存储在辅助文件中。因此,您可以添加一个额外的标签:

\documentclass[11pt]{article}
\usepackage{amsmath}
\usepackage{hyperref}

\pagestyle{empty}
\AddToHookWithArguments{label}{\RecordProperties{#1-extra}{target,counter}}
\begin{document}

\section{Section title}
Some text
\begin{enumerate}
\item Some text
\begin{equation}
x+y=z
\end{equation}
Some text\label{item1}
\end{enumerate}

\end{document}

这将存储在 aux 文件中:

\new@label@record{item1-extra}{{target}{equation.1.1}{counter}{enumi}}
\newlabel{item1}{{1}{1}{Section title}{equation.1.1}{}}

因此您可以推断item1目标equation.1.1与(枚举)计数器相关enumi

相关内容