对于我的论文,我想将 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}
。有办法解决这个问题吗?
多谢。