我正在使用该hyperref
包在我的文档中创建超链接。目录->章节/节的链接效果很好,但我想知道是否有办法自动将节标题中的超链接插入回目录(节->目录)。以便更轻松地进行双向导航(尤其是在单击目录中的错误链接时)。
以防万一我在report
课堂上工作有关系,这是我现在所拥有的(最小化)版本。
\documentclass[11pt,a4paper]{report}
\usepackage{hyperref}
\begin{document}
First page
\clearpage
\tableofcontents
\clearpage
Blank page
\clearpage
\chapter{First chapter}
\end{document}
谢谢你的帮助!
答案1
以下是使用\hyperlink
,\hypertarget
机制的一种可能解决方案;
\hyperlink
使用 的重新定义可以方便地添加 ,\@makechapterhead
并且使用 的重新定义\@chapter
来放置相应的\hypertarget
:
\documentclass{report}
\usepackage{hyperref}
\makeatletter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}\string\hypertarget{chap\thechapter}{#1}}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\def\@makechapterhead#1{%
\vspace*{50\p@}%
{\parindent \z@ \raggedright \normalfont
\ifnum \c@secnumdepth >\m@ne
\huge\bfseries \@chapapp\space \thechapter
\par\nobreak
\vskip 20\p@
\fi
\interlinepenalty\@M
\Huge \bfseries \hyperlink{chap\thechapter}{#1}\par\nobreak
\vskip 40\p@
}}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter One}
\chapter{Test Chapter Two}
\chapter{Test Chapter Three}
\end{document}
这是同样的想法,这次使用titlesec
包及其explicit
放置\hyperlink
s 的选项:
\documentclass{report}
\usepackage[explicit]{titlesec}
\usepackage{hyperref}
\titleformat{\chapter}[display]
{\normalfont\huge\bfseries}{\chaptertitlename\ \thechapter}{20pt}
{\Huge\hyperlink{chap\thechapter}{#1}}
\titleformat{name=\chapter,numberless}[display]
{\normalfont\huge\bfseries}{}{-22pt}
{\Huge#1}
\makeatletter
\def\@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne
\refstepcounter{chapter}%
\typeout{\@chapapp\space\thechapter.}%
\addcontentsline{toc}{chapter}%
{\protect\numberline{\thechapter}\string\hypertarget{chap\thechapter}{#1}}%
\else
\addcontentsline{toc}{chapter}{#1}%
\fi
\chaptermark{#1}%
\addtocontents{lof}{\protect\addvspace{10\p@}}%
\addtocontents{lot}{\protect\addvspace{10\p@}}%
\if@twocolumn
\@topnewpage[\@makechapterhead{#2}]%
\else
\@makechapterhead{#2}%
\@afterheading
\fi}
\makeatother
\begin{document}
\tableofcontents
\chapter{Test Chapter One}
\chapter{Test Chapter Two}
\chapter{Test Chapter Three}
\end{document}
答案2
使用\hypertarget
\documentclass{book}
\usepackage{hyperref}
\begin{document}
\tableofcontents
\chapter{\protect\hyperlink{chap:\thechapter}{My chapter}}
\addtocontents{toc}{\protect\hypertarget{chap:\thechapter}{}}
\chapter{\protect\hyperlink{chap:\thechapter}{My chapter}}
\addtocontents{toc}{\protect\hypertarget{chap:\thechapter}{}}
foo
\end{document}