为了列出我的数字,我使用了 \listoffigures,结果如下
1.1 xyza ......... 12
1.2 abc2 ......... 14
2.1 bacd ......... 17
2.2 bace ......... 18
.
.
.
6.1 xxxx ......... 40
然而,我试图列出我的数据,例如
Figure 1 xyza ......... 12
Figure 2 abc2 ......... 14
Figure 3 bacd ......... 17
Figure 4 bace ......... 18
.
.
Figure n xxxx ......... 40
为此我尝试了以下方法:
\usepackage{tocloft}
\renewcommand{\cftfigfont}{Figure }
这会在 1.1、1.2 2.1、2.2、...、6.1 之前添加“图”。要将图列表中的 (1.1、1.2、2.1、2.2、...、6.1) 更改为 (1、2、3、...、n),我尝试使用
\renewcommand{\thefigure}{\arabic{figure}.}
并且它确实更改为 1、2、3、... 但是当开始新的章节时,编号 1、2、3、... 会再次开始,而且图标题中的条目也会更改,这是我不希望的。那么,如何获得连续的图号,而不管图列表中的章节,并且图标题没有任何变化。
答案1
宏\mycaption
使用\thefigure
来作为标题,并\arabic{figure}
使用 来作为lof
(以及一些其他格式更改)。请注意\@captype
可以是figure
或table
。
\documentclass{article}
\usepackage{caption}% required
\makeatletter
\newcommand{\mycaption}[2][\@empty]% #1 = short caption (optionl), #2 = caption
{\refstepcounter\@captype
\caption@caption*{\csname fnum@\@captype\endcsname{: }#2}%
\ifx\@empty#1
\addcontentsline{\csname ext@\@captype\endcsname}{\@captype}%
{\csname\@captype name\endcsname\space\arabic{\@captype}: #2}%
\else
\addcontentsline{\csname ext@\@captype\endcsname}{\@captype}%
{\csname\@captype name\endcsname\space\arabic{\@captype}: #1}%
\fi
}
\makeatother
\begin{document}
\listoffigures
\begin{figure}
\renewcommand{\thefigure}{1.1}%
\caption{normal caption}
\renewcommand{\thefigure}{2.6}%
\mycaption{my caption}
\end{figure}
\end{document}
如果你不想将所有\caption
s 重命名为\mycaption
,只需使用
\let\caption=\mycaption
而是。但是,\caption*
将不再起作用。
很可能图形计数器在每一章开始时都会被重置为 0,在这种情况下您将需要使用不同的计数器。
\newcounter{myfigure}
\newcounter{mytable}
\makeatletter
\newcommand{\mycaption}[2][\@empty]% #1 = short caption (optionl), #2 = caption
{\refstepcounter\@captype
\caption@caption*{\csname fnum@\@captype\endcsname{: }#2}%
\stepcounter{my\@captype}%
\ifx\@empty#1
\addcontentsline{\csname ext@\@captype\endcsname}{\@captype}%
{\csname\@captype name\endcsname\space\arabic{my\@captype}: #2}%
\else
\addcontentsline{\csname ext@\@captype\endcsname}{\@captype}%
{\csname\@captype name\endcsname\space\arabic{my\@captype}: #1}%
\fi
}
\makeatother
最后我讨厌这种编程风格,因为它几乎不可读。因此,为了我自己的安心:
\makeatletter
\def\mycaption{\csname\@captype @caption\endcsname}
\newcommand{\figure@caption}[2][\@empty]% #1 = short caption(optional), #2 = caption
{\refstepcounter{figure}%
\caption@caption*{\fnum@figure{: }#2}%
\stepcounter{myfigure}%
\ifx\@empty#1
\addcontentsline{lof}{figure}{\figurename\space\arabic{myfigure}: #2}%
\else
\addcontentsline{lof}{figure}{\figurename\space\arabic{myfigure}: #1}%
\fi
}
\newcommand{\table@caption}[2][\@empty]% #1 = short caption(optional), #2 = caption
{\refstepcounter{table}%
\caption@caption*{\fnum@table{: }#2}%
\stepcounter{mytable}%
\ifx\@empty#1
\addcontentsline{lot}{table}{\tablename\space\arabic{mytable}: #2}%
\else
\addcontentsline{lot}{table}{\tablename\space\arabic{mytable}: #1}%
\fi
}
\makeatother