如何强制超链接指向一段文本而不是目录中的相应部分?

如何强制超链接指向一段文本而不是目录中的相应部分?

我有一个 LaTeX 文档,其中我使用“hyperref”包在文档的不同部分之间创建链接。链接从一个单词指向另一个部分中的某段文本。我使用“book”文档类。在我创建目录之前,链接工作正常。一旦我创建了目录,链接就不再指向目标中的文本,而是指向目录中的相应部分。

我怎样才能继续使用目录并创建直接指向文档中某段文本的链接?


编辑:最低限度的工作示例

\documentclass{book}

\usepackage[dvipdfm]{hyperref}

% Defining a new command for safely creating targets in the section title
\newcommand{\targetInTitle}[2]{\texorpdfstring{\protect\hypertarget{#1}{#2}}{}}

\begin{document}

\tableofcontents
\newpage

\section{\targetInTitle{section1}{Section 1}}

Here is a \hyperlink{section1}{link} which suppose to show me the title of this section on the top of page 2 but, instead, it refers me to the table of contents on page 1.

\end{document}

dvipdfm 操作中还有一个警告,

$ dvipdfm test.dvi
test.dvi -> test.pdf
[1][2
xdvipdfmx:warning: Object @section1 already defined.
]
9131 bytes written

答案1

由于目标也移动到了目录中,因此您创建了两次目标。例如,您可以使用 NoHyper 环境来隐藏目录中的目标:

\documentclass{book}

\usepackage[dvipdfm]{hyperref}
% Defining a new command for safely creating targets in the section title
\newcommand{\targetInTitle}[2]{\texorpdfstring{\protect\hypertarget{#1}{#2}}{}}

\begin{document}

\begin{NoHyper}
\tableofcontents
\end{NoHyper}
\newpage

\section{\targetInTitle{section1}{Section 1}}

Here is a \hyperlink{section1}{link} which suppose to show me the title of this section on the top of page 2 but, instead, it refers me to the table of contents on page 1.

\end{document}

相关内容