Continuous v. per-chapter/section numbering of figures, tables, and other document elements
Changing the numbering of (e.g.) figures involves two modifications:
Redefining whether or not the
figure
counter will be reset whenever the chapter/section counter is incremented;Redefining the "appearance" of the
figure
counter (\thefigure
), i.e., removing (or adding) the chapter/section prefix.
Standard solution: chngcntr
The standard solution – which deals with modifications 1 and 2 mentioned above – is to use the \counterwithout
and \counterwithin
macros of the chngcntr
package. The following example shows how to achieve continuous figure numbering in the book
class:
\documentclass{book}
\usepackage{chngcntr}
\counterwithout{figure}{chapter}
\begin{document}
\chapter{foo}
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}
Conversely, here's how to achieve per-section figure numbering in the article
class:
\documentclass{article}
\usepackage{chngcntr}
\counterwithin{figure}{section}
\begin{document}
\section{foo}
\begin{figure}
\centering
\rule{1cm}{1cm}% placeholder for graphic
\caption{A figure}
\end{figure}
\end{document}
It works the same way for (e.g.) tables, custom-defined floats, equations, and footnotes. (Note that in many document classes featuring the \chapter
command, footnotes are numbered per chapter even though the footnote
counter does not show the chapter prefix.) The macros of chngcntr
may also be used for theorem environments; it is easier, though, to specify the numbering of a new theorem environment when defining it:
\newtheorem{thm}{Theorem}% Continuous numbering
\newtheorem{prop}{Proposition}[section]% Per-section numbering
You may also customize the numbering of the sectioning headings themselves. To, say, accomplish continuous numbering of sections in the book
class (by default, those are numbered per chapter), but per-part numbering of chapters (which are by default numbered continuously), your preamble should contain
\usepackage{chngcntr}
\counterwithout{section}{chapter}
\counterwithin{chapter}{part}
To influence the resetting of counters without changing their appearance, use the starred macro versions \counterwithout*
and \counterwithin*
. E.g., for per-section numbering of figures in the article
class – but without attaching a section prefix to \thefigure
–, add the following to your preamble:
\usepackage{chngcntr}
\counterwithin*{figure}{section}
It is also possible to redefine a counter's resetting and appearance any number of times in the document body. Note that \counterwithout
, \counterwithin
and their variants won't affect the counter's current value; to change the latter, use \setcounter{<counter>}{<new value>}
.
AMSmath solution
The AMS classes and the amsmath
package feature the \numberwithin
macro which matches chngcntr
s \counterwithin
. However, there is no AMS equivalent to \counterwithout
. Usage example: \numberwithin{equation}{section}
. See the full example by cmhughes. If you use math, you may prefer loading amsmath
anyway and using \numberwithin
.
Other solutions
With the memoir
class, one doesn't need to load chngcntr
because memoir
emulates the functionality of the package. Just use \counterwithout
and \counterwithin
as described above.
The caption
package features the key–value options figurewithin
and tablewithin
which allow to change the numbering of (surprise) figures and tables. Permitted option values are chapter
, section
, and none
. (For the first code example above, this translates into \usepackage[figurewithin=none]{caption}
.)
The listings
package uses \AtBeginDocument
to define the lstlisting
counter of the environment of the same name. To turn off the environment's per-chapter numbering for classes that feature \chapter
, issue \lstset{numberbychapter=false}
in the document preamble. To enable per-section numbering for classes without \chapter
, add the following to your preamble:
\usepackage{chngcntr}
\AtBeginDocument{\counterwithin{lstlisting}{section}}
Patryk's answer works perfectly. But you need to reset the counter of tables, figures, equations, etc. manually every time you want to start your object labels at "1" again. So it would be more suitable for e.g. a paper with some appendices than for a book with many chapters.
The \renewcommand
line you only have to set once.
The advantage is that it is super simple and flexible.
Like this:
\setcounter{figure}{0}
\renewcommand{\thefigure}{A\arabic{section}.\arabic{figure}}
To create "Figure A1.1"
You could also do
\renewcommand{\thefigure}{Appendix~\arabic{section}.\arabic{figure}}
to obtain "Figure Appendix 1.1" (if you would feel the urge).
Or
\renewcommand{\thefigure}{A\arabic{section}.\arabic{subsection}.\arabic{figure}}
to obtain "Figure A1.1.1" for Figure 1 in subsection 1 of section A1.
Strangely enough, no one mentioned the package remreset
and its \@removefromreset
macro or the LaTeX - core macro \@addtoreset
yet.
See for another version with xassoccnt
at the bottom of this post.
\documentclass{book}
\usepackage{remreset}
\makeatletter
\@removefromreset{figure}{chapter}
\renewcommand{\thefigure}{\arabic{figure}}
\@addtoreset{figure}{section}
\makeatother
\begin{document}
\chapter{First}
\begin{figure}
\caption{First figure}
\end{figure}
\chapter{Second}
\begin{figure}
\caption{Second figure}
\end{figure}
\section{A section that causes resetting of figure}
\begin{figure}
\caption{Third figure}
\end{figure}
\end{document}
Using xassoccnt
there is \RemoveFromReset
and \AddToReset
(without using \makeatletter...\makeatother
\documentclass{book}
\usepackage{xassoccnt}
\RemoveFromReset{figure}{chapter}
\AddToReset{figure}{section}
\renewcommand{\thefigure}{\arabic{figure}}
\begin{document}
\chapter{First}
\begin{figure}
\caption{First figure}
\end{figure}
\chapter{Second}
\begin{figure}
\caption{Second figure}
\end{figure}
\section{A section that causes resetting of figure}
\begin{figure}
\caption{Third figure}
\end{figure}
\end{document}
Please note that there is \RemoveFromFullReset
as well, which removes the counter and its own reset list from the driver reset list.
Update Starting with version 1.3 of xassoccnt
, \AddToReset
, \RemoveFromReset
support comma - separated list of counters to be added or removed from the driver counter reset list. Current version is 1.5
, as of 2017/10/20.