通过“bookmark”和“hyperref”包修改书签的外观

通过“bookmark”和“hyperref”包修改书签的外观

我正在为我的 PDF 文档添加书签,但我对它们的显示效果并不完全满意。我发现线程,推荐该bookmark软件包,并显示如何分组所有附录的示例。我希望书签显示为链接线程的答案中所示。即

1. First chapter
|-- 1.1. First section
|----- 1.1.1. First subsection
|----- 1.1.2. Second subsection
|-- 1.2. Second section
2. Second chapter
Appendices
|-- A. First appendix
|-- B. Second appendix

但是,当我尝试相同操作时,没有得到名为“附录”的组,并且附录 B 显示为附录 A 的子项。下面是 MWE。

\documentclass[11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[hidelinks]{hyperref}
\usepackage[numbered,open]{bookmark}
\usepackage[page,titletoc]{appendix}
\usepackage{lipsum}

\renewcommand{\appendixpagename}{Appendices\thispagestyle{empty}}

\begin{document}

\tableofcontents

\chapter{First chapter}
\lipsum[1-2]

\section{First section}
\lipsum[3-6]

\subsection{First subsection}
\lipsum[7-10]

\subsection{Second subsection}
\lipsum[11-14]

\section{Second section}
\lipsum[15-18]

\chapter{Second chapter}
\lipsum[19-22]

\begin{appendices}

\bookmarksetupnext{level=part}
\chapter{First appendix}
\lipsum[23-26]

\chapter{Second appendix}
\lipsum[27-30]

\end{appendices}

\end{document}

问题 1:

我在上面的代码中做错了什么?

问题2:

我还没有完全决定目录的外观,我正在考虑将附录列为“附录”章节中的节级条目。这能解决问题吗?我怎样才能将附录章节的目录条目降低一级?对于所有其他目的,附录章节仍应作为章节出现。

编辑:这些问题似乎有答案这里这里

问题 3:

另外,我希望书签编号以句点结尾(例如“A. 第一个附录”而不是“A 第一个附录”)。我该如何实现?

答案1

经过一些修补,再加上一些来自各处的启发,我找到了一个解决方案。

只需将下一个书签设置bookmarksetupnext{level=part}为具有该part级别即可。没有名为“附录”的书签,并且由于下一个书签是附录 A,因此此附录章节将更改为具有部分级别。附录 B 仍保持不变,因此它仍处于章节级别,因此书签将成为附录 A 的子级。

添加替换bookmarksetupnext{level=part}可解决\pdfbookmark[-1]{Appendices}{bookmark:appendices}这个问题。

要添加名为“附录”的目录 (TOC) 条目,\cftaddtitleline{toc}{chapter}{Appendices}{}可以使用类似命令。这需要包tocloft。此命令将引用上一个书签,因此必须在适当的位置添加书签。在将创建指向“附录”页面的目录条目之前添加以下几行\begin{appendices}。对于双面文档,\cleardoublepage应改用命令。提供的代码省略了目录条目中的页码。我选择这样做是因为“附录”页面是空的。可以在最后一个空括号中手动添加页码。

\clearpage
\phantomsection
\pdfbookmark[-1]{Appendices}{bookmark:appendices}
\cftaddtitleline{toc}{chapter}{Appendices}{}

要将附录章节、节和小节降低一级,可以在第一个附录章节之前添加以下代码。默认目录深度为 2,附录小节将从目录中隐藏。要显示这些,请像往常一样使用命令增加目录深度\setcounter{tocdepth}{3}

\makeatletter
\addtocontents{toc}{
  \begingroup
  \let\protect\l@chapter\protect\l@section
  \let\protect\l@section\protect\l@subsection
  \let\protect\l@subsection\protect\l@subsubsection
}
\makeatother

下面是一个完整的示例。我还添加了另一个名为“正文”的部分级书签,只是为了使 PDF 查看器中的书签正确排列。“正文”书签指向目录。

\documentclass[11pt]{scrreprt}
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[hidelinks]{hyperref}
\usepackage[numbered,open]{bookmark}
\usepackage[page]{appendix}
\usepackage{tocloft}
\usepackage{lipsum}

\renewcommand{\appendixpagename}{Appendices\thispagestyle{empty}}
\setcounter{tocdepth}{3}

\begin{document}

\pdfbookmark[-1]{Body}{bookmark:body}
\tableofcontents

\chapter{First chapter}
\lipsum[1-2]

\section{First section}
\lipsum[3-6]

\subsection{First subsection}
\lipsum[7-10]

\subsection{Second subsection}
\lipsum[11-14]

\section{Second section}
\lipsum[15-18]

\chapter{Second chapter}
\lipsum[19-22]

\clearpage
\phantomsection
\pdfbookmark[-1]{Appendices}{bookmark:appendices}
\cftaddtitleline{toc}{chapter}{Appendices}{}
\begin{appendices}
\makeatletter
\addtocontents{toc}{
  \begingroup
  \let\protect\l@chapter\protect\l@section
  \let\protect\l@section\protect\l@subsection
  \let\protect\l@subsection\protect\l@subsubsection
}
\makeatother

\chapter{First appendix}
\lipsum[23-24]

\section{First appendix section}
\lipsum[25-28]

\subsection{First appendix subsection}
\lipsum[29-32]

\subsection{Second appendix subsection}
\lipsum[33-36]

\section{Second appendix section}
\lipsum[37-40]

\chapter{Second appendix}
\lipsum[41-44]

\end{appendices}

\end{document}

输出

最后一个问题,关于如何重新定义书签样式,最好作为一个单独的问题。

相关内容