如何正确地将 \section*{} 添加到 PDF 书签?

如何正确地将 \section*{} 添加到 PDF 书签?

在这个 MWE 中,我不明白为什么第一个 PDF 书签链接到第一个\section*,而第二个书签却没有。

我错过了什么?

\documentclass{article}
\usepackage[hidelinks,colorlinks=false,bookmarks=true]{hyperref}
\usepackage[numbered]{bookmark}
\usepackage{lipsum}

\begin{document}

    \pdfbookmark[section]{1st section}{}
    \section*{Section 1}
    \lipsum[1-3]
    \pdfbookmark[section]{2nd section}{}
    \section*{Section 2}

\end{document}

更新 #1

对于 Heiko 的回答,我知道这不是什么大问题,但我很好奇为什么第一个书签正好指向章节标题

在此处输入图片描述

而第二个则没有

在此处输入图片描述

更新 #2

bold当我尝试了解选项或的效果时color,我发现没有粗体或红色。

我对这些选项有什么误解?

\documentclass{article}
\usepackage[hidelinks,bookmarks=true]{hyperref}
\usepackage[numbered]{bookmark}
\usepackage{lipsum,xcolor}

\makeatletter
\newcommand*{\sectionbookmark}[1][]{%
  \bookmark[%
    level=section,%
    dest=\@currentHref,%
    #1%
  ]%
}
\makeatother

\begin{document}
    \section*{Section 2}
    \sectionbookmark[bold,color=red]{2nd section}
    \lipsum[1-3]
\end{document}

答案1

的最后一个强制参数\pdfbookmark必须是独特的名称。它用于内部创建的锚点:

\documentclass{article}
\usepackage[hidelinks,bookmarks=true]{hyperref}
\usepackage[numbered]{bookmark}
\usepackage{lipsum}

\begin{document}

    \pdfbookmark[section]{1st section}{sec1}
    \section*{Section 1}
    \lipsum[1-3]
    \pdfbookmark[section]{2nd section}{sec2}
    \section*{Section 2}

\end{document}

以前的方法的问题在于,它\pdfbookmark创建了一个新的锚点,并且会发生这种情况命令\section*。因此,第一个锚点更靠近命令\section*,因为它位于页面顶部。第二个锚点\section*增加了额外的空间。甚至可以出现分页符。

bookmark已加载,因此可以改用 来调用\bookmark。此命令允许设置现有目标。\pdfbookmark不再需要 的最后一个参数来指定唯一锚点名称。包hyperref将最后一个目标名称存储在 中\@currentHref

\sectionbookmark使用\bookmark此目标名称并使用节级别作为默认值。示例还显示了如何将其用于其他节级别。还可以提供其他选项,例如字体选项(bold, italic)或选项color

由于使用了最后一个目的地名称,因此\sectionbookmark必须在命令后立即给出\section*

\documentclass{article}
\usepackage[hidelinks,bookmarks=true]{hyperref}
\usepackage[numbered]{bookmark}
\usepackage{lipsum}

\makeatletter
\newcommand*{\sectionbookmark}[1][]{%
  \bookmark[%
    level=section,%
    dest=\@currentHref,%
    #1%
  ]%
}
\makeatother

\begin{document}

    \section*{Section 1}
    \sectionbookmark{1st section}
    \lipsum[1-3]

    \section*{Section 2}
    \sectionbookmark[bold]{2nd section}

    \subsection*{Subsection}
    \sectionbookmark[level=subsection]{subsection}

\end{document}

相关内容