0

I add bookmarks to all sections in my project in the following way:

\section{Introduction}
\hypertarget{intro}{}

Some text.

I use these bookmarks later in URL links https://example.com/my-document.pdf#intro.

Every time I create an URL referring to a certain section, I need to go back to my LaTeX project and look up the bookmark name as I have too many of them. I would like to have a list of all my bookmarks (ideally juxtaposed with the section names they mark).

I know that the list of all bookmarks can be generated with pdfinfo on the command line. However, along with the bookmarks I need, I get all kinds of other bookmarks added by LaTeX and irrelevant for me:

   1 [ XYZ   57  785 null      ] "Doc-Start"
   1 [ XYZ   56  823 null      ] "page.1"
   2 [ XYZ   57  711 null      ] "section.1"
   3 [ XYZ   57  751 null      ] "intro"
   5 [ XYZ   57  666 null      ] "lstlisting.-1"
   5 [ XYZ  104  668 null      ] "lstnumber.-1.1"
   6 [ XYZ   57  785 null      ] "subsection.1.1"

So is it possible to generate a list of bookmarks created by me with \hypertarget? I will be happy with any: the command line solution or a LaTeX macro.

Qrrbrbirlbel
  • 119,821
f-hollow
  • 189

1 Answers1

0

I tried tinkering around myself and came up with some dirty but working solution thanks to this thread and this thread. I wish I could come up with a better one but need more experience. Still hope that somebody might offer a more elegant solution.

My dirty solution:

\documentclass{article}

% Corrects issues with compatibility of XeLaTeX % and hyperref to create bookmarks \special{dvipdfmx:config C 0x0010}

\usepackage{hyperref} \usepackage{newfloat}% for listof \usepackage{comment}

%\begin{comment} % temp code for list of bookmarks \DeclareFloatingEnvironment[fileext=bkmrk]{bookmark} \makeatletter \newcommand{\currentname}{@currentlabelname} \renewcommand{\hypertarget}[2]{ \addcontentsline{bkmrk}{bookmark}{\currentname \qquad | \qquad #1}% } \makeatother \AtBeginDocument{\listofbookmarks} % end of temp code %\end{comment}

\begin{document}

\newpage \section{First Section} \hypertarget{first}{}

\newpage \section{Second Section} \hypertarget{second}{}

\newpage \section{Third Section} \hypertarget{third}{}

\end{document}

It gives me this:

enter image description here

Just before compiling my final PDF, I do the following:

  • Uncomment the code for list of bookmarks
  • Compile the PDF to generate the list of bookmarks
  • Copy the bookmarks into Excel (this step requires a lot of text editing)
  • Comment out the code for list of bookmarks

Then I compile the PDF for publishing.

f-hollow
  • 189