[Tex/LaTex] Section numbers in PDF bookmarks

bookmarkspdf

I need to write section numbers in PDF bookmarks, but only for section (and not for subsections etc.). Desired result:

Now I use bookmark package, so I can write numbers for every bookmark with numbered option. It is possible, to show numbers only for top-level bookmarks? (Another-leveled items like subsections and deeper must be showed in bookmarks, but without numbers)

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage[
  open,
  openlevel=2,
  atend,
  numbered
]{bookmark}
\makeatletter
\renewcommand{\Hy@numberline}[1]{#1. }
\makeatother

\begin{document}
\section{Bla bla}
...
\subsection{Lorem}
...
\subsection{ipsum}
..
\section{Bla bla bla}
\end{document}

Best Answer

Option addtohook of package bookmark allows to change the settings for a bookmark in dependence of some parameters such as the bookmark level. Thus the following would solve the problem:

\bookmarksetup{
  numbered,
  addtohook={%
    \ifnum\bookmarkget{level}>1 %
      \bookmarksetup{numbered=false}%
    \fi
  },
}

Unhappily option numbered is evaluated before the hook in \bookmark is executed, see the definition of \Hy@writebookmark in package bookmark. Thus the following example changes the effect of option numbered instead:

\documentclass[a4paper,12pt]{article}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}

\usepackage[atend]{bookmark}

\bookmarksetup{
  open,
  openlevel=2,
  numbered,
  addtohook={%
    \ifnum\bookmarkget{level}>1 %
      \DisableBookmarkNumbering
    \fi
  },
}
\makeatletter
\newcommand*{\DisableBookmarkNumbering}{%
  \let\numberline\@gobble
  % The followings are not needed for subsections and below
  % \let\booknumberline\@gobble
  % \let\partnumberline\@gobble
  % \let\chapternumberline\@gobble
}
\makeatother

\begin{document}
\section{Bla bla}
...
\subsection{Lorem}
...
\subsection{ipsum}
..
\section{Bla bla bla}
\end{document}

Result