Using a figure again in document

I would duplicate the figure contents, just using a new environment that does some setup which avoids problems:

enter image description here

\documentclass{article}
\usepackage{graphicx}
\usepackage{hyperref}

% \begin{reusefigure}[<float spec>]{<ref>}
\newenvironment{reusefigure}[2][htbp]
  {\addtocounter{figure}{-1}%
   \renewcommand{\theHfigure}{dupe-fig}% If you're using hyperref
   \renewcommand{\thefigure}{\ref{#2}}% Figure counter is \ref
   \renewcommand{\addcontentsline}[3]{}% Avoid placing figure in LoF
   \begin{figure}[#1]}
  {\end{figure}}

\begin{document}

We have Figures~\ref{fig:caption-a},~\ref{fig:caption-b} and~\ref{fig:caption-c}.

\begin{figure}[ht]
  \centering\includegraphics[height=50pt]{example-image-a}
  \caption{A figure caption}\label{fig:caption-a}
\end{figure}

\begin{reusefigure}[ht]{fig:caption-a}
  \centering\includegraphics[height=50pt]{example-image-b}
  \caption{A figure caption}\label{fig:caption-b}
\end{reusefigure}

\begin{figure}[ht]
  \centering\includegraphics[height=50pt]{example-image-c}
  \caption{Another figure}\label{fig:caption-c}
\end{figure}

\end{document}

The reusefigure environment takes two arguments. The first is optional and similar to the float specification of regular figure floats. The second is mandatory and takes the \label of the figure to be reused.

Appropriate settings are adjusted prior to re-using the figure, including settings that for use with hyperref. Entry into the LoF is avoided, since it's not necessary.


Here is an implementation that automates the process. A to-be-used-later figure is constructed using sourcefigure. Then, to reuse this figure, use \reusefigure[<float spec>]{<ref>} where you specify the <ref> used in the \label of sourcefigure:

\documentclass{article}
\usepackage{graphicx,environ}
\usepackage{hyperref}

\NewEnviron{sourcefigure}[1][htbp]{%
  {\let\caption\relax\let\ref\relax
   \renewcommand{\label}[1]{%
    \gdef\sfname{sf:##1}}%
    \setbox1=\hbox{\BODY}}% Capture \label
    \expandafter\expandafter\expandafter\gdef\expandafter\csname\expandafter\sfname\expandafter\endcsname\expandafter{\BODY}% Capture entire figure
    \expandafter\show\csname\sfname\endcsname%
  \begin{figure}[#1]
    \BODY
  \end{figure}
}
\newcommand{\reusefigure}[2][htbp]{%
  {\addtocounter{figure}{-1}%
   \renewcommand{\theHfigure}{dupe-fig}% If you're using hyperref
   \renewcommand{\thefigure}{\ref{#2}}% Figure counter is \ref
   \renewcommand{\addcontentsline}[3]{}% Avoid placing figure in LoF
   \renewcommand{\label}[1]{}% Make \label inactive
   \begin{figure}[#1] \csname sf:#2\endcsname \end{figure}}
}


\begin{document}

We have Figures~\ref{fig:caption-a} and~\ref{fig:caption-c}.

\begin{sourcefigure}[ht]
  \centering\includegraphics[height=50pt]{example-image-a}
  \caption{A figure caption}\label{fig:caption-a}
\end{sourcefigure}

\reusefigure[ht]{fig:caption-a}

\begin{figure}[ht]
  \centering\includegraphics[height=50pt]{example-image-c}
  \caption{Another figure}\label{fig:caption-c}
\end{figure}

\end{document}

The \label macro is disabled inside \reusefigure, so referencing the reused figure is not possible (but surely not needed).