由于 hyperref 包而导致 lof 和 lot 中断

由于 hyperref 包而导致 lof 和 lot 中断

对于我的论文,我想将 LOF 和 LOT 更改为分为单独的章节,例如:

Chapter 1

figure 1.1
figure 1.2

Chapter 2

ETC。

为此我使用以下代码:

\documentclass[12pt,a4paper,twoside]{report}


\usepackage{hyperref}
    \hypersetup{linktoc= all, hidelinks}


\usepackage{nameref}
\usepackage{etoolbox}
    \providebool{newchap}

\makeatletter
\let\oldcaption\caption
\renewcommand{\caption}[2][\shortcaption]{%
\def\shortcaption{#2}
\ifbool{newchap}{%
    \addtocontents{lot}{\protect\contentsline{chapter}{%
        \nameref{cpt:\thechapter} \vspace{10pt}}{}}    
    \addtocontents{lof}{\protect\contentsline{chapter}{%
        \nameref{cpt:\thechapter} \vspace{10pt}}{}}   
        }{}
    \global\boolfalse{newchap}%
\oldcaption[#1]{#2}}
\newcommand{\saved@chapter}{}
\let\saved@chapter\chapter
\renewcommand{\chapter}{%
\addtocontents{lot}{\protect\setcounter{lofdepth}{0}}
\addtocontents{lof}{\protect\setcounter{lofdepth}{0}}
\@ifstar {\saved@chapter*}{\@dblarg\my@chapter}}
\newcommand*{\my@chapter}[2][]{%
\saved@chapter[#1]{#2}
\label{cpt:\arabic{chapter}}%
\global\setbool{newchap}{true}%
\addtocontents{lot}{\protect\setcounter{lofdepth}{1}}
\addtocontents{lof}{\protect\setcounter{lofdepth}{1}}
}
\makeatother

\begin{document}

\addcontentsline{toc}{chapter}{List of Figures}
\listoffigures
    \addtocontents{lof}{~\hfill\textbf{Page}\par}
    \addtocontents{lof}{\hrule}
    \hrule
\newpage

\addcontentsline{toc}{chapter}{List of Tables}
\listoftables
    \addtocontents{lot}{~\hfill\textbf{Page}\par}
    \addtocontents{lot}{\hrule}
    \hrule
\newpage

\chapter{Example}

\begin{figure}
    \centering
    \rule{2cm}{2cm}
    \caption{Example}
\end{figure}

\end{document}

只要我不启用 ,此代码就可以完美运行\usepackage{hyperref}。如果hyperref启用 ,lof/lot 中的第一个条目就会中断。我认为它会中断是因为我的代码和hyperref包都使用了\renewcommand{\chapter}。有办法解决这个问题吗?

多谢。

相关内容