![hyperref、书签和 addchapter](https://linux22.com/image/364733/hyperref%E3%80%81%E4%B9%A6%E7%AD%BE%E5%92%8C%20addchapter.png)
\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}