Forzar todos los flotadores hasta el final del documento sin usar endfloat, compatible con htlatex

Forzar todos los flotadores hasta el final del documento sin usar endfloat, compatible con htlatex

¿Cuál es la forma más sencilla de hacer que todos los flotadores aparezcan a la fuerza al final del documento?La solución debería funcionar conhtlatex, los flotantes deberían aparecer al final del documento HTML en este caso. (La pregunta original,Forzar todos los flotadores hasta el final del documento sin usar endfloat, no tenía el requisito de htlatex y la solución no funciona para htlatex. Aparte de eso, es una copia, lo siento. No quería editar la pregunta original, pero podía hacerlo).

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 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

Puedes usar una combinación de rigfigurey \AtEndDocument:

  1. Colocar \AtEndDocument{\clearpage}justo después\begin{document}

  2. Envuelva cada uno richfigureen\AtEndDocument{...}

información relacionada