我正在尝试理解\pdfbookmark[level]{text}{name}
宏。以下是我的问题:
- 它是在 LaTeX 核心中定义的吗?我在哪里可以看到代码?
- 我在哪里可以找到该文档?
- 我碰巧使用了
hyperref
,并且hyperref.sty
有这个:\newcommand\pdfbookmark[3][]{}
,这基本上意味着 3 个参数(1 个可选,2 个必需),空主体。这是在做什么? - 是什么
level
?
(注意:我是 LaTeX 的新手,因此,如果可能的话,我希望得到更简单的答案。)
答案1
\pdfbookmark
它是一个 hyperref 命令。hyperref.sty 中的定义是虚拟的,真正的定义在各种后端文件中,例如hpdftex.def
(对于 pdflatex)包含
\renewcommand\pdfbookmark[3][0]{%
\Hy@writebookmark{}{#2}{#3.#1}{#1}{toc}%
\hyper@anchorstart{#3.#1}\hyper@anchorend
}
级别允许在树中上下移动。使用name
参数 hyperref 将创建一个目标,因此名称应该是唯一的。您必须编译该文档两次。
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{a section bookmark}
\newpage
A\pdfbookmark[1]{text A}{targetA}
\newpage
B\pdfbookmark[2]{text B}{targetB}
\end{document}
如果您想要更多选项来创建书签,请使用书签包。它具有更强大的接口,并且仅需要一次编译。
答案2
根据 UlrikeFischer 的解释,我尝试了以下内容,只是为了实验。如果它对任何人有帮助,请在此处发布。并且如果用于hyperref
pdfbookmarks,请不要忘记编译两次。
\documentclass{article}
\usepackage{hyperref}
\begin{document}
\section{Section Bookmark}
\newpage
\pdfbookmark[0]{Text A}{targetA} A
\newpage
\pdfbookmark[1]{Text B}{targetB} B
\newpage
\pdfbookmark[2]{Text C}{targetC} C
\newpage
\pdfbookmark[2]{Text D}{targetD} D
\newpage
\pdfbookmark[4]{Text E}{targetE} E Skipped Level
\newpage
\pdfbookmark[3]{Text F}{targetF} F
\newpage
\pdfbookmark[1]{Text G}{targetG} G
\newpage
\pdfbookmark[2]{Text H}{targetH} H
\newpage
\pdfbookmark[0]{Text I}{targetI} I
\end{document}
包的工作原理如下bookmark
:
\documentclass{article}
\usepackage{bookmark}
\begin{document}
\section{Section Bookmark}
\newpage
\hypertarget{targetA}{}
\bookmark[level=0,dest=targetA]{Text A} A
\newpage
\hypertarget{targetB}{}
\bookmark[level=1,dest=targetB]{Text B} B
\newpage
\hypertarget{targetC}{}
\bookmark[level=2,dest=targetC]{Text C} C
\newpage
\hypertarget{targetD}{}
\bookmark[level=2,dest=targetD]{Text D} D
\newpage
\hypertarget{targetE}{}
\bookmark[level=4,dest=targetE]{Text E} E Skipped Level
\newpage
\hypertarget{targetF}{}
\bookmark[level=3,dest=targetF]{Text F} F
\newpage
\hypertarget{targetG}{}
\bookmark[level=1,dest=targetG]{Text G} G
\newpage
\hypertarget{targetH}{}
\bookmark[level=2,dest=targetH]{Text H} H
\newpage
\hypertarget{targetI}{}
\bookmark[level=0,dest=targetI]{Text I} I
\end{document}