我想要指向目录页面的超链接。(在我的 MWE 中,链接位于章节标题中,但这对此处的讨论没有影响)。我的 MWE:
\documentclass{article}
\usepackage{hyperref}
\usepackage{blindtext}
\let\oldtableofcontents\tableofcontents
\renewcommand{\tableofcontents}[0]{\label{toc}\oldtableofcontents}
\begin{document}
First page\newpage
\tableofcontents\newpage
\section{Premier. Go to \hyperref[toc]{toc}}
\blindtext \blindtext
\section{deuxieme. Go to \hyperref[toc]{toc}}
\blindtext \blindtext
\section{Troisieme. Go to \hyperref[toc]{toc}}
\blindtext \blindtext
\end{document}
它只能部分工作:链接在那里,但如果我点击它们,它会转到“首页”,而不是目录页。我重新定义了\tableofcontents
,以便在前面放置一个标签\tableofcontents
,但我猜这是问题所在。在原始命令中\tableofcontents
,必须在开头进行一些初始化,如\newpage
或类似,这会导致问题。
答案1
使用\hypertarget
和\hyperlink
放置目标并链接到它们。您可以使用\addtocontents
将写入\hypertarget
.toc 文件。
\documentclass{article}
\usepackage{hyperref}
\usepackage[english]{babel}
\usepackage{blindtext}
\begin{document}
First page\newpage
\addtocontents{toc}{\protect\hypertarget{toc}{}}
\tableofcontents\newpage
\section[Premier]{Premier. Go to \hyperlink{toc}{toc}}
\blindtext \blindtext
\section[Deuxieme]{Deuxieme. Go to \hyperlink{toc}{toc}}
\blindtext \blindtext
\section[Troisieme]{Troisieme. Go to \hyperlink{toc}{toc}}
\blindtext \blindtext
\end{document}
或者,更好的是,\hypertarget
直接放置在 之前\tableofcontents
,但\clearpage
先制作。
\clearpage
\hypertarget{toc}{}
\tableofcontents
这确保链接位于内容标题上方。此\addtocontents
方法将目标置于标题下方。