在子节内编号时,超链接指向错误的位置

在子节内编号时,超链接指向错误的位置

我的问题与使用 hyperref 包对小节进行编号有关。我发现引用方程式会打印正确的数字,但单击时会转到错误的位置。我发现可以通过添加选项来解决这个问题

hypertexnames = false

加载 hyperref 时。但是我想知道为什么这个问题会存在(如果添加“hypertexnames = false”,我不明白,这是否会引起其他问题)?

下面的示例,单击时引用会转到错误的位置。它应该转到“第二个方程”,但却转到了“第一个方程”。

可以通过加载 \usepackage[hypertexnames = false]{hyperref} 而不是 \usepackage{hyperref} 来修复此示例。

\documentclass{article}

\usepackage{amsmath}

\numberwithin{equation}{subsection}

\usepackage{hyperref}

\title{Equation numbering troubleshooting}
\author{Author}
\date{September 2022}

\begin{document}

\maketitle

\section{}
\subsection{}
    \begin{equation}
        First equation
    \end{equation}

\newpage    
\subsection{}
    \begin{equation}\label{equation}
        Second equation
    \end{equation}
Equation \eqref{equation}. Equation \ref{equation}.

\end{document}

答案1

问题在于,您的代码\numberwithin是在加载 hyperref 之前使用的,而不是在加载 hyperref 之后使用的。

这也是为什么您的代码会在控制台和 .log 文件中出现许多警告的原因:

pdfTeX warning (ext4): destination with the same ident
ifier (name{equation.1.1}) has been already used, duplicate ignored
<to be read again> 
                   \relax 
l.25     \begin{equation}
                         \label{equation}pdfTeX warning (ext4): destination wit
h the same identifier (name{equation.1.1}) has been already used, duplicate ign
ored
<to be read again> 
                   \relax 
l.25     \begin{equation}
                         \label{equation}pdfTeX warning (ext4): destination wit
h the same identifier (name{equation.1.1}) has been already used, duplicate ign
ored
<to be read again> 
                   \relax 
l.25     \begin{equation}
                         \label{equation}pdfTeX warning (ext4): destination wit
h the same identifier (name{equation.1.1}) has been already used, duplicate ign
ored
<to be read again> 
                   \relax 
l.25     \begin{equation}
                         \label{equation} [2] (./test.aux) )
(see the transcript file for additional information)<

根据经验法则,确保\numberwithin(以及影响 LaTeX 计数器基础设施的任何其他事项)得到执行加载包 hyperref — 这样 hyperref\theH...用于传递命名目的地名称的宏也会进行调整:

\documentclass{article}
\usepackage{amsmath}
\usepackage{hyperref}

\numberwithin{equation}{subsection}

\title{Equation numbering troubleshooting}
\author{Author}
\date{September 2022}

\begin{document}

\maketitle

\section{}
\subsection{}
    \begin{equation}
        First equation
    \end{equation}

\newpage    
\subsection{}
    \begin{equation}\label{equation}
        Second equation
    \end{equation}
Equation \eqref{equation}. Equation \ref{equation}.

\end{document}

相关内容