[Tex/LaTex] Modifying the appearance of bookmarks through the ‘bookmark’ and ‘hyperref’ packages

appendicesbookmarkshyperref

I'm adding bookmarks to my PDF document, but I'm not completely satisfied with how they appear. I found this thread, which recommends the bookmark package, and shows an example of how to group all appendices. I'd like to have the bookmarks appear as shown in the answer to the linked thread. I.e.

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

However, when I try the same, I get no group named "Appendices", and appendix B shows up as the child of appendix A. Below is an 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}

Question 1:

What am I doing wrong in the above code?

Question 2:

I haven't fully decided on the appearance of the table of contents yet, and I am contemplating having the appendices listed as section-level entries within an "Appendices" chapter. Would this solve the problem? How can I lower the table of contents entry by one level for the appendix chapters only? The appendix chapters should still appear as chapters for all other purposes.

Edit: These questions appear to have answers here and here.

Question 3:

Also, I'd like to have the bookmark numbering end with a period (e.g. "A. First appendix" instead of "A First appendix"). How can I achieve this?

Best Answer

After a little tinkering, plus a little inspiration from here and there, I've com up with a solution.

The bookmarksetupnext{level=part} simply sets the next bookmark to have the part level. There is no bookmark named "Appendices", and because the next bookmark is Appendix A, this appendix chapter will be changed to have the level of a part. Appendix B is still unchanged, so it remains at the chapter level and hence the bookmark will be a child of Appendix A.

Adding replacing the bookmarksetupnext{level=part} with \pdfbookmark[-1]{Appendices}{bookmark:appendices} solves this problem.

To add a table of contents (TOC) entry named "Appendices", a command like \cftaddtitleline{toc}{chapter}{Appendices}{} can be used. This reuquired the tocloft package. This command will reference the previous bookmark, so a bookmark must be added at the appropriate place. Adding the the following lines just before \begin{appendices} will place create a TOC entry which points to the "Appendices" page. For a two-sided document, the \cleardoublepage command should be used instead. The provided code omits the page number in the TOC entry. I chose to do this because the "Appendices" page is empty. The page number can be manually added in the last, empty brace.

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

To lower the appendix chapters, sections and subsections by one level, the following code can be added before the first appendix chapter. With the default TOC depth of 2, the appendix subsections will be hidden from the TOC. To display these, increase the TOC depth as per usual by the command \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

Below is a complete example. I've also added another part-level bookmark titled "Body", just to make the bookmarks in the PDF viewer line up properly. The "Body" bookmark points to the TOC.

\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}

Output

The last question, on how to redefine bookmark styles, would be better to have as a separate question.