在这个 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}