添加目录链接

添加目录链接

我想将目录链接到每页的页脚。

我可以做到这一点感谢这个提示像这样:

# In the hyperref section of the document preamble
\cfoot{\hyperlink{page.1}{TOC}}

但是如果我更改文档使其具有标题页,并且目录移至第二页,则我需要更改这一点。有没有更好的方法来链接到目录?添加\label{}然后使用ref{}似乎不起作用。

答案1

您可以使用\hypertarget它在目录页上创建锚点,例如在目录页的开头或将目录标题变成锚点。以下是您可以执行此操作的示例:

\documentclass{report}
\usepackage{fancyhdr}
\usepackage{hyperref}
\pagestyle{fancy}
\renewcommand{\headrulewidth}{0pt}% removes header line
\fancypagestyle{plain}{% for chapter starting pages
  \fancyhf{}% clears header fields
  \cfoot{\hyperlink{contents}{TOC}}}
\cfoot{\hyperlink{contents}{TOC}}% links the TOC at the center of the page footer
\begin{document}
Title page
\cleardoublepage
\hypertarget{contents}{}
\tableofcontents
\chapter{One}
\chapter{Two}
\end{document}

答案2

有几种方法可以做到这一点。一种方法是将目录的页码直接写入文件中,.aux如下所示。我相信有一个更好、更高级的解决方案,但现在(凌晨 1 点)我无法找到它。下面的代码假设您想要链接到第一个目录而不是它的标题。

\documentclass{book}

\usepackage{hyperref}
\usepackage{fancyhdr}
\pagestyle{fancy}
\def\tocpage{1}% Default value will be set to correct one at \begin{document}
\cfoot{\hyperlink{page.\tocpage}{TOC}}

\begin{document}

Titlepage

\cleardoublepage % Important to get the page number right
\makeatletter
% Write directly to the `.aux` file:
\write\@auxout{\gdef\noexpand\tocpage{\number\value{page}}}%
\makeatother
\tableofcontents

\chapter{test}
\chapter{test}
\chapter{test}
\chapter{test}

\end{document}

相关内容