操作数字列表

操作数字列表

为了列出我的数字,我使用了 \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可以是figuretable

\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}

演示


如果你不想将所有\captions 重命名为\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

相关内容