在目录中的不同位置添加图表、表格等列表

在目录中的不同位置添加图表、表格等列表

我有一个 LaTeX 文档,其中包含一些章节以及图表列表。如下所示:

\tableofcontents
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables
\chapter{Chapter 1}
\chapter{Chapter 2}
\chapter{Chapter 3}

因此目录中的结果将是:

表格清单 .................... i
图表清单 .......................... ii
第 1 章 .................... 1
第 2 章 .................... 2
第 3 章 .................... 3

但我希望在文档的开头显示列表,在目录中显示它们在结尾,如下所示:

第 1 章 ...................... 1
第 2 章 ...................... 2
第 3 章 ...................... 3
表格清单................ i
图片列表 .............. ii

我尝试过这个:

\tableofcontents
\listoftables
\listoffigures
\chapter{section 1}
\chapter{section 2}
\chapter{section 3}
\addcontentsline{toc}{chapter}{\listfigurename}
\addcontentsline{toc}{chapter}{\listtablename}

但是页码是错误的:

第 1 章 ................. 1
第 2 章 ................. 2
第 3 章 ................. 3
表格列表 ................4
图片列表................5

有人知道解决方案吗,如何使用正确的页码更改目录中列表的位置?

答案1

refcount允许您以可扩展的方式提取页面引用。以下方法使用\label-\ref系统在 LoF/LoT 的第一页上设置\label,然后将条目添加到需要的 ToC 中,使用 扩展页码\getpagerefnumber

在此处输入图片描述

\documentclass{book}

\usepackage{refcount}

\begin{document}

\frontmatter
\tableofcontents

\clearpage
\label{listoffigures}
\listoffigures

\clearpage
\label{listoftables}
\listoftables

\mainmatter
\chapter{First chapter}
\chapter{Second chapter}
\chapter{Third chapter}

% Insert delayed LoF/LoT
\addtocontents{toc}{\protect\contentsline{chapter}{\listfigurename}{\getpagerefnumber{listoffigures}}}
\addtocontents{toc}{\protect\contentsline{chapter}{\listtablename}{\getpagerefnumber{listoftables}}}
\end{document}

答案2

以下是您场景中非常特殊的用例。我相信如果您使用hyperref或其他与 ToC 相关的包。

这个想法是更新宏,该宏设置每个与 ToC 相关的条目,具体条件是设置 LoF 还是 LoT。以下是您的典型情况.toc

\contentsline {chapter}{List of Figures}{ii}
\contentsline {chapter}{List of Tables}{iv}
\contentsline {chapter}{\numberline {1}First chapter}{1}
\contentsline {chapter}{\numberline {2}Second chapter}{3}
\contentsline {chapter}{\numberline {3}Third chapter}{5}

我们使用第二个参数之间的string co arison 有条件地检查它是否与或匹配。如果是这种情况,我们将存储所有信息以供以后使用(在宏和 中)。然后将这些宏插入到 ToC 中,以在文档中调用它的任何位置设置条目。mp\contentsline\listfigurename\listtablename\delayedLoF\delayedLoT\addtocontents{toc}{\protect<macro>}

插入被\protect编辑以便不扩展,但最终.toc将类似于

\contentsline {chapter}{List of Figures}{ii}
\contentsline {chapter}{List of Tables}{iv}
\contentsline {chapter}{\numberline {1}First chapter}{1}
\contentsline {chapter}{\numberline {2}Second chapter}{3}
\contentsline {chapter}{\numberline {3}Third chapter}{5}
\delayedLoF 
\delayedLoT 

在此处输入图片描述

\documentclass{book}

% Update \contentsline to condition on LoF/LoT
\let\oldcontentsline\contentsline
\renewcommand{\contentsline}[3]{%
  \ifnum\pdfstrcmp{#2}{\listfigurename}=0
    \def\delayedLoF{\oldcontentsline{#1}{#2}{#3}}
  \else\ifnum\pdfstrcmp{#2}{\listtablename}=0
    \def\delayedLoT{\oldcontentsline{#1}{#2}{#3}}
  \else
    \oldcontentsline{#1}{#2}{#3}
  \fi\fi
}

\begin{document}

\frontmatter
\tableofcontents

\clearpage
\addcontentsline{toc}{chapter}{\listfigurename}
\listoffigures

\clearpage
\addcontentsline{toc}{chapter}{\listtablename}
\listoftables

\mainmatter
\chapter{First chapter}
\chapter{Second chapter}
\chapter{Third chapter}

% Insert delayed LoF/LoT
\addtocontents{toc}{\protect\delayedLoF}
\addtocontents{toc}{\protect\delayedLoT}

\end{document}

如果您的 LoF 和 LoT 条目必须位于 ToC 的末尾,则只需修补即可\tableofcontents自动插入它们。

相关内容