这个问题与这个问题相关: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
。