Continuous v. per-chapter/section numbering of figures, tables, and other document elements

Changing the numbering of (e.g.) figures involves two modifications:

  1. Redefining whether or not the figure counter will be reset whenever the chapter/section counter is incremented;

  2. 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 chngcntrs \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.