¿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 endfloat
paquete 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 endfloat
paquete. 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 rigfigure
y \AtEndDocument
:
Colocar
\AtEndDocument{\clearpage}
justo después\begin{document}
Envuelva cada uno
richfigure
en\AtEndDocument{...}