Forzar todos los flotadores hasta el final del documento sin usar endfloat

Forzar todos los flotadores hasta el final del documento sin usar endfloat

¿Cuál es la forma más sencilla de hacer que todos los flotadores aparezcan a la fuerza al final del documento, uno por página? El endfloatpaquete no es una opción, ver más abajo. Las siguientes preguntas están relacionadas pero no son útiles:

Cómo colocar todos los flotadores (tablas en particular) en un punto determinado del documento

Coloque todos los flotadores al final sin cambiar la numeración.

Detalles

En nuestro entorno disponemos de wrappers para crear figuras, tablas etc. Los wrappers se implementan como entornos para permitir el interior de "todo" y además aceptan, entre otros, el nombre del título largo y corto, la etiqueta y el contenido de la figura. La implementación de los contenedores se puede modificar para diferentes diseños de documentos (título arriba/abajo, figura separada por regla sí/no, ...).

Un diseño particular requiere que cada figura se coloque en una página separada después del documento principal.

Intentos propios

Me viene a la mente el endfloatpaquete. Sin embargo, no pude hacerlo funcionar, ya que las figuras se crean mediante un envoltorio.

Intenté implementar esto usando \gappto: El comando de creación de figuras simplemente se agregaría a un enlace global que se ejecuta justo antes \end{document}. Esto funcionó cuando el contenedor de creación de figuras era solo un comando, pero ahora es un entorno que permite que "todo" entre. Agregué mi intento al MnWE a continuación, pero esto genera el siguiente mensaje de error:

! Extra }, or forgotten \endgroup.
\environment_richfigure_end_aux:w ...gure}\egroup 

l.39       \end{richfigure}

¿Cómo implementarías esto?

MnWE

\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{xparse}
\usepackage{etoolbox}

\newcommand{\delayedfigures}{}

% Comment the following line to get working code
\newcommand{\dofigure}[1]{\gappto{\delayedfigures}{\clearpage#1}}

% The example works with the default implementation of \dofigure
\providecommand{\dofigure}[1]{#1}

%%   \begin{richfigure}
%%     [<placement>, e.g. htp (h=here, t=top, p=page)]
%%     {<short caption>}
%%     {<long caption>}
%%     {<\label{label}>}
%%       <\includegraphics[...]{figure}>
%%   \end{richfigure}
\NewDocumentEnvironment{richfigure}{O{tbp} m m m}{%
  \dofigure\bgroup%{%
    \begin{figure}[#1]%
      \caption[#2]{#3}#4%
        }{% Here, the contents of the environment are placed
    \end{figure}%
  \egroup%{
}

\gpreto{\enddocument}{\delayedfigures}

% Usage example
\begin{document}
  Main document contents.

  \begin{richfigure}{Short caption}{Long caption}{\label{fig:1}}
    Figure contents.
  \end{richfigure}

  All figures are to appear on separate pages, one per page.
\end{document}

Respuesta1

Aquí hay un ejemplo que modifica el floatcheck y usa [p] como ubicación. Las carrozas aparecen al final de las secciones, una por página.

\documentclass{scrartcl}
\pagestyle{empty}
\usepackage{caption}
\usepackage{lipsum}
\makeatletter
\def \@largefloatcheck{\ht\@currbox 0.5\textheight}
\makeatother

\begin{document}
\section{baz}
  Main document contents.
\lipsum
\begin{figure}[p]
 \centerline{ Figure contents. }
\caption[Short caption]{Long caption of fig 1}\label{fig:1}
\end{figure}

\lipsum

All figures are to appear on separate pages, one per page.
\lipsum

\section{foo}
\lipsum
\begin{figure}[p]
 \centerline{ Figure contents. }
\caption[Short caption]{Long caption  of fig 2}\label{fig:2}
\end{figure}

\lipsum

\end{document}

información relacionada