我正在尝试设置我的文档,以便每个章节标题也充当目录的超链接。在我的实际文档中,目录跨越几页,所以我希望这些链接指向目录中章节条目的实际位置。
我还使用 XeTeX(Overleaf 中的 XeLaTeX),因为我想使用 CharisSIL 字体。
我创建了这个最低限度可工作的示例来说明我正在尝试做的事情:
\documentclass{book}
\usepackage{hyperref}
\makeatletter
\let\oldchapter\chapter
% Handle star in chapter
\def\chapter{\@ifstar\starchapter\linkedchapter}
\def\starchapter{\oldchapter*}
% New linked chapter command
\newcommand{\linkedchapter}[2][\@empty]
{
\ifx#1\@empty \oldchapter[#2]{\hyperlink{toc.chapter.\thechapter}{#2}}
\else \oldchapter[#1]{\hyperlink{toc.chapter.\thechapter}{#2}}
\fi
}
\makeatother
% Renew the contentsline command
\let\hypercontentsline=\contentsline
\renewcommand{\contentsline}[4]{\hypertarget{toc.#4}{}\hypercontentsline{#1}{#2}{#3}{#4}%
}
\begin{document}
\frontmatter
{
\addtocontents{toc}{\protect\hypertarget{toc}{}}
\tableofcontents
}
\chapter{Preface}
\mainmatter
\chapter{Ch1}
\chapter{Ch2}
\chapter{Ch3}
\backmatter
\chapter{Epilogue}
\end{document}
如果我使用 Overleaf 中的 pdfLaTeX 进行编译,它可以工作,每个章节标题(包括前言和后记)都会链接到目录。
但是,如果我使用 XeTeX (XeLaTeX) 编译它,Preface 链接将不起作用。
我该如何解决这个问题?谢谢!