我正在尝试使用\addcontentsline
,但无法使其正常工作。它生成的链接要么跳转到之前的页面,要么跳过章节标题,具体取决于我将其放在哪里。这是 MWE
% !TEX encoding = UTF-8 Unicode
% !TEX TS-program = xelatex
\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\pagestyle{plain}
\tableofcontents
\chapter{A}
\lipsum[1]
\phantomsection
\addcontentsline{toc}{chapter}{B} %% <-- jumps to the page before
\chapter*{B}
\phantomsection
\addcontentsline{toc}{chapter}{B} %% <-- jumps over the chapter header
\lipsum[2]
\chapter{C}
\lipsum[3]
\end{document}
我尝试将\clearpage
或\newpage
放在前面,但都没有用。
提前致谢!
答案1
您有一份双面文档,因此您需要一个,\cleardoublepage
以便锚点\phantomsection
位于正确的页面上。或者,您也可以将其放在章节下方的某个位置并将其向上移动,请参阅 raisebox 示例。
\documentclass{book}
\usepackage{lipsum}
\usepackage{hyperref}
\begin{document}
\pagestyle{plain}
\tableofcontents
\chapter{A}
\lipsum[1]
\cleardoublepage
\phantomsection
\addcontentsline{toc}{chapter}{B} %% <-- jumps to the page before
\chapter*{B}
\phantomsection
\addcontentsline{toc}{chapter}{B} %% <-- jumps over the chapter header
\raisebox{3cm}[0pt][0pt]{\phantomsection HERE}\addcontentsline{toc}{chapter}{B} %%
\lipsum[2]
\chapter{C}
\lipsum[3]
\end{document}