图表的自定义书签列表

图表的自定义书签列表

我需要为文档报告添加自定义订单书签:目前,我正在使用来自图片列表下的书签

我需要一个像这样的自定义书签:

  • 内容列表
    • 第1章 .......
    • 第2章 ......
    • 第3章 .....
  • 图片列表
    • 图 1.1.......
    • 图 2.4..........
  • 表格列表
    • 表 2.5......
    • 表 2.7 ......

答案1

链接的帖子(其中也有我的回答)不是问题的解决方案,但可以用作启动器。

主要问题是\bookmark命令将在书签树的当前级别输入相关信息,这意味着图形书签将出现在或chapter书签之间section,但没有排序或形成自己的树。

可以通过将书签操作推迟到其他地方并伪造一些列表figure bookmark等来解决此问题,如果在最后调用,则会在最后执行正确的书签条目\listoffiguresbookmarks。 (同样如此\listoftablesbookmarks。)

\documentclass{article}
\usepackage{caption}
\usepackage{etoolbox}
\usepackage[notlof,notlot]{tocbibind}

\usepackage[bookmarksnumbered,bookmarksopen=true]{hyperref}
\hypersetup{colorlinks,
  linkcolor=blue,
  linktoc=page}

\usepackage{bookmark}

\makeatletter
\newcommand{\listoffiguresbookmarks}{%
  \pdfbookmark[0]{\listfigurename}{listoffiguresbookmark}
  \bookmarksetup{level=1}
  \@starttoc{lofb}
}
\newcommand{\listoftablesbookmarks}{%
  \pdfbookmark[0]{\listtablename}{listoftablesbookmark}
  \bookmarksetup{level=1}
  \@starttoc{lotb}
}

\makeatother

%%% Generate bookmarks for all figures and tables
\makeatletter

\pretocmd\endfigure{%
\addtocontents{lofb}{%
  \protect{%
    \bookmark[
    rellevel=1,
    keeplevel,
    dest=\@currentHref,
    ]{Figure \thefigure: \@currentlabelname}}}%
}{}{\errmessage{Patching \noexpand\endfigure failed}}
\pretocmd\endtable{%
\addtocontents{lotb}{%
  \protect{%
    \bookmark[
    rellevel=1,
    keeplevel,
    dest=\@currentHref,
    ]{Table \thetable: \@currentlabelname}}}%
}{}{\errmessage{Patching \noexpand\endtable failed}}

\makeatother



\AtEndDocument{%
  \listoffiguresbookmarks
  \listoftablesbookmarks
}

\begin{document}
\tableofcontents
\listoffigures
\newpage

\section{The document}

\begin{figure}[ht]
\centering
\rule{6cm}{3cm}
\caption{Figure caption text}
\end{figure}

\newpage

\section{Different section}

\begin{figure}[ht]
\centering
\rule{6cm}{3cm}
\caption{Figure caption text 2}
\end{figure}

\clearpage

\begin{table}[ht]
\centering
\caption{Table caption No. 1}
\end{table}


\end{document}

在此处输入图片描述

答案2

这是另一种方法。您可以根据需要进行修改。示例在单个图形环境中使用了两个标题。

\documentclass{article}
\usepackage{xcolor}
\usepackage{caption,subcaption}
\usepackage[nottoc]{tocbibind}
\usepackage[]{hyperref}
\hypersetup{colorlinks,linkcolor=blue,linktoc=page}
\usepackage{bookmark}
\bookmarksetup{numbered, open, color=blue}
\makeatletter
\renewcommand{\listoffigures}{%
 \begingroup
    \let\SAVEDcontentsline\contentsline
    \def\contentsline##1##2##3##4{%
       \SAVEDcontentsline{##1}{##2}{##3}{##4}%
       \begingroup
         \def\numberline####1####2{####1:~####2}
         \bookmark[rellevel=1,keeplevel,dest=##4,]{\figurename~##2}%
       \endgroup  
     }%  
    \tocfile{\listfigurename}{lof}%
  \endgroup  
}
\makeatother


\begin{document}
\tableofcontents
\listoffigures
\clearpage
\section{The document}
\subsection{the fist subsection}
\begin{figure}[ht]
\centering
\begin{minipage}{0.49\linewidth}
\rule{6cm}{3cm}
\caption{Figure caption text 1}
\end{minipage}\hfill%
\begin{minipage}{0.49\linewidth}
\rule{6cm}{3cm}
\caption[Short form figrue 2]{long long long long long long long long long Figure caption text 2}
\end{minipage}
\end{figure}

\clearpage

\begin{figure}[ht]
\centering
      \subcaptionbox{A cat\label{cat}}
        {\rule{3cm}{3cm}}
      \subcaptionbox{An elephant\label{elephant}}
        {\rule{3cm}{3cm}}
      \caption{Two animals}\label{animals}
\end{figure}

\section{The second section}
\subsection{the second subsection}


\end{document}

在此处输入图片描述

相关内容