
Я добавляю закладки во все разделы своего проекта следующим образом:
\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-файл для публикации.