Reiniciar la numeración flotante con endfloat con etiquetas

Reiniciar la numeración flotante con endfloat con etiquetas

Necesito reiniciar la numeración de figuras en el Apéndice, para que las figuras sean 1, 2, ..; luego S1, S2, .... Desafortunadamente, no puedo entender cómo hacer que el flotador final se refiera a los dos grupos de figuras de manera diferente. Lo que me gustaría que sucediera es como en el siguiente código (sin endfloat):

\documentclass{article}
\usepackage[draft]{graphicx}
% \usepackage{endfloat}
\begin{document}

As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots

\begin{figure}
  \includegraphics{fig1}
  \caption{ One.  } \label{fig1}
\end{figure}

\clearpage
\renewcommand{\thefigure}{S\arabic{figure}}
\setcounter{figure}{0}

\begin{figure}
    \includegraphics{figS1}
  \caption{ Supplement, one.  } \label{figS1}
\end{figure}

\end{document}

... pero descomentar endfloat (y eliminar archivos temporales) hace que el texto y la lista de figuras se refieran a S1 y S2 (en lugar de 1 y S1), y que se [Figure X about here]refieran a 1 y 2.

Respuesta1

El contador postfiguretambién debe restablecerse, así:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage[nofiglist]{endfloat}

\begin{document}

\listoffigures
\clearpage

\section{Test}
As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots
\begin{figure}
  \includegraphics{fig1}
  \caption{ One.  } \label{fig1}
\end{figure}
\processdelayedfloats

\clearpage
\appendix
\section{Appendix}
\renewcommand{\thefigure}{S\arabic{figure}}
\renewcommand{\thepostfigure}{S\arabic{postfigure}}
\setcounter{figure}{0}
\setcounter{postfigure}{0}

\begin{figure}
    \includegraphics{figS1}
  \caption{ Supplement, one.  } \label{figS1}
\end{figure}
\processdelayedfloats

\end{document} 

Producción

ingrese la descripción de la imagen aquí


ingrese la descripción de la imagen aquí


ingrese la descripción de la imagen aquí

Respuesta2

El contador utilizado para la numeración “en el lugar” se llama postfigure, por lo que éste también debería cambiarse.

Aquí tienes una solución que aprovecha \appendix. Las instrucciones para cambiar la representación del contador y restablecer el contador están escritas en el .fffarchivo, por lo que entrarán en acción cuando se realice la composición tipográfica de las cifras.

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{endfloat}
\usepackage{etoolbox}

\makeatletter
\appto{\appendix}{%
  \renewcommand{\thepostfigure}{S\arabic{postfigure}}%
  \setcounter{postfigure}{0}%
  \efloat@iwrite{fff}{%
    \unexpanded{%
      \renewcommand{\thefigure}{S\arabic{figure}}^^J%
      \setcounter{figure}{0}^^J%
    }%
  }%
}
\makeatother

\begin{document}

As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots

\begin{figure}
\includegraphics{fig1}
\caption{One.} \label{fig1}
\end{figure}

\clearpage % not necessary, just to make the figure go to the next page
\appendix

\begin{figure}
\includegraphics{figS1}
\caption{Supplement, one.} \label{figS1}
\end{figure}

\renewcommand{\thefigure}{\arabic{figure}}
\end{document}

Para realizar la imagen se ha reducido artificialmente la altura de la página.

ingrese la descripción de la imagen aquí

ACTUALIZAR

Desafortunadamente, endfloatla versión 2.6 introdujo un error que hará que no funcione como se esperaba, además de romper el código anterior. El paquete cambió \immediate\writea \immediate\protected@write{}, lo cual es incorrecto porque \immediateno puede funcionar en esta situación.

Código actualizado:

\documentclass{article}
\usepackage[demo]{graphicx}
\usepackage{endfloat}
\usepackage{etoolbox}

\makeatletter
% fix the wrong code in endfloat.sty
\@ifundefined{protected@iwrite}{%
  \let\protected@iwrite\protected@write
  \patchcmd{\protected@iwrite}{\write}{\immediate\write}{}{}%
  \def\efloat@iwrite#1{\expandafter\protected@iwrite\csname efloat@post#1\endcsname{}}%
}{}
% double 'unexpansion' now is needed
\appto{\appendix}{%
  \renewcommand{\thepostfigure}{S\arabic{postfigure}}%
  \setcounter{postfigure}{0}%
  \efloat@iwrite{fff}{%
    \unexpanded{\unexpanded{%
      \renewcommand{\thefigure}{S\arabic{figure}}^^J%
      \setcounter{figure}{0}^^J%
    }}%
  }%
}
\makeatother

\begin{document}

As we see in figure \ref{fig1} (and also in supplemental figure \ref{figS1}) \ldots

\begin{figure}
\includegraphics{fig1}
\caption{One.} \label{fig1}
\end{figure}

\clearpage % not necessary, just to make the figure go to the next page
\appendix

\begin{figure}
\includegraphics{figS1}
\caption{Supplement, one.} \label{figS1}
\end{figure}

\renewcommand{\thefigure}{\arabic{figure}}
\end{document}

información relacionada