Список всех закладок, добавленных с помощью \hypertarget для именованных пунктов назначения

Список всех закладок, добавленных с помощью \hypertarget для именованных пунктов назначения

Я добавляю закладки во все разделы своего проекта следующим образом:

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

Some text.

Эти закладки я использую позже в URL-ссылках https://example.com/my-document.pdf#intro.

Каждый раз, когда я создаю URL, ссылающийся на определенный раздел, мне нужно вернуться к моему проекту LaTeX и посмотреть имя закладки, так как у меня их слишком много. Я хотел бы иметь список всех моих закладок (в идеале сопоставляемых с именами разделов, которые они отмечают).

Я знаю, что список всех закладок можно создать с помощьюpdfinfoв командной строке. Однако, вместе с нужными мне закладками, я получаю всевозможные другие закладки, добавленные LaTeX и не имеющие для меня значения:

   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"

Так возможно ли сгенерировать список закладок, созданных мной с помощью \hypertarget? Я буду рад любому решению: командной строке или макросу LaTeX.

решение1

Я попробовал повозиться сам и придумал кое-чтогрязныйно рабочее решение благодаряэта темаиэта тема. Хотелось бы придумать что-то получше, но нужно больше опыта. Все еще надеюсь, что кто-то предложит более элегантное решение.

Мое грязное решение:

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

Это дает мне следующее:

введите описание изображения здесь

Перед тем как составить окончательный PDF-файл, я делаю следующее:

  • Раскомментируйте код для списка закладок.
  • Скомпилируйте PDF-файл для создания списка закладок.
  • Скопируйте закладки в Excel (этот шаг требует значительного редактирования текста)
  • Закомментируйте код для списка закладок

Затем я компилирую PDF-файл для публикации.

Связанный контент