chapter* 和 pdfbookmark 的链接位置错误

chapter* 和 pdfbookmark 的链接位置错误

文档中带有 documentclass 的部分章节scrartcl不应列在目录中,但我希望将它们列在 PDF 索引中。因此,我曾经\pdfbookmark获取过索引条目。不幸的是,创建的链接放置不正确。链接似乎指向上一章的最后一行。我如何获取正确的链接?

\documentclass[twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[]{hyperref}

\begin{document}
\tableofcontents
\chapter{First Chapter}
\Blindtext%

\pdfbookmark{Second Chapter}{2nd}\chapter*{Second Chapter}
\Blindtext%
\Blindtext%

\end{document}

答案1

您可以使用:

\setchapterpreamble[o]{\pdfbookmark{Second Chapter}{2nd}}

之前\chapter*有一个带有锚点的书签章节标题,但已在新页面上。因此,如果您选择书签,PDF 查看器将跳转到章节标题的开头:

\documentclass[twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[]{hyperref}

\begin{document}
\tableofcontents
\chapter{First Chapter}
\Blindtext%

\setchapterpreamble[o]{\pdfbookmark{Second Chapter}{2nd}}
\chapter*{Second Chapter}
\Blindtext%
\Blindtext%

\end{document}

在此处输入图片描述

有关 的更多信息,请参阅 KOMA-Script 手册\setchapterpreamble

\cleardoublepage另一个建议是在您的示例之前添加一个明确的内容\pdfbookmark

\documentclass[twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[]{hyperref}

\begin{document}
\tableofcontents
\chapter{First Chapter}
\Blindtext%

\cleardoublepage
\pdfbookmark{Second Chapter}{2nd}
\chapter*{Second Chapter}
\Blindtext%
\Blindtext%

\end{document}

此处的锚点位于文本区域的顶部,因此,如果跳转到书签,则章节标题上方会有更多的空白:

文本区域顶部的书签

这两个建议的区别取决于章节标题的垂直位置,例如,如果你使用类似

\RedeclareSectionCommand[beforeskip=-.5\textheight]{chapter}

我会采用第一个建议。

答案2

只需移到\pdfbookmark{Second Chapter}{2nd}后面即可\chapter*

查看完整代码:

\documentclass[twoside]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{blindtext}
\usepackage[]{hyperref}

\begin{document}
\tableofcontents
\chapter{First Chapter}
\Blindtext%

\chapter*{Second Chapter}
\pdfbookmark{Second Chapter}{2nd} % <===================================
\Blindtext%
\Blindtext%

\end{document}

点击书签中的第二章(德语“Lesezeichen”)后的结果:

生成的 pdf

答案3

您可以直接在章节定义中插入 /pdfbookmark 命令

\chapter{\pdfbookmark{chaptername}{chaptername}NAME_OF_CHAPTER}

在这种情况下,pdf 书签指向该章节的第一行。

相关内容