我正在使用书签包将书签导入到现有的 PDF 中。
我希望 level=0 的书签不执行任何操作,除了作为可点击的链接,展开/折叠嵌套在其中的书签。
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pdfpages}
\usepackage[
pdfpagelabels=true,
pdftitle={Optimization},
pdfauthor={x}
]{hyperref}
\usepackage{bookmark}
\begin{document}
\pagenumbering{arabic}
\setcounter{page}{1}
\includepdf[pages=1-5]{example.pdf}
\bookmark[named=s, level=0]{Letter A}
\bookmark[page=1,level=1]{Ab}
\bookmark[page=2,level=1]{Ac}
\bookmark[named=s, level=0]{Letter B}
\bookmark[page=3, level=1]{Ba}
\bookmark[page=4, level=1]{Bb}
\end{document}
目前,使用上述代码,named=s
我得到了一个被动链接,当使用 Windows 7 中的 PDF 阅读器打开时,该链接不会执行任何操作。但是,由于某种原因,使用移动平板电脑中的 PDF 阅读器会转到 PDF 的第一页。请注意, 中的 s 没有什么特别之处named=s
。
我想要的是它能起到折叠/展开嵌套书签按钮的作用。例如,如果Letter A
单击 ,它就会展开以显示Ab
和的书签Ab
。如果再次单击,则会折叠它们。
答案1
支持 Adobe Reader JavaScript 的 PDF 查看器可以通过 JavaScript 折叠和打开书签。书签的操作指定为原始操作代码(选项rawaction
):
rawaction={%
/S/JavaScript%
/JS(event.target.open=!event.target.open)%
}
该事件的目标是被点击的书签。
以下示例定义并使用了top
级别 0 的书签样式和 JavaScript 操作:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{pdfpages}
\usepackage[
pdfpagelabels=true,
pdftitle={Optimization},
pdfauthor={x}
]{hyperref}
\usepackage{bookmark}
\begin{document}
\pagenumbering{arabic}
\setcounter{page}{1}
\includepdf[pages=1-5]{example.pdf}
\bookmarkdefinestyle{top}{
level=0,
rawaction={%
/S/JavaScript%
/JS(event.target.open=!event.target.open)%
},
}
\bookmark[style=top]{Letter A}
\bookmark[page=1,level=1]{Ab}
\bookmark[page=2,level=1]{Ac}
\bookmark[style=top]{Letter B}
\bookmark[page=3, level=1]{Ba}
\bookmark[page=4, level=1]{Bb}
\end{document}