书签可切换较低嵌套级别

书签可切换较低嵌套级别

我正在使用书签包将书签导入到现有的 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

支持 Adob​​e 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}

相关内容