目录中包含列表、表格和图片

目录中包含列表、表格和图片

因为我完全是新手,所以我不知道如何解决上述问题,而且我在网上搜索也没有找到任何东西。

我喜欢让它看起来像下面的例子:

图表目录
- 图 1 1
- 图 2.3
- 清单 1 4
- 图 3....4
- 清单 2 5
- 清单 3 6
- 表 1 6

第二个数字保留为页码。

谢谢你的幫助!

答案1

免责声明:我根本不建议合并图形列表中的非图形条目(例如表格或列表)......

一种方法是更改​​用于写入相关和文件的文件句柄\tf@lot和,以使其等于,这样任何对和的写入尝试都将最终以结束。\tf@lol.lot.lof\tf@lof.lot.lol.lof

下面的代码正是这样做的,并使用\string以防止过早扩展\let\tf@lot\tf@lof等。

由于@出现在宏名中,所以\makeatletter...\makeatother是必要的。

\makeatletter
\AtBeginDocument{
  \immediate\write\@auxout{%
    \string\let\string\tf@lot\string\tf@lof^^J%
    \string\let\string\tf@lol\string\tf@lof
  }
}
\makeatother

加载的包只是为了更快地生成内容,但并不是真正必要的,除此之外listings(感谢 moewe 指出!),但却caption大大xpatch简化了整个问题。

由于\captionsetup[lstlisting]{listformat=simple}不起作用,我进行了修补\lst@MakeCaption以便在图表列表中提供正确的前缀。

\documentclass{article}

\usepackage{blindtext}
\usepackage{pgffor}

\usepackage{xpatch}
\usepackage{tocloft}


\usepackage{listings}

\makeatletter
% Must be done before caption packages changes \lst@MakeCaption
\xpatchcmd{\lst@MakeCaption}{%
  \addcontentsline{lol}{lstlisting}%
  {\protect\numberline{\thelstlisting}\lst@@caption}%
}{%
  \addcontentsline{lol}{lstlisting}%
  {\protect\numberline{\p@lstlisting\ \thelstlisting}\lst@@caption}%
}{\typeout{Foo}}{}
\makeatother

\usepackage{caption}


\makeatletter
\AtBeginDocument{
  \renewcommand{\listfigurename}{Table of Figures}% Better: \addtocaptions{english}{\renewcommand{\listfigurename}{Table of Figures}} if babel is loaded
  \addtolength{\cftfignumwidth}{20pt}
  \addtolength{\cfttabnumwidth}{20pt}
  % Add the prefixes
  \renewcommand{\p@table}{Tab.}
  \renewcommand{\p@figure}{Fig.}
  \renewcommand{\p@lstlisting}{\lstlistingname}% 
  \let\l@lstlisting\l@figure%
  \immediate\write\@auxout{%
    \string\let\string\tf@lot\string\tf@lof^^J%
    \string\let\string\tf@lol\string\tf@lof
  }
}
\makeatother


\captionsetup[figure]{listformat=simple}
\captionsetup[table]{listformat=simple}

\begin{document}

\tableofcontents

\listoffigures

\clearpage

\foreach \x in {1,...,5} {%
\section{Foo  section \x}
\blindtext


\begin{figure}
\caption{A foo figure with number \x }
\end{figure}


\begin{table}
\caption{A foo table with number \x }
\end{table}
}

\begin{lstlisting}[language=C,caption={Foo listing One}]

  printf("Hello World\n");
\end{lstlisting}


\end{document}

在此处输入图片描述

答案2

我觉得\addcontentsline可以用一种简单的方法来实现这个效果:

\documentclass{article}
\usepackage{lipsum}
\begin{document}
\tableofcontents
\section{Lipsum 1 -- 15}
\lipsum[1-12]

This is a line. \textbf{It will be added to the ToC.}
\addcontentsline{toc}{section}{A custom line or something you want}
% maybe Figure 1.2 or something
\lipsum[13-16]
\section{Another lipsum}
\subsection{Checking}
\lipsum[17-19]
\subsection{Another checking sub-section}
\lipsum[20-30]
\end{document}

在此处输入图片描述

但是我不建议这样做,因为在我看来这会非常丑陋!

相关内容