我正在编写的文档的所有图表都包含在附录 A 中(由于后面的附录中包含大量源代码,因此将图表作为文档的最后部分是没有意义的)。我知道我可以有一个单独的图表列表,列出标题的简短描述,但我希望将其包含在目录本身中。例如,而不是:
Table of Contents
1 Section 1 ......... 1
1.1 subsection .... 1
A Figures ........... 3
B Source Code ....... 5
B.1 more code ..... 6
List of Figures
Desc. 1 ............. 3
Desc. 2 ............. 4
我想:
Table of Contents
1 Section 1 ......... 1
1.1 subsection .... 1
A Figures ........... 3
Desc. 1 ........... 3
Desc. 2 ........... 4
B Source Code ....... 5
B.1 more code ..... 6
我一直在搜索互联网,但只能找到有关如何使用 在目录中包含图表列表页码的信息\addcontentsline{toc}
。我是否必须手动为\addcontentsline{toc}
每个图表添加标题简短描述,或者有没有什么方法可以自动完成此操作?
任何帮助都非常感谢
答案1
这是一个重新定义\ext@figure
为的简单解决方案toc
:
\documentclass{article}
\makeatletter
\renewcommand\ext@figure{toc}
\makeatother
\begin{document}
\tableofcontents
\section{Test Section}
\appendix
\section{Figures}
\begin{figure}[!ht]\caption{Description 1}\end{figure}
\begin{figure}[!ht]\caption{Description 2}\end{figure}
\section{Souce Codes}
\end{document}
我只是[!ht]
为了举例子而使用了修饰符;我不建议强制使用它。
答案2
在 之后写入您的文档\appendix
,例如:
[...]
\appendix
\makeatletter
\long\def\@caption#1[#2]#3{%
\par
\addcontentsline{\csname ext@#1\endcsname}{#1}%
{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
\addcontentsline{toc}{#1}%
{\protect\numberline{\csname the#1\endcsname}{\ignorespaces #2}}%
\begingroup
\@parboxrestore
\if@minipage
\@setminipage
\fi
\normalsize
\@makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par
\endgroup}
\makeatother
[...]