使用 XeTeX 时,超链接到目录中的超目标

使用 XeTeX 时,超链接到目录中的超目标

我正在尝试设置我的文档,以便每个章节标题也充当目录的超链接。在我的实际文档中,目录跨越几页,所以我希望这些链接指向目录中章节条目的实际位置。

我还使用 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 链接将不起作用。

我该如何解决这个问题?谢谢!

相关内容