hyperref、书签和 addchapter

hyperref、书签和 addchapter

\addchap{}在该章节以下的课堂部分中使用时,scrbook第一次使用后无法获得正确的书签跳转标记。实际上,这意味着一旦您单击指向章节 >1 中某个部分的书签,您最终总会进入第 1 章。我提供了一个例子:一旦您单击书签“失败的书签第二介绍”,它会将您带到“第一介绍”部分,而不是相应的部分。scrhack似乎没有帮助,我该如何解决这个问题?

此图片中突出显示了失败的书签

\documentclass{scrbook}
\usepackage[english]{babel}
\usepackage[bookmarksopen,bookmarksopenlevel=0,bookmarksdepth=1]{hyperref} 
\usepackage{lipsum}
\usepackage{scrhack}
\begin{document}
\tableofcontents

\part{A part}
\addchap{First Chapter}
\section{First Introduction}
\lipsum[1-5]
\section{First Explanation}
\lipsum[4-5]

\part{Second part}
\addchap{Second Chapter}
\lipsum[6-7]
\section{Failing bookmark Second Introduction}
\lipsum[9-10]
\section{Failing bookmark Second Explanation}
\lipsum

\part{Working Bookmark Part}
\chapter{Working Bookmark Chapter}
\lipsum[6-7]
\section{Working Bookmark Introduction}
\lipsum[9-10]
\section{Working Bookmark Explanation}
\lipsum

\end{document}

答案1

您需要确保\theHsection-- hyperref 用于链接的 id -- 的定义方式对每个部分都是唯一的。在您的示例中,它通过将 \thepart 添加到 来工作\theHsection。如果您的实际文档中有更多未编号的章节,那么您必须添加一些额外的计数器,并在每次 \addchapter 时增加该计数器。

\documentclass{scrbook}
\usepackage[english]{babel}
\usepackage[bookmarksopen,bookmarksopenlevel=0,bookmarksdepth=1]{hyperref}
\usepackage{lipsum}
\usepackage{scrhack}
\renewcommand*\thesection{\arabic{section}}
\renewcommand\theHsection{\thepart-\HyperLocalCurrentHref-\thesection}
\begin{document}
\tableofcontents

\part{A part}
\addchap{First Chapter}
\section{First Introduction}
\lipsum[1-5]
\section{First Explanation}
\lipsum[4-5]

\part{Second part}
\addchap{Second Chapter}
\lipsum[6-7]
\section{Failing bookmark Second Introduction}
\lipsum[9-10]
\section{Failing bookmark Second Explanation}
\lipsum

\part{Working Bookmark Part}
\chapter{Working Bookmark Chapter}
\lipsum[6-7]
\section{Working Bookmark Introduction}
\lipsum[9-10]
\section{Working Bookmark Explanation}
\lipsum

\end{document}

相关内容