我想将目录链接到每页的页脚。
我可以做到这一点感谢这个提示像这样:
# 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}